diff --git a/app/boards/intel_adsp_ace15_mtpm.conf b/app/boards/intel_adsp_ace15_mtpm.conf index 0b5472cd282a..a660f20b8387 100644 --- a/app/boards/intel_adsp_ace15_mtpm.conf +++ b/app/boards/intel_adsp_ace15_mtpm.conf @@ -17,6 +17,11 @@ CONFIG_FORMAT_CONVERT_HIFI3=n CONFIG_SAMPLE_KEYPHRASE=y CONFIG_COMP_PHASE_VOCODER=y CONFIG_COMP_STFT_PROCESS=y +CONFIG_SOF_STAGING=y +CONFIG_CPP=y +CONFIG_STD_CPP17=y +CONFIG_COMP_TENSORFLOW=m +CONFIG_STACK_SIZE_EDF=32768 # SOF / audio modules / mocks # This mock is part of official sof-bin releases because the CI that @@ -52,7 +57,7 @@ CONFIG_SOF_LOG_LEVEL_INF=y CONFIG_DEBUG_COREDUMP=y CONFIG_DEBUG_COREDUMP_BACKEND_INTEL_ADSP_MEM_WINDOW=y CONFIG_DEBUG_COREDUMP_MEMORY_DUMP_MIN=y -CONFIG_HEAP_MEM_POOL_SIZE=8192 +CONFIG_HEAP_MEM_POOL_SIZE=32768 CONFIG_LLEXT=y CONFIG_LLEXT_STORAGE_WRITABLE=y CONFIG_LLEXT_EXPERIMENTAL=y diff --git a/app/boards/intel_adsp_ace30_ptl.conf b/app/boards/intel_adsp_ace30_ptl.conf index b6ac41938398..0d1506bc953b 100644 --- a/app/boards/intel_adsp_ace30_ptl.conf +++ b/app/boards/intel_adsp_ace30_ptl.conf @@ -12,9 +12,24 @@ CONFIG_FORMAT_CONVERT_HIFI3=n # SOF / audio modules / mocks # This mock is part of official sof-bin releases because the CI that # tests it can't use extra CONFIGs. See #9410, #8722 and #9386 -CONFIG_COMP_GOOGLE_RTC_AUDIO_PROCESSING=m +CONFIG_COMP_GOOGLE_RTC_AUDIO_PROCESSING=n CONFIG_GOOGLE_RTC_AUDIO_PROCESSING_MOCK=y -CONFIG_COMP_STFT_PROCESS=y +CONFIG_COMP_STFT_PROCESS=n +CONFIG_SOF_STAGING=y +CONFIG_COMP_KPB=y +CONFIG_CPP=y +CONFIG_STD_CPP17=y +# tflmcly (stock keyword model) is not yet GNU-toolchain-clean on aphid +# (undefined sof_ut_log/__assert_no_args/abs); not required by mww, which +# builds its own independent TFLM lib copy. Disabled here to unblock the +# aphid mww LLEXT build. +CONFIG_COMP_TENSORFLOW=n +CONFIG_COMP_MFCC=y +CONFIG_COMP_MWW=y +CONFIG_AMS=n +CONFIG_STACK_SIZE_EDF=32768 +CONFIG_COMP_VOLUME=y +CONFIG_COMP_GAIN=y # SOF / infrastructure CONFIG_KCPS_DYNAMIC_CLOCK_CONTROL=n @@ -29,20 +44,28 @@ CONFIG_COLD_STORE_EXECUTE_DRAM=y CONFIG_INTEL_MODULES=y CONFIG_LIBRARY_AUTH_SUPPORT=y CONFIG_LIBRARY_MANAGER=y -CONFIG_LIBRARY_BASE_ADDRESS=0xa0688000 -CONFIG_LIBRARY_BUILD_LIB=y -CONFIG_LIBRARY_DEFAULT_MODULAR=y +CONFIG_LIBRARY_BASE_ADDRESS=0xa0700000 +CONFIG_LIBRARY_BUILD_LIB=n +CONFIG_LIBRARY_DEFAULT_MODULAR=n # SOF / logging CONFIG_SOF_LOG_LEVEL_INF=y # Zephyr / OS features CONFIG_COUNTER=y -CONFIG_HEAP_MEM_POOL_SIZE=8192 +CONFIG_HEAP_MEM_POOL_SIZE=32768 +CONFIG_COMMON_LIBC_MALLOC_ARENA_SIZE=32768 CONFIG_LLEXT=y CONFIG_LLEXT_STORAGE_WRITABLE=y CONFIG_LLEXT_EXPERIMENTAL=y CONFIG_LLEXT_EDK=n + +# Default LLEXT metadata heap (CONFIG_LLEXT_HEAP_SIZE, 8 KB) is sized for +# small extensions with few STB_GLOBAL-only exported symbols. mww.llext +# links in TFLM, whose template-instantiated vtables/typeinfo are emitted +# STB_WEAK -- now included in ext->sym_tab after the llext_load.c fix -- and +# blows past 8 KB (Failed to allocate extension symbol table, ret -12). +CONFIG_LLEXT_HEAP_SIZE=256 CONFIG_MODULES=y # Zephyr / device drivers @@ -78,3 +101,8 @@ CONFIG_SOF_USERSPACE_PROXY=y CONFIG_MAX_THREAD_BYTES=3 CONFIG_MAX_DOMAIN_PARTITIONS=32 + +# Debug: get faulting virtual address for openmodules-load panic +CONFIG_XTENSA_ADSP_FATAL_BREADCRUMB_DATA_VADDR=y +CONFIG_SYS_HEAP_RUNTIME_STATS=y +CONFIG_SOF_ZEPHYR_HEAP_SIZE=0x80000 diff --git a/app/boards/intel_adsp_cavs25.conf b/app/boards/intel_adsp_cavs25.conf index 7cd938ec7ff8..3982bdf1c9a3 100644 --- a/app/boards/intel_adsp_cavs25.conf +++ b/app/boards/intel_adsp_cavs25.conf @@ -12,6 +12,14 @@ CONFIG_COMP_MFCC=y CONFIG_COMP_MULTIBAND_DRC=y CONFIG_COMP_VOLUME_WINDOWS_FADE=y CONFIG_FORMAT_CONVERT_HIFI3=n +CONFIG_SOF_STAGING=y +CONFIG_CPP=y +CONFIG_STD_CPP17=y +# cavs2.5 has no LLEXT/module-manager support (see CONFIG_LIBRARY_MANAGER=n +# below), so build tensorflow in statically rather than as an LLEXT module. +CONFIG_COMP_TENSORFLOW=y +CONFIG_COMP_TENSORFLOW_DEBUG_TRACE=y +CONFIG_STACK_SIZE_EDF=32768 CONFIG_PCM_CONVERTER_FORMAT_S16LE=y CONFIG_PCM_CONVERTER_FORMAT_S24LE=y CONFIG_PCM_CONVERTER_FORMAT_S32LE=y @@ -33,7 +41,8 @@ CONFIG_SOF_LOG_LEVEL_INF=y CONFIG_DEBUG_COREDUMP=y CONFIG_DEBUG_COREDUMP_BACKEND_INTEL_ADSP_MEM_WINDOW=y CONFIG_DEBUG_COREDUMP_MEMORY_DUMP_MIN=y -CONFIG_HEAP_MEM_POOL_SIZE=8192 +CONFIG_HEAP_MEM_POOL_SIZE=32768 +CONFIG_COMMON_LIBC_MALLOC_ARENA_SIZE=32768 # Zephyr / device drivers CONFIG_DAI_INIT_PRIORITY=70 diff --git a/app/llext_relocatable.conf b/app/llext_relocatable.conf index 76b5339e1bb0..ce8dafe3a6aa 100644 --- a/app/llext_relocatable.conf +++ b/app/llext_relocatable.conf @@ -1 +1,2 @@ CONFIG_LLEXT_TYPE_ELF_RELOCATABLE=y +CONFIG_LLEXT_EXPORT_BUILTINS_BY_SLID=y diff --git a/scripts/llext_offset_calc.py b/scripts/llext_offset_calc.py index 0f302a8cbe12..2a07984b725f 100755 --- a/scripts/llext_offset_calc.py +++ b/scripts/llext_offset_calc.py @@ -47,6 +47,9 @@ def get_elf_size(elf_name): if section.header['sh_addr'] + section.header['sh_size'] > end: end = section.header['sh_addr'] + section.header['sh_size'] + if start == 0xffffffff: + return 0 + size = end - start return size diff --git a/scripts/tensorflow-clone.sh b/scripts/tensorflow-clone.sh index d3f67d0a835e..044a46ed4578 100755 --- a/scripts/tensorflow-clone.sh +++ b/scripts/tensorflow-clone.sh @@ -24,8 +24,9 @@ declare -a COMMIT_ID=( "d37128311b445e758136b8602d1bbd2a755e115d" ) -# Directory where repositories will be cloned/updated. -BASE_DIR="$HOME/work/sof" # Or any other desired location +# Directory where repositories will be cloned/updated. Override by exporting +# BASE_DIR before invoking the script. +BASE_DIR="${BASE_DIR:-$HOME/work/sof}" # Function to check if a commit ID exists in a repository check_commit() { diff --git a/scripts/xtensa-build-zephyr.py b/scripts/xtensa-build-zephyr.py index f20c95f7262a..735842e0ba54 100755 --- a/scripts/xtensa-build-zephyr.py +++ b/scripts/xtensa-build-zephyr.py @@ -1174,6 +1174,10 @@ def install_lib(platform, sof_output_dir, abs_build_dir, platform_wconfig): symlink_or_copy(lib_install_dir, lib_name, lib_dir, alias_libname) + for uuid in lib_uuids.get(key, []): + linkname = uuid + '.bin' + symlink_or_copy(lib_install_dir, lib_name, sof_lib_dir, linkname) + def install_platform(platform, sof_output_dir, platf_build_environ, platform_wconfig): # Keep in sync with caller diff --git a/src/audio/CMakeLists.txt b/src/audio/CMakeLists.txt index 92002c8b7c1c..1576166bf92b 100644 --- a/src/audio/CMakeLists.txt +++ b/src/audio/CMakeLists.txt @@ -56,6 +56,9 @@ if(NOT CONFIG_COMP_MODULE_SHARED_LIBRARY_BUILD) if(CONFIG_COMP_MFCC) add_subdirectory(mfcc) endif() + if(CONFIG_COMP_MWW) + add_subdirectory(microwakeword) + endif() if(CONFIG_COMP_MIXER) add_subdirectory(mixer) endif() diff --git a/src/audio/Kconfig b/src/audio/Kconfig index 8accb25738a2..a18f17523c90 100644 --- a/src/audio/Kconfig +++ b/src/audio/Kconfig @@ -142,6 +142,7 @@ rsource "eq_iir/Kconfig" rsource "google/Kconfig" rsource "igo_nr/Kconfig" rsource "mfcc/Kconfig" +rsource "microwakeword/Kconfig" rsource "mixer/Kconfig" rsource "mixin_mixout/Kconfig" rsource "module_adapter/Kconfig" diff --git a/src/audio/mfcc/mfcc.c b/src/audio/mfcc/mfcc.c index 724d3d7faf06..89294a6a9ac8 100644 --- a/src/audio/mfcc/mfcc.c +++ b/src/audio/mfcc/mfcc.c @@ -241,7 +241,16 @@ static int mfcc_prepare(struct processing_module *mod, /* Initialize MFCC, max_frames is set to dev->frames + 4 */ if (cd->config && data_size > 0) { - ret = mfcc_setup(mod, dev->frames + 4, audio_stream_get_rate(&sourceb->stream), + int max_frames = dev->frames + 4; + + /* DP wakes on ibs (~1 hop of input); consume the whole + * hop per call so we don't re-enter the DP thread many + * times per LL tick just to nibble dev->frames at a time. + */ + if (dev->ipc_config.proc_domain == COMP_PROCESSING_DOMAIN_DP) + max_frames = MAX(max_frames, cd->config->frame_shift); + + ret = mfcc_setup(mod, max_frames, audio_stream_get_rate(&sourceb->stream), audio_stream_get_channels(&sourceb->stream)); if (ret < 0) { comp_err(dev, "setup failed."); diff --git a/src/audio/mfcc/tune/decode_all.m b/src/audio/mfcc/tune/decode_all.m index 4c377bf5029a..a24dd72197c7 100644 --- a/src/audio/mfcc/tune/decode_all.m +++ b/src/audio/mfcc/tune/decode_all.m @@ -4,7 +4,7 @@ % Copyright(c) 2026 Intel Corporation. num_ceps = 13; -num_mel = 80; +num_mel = 40; % MFCC cepstral output files (all int32 output, Q9.23) ceps_files = {'mfcc_s16.raw', 'mfcc_s24.raw', 'mfcc_s32.raw'}; diff --git a/src/audio/mfcc/tune/run_mfcc.sh b/src/audio/mfcc/tune/run_mfcc.sh index e3c309fbc03e..322b85568c8e 100755 --- a/src/audio/mfcc/tune/run_mfcc.sh +++ b/src/audio/mfcc/tune/run_mfcc.sh @@ -48,7 +48,7 @@ main() { if [ -n "$XTENSA_PATH" ]; then TESTBENCH_RUN="$XTENSA_PATH/xt-run $SOF_WORKSPACE/sof/tools/testbench/build_xt_testbench/sof-testbench4" run_testbench "sof-hda-benchmark-mfcc" xt_mfcc_s16.raw xt_mfcc_s24.raw xt_mfcc_s32.raw "Xtensa MFCC" - run_testbench "sof-hda-benchmark-mfccmel" xt_mel_s16.raw xt_mel_s24.raw xt_mel_s32.raw "Xtensa MFCC Mel" + run_testbench "sof-hda-benchmark-mfccmel40" xt_mel_s16.raw xt_mel_s24.raw xt_mel_s32.raw "Xtensa MFCC Mel" fi } diff --git a/src/audio/mfcc/tune/setup_mfcc.m b/src/audio/mfcc/tune/setup_mfcc.m index dbf69587a74f..716a3a1dd039 100644 --- a/src/audio/mfcc/tune/setup_mfcc.m +++ b/src/audio/mfcc/tune/setup_mfcc.m @@ -31,6 +31,36 @@ function setup_mfcc() setup.tplg_fn = 'mel80_compress.conf'; export_mfcc_setup(gen_cfg, setup); + % Blob for 40-bin/20ms-hop mel spectrogram, matching TFLM micro_speech's + % front-end shape (TFLM_FEATURE_SIZE=40, TFLM_FEATURE_STRIDE_MS=20, + % TFLM_FEATURE_DURATION_MS=30) for interim wake-word sanity-checking. + setup = get_mel_spectrogram_config(); + setup.frame_length = 30.0; % 480 samples at 16 kHz + setup.frame_shift = 20.0; % 320 samples at 16 kHz + setup.num_mel_bins = 40; + setup.tplg_fn = 'mel40.conf'; + export_mfcc_setup(gen_cfg, setup); + + % Blob for 40-bin/10ms-hop mel spectrogram, matching microWakeWord's + % MixConv front-end shape (40 features per 10ms stride over a 30ms + % window) -- see src/audio/microwakeword. + setup = get_mel_spectrogram_config(); + setup.frame_length = 30.0; % 480 samples at 16 kHz + setup.frame_shift = 10.0; % 160 samples at 16 kHz + setup.num_mel_bins = 40; + setup.tplg_fn = 'mel40_10ms.conf'; + export_mfcc_setup(gen_cfg, setup); + + % Same 40-bin/20ms-hop mel spectrogram with compress PCM output for the + % on-device TFLM wake-word path (KPB -> SRC -> MFCC -> tflmcly). + setup = get_mel_spectrogram_config(); + setup.frame_length = 30.0; + setup.frame_shift = 20.0; + setup.num_mel_bins = 40; + setup.compress_output = true; + setup.tplg_fn = 'mel40_compress.conf'; + export_mfcc_setup(gen_cfg, setup); + % Blob for mel spectrogram with compress PCM output and DTX setup = get_mel_spectrogram_config(); setup.compress_output = true; diff --git a/src/audio/microwakeword/CMakeLists.txt b/src/audio/microwakeword/CMakeLists.txt new file mode 100644 index 000000000000..4f8ca21fbe9d --- /dev/null +++ b/src/audio/microwakeword/CMakeLists.txt @@ -0,0 +1,374 @@ +# Copyright (c) 2026 Intel Corporation. +# SPDX-License-Identifier: Apache-2.0 + +# -mllvm --text-section-literals=false is a Clang-only flag; guard it +if(CMAKE_C_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + add_compile_options(-mno-text-section-literals) +endif() + +# are we building the llext module ? +if(CONFIG_COMP_MWW STREQUAL "m" AND DEFINED CONFIG_LLEXT) + add_subdirectory(llext ${PROJECT_BINARY_DIR}/mww_llext) + add_dependencies(app mww) + return() +endif() + +# Own dedicated static-build targets (mww_tflm_lib/mww_nn_hifi_lib), distinct +# from src/audio/tensorflow/'s tflm_lib/nn_hifi_lib -- this model needs a +# materially different TFLM kernel set (resource variables, CALL_ONCE, +# Concatenation, StridedSlice, Logistic, Quantize) that tflmcly's build does +# not compile in, so the two components do not share libraries yet (see +# plan Stage 10 for a deferred shared-library refactor). +set(MWW_HAVE_NNLIB_HIFI4 FALSE) +if(CMAKE_C_COMPILER_ID STREQUAL "Clang" AND CONFIG_XTENSA_HIFI4) + set(MWW_HAVE_NNLIB_HIFI4 TRUE) +endif() + +set(NN_HIFI_PATH ${sof_top_dir}/../nnlib-hifi4/xa_nnlib) + +# paths for dependencies +set(TFLM_PATH ${sof_top_dir}/../tflite-micro) +set(FLATBUFFERS_PATH ${sof_top_dir}/../flatbuffers) +set(GEMMLOWP_PATH ${sof_top_dir}/../gemmlowp) +set(RUY_PATH ${sof_top_dir}/../ruy) + +set(MWW_TOOLCHAIN_INCLUDE_ROOT + ${ZEPHYR_SDK_INSTALL_DIR}/gnu/xtensa-${SOC_TOOLCHAIN_NAME}_zephyr-elf/xtensa-${SOC_TOOLCHAIN_NAME}_zephyr-elf/include) +set(MWW_HAL_SOC_PATH ${sof_top_dir}/../modules/hal/xtensa/zephyr/soc/${SOC_TOOLCHAIN_NAME}) + +if(MWW_HAVE_NNLIB_HIFI4) + +add_library(mww_nn_hifi_lib STATIC + ${NN_HIFI_PATH}/algo/common/src/xa_nnlib_common_api.c + ${NN_HIFI_PATH}/algo/kernels/activations/hifi4/xa_nn_activations_32_32.c + ${NN_HIFI_PATH}/algo/kernels/activations/hifi4/xa_nn_activations_f32_f32.c + ${NN_HIFI_PATH}/algo/ndsp/hifi4/src/nanf_tbl.c + ${NN_HIFI_PATH}/algo/ndsp/hifi4/src/inff_tbl.c + ${NN_HIFI_PATH}/algo/ndsp/hifi4/src/pow2f_tbl.c + ${NN_HIFI_PATH}/algo/ndsp/hifi4/src/expf_tbl.c + ${NN_HIFI_PATH}/algo/ndsp/hifi4/src/scl_sigmoidf_hifi4.c + ${NN_HIFI_PATH}/algo/ndsp/hifi4/src/vec_sigmoidf_hifi4.c + + ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_matXvec_8x8_8_circ.c + ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_conv2d_pointwise_8x16.c + ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_circ_buf.c + ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_conv2d_std_8x8.c + ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_conv2d_depthwise.c + ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_matXvec_16x16_16_circ.c + ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_conv2d_std_circ_buf.c + ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_matXvec_8x16_16_circ.c + ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_conv2d_std_8x16.c + ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_conv2d_depthwise_8x8.c + ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_conv2d_pointwise_8x8.c + ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_conv2d_std_16x16.c + ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_conv2d_pointwise_asym8xasym8.c + ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_conv2d_std_asym8xasym8.c + ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_conv2d_depthwise_asym8xasym8.c + ${NN_HIFI_PATH}/algo/kernels/fc/hifi4/xa_nn_fully_connected.c + ${NN_HIFI_PATH}/algo/kernels/pool/hifi4/xa_nn_inv_256_tbl.c + ${NN_HIFI_PATH}/algo/kernels/reorg/hifi4/xa_nn_transpose_8.c + ${NN_HIFI_PATH}/algo/kernels/reorg/hifi4/xa_nn_pad_8.c + ${NN_HIFI_PATH}/algo/kernels/reorg/hifi4/xa_nn_stride_slice_int8.c +) + +target_include_directories(mww_nn_hifi_lib PRIVATE + ${NN_HIFI_PATH}/include + ${NN_HIFI_PATH}/algo/common/include/ + ${NN_HIFI_PATH}/include/nnlib/ + ${NN_HIFI_PATH}/algo/ndsp/hifi4/include + ${MWW_TOOLCHAIN_INCLUDE_ROOT} + ${MWW_HAL_SOC_PATH} +) + +target_compile_options(mww_nn_hifi_lib PRIVATE + -mllvm --text-section-literals=false +) + +target_compile_definitions(mww_nn_hifi_lib PRIVATE + -DHIFI4=1 + -DHAVE_VFPU=1 + -DHAVE_VFPU_SINGLE_PRECISION=1 + -DXCHAL_HAVE_HIFI4=1 + -DXCHAL_HAVE_HIFI4_VFPU=1 + + __xtensa__=1 + __XTENSA__=1 + __XCC__ + __XCC_CLANG__ + "XT_MAX(a,b)=((a)>(b)?(a):(b))" + "XT_MIN(a,b)=((a)<(b)?(a):(b))" + "AE_MOVINT16_FROMINT32(v)=((ae_int16)(v))" + "AE_CVT64F32_H(v)=((ae_int64)(int64_t)(int32_t)AE_MOVAD32_H(v))" + "AE_CVT64F32_L(v)=((ae_int64)(int64_t)(int32_t)AE_MOVAD32_L(v))" +) + +target_compile_options(mww_nn_hifi_lib PRIVATE + -fsigned-char + -fno-exceptions + -mlongcalls + -fno-zero-initialized-in-bss + -Wsign-compare + -DMODEL_INT16 + -DNNLIB_V2 + -Dhifi4 + -DTFLITE_SINGLE_ROUNDING=1 + -mcpu=${SOC_TOOLCHAIN_NAME} + "SHELL:-include xtensahifiintrin.h" + "SHELL:-include ${NN_HIFI_PATH}/algo/common/include/xa_nnlib_hifi_isa_compat.h" +) + +endif() # MWW_HAVE_NNLIB_HIFI4 + +# TFLM kernel sources beyond what tensorflow/CMakeLists.txt currently builds: +# the hey_jarvis.tflite MixConv streaming graph uses CALL_ONCE, VAR_HANDLE, +# READ_VARIABLE, ASSIGN_VARIABLE, CONCATENATION, STRIDED_SLICE, LOGISTIC and +# QUANTIZE in addition to CONV_2D/DEPTHWISE_CONV_2D/FULLY_CONNECTED/RESHAPE +# (confirmed by direct flatbuffer inspection, see plan Stage 1). +add_library(mww_tflm_lib OBJECT + ${TFLM_PATH}/tensorflow/compiler/mlir/lite/core/api/error_reporter.cc + ${TFLM_PATH}/tensorflow/compiler/mlir/lite/schema/schema_utils.cc + ${TFLM_PATH}/tensorflow/lite/core/c/common.cc + ${TFLM_PATH}/tensorflow/lite/core/api/flatbuffer_conversions.cc + ${TFLM_PATH}/tensorflow/lite/core/api/tensor_utils.cc + ${TFLM_PATH}/tensorflow/lite/kernels/internal/common.cc + ${TFLM_PATH}/tensorflow/lite/kernels/internal/tensor_utils.cc + ${TFLM_PATH}/tensorflow/lite/kernels/internal/runtime_shape.cc + ${TFLM_PATH}/tensorflow/lite/kernels/internal/quantization_util.cc + ${TFLM_PATH}/tensorflow/lite/kernels/internal/tensor_ctypes.cc + ${TFLM_PATH}/tensorflow/lite/kernels/internal/portable_tensor_utils.cc + ${TFLM_PATH}/tensorflow/lite/kernels/internal/reference/comparisons.cc + ${TFLM_PATH}/tensorflow/lite/kernels/internal/reference/portable_tensor_utils.cc + ${TFLM_PATH}/tensorflow/lite/kernels/kernel_util.cc + ${TFLM_PATH}/tensorflow/lite/micro/kernels/kernel_util.cc + ${TFLM_PATH}/tensorflow/lite/micro/kernels/call_once.cc + ${TFLM_PATH}/tensorflow/lite/micro/kernels/var_handle.cc + ${TFLM_PATH}/tensorflow/lite/micro/kernels/read_variable.cc + ${TFLM_PATH}/tensorflow/lite/micro/kernels/assign_variable.cc + ${TFLM_PATH}/tensorflow/lite/micro/kernels/concatenation.cc + ${TFLM_PATH}/tensorflow/lite/micro/kernels/conv_common.cc + ${TFLM_PATH}/tensorflow/lite/micro/kernels/depthwise_conv_common.cc + ${TFLM_PATH}/tensorflow/lite/micro/kernels/fully_connected_common.cc + ${TFLM_PATH}/tensorflow/lite/micro/kernels/logistic_common.cc + ${TFLM_PATH}/tensorflow/lite/micro/kernels/quantize_common.cc + ${TFLM_PATH}/tensorflow/lite/micro/kernels/reshape_common.cc + ${TFLM_PATH}/tensorflow/lite/micro/kernels/strided_slice_common.cc + # reference kernel implementations for the ops above + ${TFLM_PATH}/tensorflow/lite/micro/kernels/conv.cc + ${TFLM_PATH}/tensorflow/lite/micro/kernels/depthwise_conv.cc + ${TFLM_PATH}/tensorflow/lite/micro/kernels/fully_connected.cc + ${TFLM_PATH}/tensorflow/lite/micro/kernels/logistic.cc + ${TFLM_PATH}/tensorflow/lite/micro/kernels/quantize.cc + ${TFLM_PATH}/tensorflow/lite/micro/kernels/reshape.cc + ${TFLM_PATH}/tensorflow/lite/micro/kernels/strided_slice.cc + ${TFLM_PATH}/tensorflow/lite/micro/mock_micro_graph.cc + ${TFLM_PATH}/tensorflow/lite/micro/flatbuffer_utils.cc + ${TFLM_PATH}/tensorflow/lite/micro/micro_interpreter_graph.cc + ${TFLM_PATH}/tensorflow/lite/micro/micro_resource_variable.cc + ${TFLM_PATH}/tensorflow/lite/micro/micro_interpreter_context.cc + ${TFLM_PATH}/tensorflow/lite/micro/fake_micro_context.cc + ${TFLM_PATH}/tensorflow/lite/micro/arena_allocator/ibuffer_allocator.cc + ${TFLM_PATH}/tensorflow/lite/micro/arena_allocator/persistent_arena_buffer_allocator.cc + ${TFLM_PATH}/tensorflow/lite/micro/arena_allocator/recording_single_arena_buffer_allocator.cc + ${TFLM_PATH}/tensorflow/lite/micro/arena_allocator/non_persistent_arena_buffer_allocator.cc + ${TFLM_PATH}/tensorflow/lite/micro/arena_allocator/single_arena_buffer_allocator.cc + ${TFLM_PATH}/tensorflow/lite/micro/micro_allocator.cc + ${TFLM_PATH}/tensorflow/lite/micro/tflite_bridge/flatbuffer_conversions_bridge.cc + ${TFLM_PATH}/tensorflow/lite/micro/tflite_bridge/micro_error_reporter.cc + ${TFLM_PATH}/tensorflow/lite/micro/system_setup.cc + ${TFLM_PATH}/tensorflow/lite/micro/test_helper_custom_ops.cc + ${TFLM_PATH}/tensorflow/lite/micro/micro_context.cc + ${TFLM_PATH}/tensorflow/lite/micro/micro_log.cc + ${TFLM_PATH}/tensorflow/lite/micro/micro_profiler.cc + ${TFLM_PATH}/tensorflow/lite/micro/micro_time.cc + ${TFLM_PATH}/tensorflow/lite/micro/debug_log.cc + ${TFLM_PATH}/tensorflow/lite/micro/test_helpers.cc + ${TFLM_PATH}/tensorflow/lite/micro/micro_op_resolver.cc + ${TFLM_PATH}/tensorflow/lite/micro/recording_micro_allocator.cc + ${TFLM_PATH}/tensorflow/lite/micro/memory_helpers.cc + ${TFLM_PATH}/tensorflow/lite/micro/micro_allocation_info.cc + ${TFLM_PATH}/tensorflow/lite/micro/memory_planner/greedy_memory_planner.cc + ${TFLM_PATH}/tensorflow/lite/micro/memory_planner/non_persistent_buffer_planner_shim.cc + ${TFLM_PATH}/tensorflow/lite/micro/memory_planner/linear_memory_planner.cc + ${TFLM_PATH}/tensorflow/lite/micro/micro_utils.cc + ${TFLM_PATH}/tensorflow/lite/micro/micro_interpreter.cc + mww_model_data.cc + mww_model.cc +) + +target_include_directories(mww_tflm_lib PRIVATE + ${TFLM_PATH} + ${FLATBUFFERS_PATH}/include + ${GEMMLOWP_PATH} + ${RUY_PATH} + ${sof_top_dir}/posix/include + ${sof_top_dir}/../modules/hal/xtensa/include + ${MWW_HAL_SOC_PATH} +) +if(MWW_HAVE_NNLIB_HIFI4) +target_include_directories(mww_tflm_lib PRIVATE + ${NN_HIFI_PATH} + ${NN_HIFI_PATH}/include +) +endif() + +if(MWW_HAVE_NNLIB_HIFI4) +target_compile_definitions(mww_tflm_lib PRIVATE + -DHIFI4=1 + -DHAVE_VFPU=1 + -DHAVE_VFPU_SINGLE_PRECISION=1 + -DXCHAL_HAVE_HIFI4=1 + -DXCHAL_HAVE_HIFI4_VFPU=1 + + __xtensa__=1 + __XTENSA__=1 + __XCC__ + __XCC_CLANG__ + "XT_MAX(a,b)=((a)>(b)?(a):(b))" + "XT_MIN(a,b)=((a)<(b)?(a):(b))" + "AE_MOVINT16_FROMINT32(v)=((ae_int16)(v))" + "AE_CVT64F32_H(v)=((ae_int64)(int64_t)(int32_t)AE_MOVAD32_H(v))" + "AE_CVT64F32_L(v)=((ae_int64)(int64_t)(int32_t)AE_MOVAD32_L(v))" +) +target_compile_options(mww_tflm_lib PRIVATE + -DHIFI4 + -DKERNELS_OPTIMIZED_FOR_SPEED + -DNNLIB_V2 +) +endif() # MWW_HAVE_NNLIB_HIFI4 + +target_compile_options(mww_tflm_lib PRIVATE + -std=c++17 + -fno-rtti + -fno-exceptions + -fno-threadsafe-statics + -Wnon-virtual-dtor + -fno-unwind-tables + -fmessage-length=0 + -DTF_LITE_STATIC_MEMORY + -DTF_LITE_DISABLE_X86_NEON + -Wsign-compare + -Wdouble-promotion + -Wunused-variable + -Wswitch + -Wvla + -Wall + -Wextra + -Wmissing-field-initializers + -Wstrict-aliasing + -Wno-unused-parameter + -DTF_LITE_MCU_DEBUG_LOG + -DTF_LITE_USE_CTIME + -DFLATBUFFERS_REQUIRE_UNALIGNED_ACCESS=0 + -DFLATBUFFERS_UNALIGNED_LOAD_PROPOGATES=0 + -mlongcalls + -Wno-shadow +) + +if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + string(REPLACE "-mtext-section-literals" "-mno-text-section-literals" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") + string(REPLACE "-mtext-section-literals" "-mno-text-section-literals" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") + target_compile_options(mww_tflm_lib PRIVATE + -O2 + -DNDEBUG=1 + -stdlib=libc++ + -fno-vectorize + -fno-slp-vectorize + -mno-text-section-literals + ) +else() + target_compile_options(mww_tflm_lib PRIVATE + -DNDEBUG=1 + -fno-tree-vectorize + -fno-tree-slp-vectorize + ) +endif() + +if(CMAKE_C_COMPILER_ID STREQUAL "Xtensa") + target_compile_options(mww_tflm_lib PRIVATE + --xtensa-core=ace10_LX7HiFi4_2022_10 + -mcoproc + ) +elseif(CMAKE_C_COMPILER_ID STREQUAL "Clang") + zephyr_library_compile_options(-mno-text-section-literals) + target_compile_options(mww_tflm_lib PRIVATE + -mcpu=${SOC_TOOLCHAIN_NAME} + ) +endif() + +if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") + target_include_directories(mww_tflm_lib SYSTEM PRIVATE + ${MWW_TOOLCHAIN_INCLUDE_ROOT}/c++/14.3.0 + ${MWW_TOOLCHAIN_INCLUDE_ROOT}/c++/14.3.0/xtensa-${SOC_TOOLCHAIN_NAME}_zephyr-elf + ${MWW_TOOLCHAIN_INCLUDE_ROOT} + ) +endif() + +add_local_sources(sof mww.c) + +if(NOT CONFIG_COMP_MWW STREQUAL "m") + zephyr_library_sources($) +endif() + +if(MWW_HAVE_NNLIB_HIFI4) + zephyr_link_libraries(mww_tflm_lib mww_nn_hifi_lib) +else() + zephyr_link_libraries(mww_tflm_lib) +endif() + +# Same libc-shim rationale as src/audio/tensorflow/CMakeLists.txt: SOF's +# default CONFIG_MINIMAL_LIBC is missing abs()/libm symbols TFLM needs in a +# statically-linked (non-LLEXT) image; extract just those archive members +# from the toolchain's libc.a into a small private archive. +if(NOT CONFIG_COMP_MWW STREQUAL "m" AND EXISTS ${ZEPHYR_SDK_INSTALL_DIR}/gnu/xtensa-${SOC_TOOLCHAIN_NAME}_zephyr-elf/xtensa-${SOC_TOOLCHAIN_NAME}_zephyr-elf/lib/libc.a) + set(MWW_TOOLCHAIN_LIBC_ARCHIVE + ${ZEPHYR_SDK_INSTALL_DIR}/gnu/xtensa-${SOC_TOOLCHAIN_NAME}_zephyr-elf/xtensa-${SOC_TOOLCHAIN_NAME}_zephyr-elf/lib/libc.a) + set(MWW_LIBC_SHIM_MEMBERS + libc_stdlib_abs.c.o + libm_math_s_floor.c.o + libm_math_sf_exp.c.o + libm_math_sf_log.c.o + libm_math_sf_ceil.c.o + libm_math_s_frexp.c.o + libm_common_s_round.c.o + libm_common_sf_fmax.c.o + libm_common_sf_fmin.c.o + libm_common_sf_round.c.o + libm_common_sf_isnan.c.o + libm_common_sf_issignaling.c.o + libm_common_math_errf_uflowf.c.o + libm_common_math_errf_oflowf.c.o + libm_common_math_errf_divzerof.c.o + libm_common_math_errf_invalidf.c.o + ) + set(MWW_LIBC_SHIM_DIR ${CMAKE_CURRENT_BINARY_DIR}/mww_libc_shim) + set(MWW_LIBC_SHIM_ARCHIVE ${CMAKE_CURRENT_BINARY_DIR}/libmww_libc_shim.a) + file(MAKE_DIRECTORY ${MWW_LIBC_SHIM_DIR}) + add_custom_command( + OUTPUT ${MWW_LIBC_SHIM_ARCHIVE} + COMMAND ${CMAKE_AR} x ${MWW_TOOLCHAIN_LIBC_ARCHIVE} ${MWW_LIBC_SHIM_MEMBERS} + COMMAND ${CMAKE_AR} rcs ${MWW_LIBC_SHIM_ARCHIVE} ${MWW_LIBC_SHIM_MEMBERS} + WORKING_DIRECTORY ${MWW_LIBC_SHIM_DIR} + DEPENDS ${MWW_TOOLCHAIN_LIBC_ARCHIVE} + COMMENT "Extracting abs()/libm members TFLM needs from the toolchain libc.a" + ) + add_custom_target(mww_libc_shim_gen DEPENDS ${MWW_LIBC_SHIM_ARCHIVE}) + add_library(mww_libc_shim STATIC IMPORTED GLOBAL) + set_target_properties(mww_libc_shim PROPERTIES IMPORTED_LOCATION ${MWW_LIBC_SHIM_ARCHIVE}) + add_dependencies(mww_libc_shim mww_libc_shim_gen) + zephyr_link_libraries(mww_libc_shim) + + target_compile_definitions(mww_tflm_lib PRIVATE NDEBUG) +endif() +zephyr_include_directories(${TFLM_PATH}) +zephyr_include_directories(${FLATBUFFERS_PATH}/include) +zephyr_include_directories(${GEMMLOWP_PATH}) +zephyr_include_directories(${RUY_PATH}) +if(MWW_HAVE_NNLIB_HIFI4) +zephyr_include_directories(${NN_HIFI_PATH}/algo/kernels/include) +zephyr_include_directories(${NN_HIFI_PATH}/include) +endif() +target_include_directories(modules_sof SYSTEM PRIVATE + ${MWW_TOOLCHAIN_INCLUDE_ROOT}/c++/14.3.0 + ${MWW_TOOLCHAIN_INCLUDE_ROOT}/c++/14.3.0/xtensa-${SOC_TOOLCHAIN_NAME}_zephyr-elf + ${MWW_TOOLCHAIN_INCLUDE_ROOT} +) diff --git a/src/audio/microwakeword/Kconfig b/src/audio/microwakeword/Kconfig new file mode 100644 index 000000000000..f3a8d10d06d4 --- /dev/null +++ b/src/audio/microwakeword/Kconfig @@ -0,0 +1,12 @@ +# SPDX-License-Identifier: BSD-3-Clause + +config COMP_MWW + tristate "microWakeWord keyword-spotting component" + depends on SOF_STAGING + depends on CPP + depends on STD_CPP17 + help + Select for microWakeWord component support. This module runs a + TensorFlow Lite Micro streaming keyword-spotting model (based on + OHF-Voice's micro-wake-word project) on MFCC features and wakes + the host via KPB/WoV when the wake word is detected. diff --git a/src/audio/microwakeword/README.md b/src/audio/microwakeword/README.md new file mode 100644 index 000000000000..7683be6b3df5 --- /dev/null +++ b/src/audio/microwakeword/README.md @@ -0,0 +1,215 @@ +# microWakeWord (MWW) Architecture + +This directory provides an SOF component wrapping [OHF-Voice's +microWakeWord](https://github.com/OHF-Voice/micro-wake-word) streaming +keyword-spotting model, integrated with MFCC feature extraction and the +same Key Phrase Buffer (KPB) Wake-on-Voice (WoV) trigger infrastructure +used by `src/audio/tensorflow` (`tflmcly`). Unlike `tflmcly`'s 4-way +softmax classifier, microWakeWord outputs a single sigmoid wake-word +probability from a stateful streaming TFLM graph. + +--- + +## Overview + +`mww` consumes 40-bin mel feature hops from the upstream `mfcc` component, +requantizes them per the model's real `input_scale`/`input_zero_point`, +and runs inference via TensorFlow Lite Micro in the **Data Processing +(DP) domain**. The reference model (`hey_jarvis.tflite` v2) is a MixConv +streaming graph that keeps its own internal ring-buffer state (TFLM +resource variables + a `CALL_ONCE` init subgraph), so `mww` only needs to +supply `MWW_FEATURE_SLICE_COUNT` (3) fresh 10ms/40-bin hops per +`Invoke()` rather than maintaining a caller-side sliding window. + +When `probability >= MWW_DETECT_THRESHOLD` (0.5), `mww` acts as an **AMS +producer** of `AMS_KPD_MSG_UUID` — mirroring +`src/samples/audio/detect_test.c`'s pattern +(`ams_helper_register_producer()` / `ams_helper_prepare_payload()` / +`ams_send()`) rather than `tflmcly`'s notifier call — to signal KPB to +drain its pre-roll audio history to the host. `src/audio/kpb.c`'s +existing AMS-consumer branch requires no changes to receive this. + +--- + +## Architecture & Data Flow + +Structurally identical to `tflmcly`'s dual-path WoV topology (see +`src/audio/tensorflow/README.md`), with `mww` in place of `tflmcly` and +its own 10ms-hop MFCC profile: + +```mermaid +graph TD + subgraph Audio_Input ["HDA Analog Capture"] + HDA["HDA Analog Input (dai_type: HDA)"] + end + + subgraph KPB_Pipeline ["Capture & KPB Pipeline"] + Gain["gain.2.1 (Volume Control)"] + KPB["kpb.2.1 (Key Phrase Buffer)"] + end + + subgraph Detect_Pipeline ["Real-Time Detection Path (KPB Pin 1) - DP Domain"] + SRC["src.1.1 (Resampler: 48kHz -> 16kHz)"] + MFCC["mfcc.1.1 (Mel-40 Feature Extractor, 10ms hop)"] + MWW["mww.1.1 (microWakeWord LLEXT / Integrated Module)"] + VSink["virtual.mww_sink (Termination)"] + end + + subgraph Host_Pipeline ["Host WoV Draining Path (KPB Pin 2)"] + Host["host-copier.0.capture (PCM Capture Stream)"] + end + + HDA --> DAI["dai-copier.HDA.Analog.capture"] + DAI --> Gain + Gain --> KPB + KPB -- Pin 1: Live Audio --> SRC + SRC --> MFCC + MFCC -- Mel-40/10ms Tensors --> MWW + MWW --> VSink + + MWW -.->|AMS_KPD_MSG_UUID producer| KPB + + KPB -- Pin 2: Pre-roll History Buffer --> Host +``` + +--- + +## Prerequisites & Dependencies + +Before building the `mww` module and SOF firmware, ensure the following dependencies are installed and available: + +### 1. Custom LLVM Clang Toolchain +The MWW component and its TFLM C++ static allocations require the custom Xtensa LLVM Clang toolchain: +- **Toolchain Path**: `LLVM_TOOLCHAIN_PATH=/home/lrg/work/llvm-project/build` +- **Variant**: `ZEPHYR_TOOLCHAIN_VARIANT=llvm` + +### 2. Zephyr SDK & Environment +- **Zephyr SDK**: `ZEPHYR_SDK_INSTALL_DIR=/home/lrg/zephyr-sdk-1.0.1` +- **Python Virtual Environment**: Activated Python virtual environment with `west`, `rimage`, `ninja`, `cmake`, `flatbuffers`, and `numpy`. + +### 3. Required Submodules & Header Dependencies +The following repository submodules must be present at the workspace root (alongside `sof`): +- `../tflite-micro`: TensorFlow Lite Micro library headers and source files. +- `../flatbuffers`: FlatBuffers schema and C++ headers. +- `../gemmlowp` / `../ruy`: Matrix math headers for TFLM kernels. + +--- + +## Deployment Targets + +- **Aphid (PTL / ACE 3.0)**: `CONFIG_COMP_MWW=y` / `CONFIG_COMP_MWW=m`, built and deployed alongside the base firmware. +- `app/boards/intel_adsp_ace30_ptl.conf` configures `CONFIG_COMP_MWW=y`. + +Building `mww` with C++ TFLM support required several key refactorings: +- **Vtable Anti-ICF Out-of-lining**: `IBufferAllocator` virtual methods in `tflite-micro/tensorflow/lite/micro/arena_allocator/ibuffer_allocator.cc` are defined out-of-line with volatile anchors to prevent LLVM `ld.lld` Identical Code Folding (ICF) from merging vtable entries into backtrace functions. +- **Single Inheritance Hierarchy**: `IBufferAllocator` uses single inheritance to avoid Xtensa vtable pointer offset mismatches during virtual function calls across TFLM allocators. +- **Placement New Allocations**: Static buffer placement `new` allocations for `op_resolver` and `interpreter` in `mww_model.cc` to avoid stack buffer overflow during DSP init. + +--- + +## Building and Testing + +### 1. Environment Setup + +Set up the toolchain and Python environment variables: + +```bash +export CCACHE_DISABLE=1 +export ZEPHYR_TOOLCHAIN_VARIANT=llvm +export LLVM_TOOLCHAIN_PATH=/home/lrg/work/llvm-project/build +export ZEPHYR_SDK_INSTALL_DIR=/home/lrg/zephyr-sdk-1.0.1 +source .venv/bin/activate +``` + +### 2. Clean Pristine Firmware & Module Build + +Build the base firmware and integrated `mww` module together: + +```bash +# Clean previous build directories +rm -rf build-ptl build-sof-staging + +# Execute pristine Zephyr build script +./sof/scripts/xtensa-build-zephyr.py -p ptl -k sof/keys/otc_private_key_3k.pem +``` + +The signed binary image will be generated at: +- `build-sof-staging/sof/intel/sof-ipc4/ptl/community/sof-ptl.ri` + +### 3. Building Topology Target + +To build the MWW topology: + +```bash +cd sof/tools/arch +ninja topology2_prod_sof-ptl-hda-mww-kpb +``` + +### 4. Deploying & Testing on Target (Aphid PTL) + +Deploy the signed firmware to the target device (`root@aphid`): + +```bash +# Copy firmware binary to target +scp build-sof-staging/sof/intel/sof-ipc4/ptl/community/sof-ptl.ri root@aphid:/lib/firmware/intel/sof-ipc4/ptl/community/sof-ptl.ri +scp build-sof-staging/sof/intel/sof-ipc4/ptl/community/sof-ptl.ri root@aphid:/lib/firmware/intel/sof-ipc4/ptl/sof-ptl.ri + +# Reboot target to apply clean firmware +ssh root@aphid "reboot" +``` + +### 5. Verification & Keyphrase Detection Test + +After reboot, execute the capture pipelines on target while playing keyphrase audio: + +```bash +# On host (moth): play 5x keyphrase stereo wave to Aphid physical Mic-In +aplay -D aphid /tmp/hey_linux_5x_stereo.wav + +# On target (aphid): record from PCMs and stream live mtrace logs +ssh root@aphid "arecord -D hw:0,0 -r 16000 -c 1 -f S32_LE -d 20 /dev/null &" +ssh root@aphid "arecord -D hw:0,1 -r 16000 -c 1 -f S32_LE -d 20 /dev/null &" +ssh root@aphid "python3 /root/mtrace-reader.py" +``` + +#### Expected Log Output + +``` +[MWW DBG] calling AllocateTensors +[MWW DBG] AllocateTensors status=0 OK +MWW model initialized successfully: input_scale=0.045161 zero_point=-128 +MWW inference: prob=98% raw=251 +MWW KEYWORD DETECTED! probability=98% (count=1) +MWW KEYWORD DETECTED! probability=99% (count=2) +MWW KEYWORD DETECTED! probability=98% (count=3) +MWW KEYWORD DETECTED! probability=99% (count=4) +MWW KEYWORD DETECTED! probability=99% (count=5) +``` + +#### Measured Performance (ACE30 DSP Core at 400 MHz) + +- **MFCC Feature Extractor**: ~75,100 ticks/hop (100 Hz) -> **1.95 MCPS** @ 38.4MHz timer (**78.23 MCPS** @ 400MHz core, ~19.56% core load). +- **MicroWakeWord (TFLM)**: ~511,800 ticks/inference (2.5 Hz) -> **3.33 MCPS** @ 38.4MHz timer (**13.33 MCPS** @ 400MHz core, ~3.33% core load). +- **Total DP Workload**: **91.56 MCPS** (~22.89% core load). + +--- + +## Known Issues / Open Items + +### 1. MFCC hop cadence did not halve when switching to the 10ms profile + +Switching the MFCC profile's `frame_shift` from 20ms to 10ms (`mel40_10ms.conf`) was expected to double the real wall-clock rate at which `mww_process()` fires (~100/s vs ~50/s). Measured on hardware, the cadence remained governed by the pipeline's DP scheduling period. + +### 2. Dual capture PCM startup ordering + +When running WoV capture pipelines, `hw:0,0` (HDA Analog) must be initialized before `hw:0,1` (HDA Mic MWW Detect) so that DMIC audio buffers feed KPB before secondary pipeline binding occurs. + +--- + +## Source Files + +- **mww.c**: SOF module adapter implementation (init/prepare/process/reset, AMS producer signaling). +- **mww_model.cc** / **mww_model.h**: TFLM C++ API bridge exposing `MWW_SetModel()` / `MWW_InitOps()` / `MWW_ProcessClassify()`. +- **mww_model_data.cc** / **mww_model_data.h**: model flatbuffer data (`hey_jarvis.tflite` v2 MixConv streaming graph). +- **mww.toml**: rimage module manifest entry. +- **llext/**: LLEXT build scaffolding (CMakeLists.txt, llext.toml.h). diff --git a/src/audio/microwakeword/llext-wrap.c b/src/audio/microwakeword/llext-wrap.c new file mode 100644 index 000000000000..4efe447bde9d --- /dev/null +++ b/src/audio/microwakeword/llext-wrap.c @@ -0,0 +1,134 @@ +// SPDX-License-Identifier: BSD-3-Clause +// +// Copyright(c) 2026 Intel Corporation. All rights reserved. + +#include +#include +#include + +/* + * Stubs that are needed for linkage of some applications or libraries + * that come from porting userspace code. Anyone porting should + * make sure that any code does not depend on working copies of these + * reentrant functions. We will fail for any caller. + */ + +struct stat; +struct _reent; + +size_t _read_r(struct _reent *ptr, int fd, char *buf, size_t cnt) +{ + errno = -ENOTSUP; + return -ENOTSUP; +} + +size_t _write_r(struct _reent *ptr, int fd, char *buf, size_t cnt) +{ + errno = -ENOTSUP; + return -ENOTSUP; +} + +void *_sbrk_r(struct _reent *ptr, ptrdiff_t incr) +{ + errno = -ENOTSUP; + return NULL; +} + +int _lseek_r(struct _reent *ptr, int fd, int pos, int whence) +{ + errno = -ENOTSUP; + return -ENOTSUP; +} + +int _kill_r(struct _reent *ptr, int pid, int sig) +{ + errno = -ENOTSUP; + return -ENOTSUP; +} + +int _getpid_r(struct _reent *ptr) +{ + errno = -ENOTSUP; + return -ENOTSUP; +} + +int _fstat_r(struct _reent *ptr, int fd, struct stat *pstat) +{ + errno = -ENOTSUP; + return -ENOTSUP; +} + +int _close_r(struct _reent *ptr, int fd) +{ + errno = -ENOTSUP; + return -ENOTSUP; +} + +/* + * libc.a's fmaxf()/fminf() are not built PIC-safe: their error path + * (__math_invalidf()) calls __isnanf()/__issignalingf(), and GNU ld refuses + * those relocations ("dangerous relocation") when linking this ET_DYN/PIC + * LLEXT. TFLM's kernels use fmaxf()/fminf() for plain (non-NaN-signaling) + * min/max, so provide direct, self-contained definitions here: linked ahead + * of -lm, these satisfy the symbols outright and libm.a's versions (and the + * non-PIC-safe helpers they pull in) are never extracted. + */ +float fmaxf(float x, float y) +{ + if (x != x) + return y; + if (y != y) + return x; + return (x > y) ? x : y; +} + +float fminf(float x, float y) +{ + if (x != x) + return y; + if (y != y) + return x; + return (x < y) ? x : y; +} + +/* + * libc.a's shared float-domain-error helper __math_invalidf() (used by + * logf()/sqrtf()/powf()/and most other single-precision libm functions' + * error paths) is itself built non-PIC-safe: it calls __isnanf() via a + * direct call8, which GNU ld refuses ("dangerous relocation") once that + * non-PIC object is pulled into this ET_DYN/PIC LLEXT. Providing our own + * definition here -- linked ahead of -lm -- means libc.a's copy (and the + * relocation it can't satisfy) is never extracted, while every libm + * function that calls it keeps working via its normal linked-in code. + * Semantics mirror libc.a's own implementation: propagate x via x+x for a + * NaN input (quieting/signalling per IEEE 754), else synthesize NaN via + * 0.0f/0.0f. + */ +float __math_invalidf(float x) +{ + union { float f; uint32_t u; } v = { .f = x }; + int is_nan = (v.u & 0x7f800000u) == 0x7f800000u && (v.u & 0x007fffffu); + + if (is_nan) + return x + x; + + return 0.0f / 0.0f; +} + +/* TFLM needs exit if build as a llext module only atm */ +#if CONFIG_COMP_MWW == m +void _exit(int status) +{ + /* + * Do not call libc assert() here: it drags in __assert_no_args(), + * which calls fwrite()/abort() from libc.a. Those objects are not + * built PIC-safe, and linking them into this ET_DYN/PIC LLEXT + * triggers GNU ld "dangerous relocation" errors. The spin loop + * below already provides the required "never return" behaviour. + */ + while (1) { + /* spin forever */ + } + /* NOTREACHED */ +} +#endif diff --git a/src/audio/microwakeword/llext/CMakeLists.txt b/src/audio/microwakeword/llext/CMakeLists.txt new file mode 100644 index 000000000000..25e55b9bf674 --- /dev/null +++ b/src/audio/microwakeword/llext/CMakeLists.txt @@ -0,0 +1,177 @@ +# Copyright (c) 2026 Intel Corporation. +# SPDX-License-Identifier: Apache-2.0 +# +# LLEXT build path for the mww component (CONFIG_COMP_MWW=m). Structurally +# mirrors src/audio/tensorflow/llext/CMakeLists.txt, but targeted at aphid +# (ace30/PTL, Clang/LLVM toolchain) rather than that file's ace15_mtpm/Xtensa +# reference build -- see plan Stage 8. The toolchain paths below are derived +# from SOC_TOOLCHAIN_NAME/ZEPHYR_SDK_INSTALL_DIR rather than hardcoded, since +# this file is authored in the sof-tgl worktree before the aphid-specific +# build in sof-ptl/sof exists; re-verify against the real build-ptl-llvm +# toolchain paths when Stage 8 is actually run. + +set(TFLM_PATH ${sof_top_dir}/../tflite-micro) +set(FLATBUFFERS_PATH ${sof_top_dir}/../flatbuffers) +set(GEMMLOWP_PATH ${sof_top_dir}/../gemmlowp) +set(RUY_PATH ${sof_top_dir}/../ruy) +set(NN_HIFI_PATH ${sof_top_dir}/../nnlib-hifi4/xa_nnlib) + +if(NOT DEFINED ZEPHYR_SDK_INSTALL_DIR OR "${ZEPHYR_SDK_INSTALL_DIR}" STREQUAL "") + set(ZEPHYR_SDK_INSTALL_DIR "/home/lrg/zephyr-sdk-1.0.1") +endif() + +set(MWW_TOOLCHAIN_ROOT + ${ZEPHYR_SDK_INSTALL_DIR}/gnu/xtensa-${SOC_TOOLCHAIN_NAME}_zephyr-elf/xtensa-${SOC_TOOLCHAIN_NAME}_zephyr-elf) +set(MWW_HAL_SOC_PATH ${sof_top_dir}/../modules/hal/xtensa/zephyr/soc/${SOC_TOOLCHAIN_NAME}) + +# As in tensorflow/llext/CMakeLists.txt, the HiFi4 nnlib optimized kernels +# are only pulled in for a genuine Xtensa (xcc) compiler; aphid's LLEXT +# module is built with Clang, so nn_hifi_lib is NOT built here and the +# reference (non-HiFi) TFLM kernel implementations are used instead. This +# mirrors the existing (arguably suboptimal, see plan/summary note) +# tflmcly behavior rather than diverging from it -- revisit in Stage 10. +set(MWW_LLEXT_KERNEL_SOURCES + ${TFLM_PATH}/tensorflow/lite/micro/kernels/call_once.cc + ${TFLM_PATH}/tensorflow/lite/micro/kernels/var_handle.cc + ${TFLM_PATH}/tensorflow/lite/micro/kernels/read_variable.cc + ${TFLM_PATH}/tensorflow/lite/micro/kernels/assign_variable.cc + ${TFLM_PATH}/tensorflow/lite/micro/kernels/concatenation.cc + ${TFLM_PATH}/tensorflow/lite/micro/kernels/conv_common.cc + ${TFLM_PATH}/tensorflow/lite/micro/kernels/depthwise_conv_common.cc + ${TFLM_PATH}/tensorflow/lite/micro/kernels/fully_connected_common.cc + ${TFLM_PATH}/tensorflow/lite/micro/kernels/logistic_common.cc + ${TFLM_PATH}/tensorflow/lite/micro/kernels/quantize_common.cc + ${TFLM_PATH}/tensorflow/lite/micro/kernels/reshape_common.cc + ${TFLM_PATH}/tensorflow/lite/micro/kernels/strided_slice_common.cc + ${TFLM_PATH}/tensorflow/lite/micro/kernels/conv.cc + ${TFLM_PATH}/tensorflow/lite/micro/kernels/depthwise_conv.cc + ${TFLM_PATH}/tensorflow/lite/micro/kernels/fully_connected.cc + ${TFLM_PATH}/tensorflow/lite/micro/kernels/logistic.cc + ${TFLM_PATH}/tensorflow/lite/micro/kernels/quantize.cc + ${TFLM_PATH}/tensorflow/lite/micro/kernels/reshape.cc + ${TFLM_PATH}/tensorflow/lite/micro/kernels/strided_slice.cc +) + +add_library(mww_tflm_lib OBJECT + ${TFLM_PATH}/tensorflow/compiler/mlir/lite/core/api/error_reporter.cc + ${TFLM_PATH}/tensorflow/compiler/mlir/lite/schema/schema_utils.cc + ${TFLM_PATH}/tensorflow/lite/core/c/common.cc + ${TFLM_PATH}/tensorflow/lite/core/api/flatbuffer_conversions.cc + ${TFLM_PATH}/tensorflow/lite/core/api/tensor_utils.cc + ${TFLM_PATH}/tensorflow/lite/kernels/internal/common.cc + ${TFLM_PATH}/tensorflow/lite/kernels/internal/tensor_utils.cc + ${TFLM_PATH}/tensorflow/lite/kernels/internal/runtime_shape.cc + ${TFLM_PATH}/tensorflow/lite/kernels/internal/quantization_util.cc + ${TFLM_PATH}/tensorflow/lite/kernels/internal/tensor_ctypes.cc + ${TFLM_PATH}/tensorflow/lite/kernels/internal/portable_tensor_utils.cc + ${TFLM_PATH}/tensorflow/lite/kernels/internal/reference/comparisons.cc + ${TFLM_PATH}/tensorflow/lite/kernels/internal/reference/portable_tensor_utils.cc + ${TFLM_PATH}/tensorflow/lite/kernels/kernel_util.cc + ${TFLM_PATH}/tensorflow/lite/micro/kernels/kernel_util.cc + ${MWW_LLEXT_KERNEL_SOURCES} + ${TFLM_PATH}/tensorflow/lite/micro/mock_micro_graph.cc + ${TFLM_PATH}/tensorflow/lite/micro/flatbuffer_utils.cc + ${TFLM_PATH}/tensorflow/lite/micro/micro_interpreter_graph.cc + ${TFLM_PATH}/tensorflow/lite/micro/micro_resource_variable.cc + ${TFLM_PATH}/tensorflow/lite/micro/micro_interpreter_context.cc + ${TFLM_PATH}/tensorflow/lite/micro/fake_micro_context.cc + ${TFLM_PATH}/tensorflow/lite/micro/arena_allocator/persistent_arena_buffer_allocator.cc + ${TFLM_PATH}/tensorflow/lite/micro/arena_allocator/recording_single_arena_buffer_allocator.cc + ${TFLM_PATH}/tensorflow/lite/micro/arena_allocator/non_persistent_arena_buffer_allocator.cc + ${TFLM_PATH}/tensorflow/lite/micro/arena_allocator/single_arena_buffer_allocator.cc + ${TFLM_PATH}/tensorflow/lite/micro/micro_allocator.cc + ${TFLM_PATH}/tensorflow/lite/micro/tflite_bridge/flatbuffer_conversions_bridge.cc + ${TFLM_PATH}/tensorflow/lite/micro/tflite_bridge/micro_error_reporter.cc + ${TFLM_PATH}/tensorflow/lite/micro/system_setup.cc + ${TFLM_PATH}/tensorflow/lite/micro/micro_context.cc + ${TFLM_PATH}/tensorflow/lite/micro/micro_log.cc + ${TFLM_PATH}/tensorflow/lite/micro/micro_profiler.cc + ${TFLM_PATH}/tensorflow/lite/micro/micro_time.cc + ${TFLM_PATH}/tensorflow/lite/micro/debug_log.cc + ${TFLM_PATH}/tensorflow/lite/micro/micro_op_resolver.cc + ${TFLM_PATH}/tensorflow/lite/micro/memory_helpers.cc + ${TFLM_PATH}/tensorflow/lite/micro/micro_allocation_info.cc + ${TFLM_PATH}/tensorflow/lite/micro/memory_planner/greedy_memory_planner.cc + ${TFLM_PATH}/tensorflow/lite/micro/memory_planner/non_persistent_buffer_planner_shim.cc + ${TFLM_PATH}/tensorflow/lite/micro/memory_planner/linear_memory_planner.cc + ${TFLM_PATH}/tensorflow/lite/micro/micro_utils.cc + ${TFLM_PATH}/tensorflow/lite/micro/micro_interpreter.cc + ../mww_model_data.cc + ../mww_model.cc +) + +target_include_directories(mww_tflm_lib PRIVATE + ${TFLM_PATH} + ${FLATBUFFERS_PATH}/include + ${GEMMLOWP_PATH} + ${RUY_PATH} + ${sof_top_dir}/posix/include + ${sof_top_dir}/../modules/hal/xtensa/include + ${MWW_HAL_SOC_PATH} +) + +target_compile_options(mww_tflm_lib PRIVATE + -std=c++17 + -fno-rtti + -fno-exceptions + -fno-threadsafe-statics + -fno-unwind-tables + -fmessage-length=0 + -DTF_LITE_STATIC_MEMORY + -DTF_LITE_DISABLE_X86_NEON + -Wno-unused-parameter + -DXTENSA + -DTF_LITE_MCU_DEBUG_LOG + -DTF_LITE_USE_CTIME + -mlongcalls + -fPIC + # TF_LITE_STRIP_ERROR_STRINGS drops DebugLog()/DebugVsnprintf()'s calls + # into vprintf/vsnprintf; NDEBUG drops libc assert(). Both chains pull + # in libc.a objects (vfprintf/fwrite/abort) that are not built PIC-safe, + # which GNU ld refuses ("dangerous relocation") when linking this + # ET_DYN/PIC LLEXT. + -DTF_LITE_STRIP_ERROR_STRINGS + -DNDEBUG +) + +if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + target_compile_options(mww_tflm_lib PRIVATE + -fno-pic + -stdlib=libc++ + -fno-vectorize + -fno-slp-vectorize + -mcpu=${SOC_TOOLCHAIN_NAME} + ) + target_include_directories(mww_tflm_lib SYSTEM PRIVATE + ${MWW_TOOLCHAIN_ROOT}/include/c++/14.3.0 + ${MWW_TOOLCHAIN_ROOT}/include/c++/14.3.0/xtensa-${SOC_TOOLCHAIN_NAME}_zephyr-elf + ${MWW_TOOLCHAIN_ROOT}/include + ) +endif() + +sof_llext_build("mww" + SOURCES + ../mww.c + ../llext-wrap.c + $ + INCLUDES + ${TFLM_PATH} + ${FLATBUFFERS_PATH}/include + ${GEMMLOWP_PATH} + ${RUY_PATH} + ${sof_top_dir}/posix/include + LIBS + m + gcc + LIBS_PATH + . + ${MWW_TOOLCHAIN_ROOT}/lib + ${MWW_TOOLCHAIN_ROOT}/../lib/gcc/xtensa-${SOC_TOOLCHAIN_NAME}_zephyr-elf/14.3.0 +) + +if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + llext_link_options(mww + --target=xtensa-${SOC_TOOLCHAIN_NAME}_zephyr-elf + --ld-path=${MWW_TOOLCHAIN_ROOT}-ld + ) +endif() diff --git a/src/audio/microwakeword/llext/llext.toml.h b/src/audio/microwakeword/llext/llext.toml.h new file mode 100644 index 000000000000..5929e908128b --- /dev/null +++ b/src/audio/microwakeword/llext/llext.toml.h @@ -0,0 +1,6 @@ +#include +#define LOAD_TYPE "2" +#include "../mww.toml" + +[module] +count = __COUNTER__ diff --git a/src/audio/microwakeword/mww.c b/src/audio/microwakeword/mww.c new file mode 100644 index 000000000000..af401e87737b --- /dev/null +++ b/src/audio/microwakeword/mww.c @@ -0,0 +1,398 @@ +// SPDX-License-Identifier: BSD-3-Clause +// +// Copyright(c) 2026 Intel Corporation. All rights reserved. + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include "mww_model.h" + +#if CONFIG_AMS +#include +#include +#include +#else +#include +#endif + +/* MFCC's non-compress output prepends a struct mfcc_data_header (24 bytes) + * to each hop, followed by MWW_FEATURE_SIZE int32_t Q9.23 mel-log values. + * This must match the frame size configured in the mww capture pipeline. + */ +#define MWW_HOP_BYTES (sizeof(struct mfcc_data_header) + MWW_FEATURE_SIZE * sizeof(int32_t)) + +/* Wake-word probability threshold above which KPB draining is triggered. + * Starting point for hardware bring-up, tune once real detections are seen. + */ +#define MWW_DETECT_THRESHOLD 0.5f + +SOF_DEFINE_REG_UUID(mww); +LOG_MODULE_REGISTER(mww, CONFIG_SOF_LOG_LEVEL); +#if CONFIG_COMP_MWW_MODULE +EXPORT_SYMBOL(mww_uuid); +EXPORT_SYMBOL(log_const_mww); +#endif + +#if CONFIG_AMS +/* Key-phrase detected message, shared with src/samples/audio/detect_test.c + * and consumed by kpb.c's AMS-consumer branch -- no kpb.c changes needed. + */ +static const ams_uuid_t ams_kpd_msg_uuid = AMS_KPD_MSG_UUID; +#endif + +struct mww_comp_data { + struct comp_data_blob_handler *model_handler; + struct mww_classify mwc; + struct kpb_client client_data; + uint32_t drain_req; +#if CONFIG_AMS + uint32_t kpd_uuid_id; +#else + struct kpb_event_data event_data; +#endif + bool initialized; + int8_t feature_buf[MWW_FEATURE_ELEM_COUNT]; + int feature_slices_filled; + uint32_t detections; + uint32_t kpb_trigger_events; +}; + +#if CONFIG_AMS +static int mww_notify_kpb(struct processing_module *mod) +{ + struct mww_comp_data *cd = module_get_private_data(mod); + struct comp_dev *dev = mod->dev; + struct ams_message_payload ams_payload; + + comp_info(dev, "MWW keyword trigger -> notifying KPB to begin draining"); + + cd->client_data.r_ptr = NULL; + cd->client_data.sink = NULL; + cd->client_data.id = 0; /**< TODO: acquire proper id from kpb */ + cd->client_data.drain_req = cd->drain_req; + + ams_helper_prepare_payload(dev, &ams_payload, cd->kpd_uuid_id, + (uint8_t *)&cd->client_data, + sizeof(struct kpb_client)); + + return ams_send(&ams_payload); +} +#else +static int mww_notify_kpb(struct processing_module *mod) +{ + struct mww_comp_data *cd = module_get_private_data(mod); + struct comp_dev *dev = mod->dev; + + comp_info(dev, "MWW keyword trigger -> notifying KPB to begin draining"); + + cd->client_data.r_ptr = NULL; + cd->client_data.sink = NULL; + cd->client_data.id = 0; + cd->client_data.drain_req = cd->drain_req; + cd->event_data.event_id = KPB_EVENT_BEGIN_DRAINING; + cd->event_data.client_data = &cd->client_data; + + notifier_event(dev, NOTIFIER_ID_KPB_CLIENT_EVT, + NOTIFIER_TARGET_CORE_ALL_MASK, &cd->event_data, + sizeof(cd->event_data)); + return 0; +} +#endif /* CONFIG_AMS */ + +/* + * MFCC's mel-log output is Q9.23 fixed point, normalized by the MFCC + * profile's mel_offset/mel_scale/top_db tuning to approximately the 0..1 + * range. Requantize that real-valued range against the model's own input + * tensor scale/zero_point (as populated by MWW_InitOps()), instead of + * assuming a fixed scale/zero_point. + */ +static inline int8_t mww_mel_q23_to_int8(int32_t mel_q23, float input_scale, + int input_zero_point) +{ + float norm = (float)mel_q23 / (float)(1 << 23); /* Q9.23 -> float, ~0..1 */ + float q = norm / input_scale + (float)input_zero_point; + int32_t scaled = (int32_t)(q >= 0.0f ? q + 0.5f : q - 0.5f); + + if (scaled > 127) + scaled = 127; + else if (scaled < -128) + scaled = -128; + + return (int8_t)scaled; +} + +__cold static int mww_init(struct processing_module *mod) +{ + struct module_data *md = &mod->priv; + struct comp_dev *dev = mod->dev; + struct mww_comp_data *cd; + + comp_info(dev, "entry"); + + cd = mod_zalloc(mod, sizeof(*cd)); + if (!cd) + return -ENOMEM; + + md->private = cd; + cd->drain_req = 1000; /* ms, initial default drain request */ +#if CONFIG_AMS + cd->kpd_uuid_id = AMS_INVALID_MSG_TYPE; +#endif + + return 0; +} + +static int mww_prepare(struct processing_module *mod, + struct sof_source **sources, int num_of_sources, + struct sof_sink **sinks, int num_of_sinks) +{ + struct mww_comp_data *cd = module_get_private_data(mod); + struct comp_dev *dev = mod->dev; + int ret; + + comp_dbg(dev, "entry"); + + if (cd->initialized) + return 0; + + ret = MWW_SetModel(&cd->mwc, NULL); + if (ret < 0) { + comp_err(dev, "MWW_SetModel failed: %d (%s)", ret, cd->mwc.error); + return ret; + } + + ret = MWW_InitOps(&cd->mwc, NULL, 0); + if (ret < 0) { + comp_err(dev, "MWW_InitOps failed: %d (%s)", ret, cd->mwc.error); + return ret; + } + +#if CONFIG_AMS + /* Register KD as AMS producer */ + ret = ams_helper_register_producer(dev, &cd->kpd_uuid_id, ams_kpd_msg_uuid); + if (ret) + return ret; +#endif + + cd->initialized = true; + cd->feature_slices_filled = 0; + comp_info(dev, "MWW model initialized: input_scale=%d.%06d zero_point=%d", + (int)cd->mwc.input_scale, + (int)((cd->mwc.input_scale - (int)cd->mwc.input_scale) * 1000000), + cd->mwc.input_zero_point); + + return 0; +} + +static int mww_process(struct processing_module *mod, + struct sof_source **sources, int num_of_sources, + struct sof_sink **sinks, int num_of_sinks) +{ + struct mww_comp_data *cd = module_get_private_data(mod); + struct comp_dev *dev = mod->dev; + size_t bytes_to_process; + const void *data_ptr, *buf_start; + size_t buf_size; + int ret = 0; + + if (!cd->initialized) { + size_t avail = source_get_data_available(sources[0]); + + if (avail > 0) { + const void *dp, *bs; + size_t bsz; + + if (source_get_data(sources[0], avail, &dp, &bs, &bsz) == 0) + source_release_data(sources[0], avail); + } + return 0; + } + + bytes_to_process = source_get_data_available(sources[0]); + + while (bytes_to_process >= MWW_HOP_BYTES) { + const int32_t *mel; + int8_t *slice; + int i; + + ret = source_get_data(sources[0], MWW_HOP_BYTES, + &data_ptr, &buf_start, &buf_size); + if (ret != 0 || !data_ptr) + break; + + mel = (const int32_t *)((const uint8_t *)data_ptr + + sizeof(struct mfcc_data_header)); + slice = &cd->feature_buf[cd->feature_slices_filled * MWW_FEATURE_SIZE]; + + for (i = 0; i < MWW_FEATURE_SIZE; i++) + slice[i] = mww_mel_q23_to_int8(mel[i], cd->mwc.input_scale, + cd->mwc.input_zero_point); + + /* Copy source data to sink so downstream stages (e.g. drain + * path back to host) keep seeing the raw MFCC hops. + */ + if (num_of_sinks > 0 && sinks[0]) { + void *snk_ptr, *snk_buf_start; + size_t snk_buf_size; + int sret = sink_get_buffer(sinks[0], MWW_HOP_BYTES, + &snk_ptr, &snk_buf_start, &snk_buf_size); + if (sret == 0 && snk_ptr) { + size_t size_to_wrap = (uint8_t *)snk_buf_start + + snk_buf_size - (uint8_t *)snk_ptr; + if (MWW_HOP_BYTES <= size_to_wrap) { + memcpy(snk_ptr, data_ptr, MWW_HOP_BYTES); + } else { + memcpy(snk_ptr, data_ptr, size_to_wrap); + memcpy(snk_buf_start, + (const uint8_t *)data_ptr + size_to_wrap, + MWW_HOP_BYTES - size_to_wrap); + } + sink_commit_buffer(sinks[0], MWW_HOP_BYTES); + } + } + + source_release_data(sources[0], MWW_HOP_BYTES); + bytes_to_process -= MWW_HOP_BYTES; + cd->feature_slices_filled++; + + if (cd->feature_slices_filled >= MWW_FEATURE_SLICE_COUNT) { + int8_t fmin = cd->feature_buf[0]; + int8_t fmax = cd->feature_buf[0]; + int j; + + for (j = 1; j < MWW_FEATURE_ELEM_COUNT; j++) { + if (cd->feature_buf[j] < fmin) + fmin = cd->feature_buf[j]; + if (cd->feature_buf[j] > fmax) + fmax = cd->feature_buf[j]; + } + comp_info(dev, "MWW DBG feature range: min=%d max=%d", fmin, fmax); + + cd->feature_slices_filled = 0; + cd->mwc.audio_features = cd->feature_buf; + cd->mwc.audio_data_size = MWW_FEATURE_ELEM_COUNT; + + ret = MWW_ProcessClassify(&cd->mwc); + if (ret < 0) { + comp_err(dev, "MWW_ProcessClassify failed: %d (%s)", + ret, cd->mwc.error); + continue; + } + + comp_info(dev, "MWW probability=%d raw=%u", + (int)(cd->mwc.probability * 100.0f), cd->mwc.raw_output); + + if (cd->mwc.probability >= MWW_DETECT_THRESHOLD) { + cd->detections++; + comp_info(dev, "MWW keyword detected: probability=%d pct (total=%u)", + (int)(cd->mwc.probability * 100.0f), cd->detections); + cd->kpb_trigger_events++; + mww_notify_kpb(mod); + } + } + } + + return ret; +} + +static int mww_reset(struct processing_module *mod) +{ + struct mww_comp_data *cd = module_get_private_data(mod); + + comp_dbg(mod->dev, "entry"); + cd->feature_slices_filled = 0; + return 0; +} + +__cold static int mww_free(struct processing_module *mod) +{ + struct mww_comp_data *cd = module_get_private_data(mod); + + assert_can_be_cold(); + + comp_dbg(mod->dev, "entry"); + +#if CONFIG_AMS + if (cd->kpd_uuid_id != AMS_INVALID_MSG_TYPE) { + int ret = ams_helper_unregister_producer(mod->dev, cd->kpd_uuid_id); + + if (ret) + comp_err(mod->dev, "unregister ams error %d", ret); + } +#endif + + mod_free(mod, cd); + return 0; +} + +static int mww_set_config(struct processing_module *mod, uint32_t param_id, + enum module_cfg_fragment_position pos, uint32_t data_offset_size, + const uint8_t *fragment, size_t fragment_size, uint8_t *response, + size_t response_size) +{ + return 0; +} + +static const struct module_interface mww_interface = { + .init = mww_init, + .prepare = mww_prepare, + .process = mww_process, + .set_configuration = mww_set_config, + .reset = mww_reset, + .free = mww_free +}; + +/* This controls build of the module. If COMP_MODULE is selected in kconfig + * this is build as dynamically loadable module. + */ +#if CONFIG_COMP_MWW_MODULE + +#include +#include + +static const struct sof_man_module_manifest mod_manifest __section(".module") __used = + SOF_LLEXT_MODULE_MANIFEST("MWW", &mww_interface, 1, + SOF_REG_UUID(mww), 40); + +SOF_LLEXT_BUILDINFO; + +#else + +/* Only used for the module adapter trace context, soon to be deprecated */ +DECLARE_TR_CTX(mww_tr, SOF_UUID(mww_uuid), LOG_LEVEL_INFO); +DECLARE_MODULE_ADAPTER(mww_interface, mww_uuid, mww_tr); +SOF_MODULE_INIT(mww, sys_comp_module_mww_interface_init); + +#endif diff --git a/src/audio/microwakeword/mww.toml b/src/audio/microwakeword/mww.toml new file mode 100644 index 000000000000..905880f55adf --- /dev/null +++ b/src/audio/microwakeword/mww.toml @@ -0,0 +1,21 @@ +#ifndef LOAD_TYPE +#define LOAD_TYPE "0" +#endif + + REM # microWakeWord keyword-spotting module config + [[module.entry]] + name = "MWW" + uuid = UUIDREG_STR_MWW + affinity_mask = "0x1" + instance_count = "40" + domain_types = "0" + load_type = LOAD_TYPE + module_type = "9" + auto_start = "0" + sched_caps = [1, 0x00008000] + REM # pin = [dir, type, sample rate, size, container, channel-cfg] + pin = [0, 0, 0xfeef, 0xf, 0xf, 0x45ff, 1, 0, 0xfeef, 0xf, 0xf, 0x1ff] + REM # mod_cfg [PAR_0 PAR_1 PAR_2 PAR_3 IS_BYTES CPS IBS OBS MOD_FLAGS CPC OBLS] + mod_cfg = [0, 0, 0, 0, 4096, 1000000, 128, 128, 0, 0, 0] + + index = __COUNTER__ diff --git a/src/audio/microwakeword/mww_model.cc b/src/audio/microwakeword/mww_model.cc new file mode 100644 index 000000000000..21da407b6c07 --- /dev/null +++ b/src/audio/microwakeword/mww_model.cc @@ -0,0 +1,225 @@ +// SPDX-License-Identifier: BSD-3-Clause +// +// Copyright(c) 2026 Intel Corporation. All rights reserved. + +#include +#include +#include + +#include "tensorflow/lite/core/c/common.h" +#include "tensorflow/lite/micro/micro_allocator.h" +#include "tensorflow/lite/micro/micro_interpreter.h" +#include "tensorflow/lite/micro/micro_log.h" +#include "tensorflow/lite/micro/micro_mutable_op_resolver.h" +#include "tensorflow/lite/micro/micro_resource_variable.h" +#include "tensorflow/lite/micro/testing/micro_test.h" +#include "mww_model.h" + +extern "C" int printk(const char *fmt, ...); + +// hard code the model today +#include "mww_model_data.h" + +static constexpr int kFeatureSize = MWW_FEATURE_SIZE; +static constexpr int kFeatureElementCount = MWW_FEATURE_ELEM_COUNT; + +// Arena size is a generous guesstimate for the streaming MixConv graph (12 +// ops incl. Conv2D/DepthwiseConv2D/FullyConnected plus 6 persistent resource +// -variable ring buffers). Refine down using +// MicroInterpreter::arena_used_bytes() once measured on hardware (logged in +// MWW_InitOps() below). +static constexpr size_t kDefaultArenaSize = 262144; + +// inference +static const tflite::Model *model; +static TfLiteTensor *input; +static TfLiteTensor *output; +static tflite::MicroInterpreter *interpreter; +static tflite::MicroAllocator *allocator; +static tflite::MicroResourceVariables *resource_variables; + +#include + +// stream, stream_1..stream_5: the MixConv graph's 6 persistent ring-buffer +// state variables (VAR_HANDLE/ASSIGN_VARIABLE/READ_VARIABLE), confirmed by +// direct flatbuffer inspection (see plan Stage 1) -- CALL_ONCE invokes a +// second subgraph that ASSIGN_VARIABLEs their zero initial state. +static constexpr int kNumResourceVariables = 6; + +// 12 ops used by the hey_jarvis.tflite MixConv streaming graph, confirmed by +// direct flatbuffer inspection (see plan Stage 1): CALL_ONCE, VAR_HANDLE, +// READ_VARIABLE, ASSIGN_VARIABLE, RESHAPE, CONCATENATION, STRIDED_SLICE, +// CONV_2D, DEPTHWISE_CONV_2D, FULLY_CONNECTED, LOGISTIC, QUANTIZE. +using MwwOpResolver = tflite::MicroMutableOpResolver<12>; +static MwwOpResolver *op_resolver; + +alignas(16) static uint8_t g_op_resolver_buf[sizeof(MwwOpResolver)]; +alignas(16) static uint8_t g_interpreter_buf[sizeof(tflite::MicroInterpreter)]; +alignas(16) static uint8_t g_mww_arena[kDefaultArenaSize]; + +int RegisterOps(MwwOpResolver *op_resolver) { + printk("[MWW DBG] RegisterOps entry op_resolver=%p\n", (void *)op_resolver); + TF_LITE_ENSURE_STATUS(op_resolver->AddCallOnce()); + printk("[MWW DBG] AddCallOnce OK\n"); + TF_LITE_ENSURE_STATUS(op_resolver->AddVarHandle()); + printk("[MWW DBG] AddVarHandle OK\n"); + TF_LITE_ENSURE_STATUS(op_resolver->AddReadVariable()); + printk("[MWW DBG] AddReadVariable OK\n"); + TF_LITE_ENSURE_STATUS(op_resolver->AddAssignVariable()); + printk("[MWW DBG] AddAssignVariable OK\n"); + TF_LITE_ENSURE_STATUS(op_resolver->AddReshape()); + printk("[MWW DBG] AddReshape OK\n"); + TF_LITE_ENSURE_STATUS(op_resolver->AddConcatenation()); + printk("[MWW DBG] AddConcatenation OK\n"); + TF_LITE_ENSURE_STATUS(op_resolver->AddStridedSlice()); + printk("[MWW DBG] AddStridedSlice OK\n"); + TF_LITE_ENSURE_STATUS(op_resolver->AddConv2D()); + printk("[MWW DBG] AddConv2D OK\n"); + TF_LITE_ENSURE_STATUS(op_resolver->AddDepthwiseConv2D()); + printk("[MWW DBG] AddDepthwiseConv2D OK\n"); + TF_LITE_ENSURE_STATUS(op_resolver->AddFullyConnected()); + printk("[MWW DBG] AddFullyConnected OK\n"); + TF_LITE_ENSURE_STATUS(op_resolver->AddLogistic()); + printk("[MWW DBG] AddLogistic OK\n"); + TF_LITE_ENSURE_STATUS(op_resolver->AddQuantize()); + printk("[MWW DBG] AddQuantize OK\n"); + return 0; +} + +static int Init_Interpreter(struct mww_classify *mwc); + +int MWW_InitOps(struct mww_classify *mwc, uint8_t *arena_buf, size_t arena_size) +{ + if (!arena_buf || arena_size == 0) { + arena_buf = g_mww_arena; + arena_size = kDefaultArenaSize; + } + printk("[MWW DBG] MWW_InitOps entry &model=%p model=%p arena_buf=%p arena_size=%zu\n", + (void *)&model, (void *)model, (void *)arena_buf, arena_size); + + op_resolver = new (g_op_resolver_buf) MwwOpResolver(); + printk("[MWW DBG] op_resolver=%p\n", (void *)op_resolver); + + if (RegisterOps(op_resolver) != 0) { + mwc->error = "register ops failed"; + return -EINVAL; + } + printk("[MWW DBG] RegisterOps OK, model=%p arena_buf=%p arena_size=%zu\n", + (void *)model, (void *)arena_buf, arena_size); + + allocator = tflite::MicroAllocator::Create(arena_buf, arena_size); + printk("[MWW DBG] allocator=%p\n", (void *)allocator); + if (!allocator) { + mwc->error = "allocator alloc failed (OOM)"; + return -ENOMEM; + } + + resource_variables = tflite::MicroResourceVariables::Create(allocator, kNumResourceVariables); + printk("[MWW DBG] resource_variables=%p\n", (void *)resource_variables); + if (!resource_variables) { + mwc->error = "resource_variables alloc failed (OOM)"; + return -ENOMEM; + } + + // create the interpreter via placement new + interpreter = new (g_interpreter_buf) tflite::MicroInterpreter(model, *op_resolver, + allocator, resource_variables); + printk("[MWW DBG] interpreter=%p\n", (void *)interpreter); + if (!interpreter) { + mwc->error = "interpreter alloc failed (OOM)"; + return -ENOMEM; + } + + printk("[MWW DBG] calling AllocateTensors\n"); + // and allocate the tensors + if (interpreter->AllocateTensors() != kTfLiteOk) { + mwc->error = "interpreter tensor allocate failed"; + return -EINVAL; + } + + printk("[MWW DBG] AllocateTensors OK, arena_used=%u\n", (unsigned)interpreter->arena_used_bytes()); + + // fetch input/output tensors + quantization params once; the + // interpreter/tensors are stable for the lifetime of this instance + return Init_Interpreter(mwc); +} + +static int Init_Interpreter(struct mww_classify *mwc) +{ + input = interpreter->input(0); + if (!input) { + mwc->error = "input interpreter NULL"; + return -EINVAL; + } + + // check input tensor element count is compatible with our feature + // data size (shape is (1, MWW_FEATURE_SLICE_COUNT, MWW_FEATURE_SIZE), + // not flattened to a single trailing dim, so check the full product) + int in_elems = 1; + for (int i = 0; i < input->dims->size; i++) + in_elems *= input->dims->data[i]; + if (kFeatureElementCount != in_elems) { + mwc->error = "input interpreter shape incompatible"; + return -EINVAL; + } + + output = interpreter->output(0); + if (!output) { + mwc->error = "output interpreter NULL"; + return -EINVAL; + } + + // single sigmoid wake-word probability, quantized uint8 + if (output->type != kTfLiteUInt8) { + mwc->error = "output tensor type != uint8"; + return -EINVAL; + } + + // expose the model's real input quantization params so callers can + // requantize their features correctly instead of assuming a fixed + // scale/zero_point. + mwc->input_scale = input->params.scale; + mwc->input_zero_point = input->params.zero_point; + + return 0; +} + +int MWW_SetModel(struct mww_classify *mwc, unsigned char *model_tflite) +{ + const unsigned char *src_model = model_tflite ? model_tflite : g_mww_model_data; + + // Map the model into a usable data structure. + model = tflite::GetModel(src_model); + printk("[MWW DBG] src_model=%p &model=%p model=%p\n", (void *)src_model, (void *)&model, (void *)model); + if (!model || model->version() != TFLITE_SCHEMA_VERSION) { + mwc->error = "failed to load model"; + return -EINVAL; + } + printk("[MWW DBG] MWW_SetModel OK version=%u\n", (unsigned)model->version()); + + return 0; +} + +int MWW_ProcessClassify(struct mww_classify *mwc) +{ + float output_scale = output->params.scale; + int output_zero_point = output->params.zero_point; + + // copy features to input then invoke() + std::copy_n(mwc->audio_features, kFeatureElementCount, + tflite::GetTensorData(input)); + + // run the interpreter + if (interpreter->Invoke() != kTfLiteOk) { + mwc->error = "invoke failed"; + return -EINVAL; + } + + // Dequantize the single sigmoid probability output + uint8_t raw = tflite::GetTensorData(output)[0]; + + mwc->raw_output = raw; + mwc->probability = (raw - output_zero_point) * output_scale; + + return 0; +} diff --git a/src/audio/microwakeword/mww_model.h b/src/audio/microwakeword/mww_model.h new file mode 100644 index 000000000000..1c0bc57498a7 --- /dev/null +++ b/src/audio/microwakeword/mww_model.h @@ -0,0 +1,56 @@ +// SPDX-License-Identifier: BSD-3-Clause +// +// Copyright(c) 2026 Intel Corporation. All rights reserved. + +#ifndef __MWW_MODEL_H__ +#define __MWW_MODEL_H__ + +#include "tensorflow/lite/core/c/common.h" + +/* microWakeWord streaming model configuration (hey_jarvis.tflite v2): + * input tensor shape (1, MWW_FEATURE_SLICE_COUNT, MWW_FEATURE_SIZE), int8, + * one new 10ms/40-bin MFCC hop per slice. The model is a stateful streaming + * graph (TFLM resource variables + CALL_ONCE init subgraph) that keeps its + * own longer-history ring buffers internally, so callers only ever need to + * supply MWW_FEATURE_SLICE_COUNT fresh hops per Invoke() rather than a + * caller-side sliding window. + */ +#define MWW_SAMPLE_RATE 16000 +#define MWW_FEATURE_SIZE 40 +#define MWW_FEATURE_SLICE_COUNT 3 +#define MWW_FEATURE_ELEM_COUNT (MWW_FEATURE_SIZE * MWW_FEATURE_SLICE_COUNT) +#define MWW_FEATURE_STRIDE_MS 10 +#define MWW_FEATURE_DURATION_MS 30 + +struct mww_classify { + int8_t *audio_features; + size_t audio_data_size; + const char *error; + float probability; /**< dequantized wake-word probability, 0..1 */ + uint8_t raw_output; /**< raw uint8 output tensor value */ + float input_scale; + int input_zero_point; +}; + +/* Export of C++ APIs into C namespace for linkage */ +#ifdef __cplusplus +extern "C" +{ +#endif + + /* 1st - pass in tflite flatbuffer formatted model, size is included in + * model metadata. + */ + int MWW_SetModel(struct mww_classify *mwc, unsigned char *model); + + /* 2nd - register the kernels and init TF micro for inference */ + int MWW_InitOps(struct mww_classify *mwc, uint8_t *arena_buf, size_t arena_size); + + /* 3rd - perform the inference */ + int MWW_ProcessClassify(struct mww_classify *mwc); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/audio/microwakeword/mww_model_data.cc b/src/audio/microwakeword/mww_model_data.cc new file mode 100644 index 000000000000..62b6750e7178 --- /dev/null +++ b/src/audio/microwakeword/mww_model_data.cc @@ -0,0 +1,5 @@ +#include + +#include "mww_model_data.h" + +alignas(16) const unsigned char g_mww_model_data[] = {0x20,0x0,0x0,0x0,0x54,0x46,0x4c,0x33,0x0,0x0,0x0,0x0,0x14,0x0,0x20,0x0,0x1c,0x0,0x18,0x0,0x14,0x0,0x10,0x0,0xc,0x0,0x0,0x0,0x8,0x0,0x4,0x0,0x14,0x0,0x0,0x0,0x1c,0x0,0x0,0x0,0x84,0x0,0x0,0x0,0xd4,0x0,0x0,0x0,0x60,0x6c,0x0,0x0,0x70,0x6c,0x0,0x0,0x4,0xcb,0x0,0x0,0x3,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x82,0x84,0xff,0xff,0xc,0x0,0x0,0x0,0x1c,0x0,0x0,0x0,0x38,0x0,0x0,0x0,0xf,0x0,0x0,0x0,0x73,0x65,0x72,0x76,0x69,0x6e,0x67,0x5f,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x0,0x1,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0xdc,0x82,0xff,0xff,0x45,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x5,0x0,0x0,0x0,0x64,0x65,0x6e,0x73,0x65,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x9a,0x82,0xff,0xff,0x4,0x0,0x0,0x0,0xb,0x0,0x0,0x0,0x69,0x6e,0x70,0x75,0x74,0x5f,0x61,0x75,0x64,0x69,0x6f,0x0,0x2,0x0,0x0,0x0,0x2c,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x20,0x83,0xff,0xff,0x54,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x13,0x0,0x0,0x0,0x43,0x4f,0x4e,0x56,0x45,0x52,0x53,0x49,0x4f,0x4e,0x5f,0x4d,0x45,0x54,0x41,0x44,0x41,0x54,0x41,0x0,0x44,0x83,0xff,0xff,0x53,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x13,0x0,0x0,0x0,0x6d,0x69,0x6e,0x5f,0x72,0x75,0x6e,0x74,0x69,0x6d,0x65,0x5f,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x0,0x55,0x0,0x0,0x0,0x88,0x6b,0x0,0x0,0x80,0x6b,0x0,0x0,0x60,0x6b,0x0,0x0,0x40,0x6b,0x0,0x0,0x20,0x6b,0x0,0x0,0x0,0x6b,0x0,0x0,0xe0,0x6a,0x0,0x0,0xc0,0x6a,0x0,0x0,0xa0,0x6a,0x0,0x0,0x80,0x6a,0x0,0x0,0x60,0x6a,0x0,0x0,0x40,0x6a,0x0,0x0,0x28,0x6a,0x0,0x0,0x14,0x6a,0x0,0x0,0xd8,0x68,0x0,0x0,0xd8,0x67,0x0,0x0,0xb8,0x59,0x0,0x0,0xb8,0x58,0x0,0x0,0xbc,0x53,0x0,0x0,0xbc,0x52,0x0,0x0,0x9c,0x44,0x0,0x0,0x9c,0x43,0x0,0x0,0x80,0x40,0x0,0x0,0x80,0x3f,0x0,0x0,0x60,0x31,0x0,0x0,0x60,0x30,0x0,0x0,0x34,0x2e,0x0,0x0,0x34,0x2d,0x0,0x0,0x1c,0x26,0x0,0x0,0x94,0x25,0x0,0x0,0xec,0x24,0x0,0x0,0xe4,0x24,0x0,0x0,0x64,0xd,0x0,0x0,0x5c,0xd,0x0,0x0,0x54,0xd,0x0,0x0,0x4c,0xd,0x0,0x0,0x44,0xd,0x0,0x0,0x3c,0xd,0x0,0x0,0x34,0xd,0x0,0x0,0x2c,0xd,0x0,0x0,0x24,0xd,0x0,0x0,0x1c,0xd,0x0,0x0,0x14,0xd,0x0,0x0,0xc,0xd,0x0,0x0,0x4,0xd,0x0,0x0,0xfc,0xc,0x0,0x0,0xf4,0xc,0x0,0x0,0xec,0xc,0x0,0x0,0xe4,0xc,0x0,0x0,0xdc,0xc,0x0,0x0,0xd4,0xc,0x0,0x0,0xcc,0xc,0x0,0x0,0xc4,0xc,0x0,0x0,0xbc,0xc,0x0,0x0,0xb4,0xc,0x0,0x0,0xac,0xc,0x0,0x0,0xa4,0xc,0x0,0x0,0x9c,0xc,0x0,0x0,0x94,0xc,0x0,0x0,0x8c,0xc,0x0,0x0,0x84,0xc,0x0,0x0,0x7c,0xc,0x0,0x0,0x74,0xc,0x0,0x0,0x6c,0xc,0x0,0x0,0x64,0xc,0x0,0x0,0x5c,0xc,0x0,0x0,0x54,0xc,0x0,0x0,0x4c,0xc,0x0,0x0,0x44,0xc,0x0,0x0,0x3c,0xc,0x0,0x0,0x34,0xc,0x0,0x0,0x2c,0xc,0x0,0x0,0x2c,0xb,0x0,0x0,0x24,0xb,0x0,0x0,0x64,0x6,0x0,0x0,0x5c,0x6,0x0,0x0,0x7c,0x3,0x0,0x0,0x74,0x3,0x0,0x0,0x84,0x1,0x0,0x0,0x7c,0x1,0x0,0x0,0xf4,0x0,0x0,0x0,0xec,0x0,0x0,0x0,0x8c,0x0,0x0,0x0,0x6c,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x5e,0x84,0xff,0xff,0x4,0x0,0x0,0x0,0x58,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0x8,0x0,0xe,0x0,0x8,0x0,0x4,0x0,0x8,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x28,0x0,0x0,0x0,0x0,0x0,0x6,0x0,0x8,0x0,0x4,0x0,0x6,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xeb,0x3,0x0,0x0,0x0,0x0,0xa,0x0,0x10,0x0,0xc,0x0,0x8,0x0,0x4,0x0,0xa,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x32,0x2e,0x31,0x35,0x2e,0x31,0x0,0x0,0xc2,0x84,0xff,0xff,0x4,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x32,0x2e,0x36,0x2e,0x30,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xde,0x84,0xff,0xff,0x4,0x0,0x0,0x0,0x50,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xc0,0x38,0xff,0xff,0x3e,0x85,0xff,0xff,0x4,0x0,0x0,0x0,0x78,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x48,0x39,0xff,0xff,0xc6,0x85,0xff,0xff,0x4,0x0,0x0,0x0,0xe0,0x1,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x38,0x3b,0xff,0xff,0xb6,0x87,0xff,0xff,0x4,0x0,0x0,0x0,0xd0,0x2,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x18,0x3e,0xff,0xff,0x96,0x8a,0xff,0xff,0x4,0x0,0x0,0x0,0xb0,0x4,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xd8,0x42,0xff,0xff,0x56,0x8f,0xff,0xff,0x4,0x0,0x0,0x0,0xf0,0x0,0x0,0x0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xd8,0x43,0xff,0xff,0xdc,0x43,0xff,0xff,0xe0,0x43,0xff,0xff,0xe4,0x43,0xff,0xff,0xe8,0x43,0xff,0xff,0xec,0x43,0xff,0xff,0xf0,0x43,0xff,0xff,0xf4,0x43,0xff,0xff,0xf8,0x43,0xff,0xff,0xfc,0x43,0xff,0xff,0x0,0x44,0xff,0xff,0x4,0x44,0xff,0xff,0x8,0x44,0xff,0xff,0xc,0x44,0xff,0xff,0x10,0x44,0xff,0xff,0x14,0x44,0xff,0xff,0x18,0x44,0xff,0xff,0x1c,0x44,0xff,0xff,0x20,0x44,0xff,0xff,0x24,0x44,0xff,0xff,0x28,0x44,0xff,0xff,0x2c,0x44,0xff,0xff,0x30,0x44,0xff,0xff,0x34,0x44,0xff,0xff,0x38,0x44,0xff,0xff,0x3c,0x44,0xff,0xff,0x40,0x44,0xff,0xff,0x44,0x44,0xff,0xff,0x48,0x44,0xff,0xff,0x4c,0x44,0xff,0xff,0x50,0x44,0xff,0xff,0x54,0x44,0xff,0xff,0x58,0x44,0xff,0xff,0x5c,0x44,0xff,0xff,0x60,0x44,0xff,0xff,0x64,0x44,0xff,0xff,0x68,0x44,0xff,0xff,0x6c,0x44,0xff,0xff,0x70,0x44,0xff,0xff,0xee,0x90,0xff,0xff,0x4,0x0,0x0,0x0,0x70,0x17,0x0,0x0,0xb1,0xc6,0xff,0x32,0x15,0x14,0xef,0x2c,0x14,0xf2,0x2,0x13,0xf3,0xf4,0x3,0x8,0x14,0x25,0xf2,0x35,0xf,0x3c,0x0,0xa,0x1e,0x1c,0x7,0xd,0xf1,0xe7,0x14,0x8,0xe,0x9,0xe4,0x0,0xf8,0x12,0xe7,0xe4,0xa4,0xac,0x15,0x2c,0x9,0x1f,0xdf,0x4,0x9,0x20,0xea,0xf7,0xfb,0xfe,0x28,0xfa,0xe2,0x22,0xd,0x2f,0x4b,0x15,0x23,0x12,0xb,0x5,0xfd,0xe8,0xec,0xf,0x8,0xe,0x15,0x4,0xf7,0x13,0xe4,0x13,0xd1,0xb2,0x81,0xdf,0xf9,0x1d,0x2a,0xfe,0xbe,0x21,0x2,0x8,0x0,0x1e,0xdf,0x16,0xfd,0x26,0xf,0x18,0x14,0x1e,0x50,0x4c,0x14,0x3f,0x31,0x21,0x5,0xf4,0xfa,0x7,0x9,0xfc,0xea,0xe,0xd1,0x9,0x1,0x19,0xe8,0xe8,0xab,0xea,0xf,0x15,0x5,0x15,0xe0,0x26,0xf8,0xfb,0xdc,0xf8,0xb8,0xa,0xff,0xfa,0x17,0x19,0xe2,0xf2,0x2e,0x24,0x35,0x37,0x15,0x2b,0xe9,0x16,0xf5,0xff,0xee,0xfa,0xfa,0x1f,0xcc,0xf6,0xdd,0xf7,0xc5,0xcb,0xa3,0xc9,0x17,0x5,0x8,0x19,0xcb,0xfc,0x9,0x7,0xfb,0x1c,0xc6,0xe6,0xda,0x1e,0xce,0xff,0xea,0xe7,0x12,0x24,0xf,0x35,0x2d,0x1d,0x28,0xf1,0xfa,0x0,0x0,0x10,0xc7,0xf4,0xe8,0xe4,0x0,0x2b,0xdd,0xac,0x59,0xfa,0x18,0xb7,0x1f,0x97,0x40,0x5a,0x56,0xfd,0x27,0x34,0x41,0x2,0x17,0xf4,0x2e,0xf0,0xe1,0xdc,0x11,0x3,0x3,0x3b,0x7c,0x44,0xed,0xd,0x62,0x2d,0x56,0xf2,0x16,0x4,0x17,0x29,0x3a,0xcf,0x29,0x65,0x2a,0x16,0x27,0x19,0x59,0xb,0x4f,0x0,0x12,0xee,0x38,0x41,0x0,0x13,0x4b,0x1f,0x31,0xe6,0xef,0xcf,0x1f,0x27,0x50,0x2d,0x5c,0x1a,0x4e,0xf9,0x46,0x48,0x2c,0x38,0xf8,0x13,0x2a,0xb,0x28,0xd7,0x3f,0x55,0x39,0xe6,0xff,0xec,0x54,0xfa,0x7a,0x7,0x0,0x4,0x2c,0xee,0x41,0xfd,0xc,0xdf,0x1b,0xd2,0xc0,0xf6,0x16,0x2c,0x42,0x55,0x49,0x13,0xfd,0x2,0x5f,0x9,0x3a,0xec,0x53,0xfe,0x52,0x14,0x3a,0x22,0x4d,0x34,0x50,0x10,0x11,0xbe,0x19,0xf8,0x7f,0xeb,0x40,0xff,0x17,0xf8,0x1a,0x19,0x13,0xce,0xeb,0xe1,0x2,0xdc,0x25,0x56,0x50,0x69,0x2a,0x1e,0x27,0xf3,0x4e,0xf6,0xd,0x2f,0x1a,0x3,0x35,0x15,0x4f,0x17,0x51,0x45,0x20,0x28,0xf7,0xde,0x14,0xfe,0x2b,0x1d,0x19,0xfe,0x23,0x9,0x2f,0x1c,0x17,0x30,0x2e,0x19,0xe0,0x7,0x28,0x18,0x12,0x31,0x45,0x43,0x64,0xe3,0x35,0x4e,0x48,0x64,0x2d,0xec,0x2a,0x1c,0x10,0x29,0x45,0x78,0x1c,0xde,0x1e,0xd5,0xf2,0xec,0x22,0x3,0xe2,0xfa,0xea,0xfd,0x0,0xf1,0x6,0xe1,0xe8,0xfa,0xd9,0xe8,0xd2,0xde,0xe6,0x2,0x8,0xfe,0x9,0x3d,0x3f,0x33,0x17,0xd8,0xb8,0xe6,0xf,0x12,0xf3,0x25,0xf2,0x46,0xf,0xe9,0xf7,0xc4,0x9,0xd3,0xf8,0xfa,0x13,0x3,0xff,0x4,0x3,0x9,0x5,0xe4,0xdf,0xf8,0xe7,0xfc,0xf6,0xd4,0x2b,0xf2,0xe,0x3a,0x31,0x54,0x41,0x57,0x30,0xf4,0xd3,0x16,0x27,0x46,0x11,0x6f,0x12,0x75,0x4,0xe2,0x0,0xf1,0xa,0xc1,0xec,0xf4,0xfd,0x9,0xfc,0xec,0xf5,0xed,0xfe,0xfe,0xe9,0x1a,0xfb,0x1e,0xfb,0x6,0x2d,0x22,0xfd,0x10,0x27,0x44,0x51,0x47,0x1,0xf3,0xcf,0x20,0x4b,0x77,0x6,0x52,0x9,0x7f,0xa,0xe3,0xfd,0x4,0x1f,0x9,0xfc,0xfa,0x2b,0x20,0x1,0xfe,0xec,0xf6,0xf3,0xe3,0xe6,0x29,0x6,0x20,0x9,0x1,0x1c,0xa,0xf9,0xfc,0xfc,0x16,0x23,0x24,0xdb,0xd8,0xe5,0xe0,0x39,0x44,0xd7,0x48,0xf9,0x36,0x31,0xde,0x1e,0x1e,0x56,0x31,0x2a,0x50,0x5,0xf4,0x4,0xef,0x21,0xf7,0x5,0x6,0xa,0x40,0x3a,0x36,0x17,0xf3,0x21,0xc2,0xb7,0xc0,0xb6,0xc0,0xee,0xcc,0xca,0xbb,0xbe,0xc7,0x0,0x7,0xd2,0xe3,0xd3,0xf8,0x5,0xa,0xf3,0x5,0x4,0x15,0x8,0xf0,0x22,0x31,0x2a,0x2b,0x24,0x22,0x1d,0xf3,0xf1,0xcd,0xcf,0x81,0xc6,0xae,0xeb,0xdf,0x3a,0x17,0x1f,0xfe,0xfa,0xb,0xe8,0xde,0xeb,0xde,0xfa,0xf,0xc4,0xea,0xae,0xc0,0xfb,0xf6,0xf8,0xfd,0xf8,0xfa,0xe8,0xee,0x2d,0x1d,0x2a,0x28,0x37,0x26,0xd,0xe0,0xff,0xb5,0xad,0x8e,0xac,0xc0,0xf6,0xec,0x31,0x1,0xe6,0xd,0xfe,0x1a,0xfa,0xe5,0xc8,0xde,0xd5,0x11,0xf9,0x4,0xdb,0xe4,0x4,0x9,0xfa,0xc,0x6,0x15,0xfd,0x1d,0x8,0x2b,0x15,0x17,0x15,0x18,0x17,0x10,0xa,0xbc,0xd5,0x9e,0xac,0x9b,0xdd,0xf6,0x20,0x1,0xfe,0xeb,0xf0,0xc,0xf8,0xe1,0xb3,0x5,0xde,0xf,0xdc,0xe2,0xb3,0xc5,0xf,0x9,0x9,0x34,0x4,0x15,0xdf,0xd,0x7,0x3b,0xd,0x3b,0x2a,0x21,0xa,0xf,0xc,0xf8,0xe9,0xc9,0xa8,0xb2,0xf6,0xe6,0xf3,0xfc,0xf6,0x5,0x2,0x6,0x11,0xf1,0xce,0xdd,0x0,0x22,0xeb,0xd,0xbf,0xe0,0xb,0xb,0xf6,0x27,0xfd,0x6,0x15,0x24,0x14,0x31,0x29,0x38,0x37,0x2c,0x1d,0x24,0x1a,0x3,0xa,0xe4,0xcd,0xbc,0xec,0xf3,0x11,0xf8,0xf2,0xde,0xf3,0x15,0xf6,0xc9,0xcc,0xd4,0xc7,0xf1,0xe5,0xfa,0xe1,0xdd,0x2a,0x4f,0xd,0x3a,0xd6,0x24,0xd5,0xe0,0xf8,0xf0,0xf5,0xdc,0xd8,0xfb,0x1,0x8,0xff,0xf7,0x13,0x15,0xd8,0xc9,0xbf,0xc0,0xee,0xd6,0xdd,0x7,0xac,0xb5,0xc6,0xaa,0xb3,0x99,0x7,0x5,0xe3,0xf0,0xdc,0xc2,0x1f,0x53,0x8,0x24,0xf8,0x33,0xd7,0x1b,0xd8,0xe4,0xe6,0x31,0x9,0xd,0xcb,0xe,0x6,0x21,0x5,0x6,0xd1,0xe4,0xb4,0xe2,0xec,0xf1,0xca,0xed,0xb2,0xb7,0xa4,0xbd,0xab,0x82,0x92,0xc4,0xdb,0xee,0xed,0xbd,0x22,0x59,0xf7,0xd,0xf9,0x1c,0xd9,0xec,0xb1,0xf1,0xd9,0xee,0xcd,0xf5,0xe7,0x6,0x15,0x13,0xf4,0x14,0x2,0xdb,0xbc,0xec,0xb8,0xfc,0xf0,0xf1,0xc1,0xed,0xe1,0xcd,0x86,0x81,0xc8,0xa5,0xf2,0x1a,0xf1,0xd1,0x14,0x3c,0xf9,0xe4,0xe9,0x14,0xd6,0xe5,0xba,0xf7,0xc9,0x0,0xe2,0xf3,0x1b,0x33,0xf8,0xf7,0xd,0x3f,0x28,0x6,0xeb,0xd9,0xaf,0xe0,0xd9,0x5,0x4,0xef,0xe1,0xf2,0xd1,0xa,0xc7,0xfd,0xed,0xf,0x39,0x1,0x26,0x1,0xfa,0xf9,0xb8,0x26,0xe8,0xb,0xda,0xe9,0xc8,0xc2,0xc4,0xe5,0xc3,0x26,0xfa,0x2f,0x13,0x49,0x12,0x1c,0x9,0xee,0xfb,0xfa,0x18,0x46,0x26,0x1b,0x0,0x32,0x2b,0x45,0xe5,0x1e,0x1,0x4c,0x2f,0x1c,0xf4,0x2b,0x29,0x32,0x34,0x63,0x13,0xf6,0xc0,0xd5,0xcf,0xe5,0xf5,0xc8,0xd9,0xa4,0xe4,0xec,0xb5,0xe8,0xbf,0xec,0xd7,0xe3,0xdd,0xc6,0xee,0xd2,0xf3,0xca,0xbc,0xa,0xc,0xfb,0x23,0xc,0xf4,0xda,0x1d,0x18,0xf6,0x2b,0x1b,0x45,0x3a,0x5f,0x1e,0xf1,0xe5,0xd3,0xfe,0xf0,0xd8,0xeb,0xbe,0x1,0x1,0xf1,0xc6,0xf3,0xfe,0xd7,0xe6,0xce,0xf4,0xee,0xed,0x5,0xf7,0x3,0xe0,0xe9,0x25,0xfe,0xfa,0xc,0x10,0xea,0xfe,0xa,0xe,0x57,0x58,0x76,0x5d,0x7f,0x1e,0xe3,0xdb,0xdd,0xe7,0xca,0x1,0xf4,0xdd,0x9,0x1,0x0,0xd7,0x24,0xd8,0x1,0xee,0x19,0x5,0x1e,0xe0,0xfd,0x21,0x11,0xf5,0x1d,0x39,0xb,0xd2,0xd4,0xe6,0xf7,0xec,0xeb,0x8,0x32,0x47,0x57,0x34,0x76,0x35,0xe,0xb3,0xec,0xf2,0xff,0xd8,0x6,0x17,0x3c,0x20,0xb,0x11,0xf,0xe5,0xf3,0xd,0xfd,0xc,0x0,0x13,0x27,0xef,0xff,0x4,0x1b,0x2c,0xf1,0xfd,0xc6,0xfb,0xf,0xfb,0xde,0x1,0x44,0x31,0x5b,0x2a,0x46,0x27,0xff,0xf0,0xf,0x4,0x1d,0xed,0x49,0x47,0x68,0xd,0x16,0x5,0xd,0x9,0x2e,0x8,0x23,0xf8,0x1c,0xfe,0x36,0x12,0x1a,0xf8,0x4c,0x5c,0x18,0xf6,0x12,0x6,0xe4,0xc,0xe4,0x59,0xf8,0xf,0xe0,0xe1,0xfa,0x8,0xf8,0x3,0x1c,0x4a,0x31,0x23,0x6,0x21,0xee,0xca,0xfc,0x3,0x12,0xf9,0x17,0xeb,0xc1,0x3,0xc0,0xb3,0x99,0xc0,0xdb,0xde,0xfb,0xd,0xd8,0xf3,0xc0,0xf8,0xce,0xed,0xa2,0x23,0xe7,0xe3,0xf6,0x5,0x1d,0x18,0xe7,0x15,0x1f,0x1e,0x29,0x27,0x24,0x18,0x1c,0xf5,0xf0,0x3,0x12,0x0,0xde,0xf7,0xf1,0xdd,0xc1,0xdb,0x9c,0xe2,0xe5,0xeb,0xe0,0xf2,0xa9,0xe7,0xc6,0xd3,0xfa,0xf2,0xbb,0x20,0xaf,0xd,0xdc,0xf0,0xbe,0x4,0xeb,0x25,0x1a,0x14,0xc,0x18,0xb,0x1,0x7,0xe,0x3,0x5,0xe6,0xc,0x0,0xe6,0xd7,0xc,0xc,0x26,0xe8,0x3e,0xf2,0xe8,0xe7,0xd4,0xb0,0x21,0xfe,0xe2,0xd,0xf0,0xff,0xd2,0xdd,0xe6,0xf7,0xf6,0xda,0x0,0xd7,0xec,0xe,0xf5,0xf6,0x3,0xeb,0x3,0xfc,0x2,0xd2,0xe9,0x0,0xef,0xdc,0x3,0xea,0x7,0x12,0x56,0x40,0x3b,0x38,0xb,0xf9,0xf5,0xd6,0x43,0x31,0x3,0x3d,0x7,0x2d,0xe4,0xe4,0xa,0xe4,0x1e,0xe6,0xe2,0xc2,0xde,0xdc,0x15,0x3,0xf2,0xbd,0xec,0xde,0x5,0xd8,0xeb,0xe8,0x12,0xfb,0x3e,0x23,0x1d,0x42,0x5d,0x5d,0x7f,0x38,0x38,0xc,0xef,0xd3,0x4b,0x12,0x2d,0x43,0xe,0x60,0x74,0x1c,0x2a,0x9,0x24,0x62,0x63,0x40,0x32,0x18,0x24,0xfe,0xff,0xf6,0xe4,0xd9,0x1d,0xcb,0xfe,0xe3,0x10,0x12,0x1c,0x7d,0x70,0x76,0x39,0x28,0x21,0xea,0x9,0x9,0xfc,0xc3,0xf8,0xdf,0xcf,0x99,0xea,0xee,0x67,0x53,0x28,0x6f,0x38,0x62,0x6f,0x49,0x1a,0xf7,0xc,0x8,0x11,0xe9,0xf6,0xd0,0xfe,0xcb,0xd9,0xf6,0xee,0x15,0x29,0x7f,0x57,0x53,0x67,0x16,0xa,0xd8,0xf0,0xc,0x45,0xd3,0xea,0x7,0xe6,0xcd,0x12,0xf7,0x61,0x7e,0x44,0x65,0x3e,0x78,0x51,0xd,0xd,0xc8,0x24,0xda,0xfd,0xbb,0xf8,0xb0,0xe1,0xd4,0xfa,0xd0,0x4,0x25,0x1f,0x67,0x6c,0x7f,0x48,0x53,0x1e,0xed,0x9,0x2a,0x3b,0xcf,0xc7,0xfa,0xf4,0xd1,0xde,0x15,0x34,0x30,0x2c,0x75,0x57,0x1f,0x33,0xbc,0xeb,0xdd,0x3,0xec,0x18,0xd8,0xc,0xf4,0xe3,0xec,0xdf,0xc4,0x19,0x2,0x42,0x44,0x4e,0x39,0x47,0xb,0xea,0xf8,0x2,0x28,0x64,0xe,0xfc,0x0,0xf9,0xe6,0xe9,0xe,0x35,0x57,0x22,0x3e,0x34,0x12,0x21,0xa9,0xed,0xd0,0xf8,0xea,0x10,0xdb,0xda,0xd8,0xe1,0xc2,0xf6,0xd0,0x4,0xf1,0x1c,0x6,0x36,0x2c,0xb,0xe,0xd1,0xf9,0x38,0x45,0x2c,0x3,0xe5,0xe4,0xf3,0xfe,0xb,0xe,0x2d,0xe0,0x2f,0xf0,0x33,0xe5,0x23,0x19,0x8,0x17,0x1c,0xe6,0x1a,0xf2,0x12,0xd8,0xec,0xdb,0xa,0xfb,0x21,0x22,0x38,0xb,0xf3,0xbe,0xf5,0xba,0x3,0xca,0x3,0xeb,0xd3,0x40,0x45,0x14,0x13,0xe8,0xfd,0x5b,0x13,0xf9,0x2c,0xf7,0x2f,0xfc,0x29,0xfb,0x19,0x1c,0x36,0xd,0xe9,0xfb,0x19,0xf3,0xf1,0x1,0xfb,0xe2,0xf6,0x1b,0x8,0xf3,0xc8,0xb2,0xdc,0xb4,0xde,0xcd,0x0,0xde,0xa,0x47,0x35,0x16,0xf9,0xff,0x2e,0x44,0x2f,0xd3,0xf5,0xb0,0xe3,0xe8,0x33,0x22,0x33,0x38,0x6,0xa,0x14,0x1c,0x29,0x29,0x2e,0xe7,0x1c,0xf8,0x1e,0x10,0xe6,0xd2,0xd2,0xa3,0xc1,0xab,0xde,0xa0,0x2a,0xeb,0x9,0x1e,0xd,0xf1,0x34,0xf5,0x21,0x5a,0x35,0xfd,0x18,0xc7,0xea,0xd6,0x38,0xb,0x14,0x1b,0x15,0x21,0x27,0x35,0x1c,0x24,0x14,0xfe,0x7,0x13,0x2,0x15,0xf5,0xe7,0xcf,0x81,0xbf,0xdf,0xc5,0x9b,0xf8,0xfb,0xfc,0x10,0x27,0xec,0x1a,0x1f,0x5,0x74,0x15,0xe8,0x10,0xcc,0x5,0xd2,0x10,0x1a,0xa,0x10,0x6,0x28,0x1e,0x1c,0x27,0x26,0x23,0xe6,0x19,0x1,0xfe,0xf5,0x6,0xac,0xa2,0xd6,0xbd,0x91,0xcd,0xdb,0x7,0x17,0x8,0x16,0x14,0x6,0x26,0x12,0x2f,0x79,0x26,0xf6,0x1,0x19,0x23,0x52,0x3e,0x79,0x32,0x46,0x9,0xe,0x1d,0xc,0x13,0xb,0x26,0x7,0xf2,0x47,0xf,0x5,0x27,0xf3,0x8,0x8,0x25,0xed,0xd,0x0,0xf,0xff,0x7,0xc5,0xd,0xfa,0x1e,0xfe,0x7,0x27,0x34,0x1e,0x20,0x25,0x30,0x46,0x6d,0x5f,0x51,0x69,0x1d,0x3d,0x10,0x3c,0x34,0x1b,0x10,0x20,0x22,0x40,0x17,0xd,0x5,0x15,0xa,0xe7,0x1a,0xe1,0xf4,0xfa,0x3,0xdc,0xa,0xed,0xf0,0xc9,0x11,0xd3,0x0,0xcc,0x5e,0x3b,0x4a,0x2e,0x3a,0x5f,0x5b,0x79,0x70,0x68,0x35,0x50,0x6,0x59,0x47,0x4e,0x2,0x5e,0xa,0x39,0x36,0x27,0xff,0xc1,0x1,0xf6,0xcc,0xed,0xe8,0xcc,0x11,0x3,0x1d,0xca,0x6,0xe3,0xfe,0xc7,0x17,0x89,0x48,0x3a,0x3f,0x18,0xe,0x40,0x5a,0x65,0x65,0x19,0x3b,0x39,0x8,0x39,0x3f,0x50,0x6,0x46,0x1c,0x9,0xfa,0xe5,0x1,0xcb,0xe0,0xf0,0xe7,0xdf,0xf8,0xe0,0xe6,0xc4,0xe2,0xd7,0xdf,0xcf,0x6,0xba,0x5,0x82,0x6f,0x59,0x3f,0x0,0xe9,0x28,0x22,0x54,0x3a,0x33,0x9,0x46,0x25,0x1a,0x41,0x2a,0x28,0x2b,0x33,0x25,0x9,0xe,0xd9,0xb2,0xd8,0xde,0xf5,0x9a,0xd3,0xe6,0xfd,0xe1,0xfa,0xed,0x17,0xb6,0xf1,0xee,0xf6,0x81,0xf6,0xcc,0xd8,0xde,0xed,0x20,0xb,0xcf,0xe4,0x25,0x41,0xf5,0x6,0x8,0xf2,0xa8,0x11,0xfb,0x38,0xdf,0xe,0x0,0xed,0x1a,0xa,0xc4,0xfd,0xb,0x6,0x6,0x36,0x28,0x61,0x1a,0x1a,0xb6,0xd7,0xc7,0xdd,0xf2,0x8,0x2,0xe5,0xa,0x1d,0xf9,0xe6,0xb8,0x1,0x26,0x17,0xf0,0x1f,0x1,0xdd,0xe2,0x1c,0xfb,0xed,0xc2,0xcd,0xf4,0xdb,0xdc,0x1a,0xb4,0x18,0xcf,0x47,0xda,0x2e,0x2c,0x46,0xa,0x8,0xea,0xbd,0x8d,0xd5,0xda,0xd5,0xed,0xff,0xc8,0xdb,0xc,0xdb,0xce,0x1b,0x17,0xe,0x16,0xe5,0xf2,0xe5,0xb7,0xf1,0xfc,0xf7,0x8b,0x1,0xfd,0xc0,0x1e,0xe1,0x81,0xb1,0xda,0x2c,0xea,0x26,0x5d,0x63,0x34,0x29,0xe7,0xe3,0xb4,0xae,0xec,0xfb,0xeb,0xe7,0xfb,0xb5,0x6,0xfa,0xed,0x2,0x37,0x1b,0x14,0x14,0xff,0xd,0xbe,0x25,0xe3,0xd9,0xe0,0xd3,0xb7,0x90,0xdf,0xf6,0xcf,0xce,0xb4,0x1e,0xd8,0x5f,0x4f,0x3c,0x20,0x0,0x16,0xce,0xbf,0xbe,0x1d,0xf9,0x12,0x6,0xf2,0x4,0xb,0x3a,0xdd,0x11,0x49,0x40,0x19,0x2c,0xb9,0x15,0xe9,0xed,0x4,0xc4,0xa9,0xac,0xa8,0xbb,0xba,0xce,0xcd,0xd6,0xdb,0x6,0xf4,0x5d,0x54,0x51,0x34,0x0,0xff,0xfe,0xc,0xdf,0x15,0x3d,0x20,0x6,0x3a,0x41,0x52,0x2a,0x27,0x1,0xcb,0xf4,0xf2,0xf0,0x6,0xc6,0xda,0x29,0x70,0x60,0x6a,0x32,0x3c,0xfc,0x22,0xf0,0xe,0xf2,0xca,0xd8,0x1d,0xf2,0xdc,0xe5,0xe7,0xd6,0xf2,0xdd,0xf,0xdb,0x9,0x45,0x16,0xe9,0x3e,0x39,0x4d,0x60,0x44,0xee,0xc8,0xeb,0xc6,0xff,0xca,0x3,0xe6,0x2d,0x65,0x57,0x61,0x2b,0x3e,0x13,0xa,0xe4,0xb,0xdd,0xdd,0xec,0x1f,0x2,0xea,0xf5,0x17,0x8,0x17,0xcb,0x19,0xf1,0xea,0x1c,0x34,0xc,0xf7,0x11,0x7f,0x46,0x53,0xb,0xed,0xbb,0xe0,0xcb,0xe1,0xf8,0x7,0x5b,0x6a,0x3e,0x51,0x34,0x22,0x27,0xee,0xf1,0xd8,0xd0,0xf0,0xb,0xea,0x20,0xe8,0xee,0xf9,0xfa,0xe1,0xef,0x5,0xf2,0xd5,0x10,0x16,0xc,0xf,0xc,0x47,0x4d,0x5c,0x2,0x5,0xf2,0xe8,0xe9,0xe2,0xf5,0x11,0x37,0x34,0xfd,0x2b,0xe1,0xf5,0xf7,0xfc,0x4,0xd4,0x0,0xe3,0x0,0xb,0x29,0xed,0x18,0xec,0x10,0xef,0xe6,0xe5,0x12,0xc1,0xfd,0xf3,0xdb,0xfb,0xd8,0xce,0x25,0x34,0x2b,0xf9,0x15,0x12,0xe4,0x5,0x14,0x26,0xf8,0xeb,0x10,0x24,0xe,0xde,0xd,0xf5,0xa,0xc1,0xdf,0xd1,0xea,0xfd,0x50,0xf8,0xef,0xe4,0x22,0xfa,0x7,0xf9,0x1b,0xff,0xbb,0xf,0xa3,0x2e,0x99,0x28,0xa5,0x57,0xc1,0xf9,0xcb,0x25,0xd0,0xfe,0xd1,0x34,0xad,0x25,0xcf,0x16,0xf0,0x47,0xdc,0xbf,0xd7,0x26,0xa2,0xec,0xc9,0xfa,0xc6,0xdb,0x96,0xe0,0xe0,0xf0,0xc6,0xe8,0xcc,0xdd,0xe6,0xb,0xbe,0x1e,0x99,0x15,0xb2,0x55,0x9a,0x41,0xd6,0x34,0xad,0x2,0xe0,0x15,0xc0,0xf9,0xcc,0xf9,0xf6,0x4d,0xe9,0x14,0x5,0x25,0xe1,0xe,0xbd,0xd7,0xb7,0xc9,0x93,0xf7,0xdf,0x3e,0x4,0x3e,0xc2,0x10,0xcd,0xc,0xdc,0x2e,0xdc,0x32,0xc8,0x22,0x8d,0x31,0xb7,0x28,0xd9,0x41,0xa0,0x39,0xd9,0x12,0xbe,0x2d,0xe1,0x48,0x18,0x18,0xf7,0xee,0xbd,0x2a,0xdb,0xe8,0xb4,0xe3,0x81,0xb9,0xcc,0x4,0xe8,0x69,0xbd,0x4a,0xc9,0x2d,0xee,0x18,0xc8,0x1e,0xba,0x1c,0xb0,0x36,0xe2,0xfe,0xb3,0x6c,0xa6,0x33,0xa8,0x4e,0xee,0x65,0xd7,0x52,0x5,0x3b,0xe9,0x37,0xfa,0xf,0xb8,0xf,0x91,0xd1,0xa0,0x5,0xbd,0x4e,0x44,0x5e,0xba,0x37,0xad,0x42,0xb6,0x3a,0xc3,0x1f,0xe5,0x3c,0x9d,0xa,0xb5,0x40,0xd2,0x3e,0xf4,0x1d,0x93,0x38,0xc5,0x10,0xdc,0x32,0x2f,0xfe,0xf1,0x36,0xcd,0x6b,0xa2,0x16,0x91,0xea,0xa7,0xd9,0xf3,0x6b,0x3c,0x45,0xf6,0x4e,0x3a,0xda,0x26,0x81,0xd5,0xa0,0xb8,0x9,0xec,0x25,0xde,0x24,0xf2,0xf6,0x1b,0xd,0xec,0x45,0x6,0xf5,0xe2,0x19,0xf0,0xdd,0xfa,0x5,0xe,0xb2,0xee,0x9,0x13,0x6,0x20,0x12,0x1b,0xf4,0xec,0xfd,0xc,0xf5,0x45,0xd4,0xdb,0x8d,0x1a,0xd7,0x94,0xdd,0x9,0xe2,0xe,0xe6,0xd4,0xd8,0x36,0x1b,0x2a,0x2e,0x1,0x2b,0xc9,0xd7,0x21,0x12,0xc,0xd6,0xef,0x7,0xa2,0x2,0x4,0x6,0x2e,0xde,0xf3,0xb4,0x1b,0xb7,0x3,0xea,0x69,0xdd,0xab,0xad,0x7,0xcb,0xbb,0xd3,0x8,0xdf,0xf,0xdc,0xef,0xf,0x1a,0x61,0x9,0xf0,0x2,0xb7,0xdb,0xb5,0x22,0xd8,0xea,0x6,0xd8,0xba,0xea,0xd8,0xe4,0xea,0x6,0x8e,0x15,0xcf,0xe1,0xcb,0xd1,0xa8,0x3a,0xdc,0xf0,0x84,0x5,0xce,0xdc,0xce,0xe6,0x1c,0xd3,0xf6,0x38,0xb,0x1b,0x3d,0xe5,0xd7,0xb6,0xbb,0xc1,0x9b,0xf8,0x36,0xd3,0x26,0x9,0xfc,0xda,0xe8,0x2,0xce,0xe3,0xa9,0x16,0xe6,0xcb,0xbe,0xe8,0x1b,0x26,0xc5,0xcd,0x96,0x18,0xdd,0xb9,0xc8,0xd0,0xe6,0xd5,0x14,0x1c,0xce,0xd5,0xaa,0xd0,0x5,0xc7,0xbc,0xd3,0xc5,0xdd,0xfc,0x11,0x49,0x8,0x4,0x5,0x19,0xf,0xdc,0xff,0xb7,0x4b,0x32,0x2f,0x21,0x53,0x11,0xe2,0xe0,0xc8,0xed,0xdd,0x2b,0x41,0x38,0x27,0x3e,0xb,0x16,0x1a,0x29,0x36,0x4e,0x1a,0x11,0x7,0xea,0x1,0xd5,0xed,0xd2,0xdc,0xe6,0x3,0xb,0x7,0xf7,0xf4,0xea,0x2c,0xe9,0xf2,0xe8,0xec,0xd5,0xf5,0xd6,0xd3,0xe0,0xf4,0xf6,0xf7,0x16,0x23,0x17,0x1b,0x1f,0xfa,0xe,0xf8,0x2b,0x24,0x4d,0xf,0x12,0xf6,0x0,0x1f,0xf6,0x8,0x12,0x35,0x31,0x5b,0x31,0x33,0x2f,0x1d,0xfc,0x30,0xf4,0xd,0xd,0xf,0x17,0x17,0x29,0xcf,0xee,0xe7,0x10,0xfc,0xef,0x1f,0x18,0x6,0x7,0xe7,0xec,0xdc,0x10,0x14,0x1f,0x10,0xfe,0x19,0x0,0x7,0x11,0xfd,0x40,0x45,0x71,0x59,0x7f,0x5d,0x66,0x57,0x48,0x3d,0x36,0x37,0x34,0x31,0x50,0x23,0x5d,0xe9,0xfc,0x1,0x6,0x6,0xe6,0xf9,0x3,0xfe,0xfa,0xf3,0xd8,0xf0,0xdf,0x2,0x3,0x1,0x27,0x24,0x2b,0x16,0xe,0x1b,0x25,0x3d,0x51,0x50,0x53,0x45,0x34,0x31,0x36,0x13,0xf,0x1b,0x47,0x1e,0x46,0x7,0x65,0x1,0xa,0x2d,0x32,0x22,0x13,0x13,0xea,0xed,0xef,0xdf,0xe5,0xdf,0xda,0xfa,0xd8,0x14,0x35,0x46,0x2e,0x1b,0x22,0x15,0x9,0x30,0x47,0x35,0x46,0x23,0x28,0x2a,0xfa,0xfd,0x15,0x2a,0x1c,0xf5,0x1a,0xc9,0x4b,0x93,0xcf,0x0,0xfb,0xf9,0xd5,0xc7,0xd6,0xb1,0xfd,0xda,0xe2,0xa5,0xd4,0xc5,0xe0,0xd3,0xd6,0xc1,0xf3,0xf4,0x2,0xed,0x6,0xee,0xeb,0xde,0xb2,0xd2,0xe0,0xee,0xdd,0x29,0x3d,0x16,0x19,0x1,0xe9,0xcd,0xd2,0x81,0xbb,0xdb,0xf8,0xcf,0xe6,0xce,0xca,0xd1,0xe8,0xed,0x1d,0xde,0xf2,0xb1,0xec,0xe3,0xcb,0xbf,0x2,0xd4,0x1b,0xc6,0xf4,0xe9,0x8,0xd5,0xec,0xfd,0xb2,0x24,0x12,0xe3,0x31,0xfb,0x6,0xf6,0xcd,0xe5,0xfa,0xca,0x17,0x11,0x9,0xd2,0xe9,0xc4,0x1,0xf2,0x2e,0xe8,0x15,0xe4,0x11,0xf9,0xfe,0xc9,0xd,0xd1,0xf5,0xd0,0xf,0x8,0x7,0xfe,0xd,0xe7,0xf,0xeb,0xed,0x13,0xd,0x2d,0x3c,0x1b,0xfd,0xd8,0xed,0xef,0xf8,0xe8,0x2c,0x5,0xf1,0xd9,0x24,0xe0,0xf6,0x3,0x55,0x5,0x32,0xb,0x4e,0xf9,0x12,0xf0,0x2d,0xe,0x31,0x2,0xd,0xe5,0xb,0x0,0x18,0xfe,0xf,0x1f,0x0,0x28,0x3,0xfc,0x27,0x1e,0x10,0x16,0xf1,0xcb,0xf,0x14,0x7,0xa,0x40,0x28,0x32,0x16,0x4d,0x27,0x55,0xf7,0x56,0x11,0x50,0x2,0x66,0xe1,0x1a,0x22,0x2e,0x19,0x19,0xf9,0x5,0x2f,0x34,0x13,0xfd,0x7,0xf6,0x14,0x1c,0x15,0x32,0x1c,0xe7,0xf1,0xf3,0x2,0xff,0x96,0xe0,0xf7,0xde,0xed,0xb5,0xd2,0x2,0xe7,0xfe,0x6,0x1f,0xbf,0xe0,0x7,0xd1,0xdc,0xb9,0xce,0xf,0xd9,0x26,0xcc,0xbc,0xb2,0xad,0x33,0xe9,0x1,0xfc,0xe4,0xce,0xe0,0xd6,0xf9,0x2,0x8,0x9,0xde,0xbf,0xe1,0xc7,0xc3,0xf2,0xde,0xa8,0xf6,0xe5,0xe8,0xee,0xe3,0x26,0x27,0x50,0xec,0x22,0xd8,0xbf,0xd7,0x6,0xfc,0xd0,0xc9,0x9f,0xcd,0xff,0x41,0x1e,0x9,0xf5,0xe8,0x3,0xfc,0xb7,0xda,0xdc,0x0,0x5,0xe1,0xe2,0xae,0xf4,0x11,0xee,0x25,0x1,0xf2,0x16,0x23,0xe7,0x38,0x4,0x1a,0x39,0x33,0xf6,0xd8,0xe6,0x14,0xd7,0xe9,0x17,0xc2,0xa9,0xc7,0xea,0x9,0x34,0xc,0xfa,0xc4,0xfe,0xe7,0xbe,0x17,0xf2,0xa3,0xcd,0xfd,0xcc,0xe9,0xef,0x8,0x2a,0x24,0xc7,0xc7,0xe5,0xfc,0xe9,0x14,0xc6,0xc7,0x5,0x19,0xed,0xcb,0x81,0xdd,0xda,0xc4,0xf2,0xf,0xb2,0xba,0xce,0xb,0x23,0xf,0x1d,0xd8,0x20,0xed,0x6,0xf6,0xda,0xe9,0xe1,0x1a,0xdc,0xb3,0xed,0xe3,0x35,0x24,0x24,0xb0,0x2c,0x29,0xd6,0xb,0x14,0xc3,0xf5,0xdc,0xe,0xd6,0x8d,0xd7,0xb8,0xf6,0xe4,0x5,0xb3,0x21,0xed,0x1,0x14,0x21,0xfb,0xe3,0x2e,0x2,0xcf,0xc0,0x8,0xc3,0xd5,0xf2,0xca,0x2f,0x33,0xf4,0x85,0xdf,0xfe,0x11,0x1a,0x2b,0x3,0x1a,0xe2,0xa,0xf,0xd,0xd5,0x2,0x0,0x11,0x35,0x1b,0x56,0x45,0x7d,0x44,0x1d,0x13,0xab,0xf8,0xfd,0xe8,0xef,0x4,0xc,0xd2,0xc0,0xe4,0x30,0xd4,0xba,0x20,0x3a,0x7,0xb9,0xeb,0xe7,0xf,0xfe,0x1c,0x4,0xd6,0xd4,0xd3,0xfe,0xbf,0xc6,0xe3,0xf4,0xb,0x2b,0x3f,0x38,0x7f,0x3c,0x3,0x0,0x30,0xf0,0xf8,0xc3,0x23,0x7,0xe0,0xcc,0xcf,0xd5,0xfa,0x21,0xef,0xc9,0x35,0x12,0xef,0x96,0xdc,0xa,0x2a,0xf7,0xe1,0xf3,0xca,0xf5,0xe0,0xd3,0xee,0xde,0xbc,0xc5,0xd3,0xfe,0x38,0x46,0x6a,0x6f,0x2c,0x6,0xa,0xcd,0x14,0xd2,0x20,0xee,0xe,0xbc,0xc4,0xf1,0xf5,0xfc,0xf3,0x83,0x12,0xc,0x4,0xa6,0xcd,0x7,0x17,0xf3,0xf4,0x16,0x5,0x8,0xb8,0xbf,0xe6,0xba,0x91,0xda,0xb,0x2d,0x31,0x3e,0x4d,0x50,0x44,0xcf,0x2e,0x2,0xe5,0xeb,0x5,0xc2,0xf9,0xd2,0xdc,0xd9,0x0,0xf1,0xd1,0xdc,0x2,0xdd,0xe3,0x84,0xab,0x13,0xf1,0x2d,0x7,0x22,0xd1,0xb9,0xdb,0xfa,0x6,0xd8,0x8c,0xb5,0x3,0xd8,0x1b,0x2a,0x60,0x32,0x1b,0xf7,0x11,0xfd,0xea,0xde,0x5,0xd9,0xce,0xe7,0xe2,0xb3,0xe4,0xf2,0xea,0xc9,0xac,0xc1,0xf6,0xf9,0xef,0xeb,0xcd,0xc6,0xf,0x17,0x30,0x4,0xe8,0xdd,0xcd,0xcb,0x4,0xcf,0xd4,0xea,0x9f,0xd7,0xde,0xfa,0x2,0xb6,0xce,0xf,0xfb,0x17,0x44,0x17,0xf6,0xfe,0xd,0x15,0x19,0xe8,0x1d,0x61,0xa3,0xe1,0xf0,0xe2,0x0,0xe6,0xec,0xcb,0xf6,0x7,0xec,0xe,0xe4,0xf6,0xfc,0xbf,0xfa,0xe3,0xf0,0xc1,0xca,0x7,0xe8,0xd7,0xd3,0xc8,0xea,0xff,0x0,0xfd,0x4f,0x1e,0x5,0x7,0xf0,0xe5,0xe6,0x2d,0x38,0x5e,0xc7,0xd7,0xf3,0xd8,0xf2,0xcb,0xe3,0xb3,0xfb,0x9,0xf9,0x7,0xe8,0xee,0xf8,0xd2,0xdb,0xfb,0xd5,0xec,0xc9,0xf8,0xf2,0xde,0xf2,0xd7,0xd7,0x4,0x5,0x3,0x49,0x22,0x1b,0x19,0x9,0xea,0xd,0x25,0xe,0x7a,0xa3,0xee,0xd9,0xec,0xc9,0xa7,0xb7,0xcc,0xf4,0xc,0xe0,0x21,0x12,0xf,0xfc,0x13,0x25,0xee,0xf9,0xcb,0xe9,0x17,0xf8,0xd5,0x1b,0xf7,0x17,0xf2,0x7,0x7,0x12,0x37,0xf5,0xf,0xf9,0x0,0x19,0xe,0x19,0x60,0x81,0xbc,0xe7,0xe9,0xfd,0xcb,0x85,0xfa,0x11,0x12,0x16,0x2,0x0,0xfc,0xfa,0xf2,0x14,0x17,0xdd,0xf7,0xdf,0x17,0xd5,0xf4,0x1f,0x8,0xf,0x5,0x13,0x6,0x34,0xf8,0xc,0x18,0xeb,0xf2,0xe,0x13,0x36,0x58,0xec,0xcd,0xdd,0xf1,0xd8,0x19,0xd9,0xe2,0xe9,0xe4,0xf7,0x9b,0xbc,0xa4,0xc3,0xf1,0xd0,0x39,0x22,0x37,0x6,0xeb,0xb,0x43,0x26,0x57,0x2a,0x29,0x17,0x20,0x38,0x4a,0xee,0x24,0x33,0x1d,0xc,0x54,0xd,0x2c,0xe8,0xd8,0xd2,0xee,0xd4,0xf3,0xea,0xc3,0xf6,0x5,0xe5,0x93,0x8a,0xae,0xc3,0xfe,0xdd,0xe2,0xf6,0x4d,0x24,0xc,0xe7,0x33,0x2d,0x37,0xf6,0x17,0x2a,0xf4,0x13,0x13,0x13,0xe3,0x1f,0x25,0x16,0x68,0x3c,0x29,0x5,0xe2,0x29,0xf6,0xfc,0x12,0x9,0xc2,0xcd,0xb1,0xeb,0xc5,0xd3,0xc,0xf2,0xe2,0xd5,0x3c,0x23,0x5f,0x6,0x44,0x18,0xd,0xc,0xeb,0xed,0x1c,0xed,0xbe,0xc6,0xe6,0xc4,0xcf,0xc,0xd,0xa,0x4e,0xfb,0x23,0x26,0x1d,0xf1,0x38,0x1d,0x49,0x10,0xe8,0x8a,0xde,0xd4,0xbb,0xc6,0xeb,0xa5,0xec,0xf8,0xfe,0xb,0xf1,0xd9,0x13,0xe7,0x9,0xe4,0xf6,0xc6,0x24,0xe4,0xae,0xbf,0xc7,0x87,0xc4,0xb7,0xee,0xd5,0xf1,0xec,0xd3,0x15,0x39,0x40,0x45,0xfa,0x28,0x2a,0x23,0xaf,0xd7,0xf2,0xa4,0xd8,0xde,0xf0,0xdf,0x1,0x13,0x18,0x12,0xb,0x17,0xf8,0xce,0xcb,0xda,0x81,0xc6,0xc9,0xde,0xf3,0xdb,0xb1,0xd3,0xdd,0xbf,0xc5,0xc4,0xd0,0xb1,0x5a,0x6a,0x69,0x32,0xa,0x2,0xd8,0xe9,0xf7,0xe9,0xd3,0xe5,0x1c,0xca,0x37,0xb0,0xf7,0xb5,0xc5,0xcc,0xd3,0xed,0x25,0x31,0x3f,0x3d,0x1b,0xfb,0xce,0xc8,0xbf,0xf3,0x28,0xb9,0xf7,0x6,0xe0,0xfa,0x19,0xe3,0x35,0x51,0x4e,0x1b,0x31,0xf7,0xeb,0xa9,0x0,0xc8,0x0,0xcc,0xf9,0xda,0x3,0xca,0xdc,0xaf,0xd7,0xe4,0xb7,0xff,0xc0,0x9,0x24,0x6e,0x30,0x51,0xc2,0xca,0xf0,0xdc,0xf5,0xea,0xe7,0x8,0xc4,0xf3,0xec,0xb1,0x56,0x61,0x7f,0x1a,0x42,0xfb,0x1f,0xd0,0xf8,0xe6,0xfa,0xf3,0x6,0xc6,0xed,0xae,0xb9,0xd9,0xce,0x98,0x9e,0xde,0x4,0x40,0x48,0x2e,0x2d,0x43,0xf2,0xec,0xa2,0x2b,0xe4,0xb0,0xeb,0x10,0x16,0xdd,0x4,0xd6,0x56,0x2a,0x6e,0x19,0xf5,0xd5,0xbf,0x9e,0xf5,0xeb,0xfa,0xab,0x5,0xb3,0xd4,0xf8,0xe1,0xe2,0xf1,0xb0,0x8a,0xc2,0xe1,0xf9,0x52,0x6a,0x7e,0x76,0x1a,0x19,0xda,0xf,0xd,0xcb,0x1c,0xe5,0xd9,0x8,0xf4,0xd4,0x69,0x43,0x68,0xf1,0xf9,0xe1,0xf1,0x8f,0xa8,0xd6,0xce,0xbc,0xd0,0xac,0x1b,0xef,0xe7,0xff,0xbf,0xd5,0x8c,0xd1,0xc2,0xf2,0x1a,0x4c,0x55,0x7e,0x33,0x3c,0x6,0xff,0xe4,0xd8,0x21,0x1,0x14,0xe3,0xf6,0x18,0x24,0xf4,0xe9,0x8,0x16,0xce,0xce,0x1d,0x27,0xe6,0xa,0x25,0x26,0x3,0x21,0x0,0x25,0xf2,0xee,0xe1,0xca,0x1b,0x1a,0xec,0x17,0x1f,0xb,0x10,0xa,0xf,0xed,0xfb,0x4,0xe7,0x15,0x3c,0x1f,0x33,0xff,0x46,0x4e,0xee,0xff,0xf4,0xf4,0xe2,0x10,0x12,0x54,0xc,0xf2,0x3d,0x13,0xf,0xf,0xf7,0xf,0x1c,0xed,0xf7,0xa9,0x19,0xfe,0xff,0xe7,0xeb,0x1a,0x0,0x6,0xfa,0x0,0xdb,0xec,0xe8,0x4,0xe,0xd,0xfa,0xff,0x2e,0x5f,0x3e,0x41,0x32,0x28,0x18,0x3b,0x41,0x20,0xef,0xfb,0x6,0x2d,0x2e,0x18,0x16,0x58,0x76,0x3e,0x11,0xd9,0xf5,0x4,0xf5,0xe4,0xed,0xc2,0xf8,0xd7,0xd7,0x14,0xe6,0xd9,0xb5,0x16,0x12,0xf5,0xe5,0xde,0xfd,0x7f,0x26,0x11,0x2f,0xfd,0xc,0x53,0x32,0x39,0x27,0xd0,0x17,0x23,0x2b,0x22,0x39,0x5d,0x6b,0x4f,0x38,0x0,0x9,0xf9,0x19,0xed,0xde,0x4,0xe,0x3,0xf6,0x1,0xf1,0xe3,0xcc,0x2d,0x1e,0x19,0xff,0xc,0x29,0x50,0x2e,0x1b,0xd8,0x6,0xe1,0x47,0x4b,0x35,0x30,0x19,0x15,0x9,0x23,0x2f,0x3e,0x68,0x43,0x14,0x2f,0xa,0x4,0xf5,0x28,0xf,0xfe,0xb,0xed,0x10,0x2,0x14,0xfb,0x11,0xdc,0x15,0x4c,0x30,0x22,0x26,0x2e,0x12,0xe,0xc,0xf9,0xed,0x1b,0x23,0xfb,0x15,0xc5,0xed,0xeb,0x3,0x0,0x30,0xfa,0x13,0xff,0xc,0x13,0xfc,0xdf,0xd7,0xb1,0xcc,0x81,0x9b,0x94,0xc4,0x92,0xa2,0x94,0xdc,0x9f,0xd9,0xcd,0xf3,0xd8,0x1,0xd5,0x20,0xb,0x9,0x11,0xf3,0x5,0x0,0x1e,0xa,0xec,0xfb,0xff,0xde,0x1a,0x1e,0x1a,0x13,0xc,0x1f,0xfa,0xeb,0xbd,0xd6,0xb2,0xa3,0xaa,0xa7,0xa0,0xa7,0xad,0xae,0xb6,0xfc,0xc0,0xdf,0xdc,0x18,0xe5,0x1,0xd4,0x27,0x1c,0xf2,0xe0,0x5,0xe9,0x2e,0x0,0x1b,0xde,0x11,0xe3,0xe7,0x19,0x32,0x46,0x29,0xfd,0x10,0x1d,0xe9,0xe4,0xca,0x96,0xc5,0xca,0xac,0xc6,0xb8,0xbd,0xc2,0xe7,0xe9,0xdd,0xb,0xd7,0x30,0xc8,0x2d,0xe0,0x29,0x36,0x20,0xb,0x1e,0x8,0x13,0x4,0xe,0x10,0x1,0xc,0xf3,0x13,0x16,0x46,0x33,0x14,0x1c,0xf5,0xf0,0xf0,0xd0,0xc3,0xcc,0xfe,0xc8,0xf7,0xe2,0xfa,0xf6,0xee,0xfd,0x23,0xc,0x11,0x21,0xec,0x37,0xe2,0x45,0x34,0x2,0xf8,0x2,0x28,0x31,0x30,0x1c,0x6,0x1b,0x7,0xe0,0x29,0x20,0x32,0x42,0x3c,0x23,0x36,0x16,0xdd,0xd0,0xcc,0xd6,0xf8,0xc5,0x15,0xf7,0xdd,0xfa,0x2c,0xff,0x1f,0xf7,0xfb,0x12,0xe4,0x31,0xfe,0x53,0xd8,0xa,0xec,0x1e,0xd0,0xf1,0xfe,0x24,0x0,0x1a,0x1b,0xf8,0x10,0xfe,0xe7,0xfd,0xdf,0x1e,0x2f,0x7,0xfa,0x13,0xb1,0xdc,0x85,0xd8,0xc4,0xc,0xe7,0x2c,0x2,0x16,0xdf,0x2f,0xd1,0xfb,0x9,0x2f,0x2a,0x4e,0xd9,0x13,0xe4,0x27,0xcd,0xa,0x21,0x22,0xed,0x17,0xec,0x14,0x19,0x7,0x10,0xe6,0xed,0x12,0x2e,0xf9,0xfd,0xed,0xad,0xd4,0xd6,0xb5,0xc6,0xe9,0xe1,0xfe,0xf1,0xe,0xf3,0xa,0xc2,0x12,0xd7,0x29,0xfa,0x4e,0xb6,0x7,0xe4,0xdc,0xe0,0x1a,0x11,0xff,0xde,0x0,0x13,0x11,0xff,0x22,0xfa,0x12,0xeb,0x3d,0x20,0x22,0xf4,0xe3,0x81,0xa1,0xae,0xb8,0x9d,0xfc,0xb9,0x7,0xf2,0x8,0x3,0xfa,0xe6,0x34,0xcb,0x28,0x12,0x19,0xbf,0x8,0xc8,0xf6,0xde,0x12,0x1c,0x5,0xf8,0x6,0xe7,0xea,0xe2,0x25,0x5,0x10,0x4,0x18,0x14,0xf8,0xe5,0xdf,0x8c,0xc4,0x9b,0xdd,0xd5,0xec,0xbe,0xef,0xf7,0x2b,0xf0,0x6,0xbf,0xfc,0xb4,0xa,0xda,0x1c,0xc4,0x0,0xd5,0xd1,0xab,0x1c,0x4,0x1b,0xcf,0x12,0xf6,0x16,0xf2,0x35,0xc,0x2,0x10,0x23,0x0,0x3,0xf7,0xe4,0xc1,0xe0,0xae,0xd8,0xe5,0xf1,0xbc,0x7,0xa,0x1a,0x16,0xf,0xe6,0x25,0xbd,0x30,0x10,0x19,0x25,0xc7,0x1,0x12,0xd2,0xea,0x1,0xa,0x11,0xe5,0xe5,0xf9,0x10,0xfd,0xee,0x8,0x1a,0xde,0xcb,0x1d,0x7,0xec,0xfb,0x9,0x17,0xef,0xef,0xbd,0x81,0xc4,0xe,0xdd,0x4c,0x32,0x0,0xc0,0xaa,0xe5,0xf9,0x31,0x21,0xea,0x1,0xf4,0xe3,0xfe,0x35,0x18,0xc,0xf0,0xcd,0x1a,0xe8,0xcd,0x17,0xfc,0x6,0xd8,0xe9,0x14,0xc8,0xd8,0xf1,0xea,0xe,0x23,0xe6,0xec,0xd1,0x96,0x13,0x3,0x34,0x4a,0xea,0xe6,0xc2,0xe3,0x39,0x36,0x13,0xe8,0xc4,0xe6,0xea,0x21,0xe3,0xcd,0x11,0x10,0xe3,0x7,0xfd,0xfe,0xfc,0xdb,0xeb,0x19,0xa,0x24,0xe7,0xaa,0x2,0x11,0xdc,0xfd,0xf2,0xfb,0x93,0xaf,0xf2,0x32,0x59,0x2c,0xfe,0xf8,0xa2,0xa,0x26,0x20,0x12,0x28,0xd8,0xfb,0xdf,0x37,0x46,0xf8,0xfb,0xd3,0xea,0x0,0xf,0xca,0xde,0xcc,0xf1,0x3,0xde,0xa,0xfd,0xf9,0x12,0x37,0x10,0xf0,0x1e,0x4,0x9b,0x2,0x18,0xfe,0x4b,0x1a,0x1a,0x6,0xe3,0xe9,0xc,0x47,0x18,0x3c,0xc9,0xec,0xec,0xe9,0x3e,0x1e,0x22,0x8,0xca,0xf5,0xfa,0xda,0xf4,0xe9,0x1e,0x14,0xed,0x1f,0xe4,0xc9,0x1b,0xb,0x11,0xff,0x13,0xda,0xcd,0xe9,0xed,0xf6,0x56,0x28,0x28,0xd5,0xce,0xf8,0x3c,0xcb,0x9,0xf5,0xf,0xf8,0x1f,0xcb,0xfa,0xd0,0x9d,0xaf,0xa8,0xd6,0xe0,0xe0,0xe9,0xe2,0xf8,0xe4,0xf8,0xd6,0x25,0xd8,0x1c,0x6,0x35,0x33,0x30,0x34,0xf,0xfe,0xee,0x16,0x1f,0xe,0xfe,0x18,0x29,0x2,0x1e,0xce,0x8,0xe9,0xf0,0xc4,0xe7,0xe1,0xf,0x91,0xcb,0x92,0x9d,0xb9,0xf9,0xda,0x9b,0xf0,0x7,0xc8,0xb,0xf2,0x1c,0xca,0x15,0xf0,0xfa,0xb,0x2,0x1f,0x3a,0xf4,0x12,0xf9,0x8,0x24,0x20,0x15,0x1f,0x25,0x3b,0x81,0xfc,0xe5,0xf0,0xa4,0xcd,0xba,0xec,0xb8,0x90,0x83,0xba,0xbf,0xe2,0x12,0xd3,0xe3,0xd,0xe4,0xe4,0xde,0xdb,0xc7,0x7,0xd1,0xfd,0x8,0x1d,0x5,0x39,0x10,0x2d,0xd,0x2b,0x27,0x37,0xe7,0xe5,0xc,0x28,0xaf,0xc1,0xb3,0xcd,0xbd,0xf9,0xa3,0xf3,0xa8,0xa6,0xa0,0xd9,0xa2,0xd9,0xf6,0x5,0xb5,0x12,0xca,0x7,0xf6,0xf4,0x6,0xfb,0xfa,0xfc,0x15,0x26,0xff,0xf,0xf8,0x3,0x9,0x3d,0xf3,0xf,0x16,0x1d,0x11,0x1e,0x84,0xd4,0xb6,0x5,0xcb,0xd9,0xc7,0xdb,0xb6,0xb3,0xc4,0xfc,0xc1,0xef,0xf7,0xff,0xe0,0xf8,0xe1,0xff,0xd6,0x10,0xed,0xf4,0xdc,0xf9,0x6,0x3e,0x19,0x1c,0xf,0xfb,0xf7,0x1a,0x1c,0x19,0xfd,0x3,0x1b,0x30,0x23,0x7,0x3b,0x3a,0x1b,0x45,0x59,0x25,0x22,0x13,0x4,0xef,0x5,0x18,0xfb,0xfc,0x10,0xef,0xde,0x5,0xe7,0xe9,0x3,0xfb,0x7,0xf6,0x4,0x1b,0xe6,0xea,0xf1,0xec,0xc2,0xef,0xe,0x2,0x3,0x16,0xfa,0x2a,0x4e,0x5,0x52,0x2e,0x2b,0x5b,0x3b,0x6b,0x3f,0x26,0x1d,0xf,0xea,0x22,0x9,0x34,0x18,0x19,0xff,0x44,0xf7,0x0,0xd,0x23,0x1,0x2c,0x2,0x19,0x20,0x17,0xd,0xf3,0x12,0xd8,0xee,0xd4,0x27,0xeb,0x2,0xe6,0x67,0xe,0x4f,0x5b,0x4a,0x4b,0x4e,0x56,0x49,0x36,0x14,0x18,0x14,0x15,0x38,0x38,0x29,0x6e,0x57,0x7f,0x44,0x4f,0x3a,0x2e,0x39,0x10,0x16,0xe,0xfa,0xfd,0x5,0xc9,0xe1,0xd8,0xec,0xcc,0xf0,0xc0,0x19,0xdb,0x33,0x15,0x49,0x1f,0x2d,0x4c,0x47,0x5e,0x44,0x38,0x3,0x26,0xff,0x1c,0x5b,0x16,0x46,0x3e,0x61,0x58,0x40,0x27,0x8,0x29,0x26,0x25,0x2,0x5,0xfd,0x25,0xf2,0xe8,0xe3,0xe9,0xf7,0xf3,0xf,0xad,0x2,0xa0,0x19,0x1,0xe,0x9,0x11,0x3,0x33,0x36,0x17,0x3c,0x17,0x15,0xef,0xed,0x9,0x20,0x2e,0x38,0x59,0x3a,0x3c,0x3b,0xe,0x14,0x45,0x9,0x1d,0x2,0xfa,0xe1,0xee,0xc5,0x2,0xf6,0xeb,0xef,0xea,0xc1,0xf9,0x9c,0xd2,0xd6,0xe2,0xed,0xfd,0xfb,0xa3,0xbd,0xe1,0x20,0xfb,0xa,0xfb,0x23,0x16,0xde,0xf7,0xd0,0x7,0xe0,0x7,0x23,0xcd,0x5,0xe3,0xf,0xba,0xde,0xea,0xd,0xc3,0xb6,0xae,0xf4,0xd3,0x1a,0x2c,0x1c,0xc,0x75,0xe8,0x6,0xca,0x13,0xde,0xae,0xff,0xfb,0x7,0x3a,0xee,0x43,0xee,0x39,0xda,0xee,0xec,0xe4,0xba,0xda,0xe1,0x16,0x7,0x25,0xf8,0x29,0xa,0x20,0xfe,0x31,0xa7,0x9b,0xc6,0xf1,0x1a,0x35,0x8,0x5f,0xda,0x61,0xd7,0xa9,0xda,0x1,0xd5,0xe4,0xc0,0xe0,0xfb,0x3f,0xff,0x16,0xef,0xd,0xec,0xd,0x4,0xe5,0xf6,0xeb,0x17,0x1d,0x13,0xff,0xdb,0x2a,0xc,0xf2,0xfa,0x18,0xcd,0xcd,0xb8,0xcc,0xeb,0x35,0x1a,0x4f,0x26,0x7f,0xfb,0xef,0xe6,0x13,0xe2,0xb,0xf2,0xcc,0xf6,0x1f,0x26,0x20,0x2a,0xee,0x11,0xff,0xf9,0xfb,0xf8,0xe1,0x2e,0xfa,0x3d,0x11,0x34,0x37,0xd5,0x24,0xfd,0xce,0xe2,0xb1,0xbc,0xee,0x14,0x43,0x29,0x71,0xde,0x69,0xe1,0x34,0xed,0x16,0x23,0xcf,0xe3,0xe5,0xfe,0xfc,0x23,0x38,0x2c,0x7,0x23,0x1,0xe,0xe,0x1,0xec,0xcc,0x6,0x2d,0x27,0xe8,0xff,0xc2,0xed,0xc4,0xcb,0x8e,0x90,0x96,0xda,0xd9,0xe9,0x0,0x50,0x19,0x77,0x9a,0xce,0xf3,0x9b,0xa3,0xbf,0xcc,0x9b,0xbe,0xfc,0xdb,0x54,0x27,0x18,0x19,0x34,0x16,0xe5,0xfd,0xc3,0x38,0x1c,0x1d,0x2e,0x52,0x23,0x59,0x4b,0x53,0x7f,0x3a,0x8,0x35,0x30,0x7f,0x4b,0x47,0x4c,0x4d,0x4f,0xdc,0xf2,0xcd,0xd7,0xc4,0xc9,0xec,0x9c,0xd8,0xb,0x15,0x1d,0xf7,0x17,0x21,0xdb,0xf0,0xe1,0xdb,0xdc,0x29,0x11,0x24,0x1,0x33,0xc,0x5e,0x3c,0x42,0x10,0x34,0x4,0xfd,0x37,0x41,0x2c,0xa,0x77,0x22,0x2e,0xed,0x18,0x36,0xa,0x54,0xf5,0xf4,0xae,0xae,0x8,0xfb,0xca,0xe1,0xfb,0xef,0x15,0xd3,0xf7,0xe,0x3c,0x70,0x5a,0x5d,0xf9,0x18,0x7,0x2,0x15,0x36,0xd3,0xf1,0xda,0xde,0xc8,0xd2,0xb1,0x1,0xf6,0xe2,0x1,0x41,0x8,0x14,0x37,0x69,0x10,0x37,0xe9,0xda,0xb,0xf7,0x1f,0xfa,0xec,0x6,0xe9,0xeb,0x29,0x25,0xfd,0x39,0x34,0x2f,0xf8,0xdd,0xfe,0xee,0xcf,0x3,0xaa,0xb4,0x6,0xa7,0xd7,0xc1,0xa6,0x96,0xdc,0x83,0xea,0x2,0x16,0x2f,0x34,0x44,0x57,0x45,0x19,0xe8,0x2e,0xcb,0xf8,0xef,0xe8,0x1c,0xf7,0x26,0x43,0x35,0x11,0x2d,0x1f,0x1e,0xf7,0xca,0x97,0xf8,0xf6,0xdd,0xeb,0xd6,0xda,0xf7,0xc3,0xdc,0xa9,0xc3,0xb3,0x86,0xe5,0xd5,0xd3,0xf9,0x1f,0xf0,0xec,0xd1,0x5,0x38,0x52,0x3c,0x39,0xff,0x58,0x31,0x4c,0x35,0x73,0x10,0x3e,0xb9,0x16,0x91,0xda,0xc4,0xe3,0x9f,0xce,0xbc,0xd0,0xe8,0xeb,0xf5,0xe5,0xc4,0xd8,0x2,0x1e,0xd6,0xef,0xe2,0xef,0xdb,0x2a,0xf5,0xfb,0xf1,0x33,0x24,0x2c,0x36,0x29,0x3c,0x36,0x36,0x67,0x33,0x7f,0x62,0x58,0xd3,0xe4,0xcf,0xe9,0xce,0xfb,0xd,0xf0,0xe8,0x3a,0x19,0xd1,0xc3,0xfa,0xc8,0xe8,0xd0,0x1c,0xdf,0xf,0xed,0x2,0xfc,0xf0,0xf8,0xf4,0x1d,0x1e,0x5a,0x69,0xa,0x2b,0x2,0x13,0x21,0x44,0x45,0x78,0x4a,0x49,0xe9,0xcd,0xe7,0xf,0xde,0xe,0x25,0x5c,0x33,0x42,0x30,0x1a,0xbe,0xc3,0xea,0x29,0xb,0x45,0xf,0x25,0x1,0xf7,0x9,0xf2,0xf1,0x10,0x4,0x55,0x20,0x1e,0xf,0x44,0x4,0xf5,0xd,0x26,0x47,0x46,0x37,0x3c,0xe7,0x7,0x28,0x29,0xb,0x2c,0x38,0x4c,0x51,0x32,0x3e,0x1b,0xa8,0xed,0x31,0x29,0xee,0x62,0x5,0x4d,0x1b,0xf3,0x13,0xe8,0x2b,0x22,0x29,0x23,0x44,0x12,0x8,0x6,0xe3,0xcf,0xed,0xdc,0x35,0x21,0x1b,0x33,0x6,0x22,0x50,0x2d,0xfe,0x1e,0x36,0x46,0x53,0x39,0x2f,0xe9,0xcb,0xb8,0xf0,0x41,0xd,0x28,0xe5,0x23,0xf0,0x5b,0xff,0xff,0x6e,0xa8,0xff,0xff,0x4,0x0,0x0,0x0,0x96,0x0,0x0,0x0,0xb2,0xf9,0x97,0xa4,0x29,0x9f,0x7f,0x7f,0xb,0x81,0xf2,0xe1,0x5a,0x81,0x40,0x81,0x4f,0x67,0xc2,0xb6,0x24,0x12,0x7f,0xd,0x5d,0xb,0x8a,0x1b,0x13,0x89,0x56,0xdc,0x3d,0xf8,0x28,0x97,0x4e,0x43,0x46,0x9b,0xef,0xb3,0x77,0xa7,0x29,0xee,0x83,0x7f,0xd1,0x81,0xfc,0xb7,0x4f,0x7f,0x26,0xca,0x56,0xfe,0xf5,0x92,0x81,0x64,0xf0,0x92,0x8,0x38,0xe7,0xba,0xdf,0x52,0xc0,0x42,0x75,0xf3,0x81,0x86,0x64,0x20,0x81,0xe2,0x5c,0x5c,0xd3,0x4f,0x71,0xa3,0x7f,0x9f,0xd7,0x7f,0xf1,0x2f,0xb8,0x81,0x73,0x5b,0xfe,0xcd,0xb3,0x79,0xda,0x62,0x58,0xc9,0xe0,0x84,0xaf,0xe8,0x96,0x26,0x21,0xe0,0x99,0x1c,0x7f,0x81,0xeb,0xeb,0x7f,0xe4,0xa2,0x7f,0x7f,0xc9,0x7f,0x7f,0xc0,0xe0,0x81,0x5d,0x81,0x81,0x7f,0x2a,0x46,0xb3,0x7f,0x77,0xd5,0x91,0x7f,0x81,0xaa,0xfb,0x42,0xdb,0xee,0x81,0xb3,0x5f,0x0,0x0,0x12,0xa9,0xff,0xff,0x4,0x0,0x0,0x0,0x78,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x96,0xa9,0xff,0xff,0x4,0x0,0x0,0x0,0x8,0x7,0x0,0x0,0x2a,0xa,0x2d,0x1b,0x60,0x6,0x2c,0x1b,0xe4,0xc5,0xf3,0x18,0x0,0xa,0xc5,0xf2,0xf6,0xcc,0xad,0xbb,0xf1,0x52,0xff,0x2f,0x7f,0xb2,0xbf,0xd6,0xe1,0xdf,0xc5,0xa2,0x30,0xc4,0xa0,0x81,0xcf,0x8,0xbc,0xde,0x7b,0xee,0x4,0xfe,0x56,0x39,0xe7,0xfb,0x11,0xe6,0xd2,0xdb,0xa4,0x43,0x54,0xc0,0xe8,0xa3,0xe1,0x48,0x7,0xd,0xc,0x3b,0xd7,0x30,0x16,0xe1,0xf4,0x1a,0xdb,0x5f,0xf9,0xfc,0x7f,0x32,0xb9,0x20,0x1c,0xc1,0x24,0xff,0xbe,0xf7,0x19,0x40,0xe6,0x15,0xe9,0xf5,0x6,0x23,0x27,0x77,0xf3,0x54,0xe9,0xaa,0xf6,0x30,0xf4,0x9d,0xce,0xbf,0x0,0xd4,0xa8,0xb7,0xd1,0xe1,0xd0,0x32,0x7f,0xad,0xe2,0x46,0x8a,0x57,0xe8,0x17,0x48,0x2,0x8c,0x43,0x39,0x2a,0xec,0x7f,0x22,0x1e,0x24,0x4,0xf7,0xfd,0x34,0xf1,0x18,0xdd,0xe2,0xb9,0x71,0xde,0xd6,0xff,0xc4,0xbb,0x58,0x0,0xd1,0x29,0xd2,0x2,0xc,0xe6,0x4e,0x7f,0x8,0xc4,0xfa,0xb,0xf8,0xfc,0xd8,0xcb,0x51,0x27,0xf4,0xde,0x4,0xab,0xb,0x5,0xf8,0xde,0x21,0xfc,0x21,0x27,0xb,0x12,0xb7,0x1c,0xe4,0xd4,0x55,0x26,0xc9,0xed,0x44,0x9b,0x20,0xd9,0x5a,0xf,0xe8,0xcd,0x15,0x1d,0xdf,0xb6,0x42,0x68,0x7d,0x81,0xd0,0xf9,0x83,0x33,0xcb,0xc5,0x4a,0x2b,0x2f,0x22,0x12,0xe8,0xd9,0x2,0x2d,0xbb,0xe,0xf9,0xf6,0x39,0x7f,0x40,0xc9,0x5,0x11,0xdd,0x32,0x1a,0x11,0x32,0xa6,0x10,0xf6,0x8b,0x37,0xb2,0xc5,0x8,0xff,0xf0,0x3a,0x44,0xae,0x89,0x3e,0x1f,0x2,0x7f,0xce,0xd3,0x8a,0x3f,0x8c,0x28,0xf9,0x48,0x3f,0x20,0x79,0x17,0x20,0x16,0x6b,0x5b,0x22,0x0,0x40,0xe4,0xd7,0xd5,0xf1,0xc,0x14,0xcc,0x25,0x1,0x26,0xe1,0xdd,0xf7,0xed,0xf5,0xda,0xf6,0xf,0xc0,0x81,0xf2,0x34,0xda,0x6,0xcc,0x0,0xd1,0xf6,0xa2,0xe2,0xe5,0xe9,0xce,0x44,0x3a,0x3,0x2a,0xd7,0xec,0xe4,0xdb,0x1e,0xde,0x38,0xfc,0x36,0x3d,0xf0,0xef,0x26,0xd,0x81,0xd4,0x12,0xbe,0xab,0xf,0xed,0xf4,0xda,0x18,0xac,0x28,0x21,0x44,0xea,0x28,0x0,0xc5,0x89,0xd2,0x22,0xbc,0x8e,0xea,0xe3,0x10,0x92,0xf7,0x21,0xc1,0xa,0xf3,0x29,0xba,0x81,0xb8,0x5d,0x70,0x31,0xf1,0x5a,0xd,0xf4,0x2c,0x81,0xdc,0xfa,0x1e,0xc7,0x21,0x8a,0xee,0xcf,0x52,0xca,0xa,0xf5,0xf5,0x2,0x48,0x5,0xfd,0xf9,0x1f,0x30,0x47,0xcc,0x4d,0x6,0xd9,0xd9,0x81,0x27,0x10,0xca,0x8b,0xe4,0xdc,0x23,0xc9,0x36,0x3,0x8e,0x1e,0xbc,0x60,0xdc,0x1d,0xee,0xdf,0xe3,0xe8,0xbb,0xfa,0xb,0x29,0x64,0x1d,0xb1,0x4,0x4b,0xa8,0xf,0xb5,0xcb,0xee,0x3b,0xb,0xd8,0x31,0x16,0x7f,0x9c,0xcd,0x32,0x11,0x5c,0x1,0xe8,0xe4,0x16,0x3f,0xee,0x32,0x61,0xff,0xf8,0x7b,0x6b,0xd8,0x6,0xa2,0x29,0xfb,0x18,0x60,0xfd,0x4c,0x2b,0xae,0x4,0xad,0x30,0x10,0xef,0x2b,0x1b,0xe,0x20,0x8c,0x81,0x17,0xe9,0x4b,0x10,0x3b,0xdb,0x77,0xf9,0xfb,0xb6,0xde,0xe9,0xef,0x6c,0x21,0xdd,0x38,0xfd,0x42,0x25,0xc8,0x7f,0x11,0x3a,0xa5,0x16,0xd8,0xb3,0x6,0xb1,0x3c,0xee,0xe8,0xf8,0x5b,0xf0,0x3e,0x14,0x16,0x4b,0x24,0x17,0xd2,0x90,0x7f,0xf7,0xf6,0x5,0x9,0x2c,0xa4,0x18,0x43,0x19,0x12,0x18,0x32,0x44,0xf6,0xda,0x3c,0xdd,0x2a,0xe9,0xc7,0xea,0x3b,0x45,0x8e,0xf,0xab,0x2f,0xdb,0x1f,0xfa,0x27,0xe,0x51,0xfc,0xb8,0xf5,0xd4,0x72,0x1a,0x28,0x7f,0x1c,0xda,0x20,0xe4,0xe7,0x92,0x34,0xff,0x63,0x17,0x2a,0xb,0xd,0x92,0x4c,0xca,0xa5,0x77,0x21,0xdd,0x55,0x5e,0x60,0xf2,0x2c,0x0,0x7f,0x18,0x4,0x30,0xaa,0xa7,0x36,0x4,0xb4,0xf0,0x34,0x6c,0xc3,0xec,0x15,0x12,0x2c,0x39,0x19,0x30,0xa,0x10,0x39,0xb4,0xa5,0x25,0xc2,0x14,0xcc,0x6,0x7f,0xc2,0x38,0x19,0xb6,0xfd,0xd9,0x2,0x67,0x13,0xb9,0x1f,0xfb,0xd1,0xe0,0x54,0xec,0xed,0xcc,0xf9,0x69,0xcc,0x3a,0xe4,0x7c,0x22,0x82,0x35,0xe,0x16,0x2d,0x81,0xe9,0xf9,0x2,0x26,0x96,0xe1,0x93,0x38,0x44,0xbb,0xf1,0x15,0x4d,0xec,0x34,0x1c,0x53,0xb4,0xfa,0xc0,0xa0,0x30,0xfd,0xc9,0xf1,0xd6,0x7f,0xd0,0xa4,0xe9,0xe0,0xbd,0x47,0x9,0x2,0xd7,0xce,0x62,0x14,0x33,0xd1,0xc4,0x2b,0x14,0x35,0x38,0xe2,0x99,0x40,0xa6,0x81,0x0,0xf,0x1e,0xe0,0x9,0x39,0x34,0xff,0xe1,0x19,0x19,0x3f,0xf0,0xd1,0x34,0x0,0x2b,0xf9,0xe3,0xe1,0xd8,0x20,0xcc,0xfd,0x1e,0x25,0x2e,0x36,0x7b,0x1b,0xb7,0x24,0xe,0x7f,0xd5,0xf,0x4,0x27,0xe8,0x2c,0xe3,0x3,0xf6,0x13,0xfb,0x4,0x8,0x17,0x39,0x33,0x4,0x7,0xf,0xac,0x25,0xde,0x31,0x10,0xe7,0xdd,0x7f,0xd4,0x65,0x32,0x24,0xe2,0x9,0xf1,0xf8,0x1c,0x1,0xb5,0xb,0x52,0xe4,0xb6,0xac,0xc7,0x5,0x8,0xbe,0x22,0x50,0xe5,0x26,0xf1,0xed,0x4f,0x21,0xe7,0x7f,0xa0,0x60,0xf5,0xab,0x89,0x1,0xe6,0x30,0x45,0x37,0xc7,0xf,0x36,0xc9,0x61,0xfd,0xda,0xfb,0x10,0xf4,0xd6,0x10,0xf6,0xe,0x12,0x76,0x7f,0xf5,0x0,0xeb,0x35,0xdf,0x66,0xe4,0xda,0x5,0x53,0xd9,0xb8,0xcc,0xf3,0x4b,0xcd,0xe2,0xe,0xec,0xf0,0xcf,0x17,0xcc,0xf4,0x40,0xca,0xe3,0xec,0xe9,0x79,0x81,0x8e,0x7c,0x33,0xf0,0x1d,0xf7,0xb4,0xcf,0xf9,0xc5,0xf4,0xd0,0x36,0x6e,0xf0,0xfc,0x94,0x54,0xe5,0x5a,0x8,0xf6,0x8c,0x52,0x20,0x7,0xf8,0xf7,0xfb,0x6,0xf6,0xb9,0xc7,0xc0,0x7f,0x2b,0x18,0x65,0xd,0x11,0xed,0xe,0xf6,0xd2,0xe0,0xbd,0x2a,0xf4,0x1a,0x78,0x2,0xae,0xc0,0x6,0x94,0xc0,0xf6,0x33,0xe,0xd9,0xa1,0x43,0xfb,0x3d,0x51,0x7f,0xff,0xfb,0xd2,0x3a,0xed,0xb7,0xd8,0xc5,0xb,0xf9,0xb1,0x33,0x6,0xb5,0x37,0xe7,0x16,0x5,0xe3,0xc6,0xda,0x4c,0x17,0x3c,0x0,0xb6,0x7e,0x15,0xe,0xd3,0xdb,0x18,0x3b,0x1b,0xf3,0x39,0xcc,0xff,0xfb,0x81,0xf,0x11,0xe,0x6a,0x5e,0xc3,0x5,0xad,0xde,0x37,0xce,0xb,0x10,0x11,0x6d,0x3c,0xfa,0x59,0x42,0xc8,0xcd,0x40,0x1a,0x23,0x14,0xd3,0x3,0x60,0x7f,0xfd,0x8f,0x85,0x17,0xfb,0x9,0xfd,0xe5,0xec,0xfd,0xf4,0xfe,0xcd,0x47,0x37,0xc7,0x5b,0xd5,0x68,0x7f,0xf6,0x1,0xc3,0xf7,0xe0,0x22,0x50,0x12,0x1a,0x4e,0xec,0xf,0x27,0xf5,0x1a,0x37,0x4b,0xf2,0xc7,0x48,0xd6,0xfc,0xfb,0x14,0xe5,0xf6,0xe,0xeb,0x39,0x89,0xd6,0xa3,0x81,0x3a,0xcd,0x1d,0x2,0x52,0xc5,0xb2,0x17,0xea,0x5,0x62,0xbe,0x29,0x23,0x61,0x33,0xf6,0x11,0x29,0xd3,0xc4,0xc7,0xde,0xf1,0xd8,0xf7,0x27,0x32,0xef,0xea,0x3,0xf4,0x81,0x34,0xf4,0xa9,0x3c,0x14,0x38,0xf2,0x1b,0xd7,0xef,0x92,0xc,0xe9,0x45,0x7f,0xd6,0xeb,0x34,0x37,0xf9,0x22,0x1d,0xf0,0xde,0xef,0xa7,0x1b,0x22,0x25,0x1c,0xe,0xec,0x41,0x34,0x1d,0xfe,0x13,0xe1,0xf4,0xe7,0xac,0xc4,0xdf,0x10,0x53,0x35,0xe,0xe1,0x47,0xfe,0xe5,0x4d,0x67,0x68,0x53,0xa2,0x7f,0x1a,0xc8,0xd9,0xe5,0x20,0xb9,0xf2,0xd6,0xb0,0x9b,0xce,0xcd,0x29,0x96,0xa5,0xc0,0x22,0xaf,0x5,0x1a,0x51,0x5b,0xf,0xfe,0x57,0xed,0xe1,0xaa,0xd1,0xc4,0x49,0xf4,0x0,0x32,0xb0,0x7f,0xc2,0xe1,0x19,0x38,0x36,0x28,0x3d,0x23,0x3c,0x11,0xff,0x67,0x1c,0x5,0xe8,0x40,0xb,0xf1,0x22,0xfe,0x53,0xee,0xb2,0x3d,0x42,0xed,0xf8,0x12,0xb9,0xdb,0x1d,0xdf,0xf3,0xe6,0xec,0x1,0x16,0x81,0xd2,0xf7,0xc3,0x6,0xeb,0x58,0xc,0xc0,0x25,0x51,0x51,0xc3,0x1b,0x6e,0x1e,0xbd,0x9b,0xee,0x15,0xc1,0xfa,0xe1,0x22,0xe0,0xab,0x3,0x81,0xcc,0xd0,0x2,0x1a,0x55,0xf5,0x81,0x7,0xcb,0xc7,0xb3,0x12,0x13,0xe4,0x46,0x9e,0xdf,0x1d,0xe5,0x2a,0xdf,0xbb,0x32,0xfc,0xec,0xcb,0xd8,0x54,0xcd,0xe3,0x1b,0x4f,0xb,0xf,0xa3,0xcd,0x66,0x9d,0x11,0xb,0x81,0x49,0xef,0x8,0x8,0x93,0x52,0x29,0x7a,0xed,0x3a,0x5c,0x6,0x74,0x10,0x1c,0xb4,0x2,0x5d,0x4,0xf8,0xe9,0xfb,0xc6,0x32,0xc9,0xe4,0xc9,0x57,0xe3,0xef,0xc9,0x33,0xd3,0x9,0xfa,0xd,0x24,0x81,0xac,0x1d,0xcf,0x1,0xf9,0xcc,0xe9,0xe8,0xf,0xed,0xf2,0x10,0x8,0xf5,0x4,0x2a,0xcb,0x31,0xf3,0xfe,0xca,0x92,0xf0,0x3d,0xf4,0x3b,0x4b,0x2,0xa2,0x81,0x32,0x0,0xe3,0x1a,0x2a,0xe6,0xf,0x9,0x2a,0xf9,0x18,0x43,0x14,0xb6,0x2c,0x35,0xfd,0x0,0x4d,0xf0,0x9,0x2d,0xbf,0xef,0xb1,0xc3,0x26,0xc3,0x14,0x46,0xfc,0x38,0x81,0x34,0xc2,0x8c,0x18,0xcd,0x34,0xfd,0xf,0x60,0xf3,0xd1,0x50,0xc9,0xb3,0x1c,0xfa,0x1a,0x7f,0x1e,0xb5,0x10,0x6f,0xd0,0xac,0xf8,0x39,0xed,0xb,0x37,0xc6,0xc,0x51,0xcd,0x95,0xd0,0xd7,0xb3,0x9,0xbc,0xf,0xf0,0x25,0x1b,0xd,0x59,0x9d,0xe8,0xfa,0xff,0x32,0xd9,0x4d,0x3,0x7f,0x6c,0xcb,0xf3,0x58,0xd9,0xb4,0xee,0xd,0xf2,0xc,0xf6,0xe6,0xbd,0x1,0xb8,0xc8,0xcd,0xc1,0xee,0x97,0xa2,0xd7,0x7a,0xe8,0x4c,0x3,0x32,0x63,0xe3,0xe8,0xf9,0xf2,0x7f,0xa6,0x34,0x32,0x11,0x3,0xd8,0xf0,0xe1,0xb3,0xc6,0x30,0x1a,0x7f,0xf6,0xd7,0xf5,0x90,0xb,0xf1,0x3,0xfb,0x29,0x81,0xe0,0x39,0xe3,0x9,0x57,0xa4,0x18,0xf,0xee,0x40,0xdc,0xf4,0xce,0xfb,0xee,0xed,0xed,0xbe,0xf3,0x25,0xec,0xed,0x65,0xcd,0xec,0xe5,0xe6,0xcb,0xe8,0x7f,0xc0,0xc3,0xc0,0x17,0xe5,0xc4,0x5f,0xfb,0xaa,0xe1,0x4,0xbe,0x2d,0x1f,0xe0,0xcc,0xef,0x52,0xfd,0xca,0xed,0xf0,0x32,0x9b,0x8,0xe1,0x20,0x9f,0xe4,0x61,0xe6,0x18,0xda,0xb,0x3b,0xbb,0xfb,0xce,0xac,0x34,0xc4,0xb9,0xb,0x23,0xd,0x7f,0xc,0xa0,0xa5,0xec,0xb0,0x64,0x54,0x9f,0xf0,0x27,0xe4,0xd1,0xe4,0xce,0x4,0xd,0x3,0x81,0x39,0xdd,0xb0,0xec,0xc5,0xba,0x5,0xf9,0xe1,0xfe,0x43,0xcb,0xee,0xb1,0xae,0xf3,0x73,0x14,0x40,0x36,0x38,0x42,0xf1,0xd3,0x23,0x3d,0xc8,0x1,0x91,0x7,0x2b,0xd6,0xf2,0xa2,0x2c,0xf2,0xc5,0x42,0x26,0xec,0x22,0x9,0x5a,0xde,0xae,0x8e,0x81,0x70,0xf4,0xfd,0xdc,0x43,0x93,0xf8,0x3f,0x0,0xa7,0xdc,0xc2,0x37,0x47,0x1f,0xcf,0xeb,0xb,0xee,0xfa,0xfe,0xaf,0x35,0xfd,0x2a,0xc,0x24,0xdc,0x81,0xff,0x1d,0x31,0xd3,0x48,0x3d,0x4e,0xd4,0xd4,0xe5,0x21,0xad,0xf7,0x7f,0xa,0x9d,0xd0,0xf4,0x17,0x34,0xc5,0xa7,0x18,0x61,0xf6,0x4b,0x1e,0xf8,0x14,0xf0,0xd3,0xe0,0xd3,0x1,0xec,0xa4,0x7f,0x14,0xcb,0xc8,0x19,0xa5,0x24,0xd7,0xf5,0x12,0x2c,0x1d,0xe3,0x9,0xe8,0x89,0x11,0x43,0xf5,0xae,0x1d,0x0,0x33,0xef,0xe8,0xea,0x40,0x21,0xbc,0x31,0xf8,0xc6,0x2c,0x6,0xca,0x4d,0xbd,0x7f,0xd7,0xc5,0xcd,0xf8,0xd4,0xd9,0xd2,0xc5,0xa1,0xd9,0xea,0xbd,0x11,0xe4,0x15,0xac,0x0,0x52,0x1f,0xd,0x49,0x24,0xc5,0xd4,0xbd,0xf6,0x33,0xba,0xe5,0xf9,0x22,0x1e,0x7f,0xdb,0xc9,0xfb,0x2f,0xdf,0x37,0xe4,0x71,0x24,0xcc,0x7,0x2e,0xb8,0xa9,0x17,0xe5,0xb1,0x51,0xd6,0x4f,0x81,0xe5,0x48,0x6f,0x2,0x31,0xe,0x3,0x17,0x19,0x7a,0xf,0x8b,0x76,0xbf,0xc,0x4e,0xb,0xd2,0xb9,0x61,0xeb,0x18,0x95,0x1d,0xaa,0xb0,0xff,0xff,0x4,0x0,0x0,0x0,0xf0,0x0,0x0,0x0,0xec,0x1,0x0,0x0,0x88,0x3,0x0,0x0,0x78,0xfe,0xff,0xff,0x51,0x2,0x0,0x0,0x56,0xfb,0xff,0xff,0xae,0xfd,0xff,0xff,0x19,0x0,0x0,0x0,0xb7,0xfd,0xff,0xff,0xa5,0xff,0xff,0xff,0xde,0x1,0x0,0x0,0x60,0xfd,0xff,0xff,0xc1,0xfd,0xff,0xff,0x1c,0x3,0x0,0x0,0xe2,0x1,0x0,0x0,0x3e,0xfb,0xff,0xff,0x29,0xfd,0xff,0xff,0xcb,0x0,0x0,0x0,0x42,0xfa,0xff,0xff,0x1f,0xb,0x0,0x0,0x20,0x0,0x0,0x0,0x53,0xf9,0xff,0xff,0x37,0xfc,0xff,0xff,0xd0,0xfd,0xff,0xff,0x14,0xfc,0xff,0xff,0xae,0xfe,0xff,0xff,0x68,0x7,0x0,0x0,0xd3,0x4,0x0,0x0,0xf0,0xfc,0xff,0xff,0xfe,0xfc,0xff,0xff,0x26,0xfc,0xff,0xff,0x3e,0x8,0x0,0x0,0x88,0xfc,0xff,0xff,0x7d,0x3,0x0,0x0,0xb,0x8,0x0,0x0,0x4,0xf9,0xff,0xff,0xf7,0x7,0x0,0x0,0x6a,0xfc,0xff,0xff,0x21,0xff,0xff,0xff,0x16,0xfd,0xff,0xff,0xa8,0x0,0x0,0x0,0x42,0x1,0x0,0x0,0xf2,0x0,0x0,0x0,0xca,0xfe,0xff,0xff,0xbf,0x0,0x0,0x0,0x8a,0x4,0x0,0x0,0xf1,0x1,0x0,0x0,0xc5,0x1,0x0,0x0,0x7c,0xfd,0xff,0xff,0xbe,0x0,0x0,0x0,0xa7,0x4,0x0,0x0,0x6b,0xfe,0xff,0xff,0xba,0x1,0x0,0x0,0x5e,0x5,0x0,0x0,0xf1,0xfd,0xff,0xff,0xf2,0x3,0x0,0x0,0xc2,0x4,0x0,0x0,0xf0,0xfd,0xff,0xff,0xa7,0x0,0x0,0x0,0xf7,0xfe,0xff,0xff,0x5b,0x6,0x0,0x0,0xa6,0xb1,0xff,0xff,0x4,0x0,0x0,0x0,0x1c,0x2,0x0,0x0,0x36,0x81,0xf7,0xee,0x81,0xee,0x81,0x7d,0xfd,0x2e,0x58,0xd4,0x3f,0x7f,0x4e,0xe5,0xc7,0x7c,0xc9,0xc8,0x81,0xe4,0xfc,0xe6,0xba,0x6c,0x98,0xd4,0x69,0xac,0x7f,0x3,0x56,0xe9,0x9d,0x7f,0x1c,0x8a,0xfe,0xe0,0x81,0x8c,0xe1,0xb3,0x6d,0xbe,0xf4,0x9c,0xf0,0x63,0x34,0x7f,0x81,0x24,0x1,0xe1,0xbf,0x33,0xb,0x86,0x1b,0x3a,0xcc,0xe3,0xec,0xd7,0x85,0x14,0x18,0xfe,0x26,0xb8,0xfa,0x32,0x3d,0xd6,0x81,0x22,0xd5,0xa2,0xc5,0xde,0xac,0xa7,0x9,0x58,0xc5,0xf3,0x7f,0xd0,0x43,0x11,0x1d,0xcd,0x4,0x4a,0xff,0xc3,0xb,0xe5,0xc1,0x1d,0xd4,0xce,0x31,0xc5,0x1a,0x81,0x7d,0x7f,0x71,0x2e,0xe1,0xb,0xfd,0x1b,0x9d,0xe8,0x31,0x81,0x12,0x79,0xb3,0xdc,0x49,0xe,0xc1,0x34,0xc9,0xfd,0x46,0x81,0xe6,0x2a,0x36,0xe8,0xc3,0x55,0x2,0xb5,0xcc,0x1d,0xc1,0x81,0x54,0x19,0xcd,0x29,0x31,0xc0,0x21,0xfd,0x2e,0x32,0x4c,0x1a,0xe3,0xd,0xbb,0xd2,0xe0,0xb6,0xfc,0xdb,0x49,0x9,0xed,0x60,0x21,0x1b,0x1b,0xd,0xe9,0x4e,0x8,0x1b,0xf6,0x25,0x18,0x93,0x66,0x9,0xfb,0xaf,0xed,0x25,0xb4,0x81,0xd9,0x4a,0x7f,0x85,0xa9,0x68,0x11,0xfb,0x63,0x6f,0x2a,0x39,0xe5,0xcb,0xd5,0xd8,0x7f,0xfb,0xdd,0xe7,0x31,0xc0,0x1e,0xf0,0x2b,0xf,0x1b,0x24,0x10,0xf3,0xa9,0x12,0xb2,0x9f,0x62,0x43,0xcf,0x25,0x1,0x56,0xb8,0x7,0x43,0x1a,0xe9,0x46,0x1,0x24,0xdd,0x37,0xef,0xfd,0x6b,0xec,0xca,0x10,0xd,0xe0,0xb,0x90,0x3e,0x55,0x65,0xe1,0xf3,0xc9,0x3d,0xf9,0x72,0x7f,0x2b,0x76,0x39,0xec,0x81,0xdf,0xdf,0x6f,0x30,0x33,0xdf,0x37,0xf7,0x13,0x1c,0xed,0xff,0x25,0x10,0xae,0xb6,0x2d,0xbd,0xbe,0x5e,0xf9,0x81,0x49,0xc4,0x93,0xa,0x3b,0xd4,0xd7,0xfa,0xc0,0xd3,0xd5,0xa7,0x50,0x88,0xd5,0x5,0xf9,0xff,0x4,0xf8,0xd9,0xeb,0x40,0x6d,0xe9,0x5e,0xb,0xbb,0x31,0x34,0x1f,0x32,0x31,0x62,0x7f,0x1c,0xec,0x9b,0xe8,0xb3,0x7f,0x3d,0x2e,0x8,0x27,0xf0,0x43,0x4e,0x81,0x2e,0x10,0xde,0x99,0xd1,0x69,0x38,0x1c,0xf,0xbf,0xa7,0x5c,0xe6,0x21,0x9f,0x45,0x81,0xd5,0x8,0xd2,0xd6,0x81,0x81,0xf9,0x81,0xa8,0x89,0xc0,0x51,0xdf,0x35,0xf7,0x21,0x7c,0x7f,0xa4,0x30,0x3d,0xab,0x3c,0x7f,0x38,0xb3,0xad,0x7f,0x27,0xed,0x22,0x25,0xf,0xbe,0x64,0x6c,0xb7,0xaf,0x7b,0xe0,0xec,0x7f,0xc4,0x7f,0xb,0xef,0x52,0xb1,0x7f,0x3d,0x4c,0xb5,0xfa,0xa5,0x7f,0xfc,0x50,0x81,0x30,0x91,0xfc,0xd,0x5,0xa,0xc8,0xa9,0x81,0xf8,0xf5,0x89,0x1,0xfd,0x34,0x28,0xec,0xd7,0xd0,0x5b,0x81,0x15,0x32,0xe8,0x45,0xd,0x3f,0xf9,0x9f,0x6a,0x2b,0xf3,0x29,0x20,0x6,0xdd,0x52,0x57,0xa9,0x9e,0x7f,0xeb,0xae,0x48,0x36,0x6b,0xf6,0xd2,0x71,0xe2,0x2f,0xdd,0x7f,0x81,0x26,0xf4,0x1c,0xfe,0xea,0xc0,0xbc,0x1f,0xfc,0xf1,0xd9,0x50,0xff,0xce,0x87,0x33,0x11,0x81,0x5e,0x81,0x7f,0x74,0x81,0xf4,0xd7,0x35,0x2,0x1c,0x72,0x81,0x7f,0x2e,0x7f,0x65,0xcc,0x7e,0xd8,0x11,0x7f,0x5f,0xe4,0x7c,0xd9,0x7f,0x7f,0xc4,0x47,0xb2,0x81,0x12,0x47,0xab,0x54,0x81,0x7f,0x81,0xf5,0xf3,0x6d,0xec,0x7f,0x24,0x1,0x81,0x41,0xe5,0xaf,0xa2,0x11,0x4,0x81,0x7f,0x2c,0xd3,0x84,0x3f,0x10,0xce,0xb3,0xff,0xff,0x4,0x0,0x0,0x0,0xf0,0x0,0x0,0x0,0xf5,0xff,0xff,0xff,0xa,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x18,0x0,0x0,0x0,0x21,0x0,0x0,0x0,0x16,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfc,0xff,0xff,0xff,0x7,0x0,0x0,0x0,0xe1,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0x10,0x0,0x0,0x0,0xeb,0xff,0xff,0xff,0xde,0xff,0xff,0xff,0x8,0x0,0x0,0x0,0xe2,0xff,0xff,0xff,0x24,0x0,0x0,0x0,0x1b,0x0,0x0,0x0,0xf7,0xff,0xff,0xff,0xc,0x0,0x0,0x0,0xfa,0xff,0xff,0xff,0x30,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0xfd,0xff,0xff,0xff,0x32,0x0,0x0,0x0,0xea,0xff,0xff,0xff,0xe3,0xff,0xff,0xff,0xf0,0xff,0xff,0xff,0xfc,0xff,0xff,0xff,0x1b,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x19,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0xd,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0xe6,0xff,0xff,0xff,0x9,0x0,0x0,0x0,0x31,0x0,0x0,0x0,0xcc,0xff,0xff,0xff,0xf4,0xff,0xff,0xff,0x17,0x0,0x0,0x0,0xf3,0xff,0xff,0xff,0x6,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0xff,0xff,0xff,0xff,0x13,0x0,0x0,0x0,0x17,0x0,0x0,0x0,0x24,0x0,0x0,0x0,0xf,0x0,0x0,0x0,0xf7,0xff,0xff,0xff,0x14,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xeb,0xff,0xff,0xff,0xf0,0xff,0xff,0xff,0xed,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc3,0xff,0xff,0xff,0xf5,0xff,0xff,0xff,0x10,0x0,0x0,0x0,0xca,0xb4,0xff,0xff,0x4,0x0,0x0,0x0,0x10,0xe,0x0,0x0,0x95,0x26,0x2d,0xc8,0x8c,0xeb,0xd0,0xe0,0x5,0x12,0x13,0x7f,0xfe,0xe4,0xf2,0xe1,0x1d,0x50,0xf5,0x8b,0x59,0xac,0xc4,0xfb,0xee,0xf2,0xf0,0x1b,0x30,0x55,0xc5,0x26,0xe9,0xfa,0x29,0xdb,0x42,0xe5,0x39,0xcf,0xf6,0x4,0x25,0x24,0xce,0x8,0x6d,0xc,0x29,0xdc,0xda,0x11,0x49,0xce,0x4e,0x62,0x4d,0x33,0xe6,0x12,0xbd,0x25,0x2b,0x1f,0xef,0x29,0x1b,0xe3,0x20,0x2d,0x19,0x19,0xdd,0xe2,0xd4,0x26,0x1d,0xf3,0xef,0x15,0xd1,0xf3,0xd3,0xe3,0xf,0x2,0xaa,0xf6,0xed,0x41,0x3a,0x19,0xdb,0xc8,0x1d,0x2b,0x4a,0xcf,0x42,0x12,0x1a,0xba,0xfc,0x81,0xd0,0x57,0x3c,0x3e,0x35,0xde,0x3b,0x9,0xfd,0x95,0x7c,0x11,0x22,0xf,0x34,0xf5,0xc1,0x34,0xc1,0x10,0xe6,0x7,0x5c,0xd9,0xe4,0xcd,0x26,0x8,0xfa,0x1d,0x45,0xe,0xe9,0x1c,0x32,0x31,0x24,0x28,0x6,0xf,0xba,0xea,0x20,0xff,0x2e,0xf4,0xee,0x40,0xf5,0x1b,0x42,0xb,0x42,0xcf,0x29,0x6,0x11,0x24,0xc4,0x30,0x31,0x21,0xe2,0x81,0x30,0xae,0x9,0x3a,0x3d,0x7,0x3b,0x2,0x28,0xff,0xfc,0x2,0x5a,0x16,0x62,0xd5,0x18,0x7d,0x5,0xb6,0xe5,0x1,0x26,0xa,0x2e,0xb7,0x1b,0x7f,0xf4,0xeb,0xd0,0xd3,0x5c,0x54,0xb1,0x1a,0x7,0xb0,0xfc,0xae,0xe,0x1e,0x1d,0xdc,0xc9,0x32,0xe0,0xec,0x4,0x1e,0xee,0x29,0xe4,0x52,0xee,0xf1,0xfa,0xa3,0xc5,0xd6,0x8,0x58,0x9,0x20,0x3c,0x28,0x0,0x4e,0x23,0xe1,0xfc,0x9,0x3a,0x95,0x52,0xba,0xc4,0x27,0xf9,0xfd,0xa,0xb,0xd3,0x31,0x2b,0xe6,0xe,0x22,0xf1,0x81,0x19,0xec,0xf1,0x45,0xcb,0x7,0xe3,0x3d,0xca,0x10,0xc8,0x1c,0x49,0x38,0x7,0xb2,0xce,0x1d,0xe1,0x18,0x9,0xe6,0xc0,0xed,0xb6,0xb5,0xfd,0xf,0xb7,0x13,0x2e,0x2b,0xf7,0x3,0xe4,0x35,0x9b,0x28,0x23,0x1e,0xd,0xb,0xfe,0x3d,0xe,0xbb,0x57,0xae,0xb8,0x46,0x39,0x6,0xdd,0x95,0x8,0xe0,0xd4,0xc9,0xc3,0xc2,0x38,0xfa,0xd4,0xea,0x9e,0xbc,0x2,0x45,0xcd,0xd3,0xd7,0xf9,0x35,0xd9,0x4,0x2f,0x37,0x3d,0x2e,0xef,0xd1,0xea,0xe5,0xf1,0x4,0xca,0xea,0xc3,0x19,0x4f,0x81,0xd7,0x69,0xa0,0x6,0x66,0xae,0x13,0xb3,0x1c,0x5d,0x19,0x3f,0x3d,0x17,0xee,0xf6,0xe2,0x29,0xf4,0xbc,0xf9,0xf2,0xfb,0x1a,0xdb,0xe1,0xfe,0xd3,0x2e,0x13,0xb7,0x1e,0xe3,0xde,0xdf,0xed,0xb9,0x15,0xb7,0x34,0x26,0xef,0xd9,0xfb,0x31,0x15,0x13,0xec,0xf4,0xe7,0x66,0xed,0xee,0xef,0xe8,0xee,0x2b,0x45,0xba,0xf6,0x19,0x2e,0x7f,0x53,0x10,0xe7,0x22,0x13,0xe9,0xf4,0xde,0x43,0x0,0x2,0xdb,0xe6,0x12,0xe6,0xf1,0x37,0x1b,0x63,0xeb,0xf8,0x20,0x39,0x27,0x35,0x50,0xfe,0xa7,0xe4,0x1,0x5,0xff,0xd4,0x17,0xd7,0xe8,0x2e,0x81,0x2,0x31,0xe7,0xe3,0x8a,0xeb,0x2d,0xd,0x31,0x95,0x29,0xe,0x60,0x14,0xe3,0x8c,0x8,0xf5,0xa,0xfc,0x36,0xea,0x46,0xeb,0xb0,0x3a,0x3d,0xeb,0x2e,0xfa,0x65,0xc0,0x55,0x14,0xcc,0xc3,0x1,0x4,0xf3,0xae,0x36,0x21,0xbf,0xd6,0xca,0xb9,0xf1,0xfc,0x12,0xf5,0x95,0x24,0xac,0x17,0x4b,0x0,0xa5,0xe9,0xf1,0xfe,0x81,0x44,0x2f,0xed,0xa6,0xd3,0x11,0x4f,0x8,0x1d,0x17,0x2a,0x0,0xfe,0xc0,0x21,0x27,0xfe,0xb1,0xc7,0xf2,0xd7,0x1d,0x70,0xc0,0x11,0x1a,0x3b,0xbf,0x73,0xce,0xcd,0x2c,0x3,0x45,0x33,0xa,0x5,0x36,0xe,0xe,0x7f,0x3a,0xff,0x20,0x12,0xfc,0xa6,0xd3,0x46,0x23,0x10,0xda,0xa8,0xf9,0xf2,0x44,0xf0,0xda,0x26,0x7,0x49,0xf1,0xdb,0xe7,0xcf,0xf2,0xfe,0xf0,0xe7,0x29,0xa,0xf1,0xd,0x6,0xd2,0x2c,0xd,0x17,0xe9,0xa7,0xeb,0xf,0xe9,0x1f,0x6,0xdf,0x10,0x32,0x27,0x15,0xe7,0x13,0x30,0x8c,0x9,0x19,0x4a,0x62,0xb7,0x28,0xe7,0xda,0x9,0xca,0xe6,0x5f,0xf9,0x17,0xa8,0x2c,0xdd,0x4f,0x27,0x95,0x2a,0xc,0x2c,0xff,0xe9,0x40,0x24,0x50,0xe0,0x47,0x81,0xc,0x2,0xe,0x55,0xdf,0x16,0xd0,0xa,0xd3,0xea,0xf,0xfb,0xdf,0xf3,0x30,0xed,0x16,0x4b,0x9f,0xdb,0x49,0x1a,0xe3,0x2d,0xfd,0x3e,0xa0,0x5b,0x27,0xdf,0xb5,0x22,0x14,0xe0,0xd7,0x1,0xed,0x20,0xcc,0x52,0xe6,0xcf,0x7f,0x4,0xeb,0x62,0x34,0xfb,0xe0,0x51,0x9c,0x4e,0x3b,0x9e,0xe9,0xe,0x14,0xd4,0x3b,0x5,0x3,0x68,0x4b,0xd4,0x6,0x42,0xb8,0x9,0xf4,0xcf,0x27,0x21,0xb5,0xec,0x2e,0xef,0xb,0xce,0x23,0x9b,0x38,0x9b,0x44,0xdc,0x8,0x1f,0xf9,0xd5,0x3,0xd8,0x11,0xde,0xfc,0xc5,0xd2,0x23,0xc7,0xdf,0x52,0xc6,0x1b,0xd9,0x2c,0x5d,0x14,0xd3,0x1,0xa5,0xa7,0xe9,0xff,0xf7,0xb9,0x5c,0x3c,0x16,0xc2,0x1b,0xf,0xe,0xf1,0x1f,0x8,0xfb,0xe5,0xff,0x11,0xf6,0x81,0x2e,0x8,0xe1,0x14,0x35,0xdf,0xfc,0x9,0x28,0x3e,0x2d,0x1d,0xe1,0xc7,0x4c,0x3b,0x10,0xd5,0xbb,0xc4,0x53,0x32,0x9,0x33,0xcd,0x9,0x32,0xd9,0x21,0x7f,0xe1,0xca,0xc7,0xe4,0x39,0x5d,0xef,0x7,0xcd,0x66,0xe9,0xf1,0x1a,0xdf,0xfb,0xae,0x3c,0xd2,0xa,0xe3,0xdc,0xff,0x3b,0xb,0xc1,0xd5,0x10,0xd1,0xdb,0xb6,0xc0,0xcd,0xee,0x2f,0x74,0x7,0x1d,0xd1,0x9,0x0,0x34,0x18,0x1f,0x66,0x6f,0xde,0xb2,0xff,0xd5,0x3f,0xac,0xb2,0xfe,0xe5,0x4f,0x18,0xe8,0x45,0x7f,0xe0,0xff,0x73,0x32,0xd6,0xff,0x30,0xd5,0x2a,0xbc,0xc3,0x59,0x7,0x2e,0x20,0xdf,0x61,0x3d,0x21,0x3c,0x64,0x51,0xda,0x1f,0x5a,0xae,0xe3,0xcd,0x7d,0xd9,0x24,0xec,0x52,0xf7,0x67,0x35,0x95,0xb1,0x10,0xe4,0x25,0x37,0x34,0xc5,0x16,0xf6,0x61,0xae,0xf5,0xe1,0xc,0xc8,0xba,0x2b,0x3f,0x19,0x30,0xd6,0x4,0x2d,0xe5,0x3,0x10,0xd4,0xfc,0x12,0xc0,0xc3,0x5,0xfb,0xb7,0x49,0xde,0xdc,0xe7,0xed,0xfb,0x45,0xd9,0xc,0x7,0x38,0x2a,0x2,0x1a,0xec,0xdf,0x1c,0x2,0x1b,0xc5,0xf2,0x35,0x2d,0xf3,0x51,0x5,0x7f,0xc9,0x38,0x7,0xd3,0xd7,0x3,0xe3,0xd,0x29,0xf4,0xd6,0x0,0x3f,0xb2,0x4a,0x7,0x6f,0x43,0x4,0x19,0xde,0xee,0xdf,0x4,0x4c,0x82,0xc2,0xfe,0x1c,0x1f,0xc8,0xc4,0x21,0x81,0xb,0x1a,0x94,0x3b,0xb1,0x19,0x1a,0xe7,0x2c,0xd8,0xa3,0xec,0xf1,0xc,0x43,0x77,0xf3,0xa9,0x1a,0x29,0xf,0x15,0x1a,0xcd,0xcd,0xb0,0x32,0xec,0xdd,0x6e,0x3a,0xf6,0x1c,0x20,0x5,0xf2,0xdf,0xfa,0xe6,0xf8,0xf6,0xfb,0x3a,0x19,0xdb,0x14,0xdf,0xe1,0xf5,0xeb,0xda,0x81,0x13,0x29,0xf,0x2c,0x1c,0x36,0xf6,0x1a,0xba,0xe0,0x40,0x41,0xfc,0xc6,0xd2,0x26,0xd,0x52,0xe7,0x1a,0x1b,0x41,0xe2,0xb5,0x17,0xfe,0xf3,0x1c,0x12,0xdf,0x4,0x20,0x30,0x1e,0xe9,0xc,0x32,0x16,0x16,0xf0,0xbf,0x17,0x58,0x52,0xe1,0x3f,0x32,0xa6,0x7,0x3f,0xa1,0x27,0x1a,0xff,0xf3,0x2a,0xee,0x17,0x40,0x44,0xb6,0xcb,0x0,0x64,0x3c,0xda,0x79,0xff,0xba,0x24,0xe6,0x16,0x19,0x81,0x34,0xef,0x44,0xd0,0x2,0x53,0xed,0x49,0x16,0x6,0xf3,0xf7,0xa2,0xd8,0xf2,0xd6,0xcb,0x1,0x6a,0xce,0x1,0x1a,0xfd,0xd9,0x32,0xd2,0x11,0xd1,0xca,0xef,0xe,0xb,0xd6,0xfa,0x51,0x7,0xf3,0x3a,0xfb,0xe3,0x3,0x36,0xf5,0x1,0x1e,0x1a,0xdb,0x1e,0x32,0xf9,0xe0,0xeb,0x3e,0xe6,0xf1,0x2a,0x40,0x2e,0x33,0xef,0x14,0xe7,0x63,0xdb,0xdb,0x2,0xed,0x7f,0x27,0x2e,0xf9,0x15,0xeb,0x2c,0x12,0xcb,0xe5,0x1a,0xe5,0x28,0x3f,0x6,0x2b,0x38,0x3d,0xf3,0xf2,0xcf,0x2b,0x23,0x29,0xdf,0xc1,0x3a,0x3f,0x6,0xf2,0xe9,0xfc,0x20,0xc8,0xf5,0x23,0x59,0x90,0x1a,0xf4,0xee,0x14,0xb,0x7,0x1f,0x27,0x18,0x4,0x0,0x8,0x81,0xf0,0xfc,0x2f,0xfc,0x19,0xe2,0x4d,0x27,0x18,0x9e,0xd2,0xc,0x19,0xc,0xb,0xa6,0x33,0xc,0x49,0xdd,0x58,0xa,0x4,0xdb,0xc8,0xf8,0x31,0xf3,0xe0,0xe3,0xfa,0x43,0x5,0x63,0xec,0x29,0x1,0x3b,0xfc,0xe8,0xf5,0x1e,0x2d,0xbf,0x9,0xf4,0xd9,0x63,0x1d,0xfc,0xa5,0x24,0x27,0xf2,0xd7,0x59,0xcf,0x7,0x3e,0x6,0x40,0xae,0xf7,0x17,0xa,0x3a,0x2e,0x6d,0x62,0xb,0x95,0x94,0x4,0x5a,0x81,0xa2,0x4b,0x20,0x8,0xee,0x6d,0x52,0x26,0x1c,0x2a,0x13,0x1f,0x17,0xe2,0x9e,0x47,0x44,0xeb,0x35,0xa,0xe0,0xc7,0x2,0xac,0x24,0xe5,0x37,0xec,0x3d,0x9e,0xfd,0xf5,0x25,0x19,0xfa,0x39,0x2f,0xc2,0xc8,0xf8,0x5a,0xcc,0x5,0x4d,0xdb,0xf4,0x95,0x15,0xec,0x2c,0x17,0x21,0x40,0x17,0x4f,0x24,0xc,0x7f,0xec,0xc1,0xc0,0xd7,0x28,0x10,0xc8,0x21,0xe6,0x2b,0x1,0xc2,0x8,0x34,0xb3,0xbf,0xb4,0x1c,0x35,0xf2,0xce,0x5c,0xfb,0x33,0xee,0x5d,0xa4,0xa9,0x27,0xd9,0xde,0xc5,0xf0,0xbc,0x9e,0xdd,0xca,0x65,0x18,0xdc,0xd5,0xd2,0x3,0xfb,0xfb,0xc7,0xfd,0xa6,0x7f,0xfc,0x85,0x91,0xee,0x9,0x1e,0x1d,0xbc,0x26,0x37,0xbd,0xc8,0x7,0xee,0x7,0x23,0x55,0xe7,0xdb,0xbf,0x10,0xec,0xbf,0xf8,0x1f,0x5,0x6b,0x2,0x5,0x15,0x60,0xfe,0x11,0x9,0xb,0xbd,0xec,0x11,0xd,0x66,0x2c,0xbf,0xb4,0x27,0x8,0x27,0x2f,0xc1,0x23,0x39,0x3,0xc0,0xed,0x54,0xd1,0xbd,0xf5,0xff,0xe9,0xb6,0xfc,0xbc,0x19,0x3a,0xc4,0x47,0x1b,0x7f,0x49,0xff,0x20,0x1e,0xaf,0xba,0xf1,0x14,0x35,0xf9,0x7,0x33,0x2e,0x21,0xc6,0x2,0x10,0xf3,0xb0,0xf6,0x17,0xf7,0xee,0x40,0x15,0xd6,0xbd,0xe5,0x5f,0x1,0xa6,0xcf,0xbc,0xda,0x11,0xea,0x18,0xb5,0xc7,0x23,0xe,0x2b,0x18,0x26,0xf0,0x40,0x1d,0x19,0xb8,0x6,0x2b,0xd8,0xe9,0x3a,0x47,0x27,0xf6,0x1b,0xf5,0x2e,0x81,0xe,0xf5,0xdb,0xd4,0x7,0xa3,0x10,0x93,0xfa,0xd9,0x4,0xb8,0x19,0xd7,0xf1,0xb,0x1d,0x21,0x6a,0x66,0x4d,0x69,0xb7,0xc1,0x6a,0x11,0xc7,0x24,0xd2,0x46,0xd5,0xf,0xa7,0x9,0xff,0xe0,0xfd,0x29,0xba,0xd0,0xd5,0xc2,0x1c,0x47,0xa9,0xed,0x5,0x4d,0xae,0xc8,0x27,0xb7,0x26,0xfd,0x87,0x4,0xc,0x17,0xb6,0x99,0xd9,0x1f,0x16,0xb,0x94,0x1c,0xc,0xf2,0xf2,0xf,0x2f,0xd,0x58,0x86,0xd,0xf8,0xe4,0xfb,0x7f,0x41,0x3b,0xcb,0xf4,0xad,0xcf,0x69,0xe6,0x47,0xb9,0xec,0x2a,0xde,0x29,0xe1,0x7,0x4b,0x73,0x1e,0xde,0xdc,0xf8,0xf2,0xba,0xf6,0x2a,0x33,0x37,0x1c,0xed,0xe5,0x11,0xe4,0xe4,0x38,0x2,0x7,0x7f,0x1,0x2a,0xe9,0xd2,0x34,0x2a,0xfb,0xc7,0xf1,0x6,0xf4,0xf9,0x47,0x2e,0xec,0x52,0x1a,0xce,0x68,0xc3,0xcd,0xb7,0xf0,0x45,0x3b,0x44,0x16,0x37,0x2b,0x32,0xfe,0xae,0xca,0xb1,0x15,0x55,0x33,0xbd,0xcf,0xb,0xce,0xdc,0xcb,0x94,0x38,0x22,0xc3,0xfd,0x58,0x2d,0xfd,0x57,0x51,0x4f,0xa4,0xd6,0xc0,0xc2,0x1e,0x81,0xcf,0xda,0x2b,0xd5,0xe0,0xf4,0x91,0x5b,0xbe,0xab,0xee,0x64,0x3b,0xd9,0xc3,0xda,0xb,0x81,0xcc,0x24,0x3a,0xd5,0x3a,0xe4,0x39,0xcf,0x46,0xd9,0x98,0x18,0x19,0x2,0xfd,0x8c,0x1f,0xee,0xc5,0x34,0x17,0xd3,0x10,0x13,0xc1,0x26,0xc0,0xf4,0xef,0xee,0x1,0xf0,0x1e,0xc5,0x4c,0xc7,0x28,0xda,0xd7,0xf8,0x28,0xec,0x29,0xf5,0x81,0xdc,0xdf,0xbe,0x18,0x1f,0xfb,0x10,0x97,0x21,0xe4,0xe,0xb8,0x27,0xe5,0x33,0xc4,0x2a,0x28,0x39,0x60,0xc7,0x21,0x3f,0x6,0x81,0xf9,0xcf,0x20,0x2f,0xe5,0xe2,0x99,0x5e,0x37,0x2c,0xec,0xcf,0xd4,0xd1,0xad,0x64,0x4d,0x7,0x52,0x1a,0x3,0x10,0xf8,0x9c,0xcd,0x12,0x3f,0x17,0x4,0x19,0xd3,0x33,0xce,0xb3,0x38,0xcf,0xdd,0xd5,0x42,0xe8,0xee,0xe6,0xbd,0xec,0xd7,0x2c,0xc,0x15,0xe5,0x27,0xe1,0xe2,0xfd,0x19,0x4c,0xb7,0xea,0x48,0x74,0xea,0x55,0xa4,0xa9,0xed,0xd7,0x42,0xfd,0x1b,0xab,0x7,0x39,0xd2,0xc7,0xb4,0x28,0x69,0x13,0x14,0xdb,0x2d,0xf1,0x46,0x3c,0xf5,0x32,0xcb,0x1a,0x4c,0xae,0xf,0x2,0xd,0xf2,0xc3,0x43,0x0,0x1e,0xc9,0xd4,0x9b,0xa,0xdf,0x32,0xd,0xe5,0x84,0x95,0x19,0xcc,0x42,0x7f,0x93,0x13,0x2d,0xc7,0xf4,0x29,0x45,0xeb,0xf6,0x45,0x1d,0xef,0x6,0xf2,0x2e,0xc0,0x34,0x2,0x34,0xf2,0xa4,0x6,0x29,0x52,0x2c,0x62,0x3e,0x2f,0x40,0xfb,0xd7,0xc6,0xd3,0x23,0xda,0xb6,0x42,0x52,0x15,0x17,0x61,0x19,0xd7,0xae,0xb7,0xa2,0xd7,0x7f,0x1f,0xc3,0xf0,0x30,0xef,0xe9,0x1b,0xa4,0xd7,0xb,0xf8,0x28,0x8d,0x1e,0x2,0xd7,0xab,0x20,0x2d,0xa3,0x41,0x2a,0x24,0xc5,0xf2,0x81,0x2,0xbb,0xf0,0xda,0x1e,0xfc,0xb,0xfb,0x40,0x8,0x34,0x18,0x54,0x1b,0xd5,0x7,0x8,0xed,0xda,0x4,0xde,0xce,0xd2,0xf,0xd,0x3d,0xf6,0xf0,0xb4,0xfe,0x13,0xd6,0xae,0x22,0x1,0x0,0x3b,0xf2,0xe6,0xf0,0xef,0xf9,0xe3,0xe1,0x98,0x13,0xfd,0x2b,0x17,0x3a,0xe7,0x4e,0x81,0xc5,0x68,0x23,0x18,0xc5,0x41,0xae,0xb8,0x2e,0xac,0xa8,0xcb,0x1c,0xf8,0xb4,0x12,0xfc,0xa8,0xb4,0xf9,0x3,0xdc,0xa5,0xb7,0xbc,0xc2,0xe7,0x1f,0xd0,0x6d,0x7,0x14,0x56,0xfa,0x62,0xe2,0xf8,0xe5,0x14,0x4,0xf1,0xe4,0x45,0x23,0xd7,0xbf,0xff,0xda,0x11,0x3b,0x3b,0x1d,0x48,0x2a,0xb8,0x56,0xcf,0xa8,0x88,0x50,0xcc,0x26,0xd1,0xcd,0x57,0x55,0x33,0x45,0x24,0x66,0xd0,0x47,0x47,0x42,0x7f,0xf2,0x86,0x22,0x30,0x24,0x3,0x4a,0x19,0x13,0x35,0xb9,0x34,0x18,0x5f,0xa4,0x24,0xea,0xdd,0xcb,0x14,0xf2,0xc3,0xa6,0x74,0x2a,0x2,0xd6,0xf,0xc2,0xde,0xa8,0xff,0x3c,0x24,0xb9,0xc1,0x29,0x6,0xd,0xe1,0x3c,0xcc,0x12,0x15,0xef,0xf7,0x41,0xef,0xee,0xd,0x40,0xd5,0xfd,0x1,0xdb,0xc4,0x1f,0xde,0xca,0x35,0xe8,0xf2,0xe0,0x4,0xe1,0x4,0xfc,0xec,0xfa,0xf3,0xef,0x35,0x17,0x37,0xc7,0x99,0x3,0x38,0x3,0xdf,0xe3,0x40,0xe1,0x94,0x7,0x23,0x6,0xe3,0x0,0xff,0xfa,0xec,0x4c,0xcc,0xde,0xff,0xf3,0x2c,0xfa,0x7f,0xc6,0x1e,0x39,0xea,0x6,0xe0,0xf1,0x2b,0xfe,0xff,0xf3,0xa5,0x1b,0xc2,0x24,0xac,0xc8,0xc1,0xb5,0x49,0xa7,0x47,0xf0,0x5d,0x49,0xca,0x1e,0xd3,0xfd,0xcd,0xb,0x37,0x35,0x96,0xd0,0xe0,0x55,0x3d,0xc7,0x64,0x23,0x0,0xcf,0x5c,0xee,0xa8,0x7,0x3f,0xb0,0x3f,0x18,0xf3,0xd0,0x81,0xa,0xfb,0xff,0x2c,0x17,0x16,0xec,0x22,0x1,0x21,0xef,0xfe,0x5c,0xee,0xd2,0x64,0x19,0xa9,0x39,0x14,0x9,0x2d,0x1c,0xc9,0x81,0x2f,0x10,0xbb,0x9,0xb8,0x5,0xe5,0x5,0x2,0xe8,0xe2,0x38,0xdd,0xfc,0xd,0xbf,0xd,0xfd,0xdf,0x3c,0x39,0x30,0x1a,0x30,0xe8,0xed,0x32,0xae,0x3f,0x28,0xca,0x24,0xc9,0x10,0x42,0x16,0x3,0x2e,0xfd,0xff,0x9,0x43,0xbe,0x81,0xd6,0xf8,0xe0,0x2a,0x6,0x4d,0x4b,0xf6,0xed,0xdb,0xd6,0x40,0x2c,0xf5,0xe,0xd6,0x43,0xe1,0xd,0xf2,0xd,0xc2,0x3a,0x1d,0x32,0xe9,0xec,0x9,0x58,0xdd,0x12,0xdd,0x48,0x5d,0xe8,0xfd,0x56,0xb7,0x46,0xc7,0x20,0x23,0x9d,0xc,0xd6,0x6,0xdf,0x33,0x8,0x38,0x92,0xda,0xb,0xab,0x1b,0x2f,0x23,0xd7,0xe1,0xe6,0x2,0x13,0xf4,0xcf,0x7f,0x33,0xc2,0x10,0xcb,0xe6,0xc,0x5,0xce,0x14,0x39,0x28,0xaa,0x1e,0xd9,0x2a,0xa,0x6,0x47,0x7,0x3d,0x19,0xee,0x29,0x46,0x92,0xf4,0x22,0x18,0x9,0x11,0x21,0xd6,0x6d,0xfe,0x4f,0xff,0x40,0xa,0xe,0xc6,0x34,0xd1,0x11,0xf9,0x43,0x24,0x6,0x24,0x1,0x50,0xda,0xfc,0xd7,0x18,0xe8,0x35,0x5,0x5,0x1d,0x25,0xfa,0xc4,0x27,0xc1,0xa1,0x52,0x31,0xd2,0x8,0xe6,0x28,0x38,0x4b,0xeb,0xef,0x26,0x7d,0xb4,0x37,0xe4,0xdd,0x6c,0xed,0x8,0xfd,0xe5,0x37,0xcb,0xe6,0x49,0xe4,0xf7,0x32,0x18,0x2f,0x12,0x26,0x2a,0x16,0x22,0x10,0xe4,0x22,0x62,0x7f,0xfb,0x5f,0xf3,0x1d,0x3e,0x1c,0x16,0x10,0xa,0xec,0xe3,0xc,0x1f,0xf4,0x8f,0x48,0x18,0xf7,0x2b,0xe7,0xc6,0xc,0xcc,0xcf,0x19,0xdc,0xef,0xf7,0x81,0xce,0xc,0x3c,0x1a,0x1a,0x3,0x33,0xec,0x4,0x24,0x44,0x25,0xd4,0x1b,0x1d,0x32,0xf,0x2,0xf5,0x3b,0xef,0xf1,0xf7,0x13,0x2b,0x29,0xcf,0xe9,0xd,0x2e,0x25,0xc,0x2c,0xfa,0xb5,0xc0,0x8,0x4,0xe5,0xed,0x2,0x0,0xed,0xde,0x10,0xb8,0xd6,0x33,0x23,0xfb,0x46,0xd4,0xea,0xf6,0xf2,0x4,0xc8,0x95,0x1b,0xd5,0x17,0x5,0xfc,0xce,0xd4,0x81,0xd7,0xf7,0xfa,0x15,0xfd,0xc6,0xff,0x3f,0x42,0x41,0xf,0x30,0x2,0x5e,0xcd,0x4,0xfb,0xb,0x37,0x26,0xfc,0xd5,0x1b,0xf,0xe6,0xbc,0xc4,0x60,0x11,0x40,0xad,0xfb,0xd9,0xe6,0x50,0x2c,0xf,0xf8,0xb3,0xb,0x8d,0xf0,0x49,0xfe,0x18,0xee,0x64,0xf,0xef,0x99,0x1e,0x6,0xe8,0xf7,0x3b,0x3f,0xd,0x9d,0x58,0x10,0xb5,0x10,0x4c,0x5f,0x28,0x81,0xb,0xbd,0x74,0xe5,0xda,0xfe,0x5e,0xe1,0xe9,0x97,0xf2,0xfe,0x3e,0xd8,0xeb,0xf4,0x65,0x4d,0xe,0xc7,0xe,0xf9,0x1b,0x10,0xc1,0x53,0xd5,0x5c,0x34,0xc,0xe8,0xff,0x15,0xd5,0x29,0xc,0x59,0x45,0xee,0xd1,0xc6,0x12,0x81,0xf1,0xc9,0xd2,0xb1,0xb9,0xf7,0xdb,0x38,0x22,0xd5,0xc5,0xf2,0x11,0xe2,0xa2,0x42,0x31,0xd0,0x33,0xf8,0xec,0x31,0x20,0x26,0xfe,0xbe,0xd6,0xdb,0xb3,0xcd,0x3f,0xf0,0x37,0x1b,0xfa,0x1a,0x22,0xea,0x24,0xf0,0xb7,0x28,0x14,0x38,0xfb,0xe9,0xdf,0x23,0xc0,0x9e,0xd0,0xf8,0x37,0x32,0x48,0xdb,0x81,0xfe,0xf7,0x26,0xdb,0x2,0x3d,0xbf,0xa,0x31,0x1a,0x25,0x1a,0x15,0xeb,0x14,0xa0,0xcc,0xc6,0xdd,0xca,0x17,0xcd,0xfe,0xd1,0xd7,0xd1,0x97,0x19,0xdb,0x2e,0x20,0xc4,0xe5,0xca,0xff,0x10,0xff,0x5,0xdd,0x15,0xb,0xb3,0x16,0x15,0xf8,0x3c,0x15,0xeb,0xaa,0xaf,0xf1,0x8,0x32,0x33,0xf0,0xca,0xd4,0xbf,0xc3,0x4d,0xf0,0x15,0xd9,0x7b,0x14,0xf5,0x7f,0xf4,0x2c,0x6,0x5d,0x56,0xe0,0x27,0x3b,0xf3,0x2e,0x47,0xf,0xcf,0xdc,0xf4,0x1c,0xe9,0xfd,0xd2,0xa2,0xed,0x3a,0xf7,0x8,0xe8,0xe6,0xec,0x26,0xda,0xd0,0xfc,0xdc,0xff,0x51,0xce,0xac,0x3b,0x76,0x65,0xf2,0x50,0x18,0xde,0x52,0x66,0x8a,0x15,0xcd,0x27,0xb0,0xcf,0xdb,0x2e,0xb,0xbd,0x3f,0xc9,0xab,0xe5,0xa4,0x79,0xed,0x48,0x33,0x59,0x8b,0x9e,0x2d,0xfd,0x2c,0xed,0xe2,0x20,0x3d,0x85,0x9a,0xd,0x35,0xa7,0x8c,0x9,0xdf,0x81,0xf7,0x63,0x1e,0x10,0xaa,0xbd,0xde,0xae,0xc5,0x1,0x12,0xf7,0xe1,0xe8,0xf0,0x6f,0x45,0x3,0xb,0x11,0xfe,0x46,0xe7,0x7,0xf2,0x6,0x5,0xbb,0x4a,0xc3,0x6c,0xfe,0x6b,0x7d,0xd6,0x5a,0xb6,0xe0,0x7f,0x5a,0xd9,0xf0,0x5f,0xcf,0x5e,0xc3,0xa7,0x3d,0xb0,0xaa,0x4e,0xb0,0x62,0x37,0xf2,0x56,0x52,0x41,0x5,0x48,0xfe,0xb6,0x3c,0xab,0xb9,0xdb,0x11,0x92,0xf,0x3b,0xe8,0xc0,0x1e,0x16,0xc6,0xdf,0x7a,0x5f,0xc8,0x18,0x4e,0xfb,0xd7,0x30,0xcd,0x21,0xb,0xa6,0xeb,0xd7,0xf4,0x2,0x93,0xb,0xba,0x42,0xa4,0x16,0xc7,0x6f,0x39,0x12,0xd2,0xec,0xd9,0x81,0xf2,0xa3,0xf9,0x4,0x24,0xdf,0xdb,0x1f,0xab,0x2a,0x2e,0x64,0xfa,0x42,0xd3,0xc,0xf8,0x2c,0x8,0x2b,0xb8,0xea,0x14,0x3a,0xee,0xe7,0x79,0x40,0x2,0xd0,0x34,0x5e,0xbb,0x1e,0x39,0xd1,0xb5,0x0,0xb,0xac,0x63,0xbb,0xd6,0xa4,0xc9,0x2f,0x16,0x83,0x22,0x1c,0x13,0x4a,0x4b,0x5c,0xfe,0x53,0x2c,0xb8,0xcb,0xab,0x44,0xfa,0xf9,0xfe,0x5,0x2,0xd2,0x1e,0x6,0x21,0x57,0x1c,0xce,0xc9,0xf2,0xce,0x44,0x21,0x38,0x81,0x14,0xd9,0x21,0x18,0x32,0x35,0x60,0xf0,0x9,0xef,0x4c,0x8,0x3c,0xfc,0x1,0x20,0x17,0x15,0xd7,0xea,0xae,0xf,0x1,0x1b,0x50,0xef,0xdf,0x35,0x35,0xfc,0x4,0x1a,0x21,0x19,0x7,0xf8,0xeb,0xe9,0x95,0x46,0xb6,0xf8,0xe0,0xfc,0x2,0x4,0xd5,0x1f,0x60,0x13,0x2a,0x9,0xde,0x4a,0x23,0xe8,0xca,0x3d,0x28,0xf5,0x19,0xa,0x2d,0x43,0x2,0xf1,0xb1,0xef,0xd0,0x81,0x14,0x24,0xf9,0x2c,0xaf,0x35,0x4b,0x1,0xf,0xe5,0x15,0x19,0xe6,0x7,0xea,0xeb,0x6e,0x22,0xc,0xeb,0xd,0xfb,0x22,0xa,0xfb,0xe3,0xb2,0x2,0xf1,0x20,0x19,0x1b,0xe0,0x25,0xed,0x2a,0xab,0xff,0x2a,0xa5,0x2,0x3,0x7f,0x0,0xf1,0xe,0xe5,0xc,0xf0,0x1b,0x3a,0x8,0x41,0x10,0x1,0x24,0x2e,0xd,0x6,0x2f,0xe3,0x9,0xf5,0x45,0xae,0xea,0xff,0xd6,0xd4,0x11,0x56,0xd2,0x13,0xee,0x8,0x6,0xe9,0xe6,0xdd,0xaa,0xf2,0x3,0xf4,0x42,0x42,0xbe,0xf,0x83,0xd9,0x19,0xed,0x13,0x40,0x5,0xfc,0x4,0x32,0xf8,0x24,0x7f,0x2,0x5,0xc1,0x30,0x2f,0x30,0x7,0x3d,0x3,0x11,0xff,0xfa,0xdb,0x30,0xdc,0x3a,0x3d,0x2,0xba,0xd1,0xfa,0xe5,0xbc,0xb4,0xf9,0x20,0xe6,0x1e,0xf9,0x45,0x35,0xd6,0x22,0x2a,0x6,0x12,0x28,0xf6,0x81,0x7,0xe0,0x20,0x13,0xd8,0xa7,0x18,0xd9,0x1b,0x28,0xe2,0x19,0x2d,0x48,0x1b,0x3,0x7,0xcc,0xc6,0x2d,0xa,0xc7,0xf9,0x4b,0xd3,0xe0,0x2e,0xeb,0xdb,0x22,0x26,0x1f,0xe3,0xd7,0xa8,0xdb,0x19,0x4b,0x30,0xed,0x3a,0x4e,0x72,0xb3,0xdb,0x39,0xb2,0x33,0xd6,0x2,0x51,0x35,0xee,0xc7,0xd4,0x38,0xb6,0xb6,0x17,0x1f,0x76,0xcb,0x88,0xe2,0xb,0xb3,0x11,0x7e,0xf1,0xdc,0xcc,0xef,0xb,0x48,0xe2,0xdc,0xd9,0x3d,0xcf,0x37,0x1e,0xba,0xb9,0xe7,0x8,0x7,0xad,0xe9,0xcf,0xb5,0x4c,0x60,0xb,0x3f,0xd3,0x2f,0x29,0xc5,0x81,0xef,0xf6,0x2f,0x67,0x53,0xcf,0x7f,0x0,0xf6,0xe6,0x3b,0xda,0x59,0x18,0x2,0xb2,0xbf,0xf2,0xd,0xaa,0xac,0xd,0x23,0xf2,0xfa,0x59,0x5,0x1,0x5,0x2,0xcc,0xb3,0x21,0x20,0xe6,0xf1,0x68,0xa9,0xc8,0xe7,0x11,0x21,0xf7,0xe5,0x21,0xc6,0x9,0x15,0xbb,0xf1,0x19,0xf3,0xc9,0xed,0xb,0x63,0x3f,0xf1,0x3e,0x2a,0xf8,0x5e,0xf0,0xed,0xf,0x24,0x22,0x6,0x27,0xf2,0xe7,0x28,0xfd,0xa9,0xe9,0xf9,0x10,0xd4,0xfc,0xfc,0x81,0xcb,0xe,0x11,0xe9,0xd6,0x21,0xcb,0x1b,0xca,0xa,0xf2,0x23,0xf2,0x39,0xe6,0xe3,0x89,0x2d,0xd3,0x1d,0xc,0xc6,0xe9,0x9d,0xdb,0xca,0xe1,0x48,0x2,0x17,0xe1,0xf6,0x0,0xca,0xc3,0xa6,0x25,0xf0,0x12,0xb4,0x5a,0x35,0xd,0xd7,0xbb,0x35,0x9,0x2,0x1c,0x1e,0xf0,0x53,0xfa,0xdb,0xfe,0x4b,0xe0,0x2c,0x53,0xe1,0x16,0x45,0xdb,0xf2,0x26,0x2a,0x13,0x29,0xfb,0x14,0xf3,0xf0,0xfa,0x49,0xe7,0x2d,0x44,0xc,0xe5,0xf3,0xfd,0xd8,0xfc,0x4,0xf9,0xbf,0x48,0x1a,0x1c,0xd4,0x22,0x9,0x22,0x2d,0xef,0xe7,0x3b,0x7f,0x1b,0x46,0x4d,0x9d,0xe6,0xc2,0xff,0xff,0x4,0x0,0x0,0x0,0xf0,0x0,0x0,0x0,0xc1,0xf,0x0,0x0,0x36,0x3,0x0,0x0,0x9e,0x1,0x0,0x0,0x15,0x5,0x0,0x0,0x8f,0x0,0x0,0x0,0xca,0xea,0xff,0xff,0x94,0xff,0xff,0xff,0x96,0x4,0x0,0x0,0x72,0x7,0x0,0x0,0xee,0x2,0x0,0x0,0xf0,0xfe,0xff,0xff,0x71,0xec,0xff,0xff,0x4f,0xf9,0xff,0xff,0x66,0x1,0x0,0x0,0x6e,0xfb,0xff,0xff,0xb4,0xf5,0xff,0xff,0x2a,0x8,0x0,0x0,0x8b,0xf8,0xff,0xff,0x6e,0xf3,0xff,0xff,0x60,0xf8,0xff,0xff,0xd1,0x5,0x0,0x0,0x4d,0xfb,0xff,0xff,0x52,0xfa,0xff,0xff,0x59,0xf,0x0,0x0,0xcf,0xfc,0xff,0xff,0xff,0xf2,0xff,0xff,0x85,0x10,0x0,0x0,0x77,0xf9,0xff,0xff,0x2f,0xfd,0xff,0xff,0xfe,0xf2,0xff,0xff,0xa9,0xef,0xff,0xff,0xae,0x7,0x0,0x0,0xc2,0xfe,0xff,0xff,0xfe,0xd,0x0,0x0,0x27,0x1f,0x0,0x0,0xd6,0xf2,0xff,0xff,0x4e,0xfa,0xff,0xff,0xb9,0x11,0x0,0x0,0xc0,0x0,0x0,0x0,0xe3,0xf1,0xff,0xff,0x37,0xfd,0xff,0xff,0x43,0x5,0x0,0x0,0x24,0xf8,0xff,0xff,0x61,0x1,0x0,0x0,0x1e,0xf3,0xff,0xff,0x1c,0x3,0x0,0x0,0x7e,0xf8,0xff,0xff,0x98,0x4,0x0,0x0,0x14,0xc,0x0,0x0,0xc2,0xf9,0xff,0xff,0xb0,0x17,0x0,0x0,0x9a,0x1,0x0,0x0,0xc3,0xfe,0xff,0xff,0x9d,0xfd,0xff,0xff,0x9f,0xd,0x0,0x0,0xca,0xfe,0xff,0xff,0xcf,0xee,0xff,0xff,0xc4,0x5,0x0,0x0,0xe1,0xff,0xff,0xff,0x6,0xfd,0xff,0xff,0xe2,0xc3,0xff,0xff,0x4,0x0,0x0,0x0,0xc,0x3,0x0,0x0,0x1d,0xe6,0xbb,0xd3,0x7f,0x28,0x2f,0x64,0x84,0xee,0x6d,0x96,0x69,0xcb,0x1b,0x81,0x66,0x81,0x5,0x41,0x96,0x7f,0x3,0x7f,0x3c,0xad,0x56,0x7f,0xc2,0x71,0xe6,0xfc,0x95,0x4d,0xfe,0x7f,0xbd,0x5f,0x7f,0x81,0x2f,0x2f,0x81,0xd7,0x7f,0x60,0xf0,0x4f,0x14,0xe4,0x81,0xbd,0x3e,0xb9,0x49,0x52,0x81,0xd7,0xdf,0x70,0xfe,0xf4,0xf2,0xc6,0x77,0x56,0x44,0x39,0xe6,0x23,0x32,0x81,0x3d,0xa0,0x55,0xbe,0x6e,0xcb,0xd0,0x41,0x40,0xb,0xa,0x58,0x27,0xa8,0x7f,0x4f,0xa6,0x74,0xc5,0x9,0x81,0x3c,0x11,0x41,0x20,0x7f,0x4c,0x93,0x11,0x31,0xa2,0xcd,0x52,0x5a,0xa,0x35,0xc7,0x1b,0x99,0x2,0x6f,0x24,0x52,0x2f,0xbf,0xa,0xcc,0x7c,0x9,0xd4,0xfc,0x25,0x39,0x51,0x65,0x19,0x18,0x3e,0xf4,0xe4,0x4e,0x81,0x3c,0xea,0x7d,0xb0,0xe4,0x7f,0x9,0xfc,0x13,0x5e,0x47,0xb7,0x43,0xea,0x8d,0x7b,0xe8,0xe0,0xbc,0x14,0xf8,0xc0,0x55,0x7a,0x0,0xc9,0x21,0x3c,0x8f,0xec,0x50,0x60,0xf6,0xda,0xa9,0xc6,0xe0,0xef,0x4c,0xdb,0xde,0xe4,0xfb,0x34,0x6d,0x2e,0x1b,0xcc,0x13,0x7a,0xf5,0x5f,0x57,0x7f,0x16,0x7f,0x81,0xef,0x7f,0x9c,0x7f,0xfe,0x3f,0x19,0xa1,0x44,0x22,0xc0,0x12,0xd,0x54,0xd6,0x1c,0xa1,0xe7,0x5a,0xf4,0xaf,0xdb,0x8,0xc,0xc4,0x32,0x3f,0xc8,0xce,0x1a,0x3a,0xbe,0xdd,0x63,0x68,0x11,0xf8,0xbb,0xa5,0xc0,0x57,0x2,0xc5,0xf9,0xf5,0xe6,0x22,0x22,0x2,0xf,0xda,0xf8,0xc4,0xd8,0x7f,0x7,0x65,0x5b,0x48,0xa2,0x4c,0x61,0x9f,0x3b,0x2e,0x3a,0x39,0xcc,0x40,0x20,0xba,0xe7,0xfc,0x1f,0xbd,0x1b,0xab,0x81,0x7f,0xf1,0xfb,0xd3,0xb6,0x8,0x1,0xf1,0x76,0x86,0x0,0x0,0x24,0x4,0xfc,0x20,0x74,0xf7,0xe9,0x21,0xe7,0xd5,0x76,0x18,0x94,0x10,0xf4,0xec,0xc4,0x3b,0xfe,0xb,0x7,0x6,0xab,0xc0,0x71,0x81,0x63,0xe7,0x5f,0xda,0x7c,0x4f,0x41,0x38,0x12,0xfc,0xe9,0x45,0x31,0xe2,0xc1,0x8d,0xd,0x3,0xed,0x11,0xf9,0x8f,0x3b,0x2b,0xfc,0xe1,0x81,0x8,0x0,0xde,0x61,0xa4,0x14,0xdd,0x54,0xf8,0xcb,0xe7,0x72,0xf4,0x1f,0x74,0xdb,0xc4,0xd0,0x1f,0x81,0xb2,0xc4,0xf0,0x54,0xb0,0x17,0x24,0x1f,0x55,0xda,0xba,0x1d,0x91,0x71,0xa0,0x4e,0x17,0x57,0x56,0x3a,0xdd,0xf9,0xef,0xf7,0x26,0xdc,0xdf,0x8b,0xc2,0xe3,0x17,0xea,0x9,0x2a,0x94,0x26,0xeb,0xed,0xe8,0x97,0x8,0xfd,0x3d,0x71,0xce,0xb,0xe7,0x39,0x1f,0xed,0x0,0x7f,0x7,0x2f,0x59,0xc5,0xee,0x81,0x7f,0xa8,0xaf,0xb3,0xc,0x66,0x9c,0xe2,0xd,0x6a,0x41,0x96,0xee,0xfc,0xd7,0x70,0x84,0x20,0x46,0xf4,0x3c,0x26,0xd2,0x11,0xc8,0xfe,0xfd,0xee,0x12,0xaa,0xc2,0xff,0xf2,0x1c,0x37,0x18,0xf2,0x19,0xf4,0xea,0xd8,0xc4,0xfe,0xf9,0xb,0x66,0xf6,0x11,0xdf,0x2d,0xff,0xc8,0xdb,0x34,0x29,0x4e,0x21,0xb6,0x2,0xba,0x39,0x95,0x96,0xa2,0xec,0xe7,0x81,0x81,0x4,0x3b,0x81,0xbe,0xe9,0xc1,0x1d,0x4b,0xb1,0x54,0x7a,0x13,0x1a,0x38,0xe2,0x7,0xfd,0x1,0xfb,0xd4,0x7e,0xd7,0xc5,0x5,0xe3,0x17,0x3d,0x2b,0xb7,0x2d,0x15,0xb,0xff,0x0,0xff,0xf8,0x46,0x7c,0xfc,0x18,0xf5,0x2f,0x20,0xc6,0xe7,0xf6,0x29,0xc9,0x1b,0xd3,0x34,0x25,0xcb,0xc6,0xae,0x9e,0xd5,0x81,0xe1,0xba,0xd0,0xf7,0x82,0xe4,0xf0,0x99,0x48,0x39,0x1b,0x51,0x12,0xf6,0xe1,0x45,0xcf,0x8,0x1c,0x58,0x8,0xaa,0x7f,0xc0,0x0,0x5,0xcf,0x27,0x24,0x1d,0xa4,0x26,0x10,0xed,0xb9,0x24,0x3,0x23,0xba,0x54,0x27,0x1b,0x2,0xf5,0xfe,0xa4,0xfb,0x2c,0x1d,0x81,0xda,0xb7,0x3c,0x39,0xef,0xb4,0xee,0x81,0xf7,0xb4,0xd4,0xeb,0x95,0xda,0x21,0xdd,0xe0,0xc5,0x6,0x19,0x7d,0x65,0x77,0x1e,0xc4,0x5e,0xd5,0xea,0x30,0x5d,0x4,0x12,0x6f,0xf9,0xd3,0x2,0xce,0x16,0x2,0x2,0x20,0x2b,0x46,0xeb,0xec,0x28,0x1c,0xcb,0x9a,0x62,0x74,0x48,0xe0,0xf4,0xf6,0xa1,0xce,0x36,0x2c,0xa8,0xb8,0xe1,0x59,0x64,0x10,0x9f,0x26,0xb0,0x9,0xeb,0x2c,0xe7,0x81,0xab,0x45,0x81,0xb0,0xf1,0x3a,0x3e,0x7f,0x1c,0x3,0x54,0xcf,0x2e,0xd9,0xd0,0x3c,0x3a,0xc5,0xde,0x33,0xf1,0xdb,0x1,0xb6,0x5,0x5d,0x1b,0x43,0x1,0x57,0x7d,0x6,0xf7,0x45,0xb6,0x8b,0x76,0xf6,0x41,0xcc,0xb3,0x33,0x81,0xd2,0xe1,0x55,0xba,0x87,0x73,0x23,0x55,0x0,0xba,0xd7,0xa2,0x10,0x35,0x73,0x7,0xa7,0x81,0x17,0xed,0xf7,0xf7,0xdf,0x53,0x40,0x1,0xdb,0xff,0xf6,0xf0,0xd1,0xef,0x7f,0x5,0x81,0x3c,0x31,0x2a,0x81,0xff,0x81,0x81,0x56,0x6,0x1f,0x30,0x7f,0x7f,0x26,0xc8,0x7f,0x9c,0x81,0x6a,0xe4,0x31,0x81,0x81,0x34,0xae,0xc8,0xf4,0x7f,0xc4,0x81,0x7f,0xd7,0x70,0xe4,0xa4,0x81,0xb7,0xf8,0x77,0x66,0xf3,0xfa,0xc6,0xff,0xff,0x4,0x0,0x0,0x0,0xf0,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x5,0x0,0x0,0x0,0xf4,0xff,0xff,0xff,0x35,0x0,0x0,0x0,0xfc,0xff,0xff,0xff,0x21,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x11,0x0,0x0,0x0,0xfe,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0x26,0x0,0x0,0x0,0xe2,0xff,0xff,0xff,0x15,0x0,0x0,0x0,0x1f,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0x15,0x0,0x0,0x0,0xe8,0xff,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xaf,0xff,0xff,0xff,0xfc,0xff,0xff,0xff,0xec,0xff,0xff,0xff,0x3,0x0,0x0,0x0,0xd8,0xff,0xff,0xff,0x6,0x0,0x0,0x0,0xde,0xff,0xff,0xff,0x1c,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0x13,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xfc,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x5,0x0,0x0,0x0,0x1f,0x0,0x0,0x0,0xf8,0xff,0xff,0xff,0xfa,0xff,0xff,0xff,0xe0,0xff,0xff,0xff,0xfc,0xff,0xff,0xff,0x6,0x0,0x0,0x0,0xf7,0xff,0xff,0xff,0x0,0x0,0x0,0x0,0xa,0x0,0x0,0x0,0xee,0xff,0xff,0xff,0xf2,0xff,0xff,0xff,0xf2,0xff,0xff,0xff,0x2,0x0,0x0,0x0,0x12,0x0,0x0,0x0,0xa,0x0,0x0,0x0,0xfc,0xff,0xff,0xff,0xde,0xff,0xff,0xff,0x1a,0x0,0x0,0x0,0x19,0x0,0x0,0x0,0xf4,0xff,0xff,0xff,0x5,0x0,0x0,0x0,0xbf,0xff,0xff,0xff,0x17,0x0,0x0,0x0,0xf,0x0,0x0,0x0,0xf6,0xc7,0xff,0xff,0x4,0x0,0x0,0x0,0x10,0xe,0x0,0x0,0xfa,0x4b,0x81,0x12,0xd6,0xf1,0x9f,0x13,0x0,0x4f,0x40,0xb7,0x3b,0xc0,0xdd,0xa4,0xcb,0xbf,0x37,0xd6,0xe0,0x63,0xc0,0x1c,0xf4,0xee,0xea,0x5,0x6e,0xd,0xcb,0xe6,0xcf,0x33,0xe3,0xfa,0xef,0x4,0xd6,0x1c,0x3a,0xcd,0x94,0xc0,0x58,0xe7,0x3d,0xd1,0x1f,0xc3,0xf7,0x94,0x9c,0x4f,0x4b,0xdd,0x85,0x13,0xc7,0x68,0x47,0xfd,0x3,0x4f,0x9a,0x2e,0xf8,0x33,0x58,0x35,0x17,0xc,0x39,0x4a,0xd7,0xe8,0xb,0xd9,0x4d,0x2b,0x4e,0xab,0x36,0xa3,0xe,0x38,0xf7,0xfd,0xeb,0xc6,0x12,0xac,0x8c,0xd9,0x65,0xa,0x41,0x63,0xcf,0xa7,0x17,0x8,0x81,0x3a,0x49,0xd4,0xa0,0xb0,0x7b,0xee,0xe6,0xef,0x41,0xc,0xf7,0xf2,0xa1,0x3b,0xc4,0x21,0x6,0x49,0xba,0xe,0x2f,0xe6,0x10,0xe6,0x58,0x51,0x1a,0xf8,0x2a,0xd8,0x1,0xd3,0x81,0xf8,0xf5,0xd4,0x38,0xb3,0x58,0xa2,0x10,0x14,0x2e,0x49,0xe5,0x2e,0x8,0x1a,0x11,0x66,0x51,0xc6,0x5b,0x1e,0xdc,0xdb,0x51,0x95,0x9,0x3,0xf2,0xf9,0xfa,0x15,0x3c,0x1d,0xd7,0x1,0xff,0x68,0x87,0x59,0x97,0x47,0x28,0xd6,0x1b,0xf7,0x7,0x2a,0x23,0x62,0x42,0x32,0x23,0x4b,0x16,0x16,0x6f,0xb9,0x1d,0x18,0x32,0xc5,0xbe,0x37,0xdb,0x7f,0x4c,0x0,0xf1,0x83,0xff,0x67,0xfc,0x7a,0x1e,0xf4,0xdf,0x19,0x28,0xd9,0xf0,0xe6,0xb0,0x1b,0xca,0x38,0x1,0x26,0x70,0x3,0x14,0xef,0xc7,0x2,0x5d,0x6,0x33,0x43,0x1f,0x24,0x39,0xff,0xec,0x1e,0x7f,0x14,0xce,0x50,0x32,0xd2,0x28,0x42,0x9b,0x29,0x2f,0x10,0x27,0xfc,0x2c,0xf,0x32,0xf2,0x2c,0x30,0x4c,0xef,0xe6,0x2d,0xef,0x38,0xec,0xd7,0xe4,0xf3,0x57,0x4b,0xdd,0x40,0x3,0xe4,0xf0,0x4,0x28,0x3a,0x3c,0x12,0x41,0x63,0xcf,0xf1,0x32,0xfd,0xa7,0x10,0x4b,0xd1,0xf,0x28,0x52,0x29,0x5e,0x4,0x3e,0xa3,0x22,0xec,0x10,0xe9,0x2f,0xc,0x0,0xfd,0x15,0x29,0xfa,0x12,0x48,0xfd,0x4,0x43,0x7f,0xf6,0xe3,0x4d,0xf1,0xed,0x45,0x44,0xf,0x1e,0xff,0xf3,0x24,0xb3,0x2e,0x3,0x1c,0x3f,0xfe,0xe4,0xd1,0xa5,0x30,0xf,0xf1,0x1,0x3d,0x7,0xd,0xd4,0xe9,0x18,0x2,0x18,0xf7,0x4,0xfb,0xc7,0x36,0xd9,0x53,0xd,0xc,0xa,0xd,0x32,0xf2,0xfd,0xfc,0xfc,0x39,0x0,0xd9,0xa,0x38,0x4e,0xc7,0x54,0x31,0xc2,0xfb,0xaa,0x33,0xcb,0x20,0xe9,0x2,0xe6,0x26,0x2b,0x12,0xfc,0x38,0xda,0x28,0xf7,0x92,0x29,0xf2,0xe,0x9,0x42,0xd4,0xb7,0x27,0x3e,0x99,0x6c,0xf5,0xf0,0xda,0xf6,0x1f,0xdf,0x13,0xbe,0x2,0x6d,0x14,0x16,0x81,0xdd,0xb,0x5b,0xd9,0xcc,0x9,0x1f,0x46,0xd9,0x16,0xcc,0x1,0xd2,0x10,0xc,0xe9,0xe8,0x2,0xc9,0x2,0x38,0xf4,0x31,0xb2,0x4a,0xcf,0x34,0x42,0x0,0x5,0x8,0xe4,0x2,0x30,0xe2,0x62,0xdf,0xf5,0x14,0x10,0xfc,0x1e,0x43,0x2b,0x7f,0x8,0x1c,0x7,0xdc,0x3,0xc9,0xf8,0x26,0x6f,0x3c,0x63,0xff,0x1f,0x4b,0x1d,0xe1,0x2d,0xe0,0xd4,0xef,0xf5,0xf6,0x2,0xbd,0xf3,0x98,0x11,0x9f,0x35,0x10,0x81,0x34,0xf9,0x1e,0xdc,0x1,0x45,0xc7,0xd2,0x26,0x15,0x5,0x45,0x31,0x9,0x18,0x58,0xf,0xc9,0xdf,0xde,0xb6,0x13,0xe0,0x1b,0x20,0x3a,0xfa,0xe0,0x6,0xa3,0xe,0x1a,0xbf,0xc9,0xda,0x2f,0xa,0xba,0xaf,0xce,0xd2,0x31,0xee,0x19,0xd6,0x4b,0x5b,0x12,0xd0,0x5,0x34,0x3f,0xef,0xfb,0xfc,0xeb,0xf1,0x17,0x62,0xa,0xd,0x16,0x1c,0xc,0x28,0x20,0xb1,0x53,0xa9,0xd4,0xc3,0x11,0x7f,0x4e,0xb0,0x14,0x9f,0x33,0xd8,0x5,0xa5,0xd4,0xbd,0xd6,0xe,0x20,0xf0,0x26,0xfd,0x6b,0x9,0xae,0x3f,0xe4,0x2,0x34,0x10,0xbf,0x1a,0xcd,0x10,0x39,0x1f,0x37,0x44,0xf,0xb7,0x4b,0x3c,0x3b,0x1b,0x54,0x22,0xfa,0xee,0xc3,0xa3,0x5,0xb0,0xf8,0xb,0x3c,0x9f,0xca,0xf3,0xf,0xfa,0x3e,0x7f,0xf7,0xbe,0xe8,0xc4,0x5,0x3,0x26,0x15,0xfe,0x8,0xcc,0xe4,0xc7,0x2,0x57,0x29,0xd3,0xf3,0x97,0x12,0x13,0x36,0x46,0xbe,0xaf,0x22,0xd2,0x52,0x15,0xf0,0xb9,0x2f,0x6c,0xe5,0xbc,0xde,0x7,0x52,0xf3,0x5a,0xf,0x68,0x3,0x6e,0x7f,0xb7,0x56,0x57,0xd2,0xe2,0x1d,0xa1,0xe1,0xdb,0xff,0xda,0x9e,0x24,0x17,0xf5,0x42,0xb0,0x36,0xbd,0x46,0x16,0xcd,0x48,0x4,0x27,0x21,0xd2,0xc,0x8,0xe2,0xb6,0x2a,0x36,0xf,0x10,0x28,0x2c,0xc,0xcc,0x74,0x0,0x1a,0xeb,0x64,0xdb,0xee,0x57,0xf8,0xfa,0xf5,0x1a,0xd9,0xd,0x5,0xe9,0xca,0x2c,0x21,0xfe,0x8,0xa4,0xd4,0xde,0xfc,0xe,0xd8,0xd1,0xea,0x2,0x35,0xf3,0x39,0x30,0xd2,0x11,0xfd,0x55,0x1f,0x4,0xca,0xe0,0x1a,0x9a,0xd9,0x1e,0x24,0xdc,0xe,0x1f,0xea,0x48,0xd9,0x3d,0x18,0x4a,0xe,0x0,0xd4,0x81,0xf2,0x20,0xe4,0xf8,0x2,0x1d,0xea,0xed,0x15,0x2f,0xf1,0xe3,0xe9,0x43,0x26,0x2,0x1e,0x2a,0xe,0xfd,0xfd,0xc0,0x10,0xeb,0x1b,0xf2,0x81,0x31,0x1f,0xc1,0x8,0x2e,0x19,0xca,0x5,0xf0,0x5,0xef,0xea,0xf,0xfb,0xe7,0x4,0xee,0xb7,0xe0,0x1c,0xcb,0xa,0xd5,0xba,0x17,0xfc,0xdf,0xe7,0x1e,0x29,0x1,0xd8,0xa,0xd2,0x1e,0x4d,0xf2,0x28,0x14,0xc2,0x27,0x38,0xce,0xf1,0xaa,0x1e,0x9,0x2,0x20,0xcc,0xfb,0xe8,0x1d,0xfb,0xf5,0x21,0x9,0x26,0xe6,0x9d,0x8,0xd9,0x87,0x9c,0x38,0x27,0xea,0x1c,0x7,0xe3,0xa9,0xc2,0xdf,0x27,0xe9,0x23,0x2b,0xf3,0x3f,0xee,0xe,0x11,0x57,0xc,0xf6,0x5,0x3b,0xb8,0x8,0x81,0xe4,0x9d,0x7,0xf2,0x16,0xce,0x5b,0x2a,0x18,0x2e,0x4a,0x28,0x29,0x84,0x8,0x11,0xe6,0x17,0xba,0xfd,0xd,0xdd,0xd4,0xd4,0x29,0xca,0xc6,0x2a,0xf9,0xb2,0xf7,0xf9,0x2d,0xce,0x16,0xe1,0x16,0x3e,0xe3,0xd1,0xc8,0x7,0xf6,0xc4,0x2d,0xe,0x11,0x1e,0xd5,0xfc,0xc6,0xa8,0x32,0xf4,0x7f,0x7,0x8,0xe4,0x20,0xc9,0x29,0xfe,0x35,0xa,0x1,0xf,0xed,0x3,0xe2,0xf3,0x15,0xd,0xd5,0xcf,0xdd,0x0,0xf8,0x81,0xe0,0xec,0xee,0x40,0x48,0xdc,0xf9,0x32,0x4b,0x9d,0xe6,0x84,0x55,0x38,0xf6,0xc9,0x32,0xce,0xbb,0xcb,0xfc,0x1,0x3a,0xfe,0xd2,0xfe,0x2,0x6,0x1,0xf9,0xfa,0xd3,0x2e,0x23,0x3,0xfe,0xa3,0x6c,0xd5,0xb1,0x53,0xcd,0xbc,0x2c,0x5c,0xb5,0xcd,0x17,0xcb,0xcb,0xf3,0xc7,0x5d,0xdb,0x8d,0xbe,0x3a,0xe5,0x17,0xea,0x9d,0xca,0x39,0x49,0xaf,0x4d,0xe6,0xc3,0x8b,0x11,0x28,0xa6,0x24,0x53,0xd0,0xc5,0x27,0x18,0x4a,0xf7,0x30,0x74,0x3,0x7f,0x72,0xc5,0x40,0xf,0x9b,0xdc,0xcc,0x2,0xd3,0x5a,0xf7,0xc3,0x55,0x52,0x88,0x18,0xf2,0xeb,0x85,0x3d,0x2e,0xa3,0x61,0x6c,0xb5,0x26,0xfb,0xd8,0x5c,0xdd,0x26,0xf7,0xde,0x15,0x65,0xd9,0x36,0x34,0x53,0x40,0xd9,0xd4,0xda,0xeb,0xf1,0xd4,0x6,0x2b,0xef,0xb7,0x2c,0xe3,0x1,0xb,0xe8,0x51,0x9,0x58,0xed,0xfc,0xc7,0xcd,0xc5,0xe4,0xbf,0x6,0xd2,0xd0,0xd2,0xea,0xbe,0xaf,0x99,0xe7,0xf7,0x64,0xf2,0xee,0x5a,0xf1,0x1e,0x64,0x31,0x1d,0x97,0x58,0xe0,0xb4,0xf3,0xc,0xf4,0x7f,0xe7,0xe,0xd4,0x47,0x28,0xcf,0xf6,0xde,0x1b,0xc6,0xb0,0xf9,0xbf,0x12,0x9d,0xa9,0xe2,0xbd,0xf6,0xb0,0xe7,0xfb,0xdd,0x2,0x1e,0xfb,0xf2,0xdc,0xc7,0x13,0xab,0x6,0x2a,0x3c,0x48,0x4,0xe6,0x81,0x36,0x1f,0x40,0xee,0xd8,0xb2,0x9,0xb0,0xec,0xbe,0x1c,0x40,0x25,0xe1,0x50,0x3,0xcf,0xee,0x44,0x28,0xfa,0xd5,0xf8,0xf,0x3d,0x7f,0xec,0xd0,0x12,0xe3,0xde,0x3a,0xce,0xae,0xd,0xe2,0x1b,0x28,0xef,0x2c,0x2d,0xe2,0x50,0xcd,0xcd,0x2,0x27,0x40,0xd9,0xb4,0x50,0x0,0x58,0xe5,0x1,0x45,0xdc,0x25,0xc7,0x91,0x49,0x98,0x5e,0x2f,0x54,0x2b,0x25,0x32,0xee,0x54,0xb4,0x40,0xf4,0xdb,0xfa,0x2a,0x4f,0xf2,0x23,0xfd,0x2d,0xc7,0xf6,0x18,0x22,0xc8,0x56,0xd,0xbb,0x69,0xfb,0xf0,0x3a,0xf4,0xd7,0x10,0x38,0x8,0xed,0x4f,0xfb,0xcd,0xd,0xf9,0x2a,0x3a,0x17,0xa,0x29,0x34,0xef,0x36,0xef,0xf8,0x72,0xe3,0xbb,0xee,0x18,0xf6,0xee,0xdb,0xe,0x55,0x9a,0x1a,0x18,0xd9,0x4f,0x4a,0xe2,0x50,0xcd,0x7f,0xc7,0xb,0x8f,0x21,0xf1,0x5a,0x0,0x16,0xd,0xd6,0x2d,0x0,0x24,0x54,0x9b,0xd4,0xc0,0xa7,0xf9,0xc1,0x94,0x7f,0x42,0xd3,0xc6,0xfb,0x1f,0xd9,0x63,0x1a,0x20,0xfd,0xd6,0x55,0xa9,0xe9,0x3a,0x22,0xf8,0x3e,0xcc,0x15,0xf2,0xfd,0xe9,0xe2,0xac,0x1c,0x18,0xd0,0x1a,0x16,0x6,0xae,0x5e,0xea,0x32,0xeb,0x6,0x26,0xd3,0x56,0xb1,0x0,0x18,0x4e,0x12,0x2b,0xcb,0xc4,0x53,0xa4,0x23,0x7a,0xeb,0x39,0xbe,0x1a,0x87,0xf,0xaf,0xe9,0x15,0x9f,0xd7,0xcc,0x24,0xee,0x1a,0xb1,0x3b,0xb,0x4e,0xf,0x7f,0x4d,0x23,0xe0,0xc9,0xb6,0xbe,0x14,0x35,0x38,0x9a,0x34,0xfa,0xee,0x69,0x5,0xd3,0x61,0x78,0x1b,0xde,0xff,0xc7,0xf6,0x4e,0x43,0xdf,0x23,0xb7,0xf3,0xdf,0xf2,0x22,0xfb,0x22,0xfa,0x13,0x0,0xec,0x1f,0xe4,0x20,0xda,0xc,0xe5,0xee,0xe,0x7,0xfc,0x9,0xf9,0x4,0x10,0xfc,0xf2,0xfd,0x6,0xee,0x31,0x21,0xe6,0x8,0x32,0x16,0xe6,0xef,0xf8,0xde,0xf4,0xfb,0xda,0x7f,0x18,0x24,0xfe,0xf5,0xea,0xff,0xfb,0x8,0xd1,0xd,0x21,0xd6,0x12,0x14,0xd7,0x12,0x1,0xf0,0xe7,0xc,0x15,0x9,0xd,0x2,0xa,0x2f,0x39,0x25,0x97,0xe8,0x17,0x96,0xd6,0x1c,0x28,0x17,0x0,0xc1,0x13,0x38,0xf9,0x35,0xc2,0xe0,0xfd,0xf3,0xf7,0xa2,0x3f,0xb5,0x18,0xde,0x90,0x1b,0xc3,0xf,0xfc,0xd4,0x1c,0xe8,0x17,0x1,0xdc,0x3,0x19,0x81,0xf5,0xd5,0x47,0xd9,0xd6,0xf4,0x97,0xc2,0xed,0xd3,0xca,0x38,0x92,0xf8,0xe2,0x7,0x2c,0xdc,0xa2,0xfb,0xd7,0x19,0x2a,0xeb,0x3,0x4b,0x5,0xb7,0x9,0x1d,0xa9,0xad,0x54,0x27,0xef,0xbb,0xa4,0x69,0x2d,0x3b,0xbc,0xa7,0xa7,0x3d,0x52,0xad,0x19,0x7a,0x8b,0xf1,0x5c,0xbf,0x1f,0xe9,0x61,0x1f,0x7f,0xd5,0xc9,0xa,0xd0,0xaf,0xdc,0x9c,0xbc,0x1c,0xd3,0x2a,0xf2,0xe,0xad,0x25,0x7,0xac,0x9,0xd,0x30,0x1e,0x2b,0x5e,0x27,0x19,0x33,0x6,0xda,0x0,0x13,0xe9,0xb8,0xb,0xeb,0xbf,0xdd,0x12,0xf4,0x9b,0x1e,0xf9,0xf9,0x8,0x50,0xd2,0xb0,0xe0,0x51,0x23,0x1c,0xde,0x13,0x25,0xee,0x74,0xd6,0xac,0x18,0xf4,0xb5,0x13,0xe2,0xef,0x1a,0x81,0x56,0xe6,0x68,0x6,0xcf,0x20,0x12,0xf0,0xd9,0x8,0xf2,0x15,0x56,0xf3,0xf5,0xfb,0x3,0x39,0x4,0xe,0xfb,0xea,0xe0,0x2c,0x2,0xf6,0xca,0xc9,0xdc,0xd3,0xe2,0xee,0xec,0x9e,0xb0,0x39,0x2c,0x43,0x1a,0xe3,0xa9,0xe0,0xc2,0x11,0xe6,0xc4,0x2a,0x3,0x2c,0xf9,0x4b,0xb,0xea,0xe,0xd4,0xc,0xee,0x4,0xe9,0xa0,0x7f,0x19,0x41,0x49,0xff,0x4,0x22,0xf5,0x13,0x2d,0x1,0x28,0x1d,0xa8,0xd9,0xe8,0x46,0x7f,0x61,0x9,0xd3,0xff,0xee,0x61,0x33,0xe7,0xbd,0x16,0xfe,0xf7,0xc7,0x4b,0x17,0xe4,0x7,0x6a,0x45,0x30,0x24,0x45,0xd9,0xf,0xe5,0xa,0xe4,0xd6,0x1d,0x1d,0x7,0x48,0xea,0x23,0x28,0x22,0x9c,0xb,0xd5,0xed,0xc6,0xee,0x2b,0x4b,0xd,0x1a,0xd1,0x3a,0x1a,0x2,0xca,0x17,0xe,0xd9,0x4f,0x2e,0xdd,0xf9,0x43,0x16,0x14,0xd7,0xc4,0x1f,0xc7,0x43,0xf3,0x21,0x27,0x15,0xec,0x16,0x22,0x56,0xf4,0x2f,0x7,0xa3,0x28,0x40,0x5c,0x43,0xdf,0x55,0x25,0x14,0x3b,0x8,0x40,0xd,0xed,0xf2,0x12,0xe2,0xb6,0xb5,0xb1,0x27,0x26,0x2d,0x26,0xe0,0x23,0x7f,0xd,0xe,0x18,0xce,0x12,0x34,0xd,0xf8,0xc0,0x35,0xec,0xa,0xff,0xc3,0xa,0x36,0xe4,0xe1,0x45,0x1c,0x18,0x3c,0xfd,0x28,0xf3,0x19,0xd9,0xf4,0x3,0x37,0xb,0xaa,0x24,0xf0,0xed,0xe3,0x16,0x32,0xf4,0xb,0x29,0xc5,0x7f,0x22,0x26,0xa,0x0,0xa,0xf5,0xfd,0x3,0xec,0x5c,0x1,0xf0,0x36,0x26,0x1e,0xe4,0x41,0xcb,0xfc,0x10,0xe1,0xf8,0x1e,0x27,0x13,0x25,0x1d,0xe7,0x17,0xd8,0x36,0x2,0xda,0xe,0xc9,0xd8,0xd6,0xc5,0xc8,0xa5,0xf4,0xdd,0xd3,0xf4,0x81,0x2f,0xf6,0x14,0x9c,0x1,0xe,0xab,0xaa,0x42,0x3b,0x34,0x2e,0x3a,0x11,0xd4,0x2c,0xa,0xe5,0xda,0xf4,0xe9,0xe3,0x1c,0x17,0xf5,0x26,0xdf,0xda,0x15,0xfa,0xd6,0xe5,0x37,0xb4,0xb4,0x66,0xd2,0xf9,0x1a,0x1a,0x4a,0x17,0xa6,0xde,0xc,0x46,0xc2,0x34,0xad,0x1,0xcb,0xbc,0x12,0x16,0xe7,0xe3,0x17,0x21,0xc9,0x33,0xe7,0x6,0x2e,0xde,0x17,0x46,0xf8,0x10,0xe3,0xc7,0xb5,0xb7,0xfa,0x2,0xc5,0xf,0xf5,0xed,0x7,0xfb,0xd5,0xd3,0x41,0xfd,0x4a,0xe2,0xed,0xf1,0x9e,0xca,0x66,0xf6,0xe1,0x81,0x5,0x39,0xc0,0x14,0xed,0x7,0xe4,0xde,0x22,0xb3,0xb6,0x9b,0xf2,0x3f,0x3a,0xed,0x45,0x35,0xc3,0x55,0xcc,0x1e,0xe9,0x29,0xc0,0x70,0x17,0x21,0xdf,0xb1,0x5f,0xdf,0xcd,0x1f,0x56,0x5,0xc8,0x1e,0xe6,0xc8,0x41,0xda,0xec,0xe6,0xf8,0xdd,0x1d,0x81,0x3f,0xb1,0xe,0xdd,0xcb,0x10,0xe2,0x4a,0x5,0x7a,0x9f,0xd,0x42,0xf,0xe3,0x2d,0xd4,0x20,0x4c,0xdd,0xd0,0xed,0x40,0x14,0xd2,0xe0,0xd2,0x6e,0x2f,0xc7,0xba,0x26,0x67,0x28,0x32,0xba,0xd6,0x9,0x97,0xb9,0x9,0x5c,0xb4,0x33,0x23,0x20,0x3f,0xf0,0xd4,0x21,0xb4,0xe8,0x3,0xe1,0x31,0xf9,0x12,0xdd,0x6e,0x96,0x81,0xf3,0xa3,0xca,0xdb,0x61,0xc5,0x32,0x3c,0x8,0x5,0x37,0x59,0xdb,0xf,0x5,0x7,0xb4,0x29,0xdd,0xf1,0x4f,0xcb,0x20,0x3a,0x36,0xc,0x87,0xfa,0xc7,0x38,0xc6,0xb,0xc1,0xb5,0x14,0x26,0x35,0x2,0xea,0x40,0x30,0xff,0x9,0xf9,0xd,0x8,0xf3,0x2c,0xec,0x1d,0xc0,0x26,0x40,0x81,0x1e,0xed,0x15,0x9b,0x24,0x26,0xf9,0x10,0x29,0x5d,0xf4,0x1f,0xe,0x10,0xe4,0xfa,0xf8,0xe0,0xe7,0x21,0xe8,0xfe,0xdf,0x50,0x43,0x4b,0x24,0xe,0x9,0xd0,0x6,0x1b,0xe7,0x18,0xdf,0x6f,0x28,0xd,0x17,0x13,0xbc,0xcc,0xd,0x3f,0x15,0xcc,0x17,0xb6,0xd7,0xe1,0x22,0xfe,0x4a,0xdf,0xe8,0xed,0xe2,0x43,0x2a,0x7f,0xfa,0x38,0xda,0xe9,0xf,0x5d,0xf5,0x22,0xff,0xf1,0x15,0x44,0xf7,0x39,0x1a,0x2,0xa,0x11,0xd4,0x24,0xe8,0x22,0x36,0xfa,0x24,0xf7,0x26,0x18,0xf,0xe8,0xc9,0xae,0xe4,0x3b,0x36,0x3f,0xaa,0x3d,0x9,0x28,0xf2,0x4e,0xbc,0x2c,0x5f,0xc7,0x12,0x5a,0x51,0xcd,0xe9,0x9e,0xde,0xd,0x12,0x17,0x3d,0xd5,0x77,0x50,0xf7,0xde,0xf9,0xe1,0xf,0xf9,0xe1,0xd,0xed,0x3,0xb9,0x48,0xf5,0xc1,0x43,0x14,0x42,0x81,0xe7,0xef,0xf8,0xbc,0xb1,0x3,0x51,0xb0,0xf0,0x21,0xf8,0x2a,0xa5,0xeb,0xeb,0x21,0x23,0xe2,0xf2,0x76,0xec,0x34,0xfa,0xe1,0xd9,0x4c,0xd9,0xd7,0xdd,0xf0,0x52,0xb,0x24,0x34,0x21,0xad,0xf5,0x24,0xed,0x4,0xf8,0xe,0xdb,0xee,0xea,0x4c,0x81,0xb6,0xdf,0x8d,0x28,0x1a,0x71,0xe0,0xc,0x37,0x2e,0xd,0x26,0xfa,0x19,0xff,0x2e,0xd9,0xf6,0xd1,0x21,0x13,0xcd,0xde,0x21,0x31,0xea,0x2f,0xd5,0x7f,0xe7,0xfb,0x45,0x5f,0xb2,0x49,0xf1,0xcd,0x4d,0xff,0xf9,0xe0,0xf1,0xf7,0xe0,0xdc,0xc5,0xfa,0x2b,0x3f,0x23,0xe3,0xf9,0xd1,0xf8,0x6,0x13,0x22,0xb9,0xfb,0x34,0xc9,0x54,0xba,0xb2,0xdb,0xed,0xd5,0x5,0x18,0x2b,0xbb,0xf,0xd7,0xa,0xf3,0x41,0xcc,0xd5,0x58,0xff,0x34,0xed,0xc9,0x7,0x43,0xd1,0x23,0xf2,0xcb,0xd,0x1,0xc,0x12,0x41,0xf1,0xed,0xd1,0xf3,0xd2,0xde,0xd8,0x1e,0x37,0x2,0x7,0x2,0xeb,0x9,0x5e,0x38,0x20,0xbd,0x14,0xd6,0xa9,0x6,0xde,0x25,0x0,0x7f,0x20,0x34,0xe5,0x3,0xa,0xc,0x1a,0xed,0x9d,0xeb,0x1b,0xb8,0xb4,0xdf,0xd9,0x6,0x3,0x34,0xfe,0xa8,0xc,0x19,0xe1,0xff,0x3a,0x49,0xe1,0xdc,0x12,0x9f,0x2e,0xf7,0xea,0x1d,0x15,0xee,0xe6,0xfb,0xfa,0x25,0xdf,0x3,0xe8,0x1f,0xea,0xe2,0xef,0xa8,0x12,0xd8,0xc6,0xc2,0xe3,0x3a,0xd4,0xb9,0x10,0xd5,0x4f,0xe5,0x7,0x2,0x30,0xfa,0x29,0xb3,0xdb,0x1d,0x7f,0xc4,0xa3,0x8e,0x98,0xe8,0x18,0xfa,0xdb,0xeb,0xc5,0x2,0x1e,0xdf,0xcb,0x21,0xf7,0xfb,0xc0,0xe7,0x3d,0xe6,0x9c,0xdb,0x52,0xbd,0xae,0x2c,0xe4,0xc8,0x35,0x20,0x38,0x0,0x31,0xd7,0xa2,0xd0,0xd1,0xa5,0xc1,0xd0,0x2c,0xd6,0xa6,0x3d,0x8e,0x7f,0x60,0xde,0x39,0xc8,0xe3,0xe3,0x10,0x21,0x45,0xec,0x49,0xe9,0xf0,0xb7,0x27,0x42,0xc,0xbf,0x64,0xb1,0xe1,0x23,0x3f,0xd6,0x40,0xce,0x18,0xe,0x8c,0xfb,0x1,0x4a,0xe,0x60,0x9f,0xf,0xc2,0x26,0xe,0xbd,0x3,0xea,0xdb,0xd4,0xe4,0xa8,0x3a,0x1b,0xe3,0xce,0x7f,0xa0,0x38,0xdc,0x3a,0xaf,0x1f,0x3e,0x98,0x5a,0xec,0xcc,0xff,0xf6,0x28,0xf2,0x32,0xe8,0x4e,0xce,0xda,0xdb,0xcf,0x61,0xfa,0xec,0xe4,0x5a,0x31,0x2e,0x43,0x5,0x4,0x51,0xdc,0x3d,0x15,0x40,0x54,0x67,0xcb,0xb1,0x2,0xe7,0xce,0x34,0x4d,0xef,0xe2,0x33,0xb,0xc4,0x3c,0xf7,0x10,0x81,0x7,0x31,0x40,0xf9,0xd2,0x17,0xea,0x62,0x21,0x41,0x7f,0xd4,0xcd,0x13,0x12,0xcf,0xfb,0x3f,0x4,0x36,0x45,0xf1,0x2,0x4d,0xe0,0x8,0xd6,0x76,0x1,0xf0,0x30,0x5,0x6,0xdf,0x3e,0x30,0xe0,0xfd,0xf7,0xc3,0x26,0xf6,0x6e,0x1d,0x36,0xfe,0xdc,0x15,0x14,0x35,0x27,0x32,0xd5,0x1d,0x23,0x2,0x20,0x23,0xfa,0x22,0xfa,0xfd,0x3,0x27,0x13,0xff,0xd5,0x2c,0xcc,0xf,0xf3,0xef,0x13,0xd,0xc,0xe7,0xf4,0xec,0xad,0xfd,0xf8,0xf7,0x24,0x40,0x7,0xeb,0x7f,0xb,0xe8,0x21,0xea,0x18,0xdf,0x13,0xe6,0x9,0xeb,0x51,0xd1,0x26,0xf0,0xc7,0xdf,0x1,0xf9,0xf7,0xd3,0xfa,0xef,0x17,0x43,0x46,0x1f,0x52,0xd5,0x46,0x5,0x1a,0xe7,0xbc,0xb7,0xdd,0xe3,0x50,0x62,0x49,0xba,0xc3,0xfc,0x39,0xa,0x69,0x23,0x10,0xce,0x2,0xd6,0x4e,0x9,0x36,0x96,0xb1,0xd6,0x1d,0xf6,0x3,0x59,0x35,0x2e,0x6,0xd8,0x7,0x2c,0x2,0x5c,0x26,0x8,0x55,0x26,0xeb,0x7f,0x13,0xfe,0x1,0xe9,0xca,0xf1,0xc9,0x25,0xf,0x2e,0x27,0xfe,0xd3,0x2e,0xea,0xe2,0xb2,0xeb,0xcb,0x2,0xeb,0xe6,0xdf,0x31,0x30,0x2,0xd5,0xca,0xbe,0xcf,0x20,0x3d,0x68,0x63,0xd0,0x1f,0xad,0x2b,0x1e,0xdc,0x19,0x22,0xd9,0xba,0x2c,0xc,0x2c,0xf6,0x3c,0x51,0x81,0x35,0xc3,0x29,0xf6,0x15,0xf4,0xf9,0xb,0x1a,0xd0,0x26,0x13,0xa4,0xf0,0x40,0xc4,0x42,0x45,0x31,0x11,0xa8,0xc8,0xf3,0xe6,0x12,0xf7,0xb2,0x2,0xf5,0xcd,0x9,0xfa,0x23,0xdc,0xd4,0x4,0xf0,0xd6,0x56,0x2f,0xf0,0xd7,0x3c,0xbf,0x10,0xd2,0x22,0xdb,0x7f,0xf5,0x5c,0x18,0x35,0xf6,0xfd,0x27,0xbc,0x0,0x12,0x3d,0xf0,0x10,0x3,0x1,0x37,0x22,0x22,0xa6,0x45,0xf7,0xfb,0xf8,0xb4,0x23,0xea,0xf0,0x41,0xd6,0x34,0xef,0x6,0xb,0x13,0xe5,0xc0,0x4d,0xff,0x90,0xf6,0x21,0xec,0xe5,0xde,0x34,0x2,0x23,0x35,0xdf,0xd,0xf4,0xc6,0x23,0xed,0x3,0xd9,0x59,0xbe,0xc,0x2d,0xb,0xc7,0x3e,0x14,0x31,0xb9,0x26,0x50,0x92,0xcb,0x4d,0x9,0xd,0xee,0x1b,0xfa,0x3,0x7f,0x1f,0xf5,0x7,0xae,0xf3,0x2,0xe3,0x2c,0xe4,0xf2,0xa5,0xe8,0xf,0x7f,0x22,0x9,0x62,0x4c,0x3,0x3d,0x59,0xb,0x3b,0xf2,0x11,0xc6,0xe1,0x20,0xd4,0xd0,0xd0,0xca,0x20,0x10,0xf1,0x18,0x31,0x2f,0xf6,0xe6,0x13,0xa3,0xc3,0x2c,0xe,0xea,0x33,0xa,0xb4,0xe5,0x29,0x1a,0xef,0x11,0x96,0x1,0x33,0x2b,0x5c,0xb8,0x2d,0x0,0x3f,0xb5,0x2b,0x44,0xd5,0x1e,0xa2,0x18,0xce,0xcb,0xdc,0x1b,0xd4,0x6,0xd0,0x8,0xb0,0x7f,0x33,0x7,0x27,0xf8,0xf1,0xb7,0xf4,0x36,0xd6,0x44,0xb2,0xd1,0x7f,0xe8,0xdf,0x6,0x5c,0x12,0xe8,0xbb,0x8,0xfa,0xe6,0x6b,0xdc,0xc9,0x45,0x33,0x85,0xb2,0xeb,0xb,0x8,0x36,0x93,0xeb,0xd5,0x18,0x10,0xd1,0x75,0x28,0xe9,0xd4,0xda,0x11,0xb5,0x5,0xb8,0x4e,0xdc,0xe1,0x53,0xde,0xa2,0x0,0x2d,0xc9,0x43,0xcb,0x3b,0xfe,0x25,0x1f,0x2a,0x3d,0xd2,0xe2,0xc9,0x18,0xe1,0xfe,0x13,0xe8,0xe5,0x4,0xc0,0xd2,0xc,0x14,0x35,0x6c,0x20,0x27,0xbf,0x33,0xf4,0x57,0x0,0x18,0xb7,0x81,0xd8,0x30,0x5,0x4,0xd6,0x2d,0xe5,0x1c,0xe,0x51,0x10,0xb4,0x20,0x34,0x25,0x17,0x46,0x31,0xf6,0xd,0x16,0x53,0x30,0xfb,0x1e,0xcf,0xec,0xc9,0x27,0x2c,0x48,0xe6,0x50,0x1a,0xc,0xfc,0xb7,0x22,0x47,0x16,0x17,0x4f,0xef,0x36,0xe8,0x42,0x35,0x55,0x11,0x91,0xe7,0xcb,0xf1,0x12,0x27,0x36,0x86,0xec,0xb2,0x27,0x1,0xfd,0x5e,0x45,0xc7,0x61,0xb,0x26,0x81,0xd6,0x1b,0x16,0x81,0x33,0xa6,0x2d,0xd9,0x21,0x25,0xfa,0x15,0xfb,0x0,0x20,0xe3,0x19,0xce,0x39,0xdf,0x1c,0xae,0x2a,0x39,0x22,0x33,0xa7,0x2d,0xb,0x21,0x21,0xc4,0xfc,0x2d,0xdf,0xf0,0x18,0xd4,0xf0,0xdc,0xb8,0xd8,0x5d,0x11,0xc5,0xe1,0x5a,0xf3,0xe3,0x20,0x1c,0xbe,0xb8,0x22,0x1c,0x2,0xf6,0xb,0xd0,0xf4,0x37,0xcf,0xde,0xd8,0x99,0xe6,0x7f,0x24,0x1e,0xe8,0x11,0xf4,0xdc,0x7,0xd,0xec,0x90,0xc0,0x3d,0x40,0x32,0x45,0xea,0x23,0xf4,0xe0,0x4e,0xeb,0xf4,0x2e,0xc3,0x3f,0x19,0x10,0x42,0x1f,0xf,0xcb,0x1c,0xd5,0x51,0x36,0xce,0x68,0x9d,0x66,0x34,0x7,0x4c,0xed,0x2e,0xa1,0xef,0x1,0x90,0xf8,0x5d,0xf,0x9,0xcc,0x3e,0x1,0xd1,0x52,0x53,0xff,0x18,0xf0,0xfe,0xaf,0xff,0x2a,0xa7,0xc,0x3e,0xc5,0x48,0x25,0x41,0xdd,0xcd,0x73,0xc0,0x3e,0xd2,0x7f,0xf0,0x2,0x51,0x4e,0xee,0x40,0xd,0xfd,0xe9,0xdc,0x38,0x3a,0xab,0x1c,0xde,0xf3,0xae,0x74,0xaa,0xcc,0x28,0x2d,0xfb,0x0,0xc1,0xe8,0x21,0xa2,0xf5,0x9f,0x4d,0x1c,0xf9,0x11,0xdc,0xe4,0xf8,0xc3,0x7,0x18,0x7b,0x45,0x1b,0xbd,0x25,0xf7,0x29,0xf4,0x3a,0x44,0xae,0xf1,0xe4,0x39,0xb9,0x16,0x19,0xe4,0xdf,0x67,0xe,0x1b,0xac,0x1a,0x15,0xc0,0x17,0x3b,0x36,0x3,0x18,0xf0,0xcb,0x81,0xf2,0x5,0xd5,0x69,0xd3,0xfc,0x19,0x1d,0x7c,0xac,0x48,0xe1,0xfc,0x21,0x3b,0x15,0x36,0x3,0x55,0x1,0x43,0xd5,0x94,0xdd,0xe2,0x27,0xd1,0x1a,0xfb,0xc0,0xfb,0x24,0x50,0xdc,0xee,0x8,0xc1,0xf4,0xf2,0x67,0xec,0xba,0x38,0xd5,0xfb,0x8,0x7f,0x8,0x1b,0x21,0x10,0xdf,0x18,0xda,0xdd,0x25,0xe,0xee,0x32,0x4,0xc9,0x16,0xec,0xed,0x14,0x22,0x2f,0xce,0xe9,0x1e,0xfc,0x5,0x26,0xf6,0x4a,0x37,0xf4,0x28,0xe1,0x24,0xca,0x1e,0xe8,0x12,0xd6,0xff,0xff,0x4,0x0,0x0,0x0,0xf0,0x0,0x0,0x0,0x94,0xfc,0xff,0xff,0xe9,0xe5,0xff,0xff,0x51,0xfd,0xff,0xff,0x16,0xf5,0xff,0xff,0xb1,0x5,0x0,0x0,0xbe,0xf,0x0,0x0,0x43,0xfe,0xff,0xff,0x2a,0x0,0x0,0x0,0x9a,0xa,0x0,0x0,0x5a,0xfb,0xff,0xff,0xf2,0x8,0x0,0x0,0xa,0x9,0x0,0x0,0x1e,0xff,0xff,0xff,0x33,0x4,0x0,0x0,0x10,0xff,0xff,0xff,0xb0,0xf7,0xff,0xff,0xea,0xfa,0xff,0xff,0xbd,0x1,0x0,0x0,0x94,0x1e,0x0,0x0,0x21,0x6,0x0,0x0,0x44,0xf8,0xff,0xff,0x6f,0xf9,0xff,0xff,0xc1,0x5,0x0,0x0,0x39,0xef,0xff,0xff,0xdc,0xf9,0xff,0xff,0x6d,0xfe,0xff,0xff,0x94,0xe2,0xff,0xff,0x8f,0x1a,0x0,0x0,0x96,0x6,0x0,0x0,0x34,0x15,0x0,0x0,0xf6,0x5,0x0,0x0,0x9c,0xfe,0xff,0xff,0xb9,0xa,0x0,0x0,0xd8,0xfb,0xff,0xff,0x3e,0xa,0x0,0x0,0x74,0x10,0x0,0x0,0xf0,0x8,0x0,0x0,0x63,0xf1,0xff,0xff,0xab,0xe9,0xff,0xff,0xb0,0x1b,0x0,0x0,0x74,0xfe,0xff,0xff,0x42,0xf2,0xff,0xff,0xdb,0x1,0x0,0x0,0x34,0x7,0x0,0x0,0x18,0xf8,0xff,0xff,0x82,0xeb,0xff,0xff,0xc5,0x3,0x0,0x0,0x4b,0xc,0x0,0x0,0x7c,0x5,0x0,0x0,0x83,0xf4,0xff,0xff,0x7c,0xfc,0xff,0xff,0x5,0x8,0x0,0x0,0xbf,0x13,0x0,0x0,0x12,0xf1,0xff,0xff,0x26,0x9,0x0,0x0,0x17,0xf,0x0,0x0,0x8b,0xef,0xff,0xff,0xa2,0x15,0x0,0x0,0xb2,0xfe,0xff,0xff,0xba,0xf5,0xff,0xff,0xe,0xd7,0xff,0xff,0x4,0x0,0x0,0x0,0xec,0x4,0x0,0x0,0x7f,0x28,0x36,0x81,0x25,0x81,0x67,0x3b,0x62,0xa,0x7f,0xeb,0x9,0x5e,0x81,0xa9,0xdf,0xd5,0xb7,0x37,0xbf,0x10,0x1f,0xd7,0x11,0x7a,0xc6,0x7f,0xbc,0x76,0xcf,0xc8,0x81,0x11,0x81,0x86,0xf0,0xea,0xfe,0xa0,0xbb,0xe7,0x11,0xd,0x5c,0x1d,0xdb,0x7f,0xed,0x8b,0x21,0x6e,0x81,0x4c,0x81,0xab,0xdf,0xd1,0x7f,0x81,0x67,0x2b,0x26,0xab,0x45,0xae,0x7f,0x49,0x6a,0x1e,0x51,0x3,0x27,0x58,0xaa,0xdb,0xf2,0xf,0x81,0x48,0x4b,0xf9,0xa6,0xe4,0x4,0x2c,0xfa,0x64,0xf5,0x7f,0xaf,0x81,0x95,0x36,0xa7,0xa7,0x10,0xd9,0x4,0xb3,0x81,0xee,0xf9,0x31,0xec,0xf4,0xee,0x16,0xe0,0x91,0x2b,0x49,0xb9,0x73,0xc7,0xe3,0xe3,0xf6,0x3d,0x92,0x1c,0x18,0x4a,0x97,0x35,0xb1,0x4d,0x4d,0x42,0x12,0x56,0xfe,0xf2,0x9,0xfb,0xfe,0xa,0x3,0x9b,0x22,0x19,0xfb,0xf3,0xd2,0xa,0x2a,0xf9,0x3d,0xfa,0x61,0xda,0xa5,0xde,0x28,0xfd,0xcd,0xe,0xfa,0xa,0xba,0x9b,0xde,0xe,0x1,0xe5,0xb2,0xe7,0x26,0x2,0xc9,0x37,0x3,0xdf,0x5e,0x15,0x19,0xfc,0xdb,0x28,0xe1,0x14,0xfe,0x3e,0xab,0x1d,0xbc,0x7c,0x67,0x7c,0x53,0x31,0xf0,0x28,0x9,0xf7,0xff,0x29,0x1d,0xe5,0x27,0x2f,0x14,0xb1,0xd5,0x15,0x20,0x34,0x30,0xd,0x4e,0xe2,0x9a,0x2f,0x1,0xf,0xf0,0xe5,0x1b,0x25,0xc8,0xbb,0xeb,0xed,0xf1,0x4e,0x9d,0xfa,0xc,0x3,0xbf,0x2a,0x18,0xf3,0x17,0x13,0x1d,0x9,0xe2,0xc,0xe0,0x11,0x17,0x24,0x9d,0x3,0xcc,0x40,0x5b,0x4b,0x22,0x1f,0xf9,0x1c,0xdb,0xd9,0x18,0x10,0x19,0xd5,0x9,0x31,0xe,0x7f,0xe0,0x14,0x33,0xca,0x40,0xcf,0x3f,0xb6,0x93,0x31,0xca,0x1,0x28,0xec,0x1e,0x3a,0xcd,0x8,0xe4,0x1c,0xf0,0x81,0xad,0xee,0xf,0xa,0xce,0x18,0x6,0xe1,0x1b,0x48,0xf,0x1b,0xd1,0x17,0xea,0x10,0xf4,0xf9,0xcb,0x27,0xdd,0x4a,0x56,0x63,0xfb,0x28,0xd,0xd,0xc,0xd8,0xf6,0x7,0x24,0x1b,0xfc,0x1a,0xb,0xfa,0xd3,0x1a,0x58,0xda,0x3c,0xd7,0xf9,0xd4,0x8e,0x36,0xf2,0xc,0x19,0x17,0x1b,0x20,0xea,0x45,0xd2,0x2f,0xf5,0xa1,0xa2,0xf5,0xf8,0x37,0xe1,0x4,0x8,0xdd,0x10,0x3c,0x7,0x2a,0xdc,0xfe,0xd9,0x13,0xeb,0xa,0xf4,0x8,0xf0,0x0,0x6c,0x2b,0xfc,0x12,0x4,0xf1,0x1e,0xdf,0x10,0x0,0x23,0x2e,0xe5,0xfd,0xde,0xb5,0xbf,0x1b,0x56,0xf7,0x2b,0x9f,0xb,0xc8,0x95,0x19,0xef,0x23,0x7,0x2,0x23,0x9,0xd9,0x41,0xed,0x1a,0x1d,0x85,0xa5,0xfd,0xea,0x43,0xf8,0x21,0x28,0xdd,0x1a,0x4b,0x33,0x15,0xe1,0xe6,0xf1,0x24,0xed,0xf7,0x23,0x43,0xe8,0x21,0x4e,0x5b,0x46,0x1d,0x27,0xf2,0x12,0xc0,0x33,0xe3,0x44,0x3a,0xe2,0xda,0xc4,0xe8,0xd6,0x8,0x66,0xdf,0x27,0x9c,0xfb,0xc5,0x99,0x33,0xec,0x17,0x8,0xc9,0x28,0x19,0xbd,0x24,0xe2,0x2b,0x1b,0xf2,0xae,0xea,0xf7,0x38,0xd,0x1d,0x2e,0xcf,0xdd,0x30,0x1e,0x9b,0xec,0xb8,0xfe,0xf5,0xe7,0x4,0x25,0x1a,0xe0,0xd4,0x6b,0x77,0x13,0x21,0xe6,0xc4,0xb1,0xe1,0x1c,0x17,0x3c,0x3d,0xc0,0xf7,0xda,0xf5,0xd2,0xfa,0x40,0xe7,0x30,0xd7,0x10,0xe4,0x90,0x27,0x1f,0xf9,0xb,0xd8,0x1a,0xdd,0xb3,0x34,0xee,0x23,0xd2,0xf3,0xc0,0xe8,0xb3,0x3,0x35,0x3,0x3e,0xd6,0xe8,0x10,0xfc,0xda,0xe3,0xe6,0xe9,0xde,0xe,0x12,0x22,0xd9,0xe2,0xd6,0x52,0xe,0xed,0xdc,0x7,0xef,0xbf,0xfb,0x46,0xf,0x2d,0x3b,0xb9,0xd3,0xcf,0xbb,0xdb,0xf6,0x41,0xed,0x24,0xbc,0x16,0xf9,0x8a,0x78,0x44,0x1c,0x31,0xd4,0x14,0xe5,0xc2,0x2c,0xe8,0x1c,0xcf,0x37,0xbb,0xcd,0x94,0xc9,0x18,0x1e,0x22,0xd4,0xe2,0xee,0x13,0xfa,0xeb,0xd3,0xeb,0xef,0xa,0x4,0x21,0xeb,0xe7,0xe4,0x7f,0xd3,0xbc,0xca,0xde,0xdd,0x0,0xe,0x47,0xfb,0x21,0xe,0xe1,0xf3,0xe8,0xa8,0xde,0x10,0x7f,0xdb,0x10,0x81,0x32,0xd,0x8e,0x3b,0x3f,0x3c,0x45,0x9b,0x26,0xda,0xa8,0xf6,0xe1,0x28,0xe3,0x2b,0xc4,0xf7,0xce,0xa1,0x29,0xf9,0x49,0xdb,0x4,0x5,0x40,0x1f,0xec,0xf0,0xea,0xca,0xb,0x1b,0x1b,0x6,0xcf,0xb6,0x53,0xe4,0xba,0xb8,0xdb,0xe4,0xf1,0x25,0x18,0x4,0x2f,0x50,0xd1,0x2b,0xc1,0xc7,0xdd,0xe4,0x63,0xcf,0x13,0x81,0x4e,0xef,0xd6,0xdd,0xed,0x44,0x29,0xbb,0xde,0x0,0xba,0x3a,0xd6,0x4d,0x4,0xd9,0xb9,0x19,0xd8,0x93,0x31,0xed,0x23,0xdb,0xbe,0xf3,0x3a,0x37,0xe6,0xb5,0xef,0xeb,0x17,0x13,0x27,0xc7,0xe8,0x88,0x6e,0x81,0xd9,0xaf,0xd5,0xf8,0xf0,0x37,0xfe,0x29,0x3d,0x2a,0xdc,0x7f,0xdc,0xdc,0xb6,0xd6,0x78,0xf5,0x8,0xb2,0x3c,0xfa,0xe2,0xba,0xc2,0xf5,0x37,0x81,0x8,0xf7,0xe4,0xee,0xe4,0x3a,0xa7,0xd8,0xbf,0x1f,0xda,0xc3,0x1d,0xf8,0x33,0xec,0xe2,0xde,0x57,0x58,0xea,0xd6,0xb8,0x6,0xfa,0x7,0xd4,0xa0,0xdb,0x90,0x40,0xb0,0x81,0xc6,0xcb,0xf8,0xfc,0x2d,0xf2,0x65,0x42,0x15,0x4,0x62,0xbc,0x6b,0xc1,0xdb,0x72,0x36,0x32,0xc7,0x31,0xd5,0xb9,0x8b,0x2b,0xff,0x2f,0xa2,0xc,0xca,0xf8,0x6,0xcd,0x40,0xcb,0xf5,0xdc,0xb,0x12,0xcd,0x51,0xef,0x5d,0xdf,0xaa,0xe3,0x4d,0x18,0xf7,0xcc,0xc7,0xe0,0xe9,0xd,0xe0,0xa8,0xdd,0xb6,0x7a,0xa4,0xd8,0xb3,0xd5,0xc0,0x2c,0x3f,0xe3,0x6c,0x33,0x15,0xe,0x54,0xca,0x66,0xb8,0xf2,0x62,0xd,0x3d,0xd4,0x2a,0xa1,0xbe,0xa2,0x45,0xf7,0x24,0x87,0x5,0xd3,0xef,0xd0,0xd2,0x4e,0xc5,0xc1,0xe9,0x11,0xe5,0x34,0x49,0xf9,0x6c,0xe2,0x81,0x9,0x5f,0x24,0xe5,0xf8,0x9e,0xd6,0xfc,0x3,0xda,0x81,0xf5,0xae,0x5d,0xca,0xe6,0xcf,0xee,0xc4,0x7f,0xf9,0xfb,0x5a,0x10,0x39,0xc,0x1e,0xda,0x63,0xbd,0xef,0x65,0xfc,0xd,0xa8,0x22,0xe2,0xd4,0xd2,0x58,0xea,0x3f,0xb7,0xe0,0xb8,0xe8,0xc5,0xfc,0x42,0xea,0xeb,0xe8,0x24,0xc2,0x7f,0x37,0xf7,0x4c,0xe8,0xd8,0xe5,0x54,0xcf,0xf6,0xef,0x91,0xef,0x6,0x28,0xe,0x9b,0xd2,0xdb,0x6e,0xce,0x54,0xce,0xed,0xb5,0x8,0xd3,0xd5,0x54,0x10,0x2,0xf8,0x10,0xd4,0x20,0xca,0xed,0x61,0x7,0xf,0xe5,0x1e,0x4,0xf8,0x40,0x5f,0xf9,0x58,0xfd,0x12,0xe4,0xe6,0xf8,0xee,0x55,0xce,0xf6,0xe3,0x10,0xa6,0x3a,0x3e,0xe9,0x5d,0xe6,0xd6,0x1,0x27,0xc7,0xea,0xd6,0xc6,0xe5,0x37,0x22,0x45,0x94,0xfe,0xfe,0x54,0xeb,0x34,0xfb,0x7,0xa4,0x36,0xe2,0xc0,0x2d,0x7,0xa,0x8,0xd1,0xcf,0x26,0xcf,0xfa,0x49,0x23,0xf6,0xe0,0x16,0x1c,0xc,0x79,0x4f,0x13,0x59,0xe,0xca,0xb4,0xe8,0x33,0xf5,0x70,0xd8,0x3,0xdb,0x30,0x93,0x4a,0x60,0xeb,0x58,0xd9,0x96,0x4,0x1b,0x32,0xd9,0xf4,0xe6,0x1c,0x38,0x3d,0x68,0xcf,0xd9,0xf0,0x6c,0xf0,0x3a,0xdc,0x3b,0xab,0x48,0xee,0xa4,0xef,0x13,0xa8,0x2f,0xb5,0xc0,0xd4,0xd2,0xf8,0x32,0xe6,0xe9,0xff,0x7,0x4d,0xf4,0x3b,0x7f,0x2a,0x4d,0xd8,0xd7,0xcc,0x2b,0x6,0xd8,0x7f,0xc0,0x3c,0xe0,0x39,0xb1,0xfc,0x7d,0xfc,0x7f,0xe4,0xb6,0xe8,0x35,0x48,0xc8,0xfd,0xb7,0xd,0x7f,0x48,0x2b,0xca,0xe7,0xf8,0x58,0xe3,0xdd,0xfe,0x5c,0x93,0x4b,0x16,0xa3,0xbf,0x37,0xb4,0x42,0xcf,0x99,0x95,0xb2,0xcf,0xfe,0x41,0xdf,0x13,0xc8,0x3c,0xf8,0xbf,0x3a,0xf2,0x52,0xa,0x81,0x19,0x51,0x1e,0xb1,0x67,0x81,0x1e,0xe8,0x53,0x87,0x9d,0x6d,0x40,0x47,0xe3,0xa0,0xfe,0x6f,0x7f,0xb6,0x13,0xd7,0x2e,0x3d,0x7f,0x10,0xdd,0xea,0x30,0x3e,0xdd,0xd7,0x45,0x7f,0x81,0x5,0xf5,0x81,0x81,0x7f,0xd3,0x7f,0x8c,0x81,0x4,0x81,0x81,0xbe,0x7f,0xb0,0xc4,0x9f,0x7f,0x5,0xae,0x45,0xd8,0x7f,0x8,0x8b,0x7f,0x7f,0x4c,0x81,0x58,0x92,0x51,0x81,0x7f,0xb9,0x96,0x7f,0x7f,0x2d,0x0,0xe4,0xed,0x7f,0x39,0x81,0xd7,0xb2,0x6,0xdc,0xff,0xff,0x4,0x0,0x0,0x0,0xf0,0x0,0x0,0x0,0xed,0xff,0xff,0xff,0xc,0x0,0x0,0x0,0x12,0x0,0x0,0x0,0xf2,0xff,0xff,0xff,0xd3,0xff,0xff,0xff,0xfa,0xff,0xff,0xff,0x6,0x0,0x0,0x0,0x28,0x0,0x0,0x0,0xf6,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0x6,0x0,0x0,0x0,0xe2,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0x1f,0x0,0x0,0x0,0x11,0x0,0x0,0x0,0xd9,0xff,0xff,0xff,0xe3,0xff,0xff,0xff,0xe1,0xff,0xff,0xff,0xf8,0xff,0xff,0xff,0x1,0x0,0x0,0x0,0x42,0x0,0x0,0x0,0x5,0x0,0x0,0x0,0xb0,0xff,0xff,0xff,0xf8,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0x16,0x0,0x0,0x0,0xa,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0xcf,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xfa,0xff,0xff,0xff,0xf8,0xff,0xff,0xff,0x1b,0x0,0x0,0x0,0xb,0x0,0x0,0x0,0x21,0x0,0x0,0x0,0xf7,0xff,0xff,0xff,0x34,0x0,0x0,0x0,0xf6,0xff,0xff,0xff,0x1a,0x0,0x0,0x0,0xf3,0xff,0xff,0xff,0xea,0xff,0xff,0xff,0x2,0x0,0x0,0x0,0x36,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0xed,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xd9,0xff,0xff,0xff,0x1f,0x0,0x0,0x0,0x2d,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0xea,0xff,0xff,0xff,0xae,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0x11,0x0,0x0,0x0,0xf,0x0,0x0,0x0,0xf6,0xff,0xff,0xff,0xf3,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0x2,0xdd,0xff,0xff,0x4,0x0,0x0,0x0,0x10,0xe,0x0,0x0,0x16,0xdb,0x35,0x32,0x11,0x46,0xeb,0x81,0xf8,0xc6,0xb,0xf7,0xe5,0x2f,0x1c,0x1c,0x29,0x2,0x14,0x7,0x30,0xe4,0x0,0xf9,0x1b,0xba,0xc3,0x2,0x30,0xf8,0x17,0xb5,0xcf,0x0,0x17,0x4d,0xe6,0x14,0xb2,0xfd,0x13,0xf,0x19,0xfb,0x20,0xcf,0xf0,0x18,0xe2,0x8,0x10,0x10,0x4,0x30,0x1e,0xf,0x4,0xe0,0xd6,0x4f,0xe0,0x47,0xb0,0x23,0xd0,0xc8,0x23,0x1f,0x0,0x3d,0x2a,0xfc,0xe,0xd8,0x1e,0x22,0xf6,0x81,0x42,0x62,0xaf,0xec,0xd2,0x23,0x4c,0xe1,0xfc,0xd6,0x3d,0x0,0xe9,0x19,0x25,0xd0,0x5,0x2c,0x13,0xbf,0x3,0xd5,0x40,0x29,0xad,0xde,0x38,0x7c,0xde,0xfa,0x22,0xb5,0xa4,0xf6,0x24,0x2f,0xdf,0x5c,0xed,0x4f,0x1,0xfe,0x4c,0x26,0xed,0x5,0x4a,0xd2,0xae,0xa6,0xa4,0xfc,0xd2,0x11,0x98,0x25,0xd5,0x28,0x90,0xdd,0xab,0xaf,0x48,0x4e,0x46,0x3,0xfa,0x91,0x43,0xc,0x4,0xab,0x12,0xdd,0x35,0xb,0x23,0x97,0x88,0xc2,0x29,0xc9,0xce,0x73,0x1,0xc4,0xcd,0xcc,0xd,0x3d,0x22,0x7f,0xf1,0xd9,0xac,0xc6,0xe,0xb3,0xb6,0xc5,0x6c,0xf7,0xea,0x16,0x67,0x28,0x11,0x26,0xeb,0xb1,0x0,0xdf,0x40,0xa9,0x12,0xb9,0xb7,0xf2,0xd7,0x4a,0x30,0x20,0x19,0x3f,0xc9,0x10,0xcc,0xab,0x41,0x64,0xcb,0xa6,0xc7,0xd,0xcd,0x5b,0x22,0x31,0xcd,0xdc,0x83,0x81,0xd9,0x37,0xf7,0xde,0x10,0x41,0xb1,0x59,0xde,0x5e,0x1d,0xd0,0x3f,0xee,0x2d,0x1f,0xec,0xb8,0xdb,0x3f,0xc1,0xf2,0xdf,0xc9,0xc4,0xdd,0x46,0x63,0x1a,0x0,0xd6,0x53,0xf0,0xd,0x21,0x4b,0x13,0x45,0xf4,0xe0,0xeb,0x4f,0xf7,0x98,0xe6,0xc,0x36,0xc4,0xfe,0x42,0x55,0x40,0xd2,0xca,0xfe,0xe4,0x16,0xa,0xbe,0xfa,0x9,0x81,0xc1,0x5e,0xf5,0xdd,0x18,0xdc,0xf6,0xc4,0xfe,0xed,0xaf,0x25,0x4,0xcf,0xa,0x98,0xfd,0xee,0xdb,0x20,0x11,0x3f,0xb0,0x35,0x36,0xf0,0xe6,0xef,0xf0,0x1d,0x52,0xf5,0xd0,0xd0,0xd,0x81,0x0,0xf6,0xe5,0xb3,0xd2,0x13,0x21,0xf8,0xe0,0xc9,0x2e,0xbc,0x1d,0x0,0xe5,0xd0,0xf1,0x4c,0xe9,0xfc,0xf5,0x24,0x2,0xfa,0xee,0x41,0xdb,0xee,0x5f,0xf0,0x17,0xd0,0xa,0x33,0xfc,0x58,0xdb,0x71,0xef,0x6d,0xf9,0xff,0xfa,0x2b,0xf7,0xf9,0xf7,0xd1,0x31,0xe2,0xf9,0x5,0xd8,0x1b,0x24,0x30,0x31,0xaf,0x5d,0x81,0x24,0xfd,0xf9,0xc3,0x0,0x39,0x49,0x1c,0x14,0x3d,0x7,0x3,0x4c,0x6,0xda,0x6,0x2,0xee,0x25,0xf7,0x8,0xeb,0xff,0x3e,0x16,0xf7,0xe0,0x39,0x4b,0xbd,0xff,0xd8,0xaa,0x14,0xf4,0x15,0xcd,0x3f,0xe4,0x18,0x1c,0xee,0x49,0xf5,0xce,0xb0,0x33,0xcb,0xfc,0xe7,0x1d,0x16,0xf3,0xe1,0xf8,0x3b,0x18,0x3,0x24,0xae,0x1f,0x2c,0x16,0x1d,0x6,0x7f,0x41,0xdf,0x25,0x9,0xc0,0xe2,0x0,0x2a,0xf1,0xf1,0xc3,0xee,0xf1,0xf1,0x10,0x22,0xf6,0x35,0xca,0xa6,0x3d,0x23,0xf8,0x9,0xda,0x22,0xf,0x53,0x1a,0xe2,0xd6,0x26,0xfa,0xbd,0x41,0xe2,0xa,0xeb,0xb2,0xe6,0xcd,0xa,0x2b,0xb,0xd,0x5,0xfd,0x7,0xd7,0xe2,0x19,0x1,0xd3,0xc8,0xe6,0xc8,0x1b,0x6,0x17,0xfc,0x45,0xff,0xec,0xe3,0xf7,0x35,0x28,0x1b,0x1d,0xe5,0xd1,0xf2,0xda,0xd5,0x15,0x7f,0xe7,0x4f,0xf2,0x2b,0x16,0x47,0x53,0x31,0xd7,0xeb,0xec,0x1f,0xee,0x1a,0x2,0xfb,0x4,0xeb,0x39,0xfd,0xb,0xc,0x4a,0x4f,0x26,0x4d,0x17,0xe,0xa7,0x5,0x87,0x65,0x57,0x8,0xe2,0x7,0x65,0x94,0x1d,0x92,0x1b,0xea,0x15,0x16,0x23,0xd2,0x2c,0x6f,0xc8,0x2e,0xa,0x5c,0xb4,0x18,0xf2,0xc5,0xa,0x37,0xda,0x99,0x1f,0x44,0x1,0x25,0xf,0xea,0x30,0x19,0x32,0xc,0x7,0xc,0xf6,0xd0,0x81,0xe6,0x4f,0xf9,0x64,0x68,0xc9,0x12,0xed,0x18,0x2f,0xc7,0x2f,0x27,0xde,0xfe,0xf7,0xfd,0xfb,0xcb,0xf1,0x75,0x46,0x29,0xbf,0xab,0x8,0x2a,0xe2,0xb6,0xe1,0x5d,0xc6,0xea,0x24,0xfd,0xfc,0xdc,0x35,0xe3,0x54,0x15,0xe9,0x16,0x2,0xfb,0x12,0xc1,0x44,0xfe,0x0,0xf4,0x1,0xd2,0xb7,0xbf,0xcf,0x57,0x81,0x2b,0x44,0xf2,0xdd,0xef,0xf1,0xec,0xde,0xfc,0xf,0xef,0x1d,0xf0,0xd2,0xa3,0x5,0x13,0xda,0x36,0xf7,0xdd,0x21,0xc,0x6,0x2c,0xa8,0xea,0x3,0x16,0xde,0xfd,0xfb,0x81,0xfc,0x24,0xd7,0x57,0x5,0xd0,0xa,0x17,0xf7,0xe7,0xbc,0xc1,0xb,0x39,0x4,0x6,0xeb,0x20,0xa,0xff,0x49,0xb3,0x20,0x0,0x7,0x1c,0x3e,0xfa,0xb3,0xd1,0x9,0x6,0x22,0x47,0x6,0x23,0x30,0xc9,0x1a,0x53,0xc2,0x3e,0xda,0xd8,0x9c,0xf5,0x36,0x0,0xde,0xcc,0xde,0xf1,0xe0,0xeb,0xde,0xcb,0xf7,0xe4,0x1,0xe4,0xd2,0x7f,0xa6,0x1d,0xf3,0x51,0xfc,0x13,0xee,0xd4,0x1a,0x21,0x4b,0xbc,0xed,0x63,0x3,0xfc,0x24,0xde,0xf,0x49,0xf2,0x10,0xde,0xd0,0x4d,0xe2,0xef,0xfb,0x33,0x26,0x1f,0x1a,0x2c,0xe5,0xbe,0x22,0xe0,0xdc,0x7,0x15,0xf6,0x1c,0xe2,0x47,0x1d,0x8,0x19,0xff,0x20,0x9e,0xfe,0xef,0xd1,0xbb,0xe1,0x5f,0x8,0xd0,0xda,0xcc,0xc4,0xb3,0xf2,0x9,0xcf,0x9,0x5,0xd1,0x1,0xfd,0x14,0xf1,0x19,0xd,0x5,0x5,0xea,0x41,0xf5,0xf6,0xcb,0xc4,0xc2,0x16,0x3e,0x31,0x34,0x31,0xd2,0x7f,0x42,0xde,0x6,0xa,0xfd,0xd,0xf2,0x8,0xf3,0xd1,0xe9,0x18,0x1e,0xe5,0x5,0x38,0xdd,0xeb,0xef,0xd1,0x13,0xeb,0xf1,0xe5,0xaa,0xc5,0x13,0xd1,0x34,0x97,0x27,0xc3,0xdb,0x81,0xe1,0xd9,0x13,0x51,0x16,0x38,0x1b,0x12,0xed,0x1b,0xd6,0x4,0x22,0xf6,0x41,0xed,0xe9,0xf8,0x2f,0xba,0xea,0x2d,0x42,0x35,0x8,0x1f,0xa4,0x36,0xf1,0x38,0x14,0xf1,0xbb,0xf7,0x34,0x9e,0xe0,0x2d,0x50,0x2b,0xe1,0x2,0xe9,0x3f,0x8,0x21,0x4,0xa,0x6,0x19,0xd5,0x37,0xdf,0xec,0xdc,0x38,0x1b,0x31,0xde,0x60,0xe5,0xd2,0x5,0xc9,0x18,0x28,0xf5,0xf9,0x2,0xf7,0x81,0x23,0xe2,0x4f,0xfb,0x9,0xf,0xde,0xea,0xd0,0x4f,0x4d,0xc7,0x1e,0xe2,0x21,0xc,0x18,0x16,0xec,0x3f,0xdd,0x1c,0xa,0xba,0x95,0xf3,0xf,0x2,0xe4,0xc,0xc,0xc,0x1d,0x21,0xf5,0xfa,0xef,0xe4,0x6,0x24,0x2d,0xd9,0xeb,0xd,0x28,0xf5,0x28,0xb5,0x6c,0x1d,0xed,0xef,0x44,0x2f,0xe8,0xd3,0xaf,0x16,0xd2,0x81,0xf7,0x2e,0x24,0xca,0xfb,0x3d,0xc7,0x12,0x22,0x30,0x4d,0x2a,0x25,0xfe,0x27,0xcf,0x37,0x14,0x6,0x21,0xdd,0xf3,0xe6,0xfe,0x15,0xfe,0x2,0xf1,0xde,0xeb,0xfe,0xe2,0x5,0xf0,0x50,0x11,0xe6,0xe4,0x19,0xe1,0x81,0xec,0xfd,0x1f,0xf7,0x7,0xde,0xe3,0xe7,0x2c,0x27,0x1a,0x11,0xda,0xf7,0xf7,0x2c,0x19,0xdc,0x33,0xef,0x3,0xb7,0xfc,0xc,0x7,0xef,0x2d,0xf1,0xd7,0xf7,0xfd,0x7,0xf8,0xc9,0x28,0xea,0xd4,0xf4,0x2c,0xf2,0xdf,0x1,0xe5,0xbe,0x34,0x14,0xe1,0x3f,0x20,0xeb,0xc,0x51,0xdc,0xb8,0x1f,0xf9,0x28,0x21,0x2e,0x7f,0x32,0xf4,0xdd,0x17,0xde,0xd2,0x2f,0xc,0x27,0x12,0xfd,0x4c,0xdc,0xe5,0x5,0xe,0x2b,0xe7,0xeb,0x2e,0xf2,0x1f,0xdf,0x14,0x7,0xb8,0x3c,0xf0,0xc4,0x48,0x14,0x2d,0xf7,0x44,0x17,0x3,0x6,0xd7,0xf7,0xbc,0xdc,0x1f,0xec,0xdf,0x97,0x7,0xb3,0xf,0xd2,0xaf,0xd6,0x35,0x5,0xf2,0xc8,0x81,0xc4,0x25,0xc5,0x21,0xea,0xc9,0xd0,0x3,0xd4,0x2c,0xff,0x43,0x1c,0xa3,0x9b,0xa3,0xd1,0x31,0xd6,0xdf,0xb9,0xf0,0xd1,0xbe,0xf,0x2f,0xf3,0x23,0x11,0xd2,0x1d,0xbd,0x71,0x9,0xdc,0xf3,0xbc,0x34,0x38,0xc6,0xfb,0xcf,0x81,0xd5,0xcb,0xf1,0xd8,0x6,0xa6,0xd2,0xf9,0x9f,0xcd,0xe3,0x36,0x22,0xdf,0x19,0x2f,0xdd,0xfe,0xd,0x33,0x14,0x5d,0xd3,0xcf,0x29,0xc,0x11,0x3f,0x22,0xc3,0xd5,0x12,0x11,0x94,0x39,0x2b,0x6d,0xe1,0x3e,0x4,0xd,0xc9,0x78,0x31,0x3f,0x51,0x6,0xfe,0xee,0xe2,0x18,0x11,0xa4,0x27,0xc6,0x21,0x4f,0x4a,0x1c,0x1e,0x1c,0xbc,0x26,0x18,0xbf,0x1e,0xe3,0x40,0x28,0x35,0x30,0xce,0xfd,0x50,0xc4,0x29,0xe8,0xdb,0xbf,0x2,0xf2,0xf3,0x10,0x5,0xd4,0xe0,0xdf,0x35,0x24,0x2c,0xdb,0x20,0x7f,0xf6,0xe0,0xef,0xe9,0xf2,0x42,0xbc,0x26,0xe9,0x2,0x2e,0xf6,0xd7,0xca,0xeb,0x33,0xd0,0x1f,0x4,0x1,0x9,0x43,0xb1,0x9,0xff,0x24,0xf0,0xe3,0x0,0x1e,0xf3,0x2a,0x0,0xfe,0x16,0xfc,0xf5,0xee,0xf2,0xc1,0xfd,0xea,0x13,0xfa,0xe4,0xde,0xf,0xf2,0x54,0xe3,0x1d,0xd8,0x4,0xe4,0xee,0xfd,0x17,0x3c,0x1a,0x9,0x25,0x2b,0xfb,0xdb,0xdf,0x62,0x24,0xe6,0xf8,0x15,0xf,0x2,0x18,0x1c,0xf1,0xf0,0x1d,0x13,0x17,0xd8,0x12,0x7f,0x10,0xee,0xe6,0x32,0xd9,0xff,0xd2,0x20,0xfe,0xe4,0xf2,0x3d,0x47,0xd4,0xfd,0xcd,0x6,0x5d,0x7,0xea,0x22,0x3c,0x18,0xc0,0xea,0xea,0xf4,0x12,0xd0,0x5d,0x2,0x4b,0xd4,0x1d,0xec,0xcd,0xb8,0x6b,0x1d,0xe,0xeb,0x32,0x29,0x28,0xba,0x8,0xdc,0x42,0x20,0xec,0x8,0x9f,0x26,0xe4,0x1d,0x7f,0xd4,0x2c,0xf1,0x4f,0x10,0x3,0x19,0xda,0xfa,0x4a,0x2f,0x7f,0xe4,0xf8,0xff,0xfd,0xee,0xe0,0x14,0xe3,0xc0,0x31,0xeb,0x5,0xd9,0x1c,0xe0,0x19,0x0,0xd8,0x23,0x17,0x1d,0x45,0x7,0xf,0x2a,0x19,0xf0,0x5,0x28,0xf8,0xff,0xe3,0x34,0x1e,0x25,0x1c,0xed,0x1b,0x10,0x1,0xfd,0x46,0x7,0x1d,0xe2,0x89,0x18,0xf1,0x1b,0xda,0xe6,0x1b,0x0,0x6e,0xc7,0x24,0xdd,0xd8,0x1f,0xd4,0xfa,0x88,0x26,0x2c,0xbf,0xaf,0xcd,0x3b,0x1f,0xad,0xbe,0x18,0xe8,0xc,0xc,0x22,0xea,0x32,0xde,0x81,0x5,0x44,0x2e,0x2e,0x41,0xe0,0x6f,0x6,0x45,0xd6,0xd3,0x23,0x5a,0xda,0xe5,0xf5,0xf9,0xff,0x3b,0xfd,0xdd,0xef,0x9c,0x4e,0x19,0xd9,0x2e,0xd4,0x26,0xb9,0x38,0xc8,0xc0,0x25,0xc,0x13,0x38,0x3a,0x39,0x46,0x2c,0xd5,0xb2,0x36,0xd2,0x41,0xf4,0x2b,0xeb,0x42,0x2a,0x9,0x81,0x9a,0xe7,0x22,0x19,0xcf,0x3f,0xb,0x35,0xf9,0xdc,0xa5,0xff,0xd1,0xa8,0x10,0x9,0x2a,0xec,0xcc,0xed,0x1c,0x4b,0x2f,0xc9,0x42,0xf0,0x4c,0x56,0xf4,0xc5,0x18,0xfd,0xc,0x68,0xd5,0xe6,0xeb,0x32,0x31,0x49,0x2c,0x66,0x22,0xd0,0xf,0x7f,0x74,0xcd,0x12,0x8f,0x1b,0x8,0xab,0x13,0x19,0xc0,0xfa,0xb5,0xcc,0xbd,0xf,0xe9,0xea,0x1f,0x5a,0x4,0xe2,0xee,0x0,0xec,0x6e,0xf0,0xea,0xe2,0x3a,0x10,0x1d,0x6,0x14,0x2a,0x3f,0xdd,0x1a,0x2c,0x17,0x14,0xdb,0xd4,0x38,0x5b,0x44,0xeb,0xac,0xe3,0xd1,0xd4,0xcf,0xe5,0x3a,0xd,0x5a,0xc,0xf1,0xb,0xe4,0x4c,0x2e,0x3e,0xf5,0xe4,0xbb,0x7,0x10,0x4e,0xf1,0xd7,0x19,0xf1,0x1f,0x8,0xe3,0x45,0xce,0xd,0x66,0x4,0xc5,0x8,0x7f,0xe0,0x29,0x2c,0x37,0xdf,0xd1,0xea,0x42,0x17,0xf7,0xce,0x19,0xff,0xd8,0x11,0xf6,0xd2,0x1a,0xd9,0xf9,0x21,0xb2,0x46,0x25,0x3c,0x40,0xd9,0x34,0x0,0xf4,0x3e,0x2c,0x4a,0xea,0xb8,0x24,0xdd,0xf8,0xa,0x25,0x6f,0xc3,0x11,0x87,0x1,0x32,0x38,0xb3,0xe3,0xb1,0x37,0x60,0xe8,0x6c,0x11,0xc8,0x7f,0xad,0xd5,0x7,0x3,0x25,0xec,0xfd,0x6,0xef,0xbf,0xd2,0xf4,0x25,0x13,0x63,0xad,0x18,0xaa,0xad,0x1b,0x63,0xd4,0x61,0xf5,0x1b,0x83,0xbb,0x7,0xc0,0xe,0xad,0xe3,0xfc,0xbf,0x39,0xfa,0xed,0xfc,0x15,0x12,0x20,0xe1,0x23,0x28,0xfe,0x11,0xfe,0xfc,0x7,0x24,0xd5,0xfb,0x44,0xda,0xf9,0x13,0x3a,0x21,0x81,0xdb,0x28,0xf1,0xc0,0xea,0xc2,0x11,0xf4,0x18,0x4,0x6,0xf2,0xec,0xc,0x10,0x31,0xc,0xd6,0x51,0xd,0xfb,0x92,0xe4,0xda,0xf1,0xea,0x4,0xfb,0xb8,0xec,0xef,0xae,0xe4,0x9e,0xff,0x1e,0x7f,0x42,0xb,0x3c,0xf8,0x30,0x20,0xde,0x30,0xf,0x2,0xfc,0x3c,0xd4,0xd4,0x9b,0x38,0x2a,0x34,0x4d,0xde,0xd9,0x5,0xe9,0xcb,0x8a,0xe7,0x2d,0x2a,0x2f,0x3f,0xee,0x2,0x6c,0x31,0xde,0x29,0xe3,0xfb,0x93,0x1c,0x36,0x23,0x96,0x24,0x17,0xfd,0xf8,0xde,0x18,0xd4,0x3,0xe2,0xfd,0xf9,0xc4,0xb7,0x2a,0xd9,0x46,0xfc,0xf2,0x2d,0x16,0xe5,0x61,0xf8,0xb4,0xf0,0xbd,0x2b,0xd,0xf,0xf9,0xc,0x76,0xf9,0xdf,0xbb,0xce,0xef,0xe2,0xf8,0xf5,0x5,0xbd,0x5,0x3e,0xc4,0x4d,0x65,0x33,0xe9,0xc8,0x4,0xea,0xbe,0x12,0xf3,0x1e,0xf0,0xeb,0xfd,0x1c,0xe5,0x10,0x36,0x50,0x16,0xf5,0xbd,0xc7,0x31,0xc3,0xc7,0x34,0x13,0xbc,0x14,0x7f,0x43,0x4,0xd9,0x9c,0xe5,0xf,0x2a,0x10,0x55,0xf1,0x9,0xf8,0x4d,0x14,0xfd,0xf1,0x8,0xdb,0x28,0xf5,0xd5,0xe4,0xea,0x14,0x3d,0xf,0x1f,0xb7,0x1,0xf5,0xcc,0xf,0xf,0x4,0xdb,0x7a,0x32,0x5b,0xc,0x53,0xde,0x1e,0xd9,0xdc,0x11,0x20,0xe9,0x2d,0x2d,0xc0,0xf0,0xae,0x1e,0xf0,0x7f,0x23,0x14,0xeb,0xb2,0x29,0x15,0xfa,0x20,0xee,0x1c,0xec,0x32,0xdd,0xf7,0xd9,0xaa,0x39,0x1,0xc6,0xcc,0x24,0x4d,0x81,0x4,0xcc,0xd0,0x0,0xd5,0x5c,0x67,0x21,0xe6,0x1a,0xc6,0xff,0x35,0xf7,0xd5,0x20,0xca,0x3a,0xf8,0xc5,0xf9,0x2b,0xba,0xfb,0x1,0x1f,0xd1,0xfc,0x44,0x26,0xe2,0xbb,0xeb,0xe7,0x3e,0x36,0xce,0x5d,0xd6,0x29,0x17,0x40,0xe2,0xfc,0xd4,0xd4,0x1,0xfb,0xc5,0xc3,0xd9,0xe1,0xbc,0x4,0xc3,0xfc,0x0,0x14,0xd6,0x2e,0xd6,0xd8,0xfe,0x5,0xd8,0x6,0x2c,0x81,0xd8,0xee,0x1e,0x25,0xff,0xf0,0x0,0xf6,0xe5,0xb,0xc1,0xf7,0xd7,0xec,0xde,0x1,0x5,0x13,0x5,0xa,0xfe,0x34,0x1d,0x9,0xdf,0xe6,0xec,0xeb,0xce,0xde,0x17,0xf9,0x4c,0xed,0xbd,0xe,0xc8,0x1c,0x14,0x1b,0xfb,0x41,0x89,0xc3,0xb2,0x14,0xa0,0xf9,0xfd,0xfc,0xde,0xf7,0xd1,0x53,0xe7,0x3,0x22,0x3a,0x5a,0xb6,0xdd,0x4,0x7,0xa,0xd1,0xf8,0xcd,0x9,0xff,0xc5,0xbe,0xfc,0x35,0x6,0x1c,0x42,0x32,0x1,0xb,0xff,0x9,0x21,0xea,0x7f,0xde,0xde,0x18,0xcb,0x43,0x3e,0x19,0x25,0x56,0xe8,0x10,0xe6,0xc9,0x22,0xf2,0x7f,0x36,0x12,0x1f,0xf4,0x19,0xc4,0xe,0x2,0xd9,0xdd,0xe5,0xef,0x30,0x1d,0xd8,0xe9,0xf8,0xf0,0x35,0xf8,0xf8,0xdf,0x1c,0xce,0xf6,0xb5,0xe7,0x1f,0xd9,0x53,0xf3,0xd,0xf5,0x8,0xe0,0xd,0x15,0xc,0x16,0x12,0xe,0x2e,0xc2,0xf4,0x24,0xa7,0x6,0xfd,0xb,0x18,0xfd,0xfd,0xd0,0x20,0x30,0x15,0xe,0x75,0xe2,0xec,0x51,0xb1,0x2e,0xef,0xec,0x64,0x1d,0x36,0xb2,0xfc,0x4b,0xd5,0xe6,0xf9,0xeb,0xbe,0xe5,0x68,0x15,0xff,0xcd,0xa0,0x2f,0xd1,0x7f,0xd6,0xd6,0x24,0xca,0x8,0xe2,0x9e,0xdf,0x63,0x60,0x31,0xea,0x20,0x1,0x7,0x7d,0xcb,0xdd,0xed,0x2e,0x5,0x9,0xee,0x54,0xf,0x1c,0xe1,0x16,0xdb,0xf5,0xd6,0xe4,0xf7,0x2b,0xe6,0xbe,0xf1,0x1c,0xee,0x9e,0xee,0x17,0x8,0x6a,0xfa,0xf9,0x12,0xab,0xc9,0xed,0x29,0xee,0x0,0x1d,0x8d,0x27,0xd0,0xee,0x62,0xcf,0x7f,0x5e,0xef,0x97,0xb8,0xc7,0xd9,0x2c,0xc7,0x4,0xf7,0x9d,0xc4,0x13,0x5a,0xd9,0xf9,0xa2,0x10,0xe3,0xdd,0x68,0xe1,0xfa,0xa6,0x8,0x47,0x29,0x3,0x3e,0xfe,0x8,0xfc,0x29,0xe7,0x30,0x37,0x2d,0x13,0x5f,0x35,0x22,0x5f,0xfc,0xb8,0x19,0xca,0x2d,0x3c,0xbb,0xfc,0x8,0x37,0xf7,0xa6,0xe5,0x46,0xb8,0x38,0xc,0x7f,0xea,0x1e,0xcc,0xe3,0x35,0xf4,0x13,0xcf,0x10,0x23,0x8c,0x8f,0x45,0xe9,0xb0,0xf1,0xbc,0xbd,0xe6,0xe0,0x49,0x4b,0xed,0xc,0xb,0x31,0xdb,0x3,0xc5,0x3e,0xff,0x9,0xd8,0xb5,0x54,0xde,0xf8,0xdc,0x1d,0x1a,0xd3,0xcb,0x4d,0xdb,0xea,0xda,0xe8,0xa9,0xcc,0x14,0xbc,0x7f,0x45,0xe8,0x2f,0xb2,0x1,0xe7,0x25,0xe,0x11,0x8,0x2b,0x39,0xdc,0x9,0xdd,0xfe,0xf0,0xe6,0xf1,0xcb,0xdd,0x3b,0x1c,0xe2,0xfc,0x7,0x12,0x33,0xd9,0x5d,0xb8,0x49,0xfc,0xf5,0x24,0xd1,0x1f,0xee,0xbd,0xfc,0xd6,0xcd,0x1c,0xbc,0x31,0x11,0xc,0xf6,0xc1,0xe3,0xd6,0x1a,0x7,0xd1,0x24,0x32,0x34,0x51,0x27,0x48,0x3c,0xc,0x5,0x1f,0x35,0xb,0xf4,0x50,0x28,0xa6,0xd,0xeb,0xd3,0x6,0x2,0x38,0xf4,0xe2,0xb8,0xc2,0xc,0x7f,0xbf,0xef,0x8,0xd3,0xac,0xe8,0xe0,0x3b,0x7,0xf4,0xd0,0x23,0xdb,0x12,0xd4,0x46,0xd7,0xf1,0x90,0xf7,0x49,0xac,0x52,0x44,0x14,0xb6,0xdb,0xd,0xfb,0x33,0x17,0x0,0x16,0x6f,0xdb,0x2e,0xe8,0x4a,0x1,0x98,0xeb,0xed,0xf6,0x81,0xe8,0xcf,0xca,0xb4,0xb4,0x2a,0x15,0x5b,0xc1,0x6,0x31,0xf3,0x9a,0xa,0x2e,0x4,0x32,0x23,0x59,0xea,0x7,0xa,0x5,0xbd,0xfd,0xf7,0x9,0xa1,0x88,0x22,0xf9,0xa,0xc2,0xe8,0xe8,0x1d,0xf3,0x27,0xef,0x1b,0x22,0x1b,0xee,0x46,0xbf,0xf5,0xf3,0xa2,0xbe,0xf6,0xe9,0x5,0xb,0xe5,0x50,0x22,0xfb,0x36,0xba,0x1e,0xeb,0xe6,0xfe,0xcf,0x39,0x20,0xf1,0xf1,0xf6,0xc,0x9,0x7f,0x1b,0x13,0x1d,0xfe,0xff,0xf8,0x25,0xfd,0xb8,0xc0,0x3e,0x0,0xed,0x1e,0xd,0x41,0xf9,0x2a,0xef,0x3f,0x7,0x5,0xd9,0xce,0xe0,0x88,0xf3,0xb7,0x7c,0x22,0x48,0x5,0x5,0x2c,0x31,0xcd,0x2,0x50,0x98,0xce,0xeb,0x72,0xf7,0xb3,0x2a,0xa0,0x44,0x43,0xad,0x7f,0xbc,0xff,0x2d,0x64,0xea,0x6,0x7,0xb5,0x34,0xe4,0xec,0x97,0xf1,0x5,0xef,0xe8,0x6c,0x9,0xfd,0xe0,0xef,0xed,0xe9,0xf7,0xea,0x45,0x10,0x23,0xe,0x31,0x53,0xfb,0xbe,0x4,0x46,0x9f,0xce,0xe1,0x27,0x9,0x45,0xea,0xf2,0x1,0x7f,0xd2,0xf1,0xb4,0xd,0xde,0x2,0x30,0x19,0xff,0x1b,0xf0,0xfa,0xb1,0xd,0xeb,0xc4,0xcc,0xdd,0x3b,0x29,0xd1,0xb6,0xc6,0x2e,0xd1,0xda,0xd5,0x28,0xf,0xed,0xd8,0xeb,0x30,0xfe,0x48,0xcb,0xf,0xf,0x42,0x3e,0xaf,0xc,0x27,0x4e,0xeb,0xc,0x70,0x12,0x36,0x7,0xcd,0xd6,0xe5,0xf4,0x22,0xc,0x19,0xd2,0x4,0xb,0x3d,0xeb,0xd6,0x6,0xf9,0x11,0x44,0xf8,0x81,0x2e,0x39,0xd6,0xce,0xf7,0xe1,0x18,0x10,0xc6,0xf2,0x22,0x4,0xc2,0xc5,0x25,0x3,0x47,0x1a,0xc6,0xef,0x2b,0xee,0x18,0x52,0xed,0x2,0x5c,0xb9,0x1f,0x23,0x10,0xcf,0x55,0x1c,0xe1,0xf0,0xda,0x36,0xd7,0x1d,0xf6,0x81,0x17,0x10,0xcd,0x6,0x0,0x1,0x5,0x1,0xd7,0x1c,0xd5,0xfd,0x1f,0x4f,0xcf,0xed,0xf0,0x84,0xcc,0x41,0x45,0x25,0xe8,0x2,0xf8,0xfe,0x3d,0xdb,0x9,0x3,0x41,0xe1,0x9,0x2,0xee,0x32,0xfd,0xfd,0xf6,0xdf,0xe9,0x6,0xe0,0xcc,0x7,0xfc,0xde,0xaa,0x11,0xdf,0x24,0x5c,0x2d,0x26,0x81,0xd3,0x25,0xc1,0xc9,0x1e,0x25,0x49,0xa5,0x23,0xc3,0xa1,0xc2,0xec,0xba,0x1a,0xe2,0x9b,0x42,0x6,0xfa,0x39,0x2a,0xcc,0xfe,0x1b,0xdb,0xd3,0x39,0x3a,0x19,0x2d,0x2a,0xed,0x16,0x26,0x6b,0xe,0x3c,0x14,0xb8,0xe2,0xce,0x25,0x2a,0xbc,0x10,0xda,0xa7,0xec,0x4a,0xc,0xa3,0xd5,0xc0,0x78,0xfe,0xf9,0xc0,0xba,0x36,0xf0,0xfd,0xd3,0x45,0x81,0x61,0x21,0x39,0xd4,0x3,0x1e,0x3,0xc8,0xdb,0x47,0x48,0x3b,0x1c,0xc,0xf4,0x2f,0x2c,0xd1,0xf5,0xff,0x17,0xc6,0x32,0xd4,0x14,0x11,0x50,0xc,0x8,0xe1,0xe8,0xe4,0xfb,0xfc,0xbe,0x27,0x3f,0x1c,0x1c,0xd8,0xb,0xfc,0x52,0x29,0xb8,0xee,0xa4,0xe2,0xd5,0x1,0x3b,0x8,0x79,0xd6,0x25,0x73,0x46,0x7b,0xd7,0xe,0xfe,0x11,0xd7,0xe2,0xf2,0xfe,0x8,0x96,0x30,0xf7,0xf2,0xcc,0x3,0xa2,0x4a,0x33,0x1a,0xa7,0xcc,0x4c,0xe5,0x29,0xe3,0x59,0x68,0x4c,0x3a,0xe8,0x13,0x9a,0x7f,0xdb,0x25,0xc2,0xcc,0x37,0x25,0xd5,0x2c,0xb7,0x5a,0xd1,0x58,0xd,0x2c,0xb4,0x30,0xdd,0xe0,0x8c,0x19,0x14,0x38,0xf,0xc2,0x23,0xe5,0x12,0xc1,0xb1,0xe9,0x2,0xa8,0x5,0x7f,0xe8,0x38,0x16,0x4,0xa5,0xf,0xc2,0xaf,0xa4,0x26,0x4a,0xb,0xe4,0x18,0x42,0xbb,0xe5,0x26,0x69,0x13,0xe8,0xca,0xfb,0xf0,0xe,0x24,0x10,0xf1,0x21,0xc,0xd4,0xf8,0x35,0x54,0xa4,0xb8,0x8a,0xec,0x2c,0x37,0x5f,0xe3,0x55,0xfd,0x5f,0xeb,0x14,0x46,0xff,0x6,0x11,0x1b,0x22,0xfa,0xe2,0xbf,0xdd,0xf1,0x43,0x13,0xcf,0xfa,0xe,0xc2,0xe9,0xe6,0x81,0x36,0xe1,0xd9,0x33,0x3,0xfe,0xe7,0x19,0xc2,0x42,0x3d,0xd2,0xcb,0xfb,0xea,0x39,0x14,0x4,0x12,0x24,0x9,0x2e,0x1e,0x12,0xd9,0xe3,0xf7,0x46,0xd1,0x4f,0x3f,0xcc,0x9,0xab,0xc7,0xe7,0xe0,0xe3,0x1,0xf6,0xe3,0x34,0xe9,0x2b,0x81,0xf6,0x2f,0xee,0x15,0xed,0x14,0x37,0x2f,0xe9,0xdb,0xf4,0xf5,0xb6,0xe,0xe5,0x1c,0xba,0xd4,0x17,0x27,0xb1,0x17,0xe4,0x3c,0x9,0x9,0xd4,0x36,0xd6,0x37,0x5a,0xee,0x19,0xef,0x33,0xf5,0x11,0xb3,0xcc,0xed,0x4,0x1,0xcb,0x45,0xb8,0xda,0xe8,0xf8,0x30,0xf2,0x38,0x31,0xd1,0xa9,0xc,0x0,0x40,0x26,0x22,0x34,0xf5,0x23,0x1d,0x29,0xed,0x13,0x64,0xf4,0x42,0x35,0xf9,0x54,0x81,0xbe,0x44,0x11,0xdb,0xe8,0x4b,0x28,0xf0,0x13,0xf8,0xfa,0xf3,0x11,0x1c,0xda,0xce,0xd0,0xf9,0xe2,0xa7,0xe2,0xe,0xe0,0x3d,0xbc,0xf3,0x2a,0x41,0x12,0xd2,0xca,0xdb,0x82,0x40,0xc5,0xfb,0x58,0x53,0xe,0x7a,0xe6,0xcf,0x8,0xcc,0x4,0x20,0xd6,0x77,0xf4,0x81,0x0,0xa,0x1d,0x23,0x4,0xf5,0xf,0xfe,0x1e,0x23,0x19,0xe1,0xff,0x3f,0x7,0x2f,0xf6,0x12,0xef,0xc7,0x34,0xec,0x4d,0xab,0xec,0xe6,0xe9,0xf,0xd2,0xd,0x0,0x3b,0x17,0x23,0xf3,0xe1,0xd8,0x1c,0x11,0x28,0xe4,0x25,0xe7,0xec,0x2e,0xda,0x3e,0x3,0xe0,0xb,0xb3,0x27,0xea,0x7,0xc9,0x2,0xe0,0x13,0x9,0x81,0x4d,0x1a,0xff,0xfc,0xe3,0x19,0xe8,0x26,0xf1,0x22,0x28,0xd9,0x2e,0x59,0x2f,0x23,0x1f,0xb6,0xf6,0xf2,0x41,0xdd,0x4e,0xbe,0xd,0xd3,0x25,0x2a,0xc1,0x41,0xee,0x2b,0x48,0xf5,0xc6,0x0,0xf3,0x47,0x28,0x49,0xd9,0xca,0xfa,0x30,0xb4,0xd,0x42,0xc0,0x7,0x20,0xa8,0x4c,0xec,0xf,0x18,0x32,0xd,0x1d,0x2f,0x2,0xda,0x12,0x1,0x18,0xcc,0xf,0x22,0x41,0xf2,0x58,0xee,0xfc,0x5,0x24,0xfd,0x81,0xb8,0x9,0x7,0xec,0x1b,0xb,0xf4,0x1a,0xd4,0xdb,0x12,0xfb,0x16,0x54,0x23,0x4d,0xcf,0xa4,0x18,0xa,0xc,0xa1,0xdf,0xc4,0xfe,0xde,0x1e,0x11,0xad,0xed,0x32,0xe6,0x2a,0xc4,0xfe,0xf7,0xf5,0x33,0x8f,0xc1,0xfe,0xa4,0xfe,0xee,0x58,0xa8,0xe6,0xd9,0xdd,0x3e,0x1a,0xa8,0xa8,0xb4,0xfd,0x26,0x4,0xa7,0xd2,0xed,0x7f,0x9c,0xda,0xb6,0xa9,0xff,0xb7,0x5b,0xf0,0x5a,0x69,0x5f,0x8b,0xe8,0x35,0x40,0x14,0x56,0xc2,0x2e,0x9,0x1c,0xcb,0xb3,0xf4,0x13,0xa,0x7a,0xf,0xda,0xf7,0xb7,0xcf,0x23,0xfa,0x4b,0x1e,0xeb,0xff,0xff,0x4,0x0,0x0,0x0,0xf0,0x0,0x0,0x0,0x53,0xfd,0xff,0xff,0x53,0x1c,0x0,0x0,0x46,0xb,0x0,0x0,0x8d,0xfe,0xff,0xff,0x73,0xf5,0xff,0xff,0x21,0x13,0x0,0x0,0x7d,0x5,0x0,0x0,0xd4,0x9,0x0,0x0,0xfa,0x12,0x0,0x0,0x90,0xf,0x0,0x0,0x59,0xe7,0xff,0xff,0xdb,0x3,0x0,0x0,0x8a,0xd,0x0,0x0,0xda,0x1d,0x0,0x0,0xdf,0x2,0x0,0x0,0xb2,0x1c,0x0,0x0,0x6c,0x12,0x0,0x0,0x6a,0xe8,0xff,0xff,0x54,0x13,0x0,0x0,0x35,0x1d,0x0,0x0,0x47,0x12,0x0,0x0,0x6c,0xa,0x0,0x0,0xb3,0x10,0x0,0x0,0xcc,0xe,0x0,0x0,0xb8,0x16,0x0,0x0,0xd5,0x4,0x0,0x0,0xe,0x10,0x0,0x0,0x3,0x13,0x0,0x0,0x79,0x8,0x0,0x0,0xb8,0x1c,0x0,0x0,0xb7,0xec,0xff,0xff,0x95,0xff,0xff,0xff,0xff,0x11,0x0,0x0,0xb1,0xc,0x0,0x0,0x3f,0xe,0x0,0x0,0xd6,0x9,0x0,0x0,0x95,0x8,0x0,0x0,0xd8,0x8,0x0,0x0,0xc9,0xc,0x0,0x0,0x65,0x23,0x0,0x0,0x84,0x16,0x0,0x0,0x3,0x3,0x0,0x0,0x1d,0x17,0x0,0x0,0xbb,0x4,0x0,0x0,0x4e,0xb,0x0,0x0,0x6,0x15,0x0,0x0,0x10,0xf5,0xff,0xff,0xfa,0x0,0x0,0x0,0xb7,0x10,0x0,0x0,0x20,0x19,0x0,0x0,0xed,0xfc,0xff,0xff,0xce,0xff,0xff,0xff,0x5e,0x17,0x0,0x0,0x16,0xff,0xff,0xff,0x77,0x2,0x0,0x0,0xe6,0x15,0x0,0x0,0xf8,0x10,0x0,0x0,0x85,0x11,0x0,0x0,0x48,0xef,0xff,0xff,0xe,0xa,0x0,0x0,0x1a,0xec,0xff,0xff,0x4,0x0,0x0,0x0,0x2c,0x1,0x0,0x0,0xef,0xbc,0xc7,0x9e,0x39,0xfc,0x8,0xb6,0xf8,0xce,0x41,0xbd,0xba,0xd7,0xd9,0x98,0xdd,0x43,0x16,0xb6,0xd5,0xde,0xf5,0xc0,0xad,0xe1,0xec,0xb0,0xf1,0xb2,0x24,0xd5,0xda,0xd6,0xf5,0x81,0xe7,0xb3,0xec,0xb6,0xb1,0xf4,0x7,0xb7,0xc9,0xeb,0xd4,0xbb,0xb0,0xf1,0xf5,0xd4,0xfd,0xb6,0xa8,0xf7,0xdb,0xc2,0x31,0x1,0x9b,0x19,0xa1,0xe2,0xf8,0xc3,0x25,0x9,0xf9,0x18,0x2e,0xdd,0xe0,0x1f,0xc6,0xe4,0xac,0x38,0xde,0xf6,0xed,0xdc,0x6,0xda,0xbf,0xba,0xe9,0xfe,0xc0,0x2,0x42,0xc9,0xbf,0xbe,0x5,0xb3,0x6,0xd7,0xd1,0xc3,0xbd,0xdd,0xf2,0xc8,0xe,0xe3,0xf3,0xce,0xae,0xd6,0xe6,0xcf,0x14,0xe7,0xff,0x9,0xde,0xe5,0x13,0xfc,0x99,0xfb,0xd1,0xd5,0x6,0x6,0xfa,0xf5,0xf8,0xc,0x1a,0xf5,0x0,0xfd,0x20,0xca,0xd1,0xfb,0xf,0xf0,0xd6,0xd0,0xfb,0xfb,0xc8,0xdd,0xfd,0xc5,0xcf,0xd6,0x1f,0xd,0x18,0xd8,0xef,0xe6,0x11,0xb1,0xfd,0x3,0x1e,0xfc,0x5,0x4,0xdc,0x15,0xe5,0x1c,0xc1,0xf1,0xe1,0xc,0x19,0xe9,0xc1,0x4,0xc6,0xca,0xa,0xe3,0xbd,0xe8,0xdb,0x11,0x2f,0xc3,0xf6,0xdd,0xc9,0xc6,0xc,0xda,0xcd,0x13,0xf3,0x9,0xc1,0x46,0xbb,0x11,0xa4,0x11,0xbc,0xea,0xdd,0xfc,0xeb,0x11,0x1d,0xf8,0x3c,0xec,0xc,0xb,0x2d,0xfe,0xf6,0xd0,0xd3,0xcb,0xdd,0xe7,0xf7,0xef,0xb9,0xc4,0xec,0xc5,0x13,0x19,0xc1,0xe4,0xdd,0xf2,0x12,0xe8,0xdb,0xa0,0xfa,0xeb,0xeb,0xa8,0xb5,0xc2,0x4b,0xb4,0x8f,0xe2,0x90,0xe7,0x30,0x38,0xb6,0xa8,0x14,0xd9,0xfd,0x68,0xb4,0xf6,0xc1,0xc0,0x91,0xd6,0xea,0xbf,0xa9,0xea,0x3,0xc5,0x51,0xda,0xd9,0x21,0xac,0xf7,0xc0,0xc,0xce,0xdb,0xc4,0xca,0xb3,0xff,0xa7,0xc2,0xb1,0x8,0xe3,0xe7,0x3,0x1b,0xd0,0xfb,0x25,0x90,0xbb,0xa9,0x5d,0xe9,0x52,0xed,0xff,0xff,0x4,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x18,0xfa,0xff,0xff,0x62,0xed,0xff,0xff,0x4,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0xff,0xff,0xff,0xff,0x2c,0x1,0x0,0x0,0x76,0xed,0xff,0xff,0x4,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xec,0xff,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x92,0xed,0xff,0xff,0x4,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf4,0xff,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xae,0xed,0xff,0xff,0x4,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0xca,0xed,0xff,0xff,0x4,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf8,0xff,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe6,0xed,0xff,0xff,0x4,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0x2,0xee,0xff,0xff,0x4,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfc,0xff,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1e,0xee,0xff,0xff,0x4,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3a,0xee,0xff,0xff,0x4,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x28,0x0,0x0,0x0,0x56,0xee,0xff,0xff,0x4,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfe,0xff,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x72,0xee,0xff,0xff,0x4,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x28,0x0,0x0,0x0,0x14,0xa2,0xff,0xff,0x18,0xa2,0xff,0xff,0xf,0x0,0x0,0x0,0x4d,0x4c,0x49,0x52,0x20,0x43,0x6f,0x6e,0x76,0x65,0x72,0x74,0x65,0x64,0x2e,0x0,0x2,0x0,0x0,0x0,0xf8,0x6,0x0,0x0,0x4,0x0,0x0,0x0,0x1e,0xf9,0xff,0xff,0x14,0x0,0x0,0x0,0x1c,0x0,0x0,0x0,0xd4,0x2,0x0,0x0,0xd4,0x2,0x0,0x0,0xd4,0x2,0x0,0x0,0x4,0x0,0x0,0x0,0x4e,0x6f,0x4f,0x70,0x0,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0x6c,0x2,0x0,0x0,0x48,0x2,0x0,0x0,0xf8,0x1,0x0,0x0,0xd4,0x1,0x0,0x0,0x84,0x1,0x0,0x0,0x60,0x1,0x0,0x0,0x10,0x1,0x0,0x0,0xec,0x0,0x0,0x0,0x9c,0x0,0x0,0x0,0x78,0x0,0x0,0x0,0x28,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x42,0xf1,0xff,0xff,0xc,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0xa,0x0,0x0,0x0,0xb,0x0,0x0,0x0,0xb6,0xef,0xff,0xff,0x14,0x0,0x0,0x0,0x0,0x0,0x0,0x6f,0x34,0x0,0x0,0x0,0x38,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xa8,0xef,0xff,0xff,0x8,0x0,0x0,0x0,0x18,0x0,0x0,0x0,0xd,0x0,0x0,0x0,0x73,0x74,0x72,0x65,0x61,0x6d,0x2f,0x73,0x74,0x61,0x74,0x65,0x73,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xa,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xae,0xf1,0xff,0xff,0xc,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0x9,0x0,0x0,0x0,0x22,0xf0,0xff,0xff,0x14,0x0,0x0,0x0,0x0,0x0,0x0,0x6f,0x34,0x0,0x0,0x0,0x38,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x14,0xf0,0xff,0xff,0x8,0x0,0x0,0x0,0x18,0x0,0x0,0x0,0xf,0x0,0x0,0x0,0x73,0x74,0x72,0x65,0x61,0x6d,0x5f,0x31,0x2f,0x73,0x74,0x61,0x74,0x65,0x73,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1a,0xf2,0xff,0xff,0xc,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x8e,0xf0,0xff,0xff,0x14,0x0,0x0,0x0,0x0,0x0,0x0,0x6f,0x34,0x0,0x0,0x0,0x38,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x80,0xf0,0xff,0xff,0x8,0x0,0x0,0x0,0x18,0x0,0x0,0x0,0xf,0x0,0x0,0x0,0x73,0x74,0x72,0x65,0x61,0x6d,0x5f,0x32,0x2f,0x73,0x74,0x61,0x74,0x65,0x73,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x86,0xf2,0xff,0xff,0xc,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x5,0x0,0x0,0x0,0xfa,0xf0,0xff,0xff,0x14,0x0,0x0,0x0,0x0,0x0,0x0,0x6f,0x34,0x0,0x0,0x0,0x38,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xec,0xf0,0xff,0xff,0x8,0x0,0x0,0x0,0x18,0x0,0x0,0x0,0xf,0x0,0x0,0x0,0x73,0x74,0x72,0x65,0x61,0x6d,0x5f,0x33,0x2f,0x73,0x74,0x61,0x74,0x65,0x73,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf2,0xf2,0xff,0xff,0xc,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x66,0xf1,0xff,0xff,0x14,0x0,0x0,0x0,0x0,0x0,0x0,0x6f,0x34,0x0,0x0,0x0,0x38,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x58,0xf1,0xff,0xff,0x8,0x0,0x0,0x0,0x18,0x0,0x0,0x0,0xf,0x0,0x0,0x0,0x73,0x74,0x72,0x65,0x61,0x6d,0x5f,0x34,0x2f,0x73,0x74,0x61,0x74,0x65,0x73,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x5e,0xf3,0xff,0xff,0xc,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xd2,0xf1,0xff,0xff,0x14,0x0,0x0,0x0,0x0,0x0,0x0,0x6f,0x34,0x0,0x0,0x0,0x38,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xc4,0xf1,0xff,0xff,0x8,0x0,0x0,0x0,0x18,0x0,0x0,0x0,0xf,0x0,0x0,0x0,0x73,0x74,0x72,0x65,0x61,0x6d,0x5f,0x35,0x2f,0x73,0x74,0x61,0x74,0x65,0x73,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0xbc,0x3,0x0,0x0,0x4c,0x3,0x0,0x0,0x10,0x3,0x0,0x0,0xa4,0x2,0x0,0x0,0x68,0x2,0x0,0x0,0xfc,0x1,0x0,0x0,0xc0,0x1,0x0,0x0,0x54,0x1,0x0,0x0,0x18,0x1,0x0,0x0,0xac,0x0,0x0,0x0,0x74,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x22,0xa5,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x34,0x0,0x0,0x0,0x52,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0x40,0x0,0x0,0x0,0xc,0xa5,0xff,0xff,0x8,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xd1,0xd0,0xd0,0x3d,0x12,0x0,0x0,0x0,0x74,0x66,0x6c,0x2e,0x70,0x73,0x65,0x75,0x64,0x6f,0x5f,0x71,0x63,0x6f,0x6e,0x73,0x74,0x35,0x0,0x0,0x4,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x28,0x0,0x0,0x0,0x7e,0xde,0xff,0xff,0x14,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x51,0x0,0x0,0x0,0x0,0x0,0x0,0xd,0x1c,0x0,0x0,0x0,0xdc,0xa5,0xff,0xff,0xe,0x0,0x0,0x0,0x73,0x74,0x72,0x65,0x61,0x6d,0x2f,0x73,0x74,0x61,0x74,0x65,0x73,0x31,0x0,0x0,0x0,0x0,0x0,0x0,0xc2,0xa5,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x30,0x0,0x0,0x0,0x50,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0x3c,0x0,0x0,0x0,0xac,0xa5,0xff,0xff,0x8,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1,0x0,0x0,0x0,0x42,0x2d,0xbf,0x3f,0x12,0x0,0x0,0x0,0x74,0x66,0x6c,0x2e,0x70,0x73,0x65,0x75,0x64,0x6f,0x5f,0x71,0x63,0x6f,0x6e,0x73,0x74,0x34,0x0,0x0,0x4,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0x1a,0xdf,0xff,0xff,0x14,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x4f,0x0,0x0,0x0,0x0,0x0,0x0,0xd,0x20,0x0,0x0,0x0,0x78,0xa6,0xff,0xff,0x10,0x0,0x0,0x0,0x73,0x74,0x72,0x65,0x61,0x6d,0x5f,0x31,0x2f,0x73,0x74,0x61,0x74,0x65,0x73,0x31,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x62,0xa6,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x30,0x0,0x0,0x0,0x4e,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0x3c,0x0,0x0,0x0,0x4c,0xa6,0xff,0xff,0x8,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1,0x0,0x0,0x0,0xc1,0x8c,0x27,0x3d,0x12,0x0,0x0,0x0,0x74,0x66,0x6c,0x2e,0x70,0x73,0x65,0x75,0x64,0x6f,0x5f,0x71,0x63,0x6f,0x6e,0x73,0x74,0x33,0x0,0x0,0x4,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0xba,0xdf,0xff,0xff,0x14,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x4d,0x0,0x0,0x0,0x0,0x0,0x0,0xd,0x20,0x0,0x0,0x0,0x18,0xa7,0xff,0xff,0x10,0x0,0x0,0x0,0x73,0x74,0x72,0x65,0x61,0x6d,0x5f,0x32,0x2f,0x73,0x74,0x61,0x74,0x65,0x73,0x31,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0xa7,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x30,0x0,0x0,0x0,0x4c,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0x3c,0x0,0x0,0x0,0xec,0xa6,0xff,0xff,0x8,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1,0x0,0x0,0x0,0x43,0x88,0x30,0x3d,0x12,0x0,0x0,0x0,0x74,0x66,0x6c,0x2e,0x70,0x73,0x65,0x75,0x64,0x6f,0x5f,0x71,0x63,0x6f,0x6e,0x73,0x74,0x32,0x0,0x0,0x4,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0x5a,0xe0,0xff,0xff,0x14,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x4b,0x0,0x0,0x0,0x0,0x0,0x0,0xd,0x20,0x0,0x0,0x0,0xb8,0xa7,0xff,0xff,0x10,0x0,0x0,0x0,0x73,0x74,0x72,0x65,0x61,0x6d,0x5f,0x33,0x2f,0x73,0x74,0x61,0x74,0x65,0x73,0x31,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xa2,0xa7,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x30,0x0,0x0,0x0,0x4a,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0x3c,0x0,0x0,0x0,0x8c,0xa7,0xff,0xff,0x8,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1,0x0,0x0,0x0,0xc5,0x24,0x22,0x3d,0x12,0x0,0x0,0x0,0x74,0x66,0x6c,0x2e,0x70,0x73,0x65,0x75,0x64,0x6f,0x5f,0x71,0x63,0x6f,0x6e,0x73,0x74,0x31,0x0,0x0,0x4,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0xfa,0xe0,0xff,0xff,0x14,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x49,0x0,0x0,0x0,0x0,0x0,0x0,0xd,0x20,0x0,0x0,0x0,0x58,0xa8,0xff,0xff,0x10,0x0,0x0,0x0,0x73,0x74,0x72,0x65,0x61,0x6d,0x5f,0x34,0x2f,0x73,0x74,0x61,0x74,0x65,0x73,0x31,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x42,0xa8,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x34,0x0,0x0,0x0,0x48,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0x40,0x0,0x0,0x0,0x2c,0xa8,0xff,0xff,0x8,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xd0,0x2d,0xe8,0x3c,0x11,0x0,0x0,0x0,0x74,0x66,0x6c,0x2e,0x70,0x73,0x65,0x75,0x64,0x6f,0x5f,0x71,0x63,0x6f,0x6e,0x73,0x74,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0x9e,0xe1,0xff,0xff,0x14,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x47,0x0,0x0,0x0,0x0,0x0,0x0,0xd,0x20,0x0,0x0,0x0,0xfc,0xa8,0xff,0xff,0x10,0x0,0x0,0x0,0x73,0x74,0x72,0x65,0x61,0x6d,0x5f,0x35,0x2f,0x73,0x74,0x61,0x74,0x65,0x73,0x31,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe,0x0,0x18,0x0,0x14,0x0,0x10,0x0,0xc,0x0,0x8,0x0,0x4,0x0,0xe,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x1c,0x0,0x0,0x0,0x64,0xa,0x0,0x0,0x68,0xa,0x0,0x0,0x6c,0xa,0x0,0x0,0x4,0x0,0x0,0x0,0x6d,0x61,0x69,0x6e,0x0,0x0,0x0,0x0,0x2d,0x0,0x0,0x0,0x1c,0xa,0x0,0x0,0xb4,0x9,0x0,0x0,0x54,0x9,0x0,0x0,0x4,0x9,0x0,0x0,0xb4,0x8,0x0,0x0,0x64,0x8,0x0,0x0,0x14,0x8,0x0,0x0,0xec,0x7,0x0,0x0,0xbc,0x7,0x0,0x0,0x98,0x7,0x0,0x0,0x74,0x7,0x0,0x0,0x50,0x7,0x0,0x0,0x2c,0x7,0x0,0x0,0x8,0x7,0x0,0x0,0xd0,0x6,0x0,0x0,0x8c,0x6,0x0,0x0,0x68,0x6,0x0,0x0,0x14,0x6,0x0,0x0,0xdc,0x5,0x0,0x0,0x98,0x5,0x0,0x0,0x74,0x5,0x0,0x0,0x20,0x5,0x0,0x0,0xd0,0x4,0x0,0x0,0x98,0x4,0x0,0x0,0x54,0x4,0x0,0x0,0x30,0x4,0x0,0x0,0xe8,0x3,0x0,0x0,0xa4,0x3,0x0,0x0,0x6c,0x3,0x0,0x0,0x28,0x3,0x0,0x0,0x4,0x3,0x0,0x0,0xbc,0x2,0x0,0x0,0x78,0x2,0x0,0x0,0x40,0x2,0x0,0x0,0xfc,0x1,0x0,0x0,0xd8,0x1,0x0,0x0,0x90,0x1,0x0,0x0,0x4c,0x1,0x0,0x0,0x14,0x1,0x0,0x0,0xd0,0x0,0x0,0x0,0xac,0x0,0x0,0x0,0x84,0x0,0x0,0x0,0x4c,0x0,0x0,0x0,0x28,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0xb6,0xf8,0xff,0xff,0xc,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0xb,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x45,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x44,0x0,0x0,0x0,0xd6,0xf8,0xff,0xff,0xc,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0xa,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x44,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x43,0x0,0x0,0x0,0x4a,0xf7,0xff,0xff,0x14,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x10,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x9,0x0,0x0,0x0,0x60,0xaa,0xff,0xff,0x1,0x0,0x0,0x0,0x43,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x42,0x0,0x0,0x0,0xd,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0x2a,0xf9,0xff,0xff,0xc,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x42,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x40,0x0,0x0,0x0,0xb,0x0,0x0,0x0,0x4e,0xf9,0xff,0xff,0xc,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x25,0x0,0x0,0x0,0x41,0x0,0x0,0x0,0xc2,0xf7,0xff,0xff,0x14,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x18,0x0,0x0,0x0,0x1c,0x0,0x0,0x0,0x5,0x0,0x0,0x0,0xb4,0xf7,0xff,0xff,0xf,0x0,0x0,0x0,0xd,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x41,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x40,0x0,0x0,0x0,0x5,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x2,0xf8,0xff,0xff,0x14,0x0,0x0,0x0,0x0,0x0,0x0,0xa,0x14,0x0,0x0,0x0,0x18,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x92,0xf7,0xff,0xff,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x40,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x2b,0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x36,0xf8,0xff,0xff,0x14,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1c,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0xb8,0xfc,0xff,0xff,0x0,0x0,0x0,0x1,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x3e,0x0,0x0,0x0,0xf,0x0,0x0,0x0,0xe,0x0,0x0,0x0,0x76,0xf8,0xff,0xff,0x14,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x20,0x0,0x0,0x0,0x24,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0xac,0xfc,0xff,0xff,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x0,0x0,0x0,0x3e,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0x11,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x66,0xfa,0xff,0xff,0xc,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x24,0x0,0x0,0x0,0x3d,0x0,0x0,0x0,0xda,0xf8,0xff,0xff,0x14,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x18,0x0,0x0,0x0,0x1c,0x0,0x0,0x0,0x5,0x0,0x0,0x0,0xcc,0xf8,0xff,0xff,0xf,0x0,0x0,0x0,0xd,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3d,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0xa,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x1a,0xf9,0xff,0xff,0x14,0x0,0x0,0x0,0x0,0x0,0x0,0xa,0x14,0x0,0x0,0x0,0x18,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0xaa,0xf8,0xff,0xff,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x2a,0x0,0x0,0x0,0x3b,0x0,0x0,0x0,0x4e,0xf9,0xff,0xff,0x14,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1c,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0xd0,0xfd,0xff,0xff,0x0,0x0,0x0,0x1,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3b,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x3a,0x0,0x0,0x0,0x13,0x0,0x0,0x0,0x12,0x0,0x0,0x0,0x8e,0xf9,0xff,0xff,0x14,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x20,0x0,0x0,0x0,0x24,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0xc4,0xfd,0xff,0xff,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x0,0x0,0x0,0x3a,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x38,0x0,0x0,0x0,0x15,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x7e,0xfb,0xff,0xff,0xc,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x23,0x0,0x0,0x0,0x39,0x0,0x0,0x0,0xf2,0xf9,0xff,0xff,0x14,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x18,0x0,0x0,0x0,0x1c,0x0,0x0,0x0,0x5,0x0,0x0,0x0,0xe4,0xf9,0xff,0xff,0xf,0x0,0x0,0x0,0xd,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x39,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x38,0x0,0x0,0x0,0x9,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x32,0xfa,0xff,0xff,0x14,0x0,0x0,0x0,0x0,0x0,0x0,0xa,0x14,0x0,0x0,0x0,0x18,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0xc2,0xf9,0xff,0xff,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x38,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x29,0x0,0x0,0x0,0x37,0x0,0x0,0x0,0x66,0xfa,0xff,0xff,0x14,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1c,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0xe8,0xfe,0xff,0xff,0x0,0x0,0x0,0x1,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x37,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x36,0x0,0x0,0x0,0x17,0x0,0x0,0x0,0x16,0x0,0x0,0x0,0xa6,0xfa,0xff,0xff,0x14,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x20,0x0,0x0,0x0,0x24,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0xdc,0xfe,0xff,0xff,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x0,0x0,0x0,0x36,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x34,0x0,0x0,0x0,0x19,0x0,0x0,0x0,0x18,0x0,0x0,0x0,0x96,0xfc,0xff,0xff,0xc,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x22,0x0,0x0,0x0,0x35,0x0,0x0,0x0,0xa,0xfb,0xff,0xff,0x14,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x18,0x0,0x0,0x0,0x1c,0x0,0x0,0x0,0x5,0x0,0x0,0x0,0xfc,0xfa,0xff,0xff,0xf,0x0,0x0,0x0,0xd,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x35,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x34,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x4a,0xfb,0xff,0xff,0x14,0x0,0x0,0x0,0x0,0x0,0x0,0xa,0x14,0x0,0x0,0x0,0x18,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0xda,0xfa,0xff,0xff,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x34,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x28,0x0,0x0,0x0,0x33,0x0,0x0,0x0,0x7e,0xfb,0xff,0xff,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x28,0x0,0x0,0x0,0x2c,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0xc,0x0,0x10,0x0,0x0,0x0,0xc,0x0,0x8,0x0,0x7,0x0,0xc,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x33,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x32,0x0,0x0,0x0,0x1b,0x0,0x0,0x0,0x1a,0x0,0x0,0x0,0xca,0xfb,0xff,0xff,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x2c,0x0,0x0,0x0,0x30,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0xc,0x0,0x14,0x0,0x13,0x0,0xc,0x0,0x8,0x0,0x4,0x0,0xc,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x0,0x0,0x0,0x32,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x30,0x0,0x0,0x0,0x1d,0x0,0x0,0x0,0x1c,0x0,0x0,0x0,0xc6,0xfd,0xff,0xff,0xc,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x21,0x0,0x0,0x0,0x31,0x0,0x0,0x0,0x3a,0xfc,0xff,0xff,0x14,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x18,0x0,0x0,0x0,0x1c,0x0,0x0,0x0,0x5,0x0,0x0,0x0,0x2c,0xfc,0xff,0xff,0xf,0x0,0x0,0x0,0xd,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x31,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x30,0x0,0x0,0x0,0x5,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x7a,0xfc,0xff,0xff,0x14,0x0,0x0,0x0,0x0,0x0,0x0,0xa,0x14,0x0,0x0,0x0,0x18,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0xa,0xfc,0xff,0xff,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x30,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x27,0x0,0x0,0x0,0x2f,0x0,0x0,0x0,0xae,0xfc,0xff,0xff,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x2c,0x0,0x0,0x0,0x30,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0xc,0x0,0x14,0x0,0x13,0x0,0xc,0x0,0x8,0x0,0x7,0x0,0xc,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x3,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x0,0x0,0x0,0x2f,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x2d,0x0,0x0,0x0,0x1f,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0xaa,0xfe,0xff,0xff,0xc,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x2e,0x0,0x0,0x0,0x1e,0xfd,0xff,0xff,0x14,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x18,0x0,0x0,0x0,0x1c,0x0,0x0,0x0,0x5,0x0,0x0,0x0,0x10,0xfd,0xff,0xff,0xf,0x0,0x0,0x0,0xd,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x2e,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x2d,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x5e,0xfd,0xff,0xff,0x14,0x0,0x0,0x0,0x0,0x0,0x0,0xa,0x14,0x0,0x0,0x0,0x18,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0xee,0xfc,0xff,0xff,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x2d,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x2c,0x0,0x0,0x0,0x26,0x0,0x0,0x0,0x3e,0xff,0xff,0xff,0xc,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x2c,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x5e,0xff,0xff,0xff,0xc,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x2b,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x25,0x0,0x0,0x0,0x7e,0xff,0xff,0xff,0xc,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x2a,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x24,0x0,0x0,0x0,0x9e,0xff,0xff,0xff,0xc,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x29,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x23,0x0,0x0,0x0,0xbe,0xff,0xff,0xff,0xc,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x28,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x22,0x0,0x0,0x0,0xde,0xff,0xff,0xff,0xc,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x27,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x21,0x0,0x0,0x0,0x0,0x0,0xa,0x0,0x10,0x0,0xc,0x0,0x8,0x0,0x4,0x0,0xa,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x26,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x82,0xfe,0xff,0xff,0x14,0x0,0x0,0x0,0x0,0x0,0x0,0x6f,0x34,0x0,0x0,0x0,0x38,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x74,0xfe,0xff,0xff,0x8,0x0,0x0,0x0,0x18,0x0,0x0,0x0,0xf,0x0,0x0,0x0,0x73,0x74,0x72,0x65,0x61,0x6d,0x5f,0x35,0x2f,0x73,0x74,0x61,0x74,0x65,0x73,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x25,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xce,0xfe,0xff,0xff,0x14,0x0,0x0,0x0,0x0,0x0,0x0,0x6f,0x34,0x0,0x0,0x0,0x38,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xc0,0xfe,0xff,0xff,0x8,0x0,0x0,0x0,0x18,0x0,0x0,0x0,0xf,0x0,0x0,0x0,0x73,0x74,0x72,0x65,0x61,0x6d,0x5f,0x34,0x2f,0x73,0x74,0x61,0x74,0x65,0x73,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x24,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1a,0xff,0xff,0xff,0x14,0x0,0x0,0x0,0x0,0x0,0x0,0x6f,0x34,0x0,0x0,0x0,0x38,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xc,0xff,0xff,0xff,0x8,0x0,0x0,0x0,0x18,0x0,0x0,0x0,0xf,0x0,0x0,0x0,0x73,0x74,0x72,0x65,0x61,0x6d,0x5f,0x33,0x2f,0x73,0x74,0x61,0x74,0x65,0x73,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x23,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x66,0xff,0xff,0xff,0x14,0x0,0x0,0x0,0x0,0x0,0x0,0x6f,0x34,0x0,0x0,0x0,0x38,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x58,0xff,0xff,0xff,0x8,0x0,0x0,0x0,0x18,0x0,0x0,0x0,0xf,0x0,0x0,0x0,0x73,0x74,0x72,0x65,0x61,0x6d,0x5f,0x32,0x2f,0x73,0x74,0x61,0x74,0x65,0x73,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x22,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xb2,0xff,0xff,0xff,0x14,0x0,0x0,0x0,0x0,0x0,0x0,0x6f,0x34,0x0,0x0,0x0,0x38,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xa4,0xff,0xff,0xff,0x8,0x0,0x0,0x0,0x18,0x0,0x0,0x0,0xf,0x0,0x0,0x0,0x73,0x74,0x72,0x65,0x61,0x6d,0x5f,0x31,0x2f,0x73,0x74,0x61,0x74,0x65,0x73,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x21,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe,0x0,0x18,0x0,0x14,0x0,0x10,0x0,0xc,0x0,0xb,0x0,0x4,0x0,0xe,0x0,0x0,0x0,0x1c,0x0,0x0,0x0,0x0,0x0,0x0,0x6f,0x3c,0x0,0x0,0x0,0x40,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x8,0x0,0xc,0x0,0x8,0x0,0x4,0x0,0x8,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0x18,0x0,0x0,0x0,0xd,0x0,0x0,0x0,0x73,0x74,0x72,0x65,0x61,0x6d,0x2f,0x73,0x74,0x61,0x74,0x65,0x73,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe,0x0,0x16,0x0,0x0,0x0,0x10,0x0,0xc,0x0,0xb,0x0,0x4,0x0,0xe,0x0,0x0,0x0,0x18,0x0,0x0,0x0,0x0,0x0,0x0,0x67,0x18,0x0,0x0,0x0,0x18,0x0,0x0,0x0,0x0,0x0,0x6,0x0,0x8,0x0,0x4,0x0,0x6,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x45,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x46,0x0,0x0,0x0,0x9c,0x4c,0x0,0x0,0x30,0x4c,0x0,0x0,0xe4,0x4b,0x0,0x0,0x98,0x4b,0x0,0x0,0x48,0x4b,0x0,0x0,0xf8,0x4a,0x0,0x0,0xa8,0x4a,0x0,0x0,0x58,0x4a,0x0,0x0,0x8,0x4a,0x0,0x0,0xb8,0x49,0x0,0x0,0x68,0x49,0x0,0x0,0x24,0x49,0x0,0x0,0xb0,0x48,0x0,0x0,0x4c,0x48,0x0,0x0,0x8,0x45,0x0,0x0,0xd4,0x41,0x0,0x0,0x90,0x3e,0x0,0x0,0x34,0x3b,0x0,0x0,0xf0,0x37,0x0,0x0,0xbc,0x34,0x0,0x0,0x78,0x31,0x0,0x0,0x30,0x2e,0x0,0x0,0xf0,0x2a,0x0,0x0,0xbc,0x27,0x0,0x0,0x78,0x24,0x0,0x0,0x30,0x21,0x0,0x0,0xf0,0x1d,0x0,0x0,0xbc,0x1a,0x0,0x0,0xe0,0x18,0x0,0x0,0x0,0x17,0x0,0x0,0x30,0x15,0x0,0x0,0x5c,0x13,0x0,0x0,0x24,0x13,0x0,0x0,0xdc,0x12,0x0,0x0,0xa4,0x12,0x0,0x0,0x6c,0x12,0x0,0x0,0x34,0x12,0x0,0x0,0xfc,0x11,0x0,0x0,0x80,0x11,0x0,0x0,0xfc,0x10,0x0,0x0,0x78,0x10,0x0,0x0,0xf4,0xf,0x0,0x0,0x70,0xf,0x0,0x0,0xec,0xe,0x0,0x0,0x70,0xe,0x0,0x0,0x4,0xe,0x0,0x0,0x90,0xd,0x0,0x0,0x4,0xd,0x0,0x0,0x90,0xc,0x0,0x0,0x14,0xc,0x0,0x0,0x48,0xb,0x0,0x0,0x7c,0xa,0x0,0x0,0x8,0xa,0x0,0x0,0x8c,0x9,0x0,0x0,0xa8,0x8,0x0,0x0,0xdc,0x7,0x0,0x0,0x68,0x7,0x0,0x0,0xec,0x6,0x0,0x0,0x8,0x6,0x0,0x0,0x3c,0x5,0x0,0x0,0xc8,0x4,0x0,0x0,0x4c,0x4,0x0,0x0,0x68,0x3,0x0,0x0,0xb4,0x2,0x0,0x0,0x40,0x2,0x0,0x0,0xc4,0x1,0x0,0x0,0x58,0x1,0x0,0x0,0xdc,0x0,0x0,0x0,0x70,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x92,0xb4,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x30,0x0,0x0,0x0,0x46,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0x44,0x0,0x0,0x0,0x7c,0xb4,0xff,0xff,0x8,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x80,0x3b,0x19,0x0,0x0,0x0,0x53,0x74,0x61,0x74,0x65,0x66,0x75,0x6c,0x50,0x61,0x72,0x74,0x69,0x74,0x69,0x6f,0x6e,0x65,0x64,0x43,0x61,0x6c,0x6c,0x3a,0x30,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xfa,0xb4,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x30,0x0,0x0,0x0,0x45,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0x44,0x0,0x0,0x0,0xe4,0xb4,0xff,0xff,0x8,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1,0x0,0x0,0x0,0x0,0x0,0x80,0x3b,0x1a,0x0,0x0,0x0,0x53,0x74,0x61,0x74,0x65,0x66,0x75,0x6c,0x50,0x61,0x72,0x74,0x69,0x74,0x69,0x6f,0x6e,0x65,0x64,0x43,0x61,0x6c,0x6c,0x3a,0x30,0x31,0x0,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x62,0xb5,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x34,0x0,0x0,0x0,0x44,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0x54,0x0,0x0,0x0,0x4c,0xb5,0xff,0xff,0x8,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x5,0x40,0x37,0x3e,0x26,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x64,0x65,0x6e,0x73,0x65,0x2f,0x4d,0x61,0x74,0x4d,0x75,0x6c,0x3b,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x64,0x65,0x6e,0x73,0x65,0x2f,0x42,0x69,0x61,0x73,0x41,0x64,0x64,0x0,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xda,0xb5,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x34,0x0,0x0,0x0,0x43,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0x44,0x0,0x0,0x0,0xc4,0xb5,0xff,0xff,0x8,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xd0,0x2d,0xe8,0x3c,0x15,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x66,0x6c,0x61,0x74,0x74,0x65,0x6e,0x2f,0x52,0x65,0x73,0x68,0x61,0x70,0x65,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x2c,0x1,0x0,0x0,0x42,0xb6,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x34,0x0,0x0,0x0,0x42,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0x4c,0x0,0x0,0x0,0x2c,0xb6,0xff,0xff,0x8,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xd0,0x2d,0xe8,0x3c,0x1d,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x73,0x74,0x72,0x65,0x61,0x6d,0x5f,0x35,0x2f,0x73,0x74,0x72,0x69,0x64,0x65,0x64,0x5f,0x73,0x6c,0x69,0x63,0x65,0x33,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0xba,0xb6,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x34,0x0,0x0,0x0,0x41,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0x44,0x0,0x0,0x0,0xa4,0xb6,0xff,0xff,0x8,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xd0,0x2d,0xe8,0x3c,0x15,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x73,0x74,0x72,0x65,0x61,0x6d,0x5f,0x35,0x2f,0x63,0x6f,0x6e,0x63,0x61,0x74,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x5,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0x2a,0xb7,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x30,0x0,0x0,0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0x84,0x0,0x0,0x0,0x14,0xb7,0xff,0xff,0x8,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1,0x0,0x0,0x0,0xd0,0x2d,0xe8,0x3c,0x5a,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x61,0x63,0x74,0x69,0x76,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x34,0x2f,0x52,0x65,0x6c,0x75,0x3b,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x62,0x61,0x74,0x63,0x68,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x33,0x2f,0x46,0x75,0x73,0x65,0x64,0x42,0x61,0x74,0x63,0x68,0x4e,0x6f,0x72,0x6d,0x56,0x33,0x3b,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x63,0x6f,0x6e,0x76,0x32,0x64,0x5f,0x34,0x2f,0x43,0x6f,0x6e,0x76,0x32,0x44,0x0,0x0,0x4,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0xda,0xb7,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x30,0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0xb4,0x0,0x0,0x0,0xc4,0xb7,0xff,0xff,0x8,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xdc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1,0x0,0x0,0x0,0x25,0x69,0xd3,0x3d,0x89,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x64,0x65,0x70,0x74,0x68,0x77,0x69,0x73,0x65,0x5f,0x63,0x6f,0x6e,0x76,0x32,0x64,0x5f,0x33,0x2f,0x42,0x69,0x61,0x73,0x41,0x64,0x64,0x3b,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x63,0x6f,0x6e,0x76,0x32,0x64,0x5f,0x34,0x2f,0x43,0x6f,0x6e,0x76,0x32,0x44,0x3b,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x64,0x65,0x70,0x74,0x68,0x77,0x69,0x73,0x65,0x5f,0x63,0x6f,0x6e,0x76,0x32,0x64,0x5f,0x33,0x2f,0x64,0x65,0x70,0x74,0x68,0x77,0x69,0x73,0x65,0x3b,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x64,0x65,0x70,0x74,0x68,0x77,0x69,0x73,0x65,0x5f,0x63,0x6f,0x6e,0x76,0x32,0x64,0x5f,0x33,0x2f,0x42,0x69,0x61,0x73,0x41,0x64,0x64,0x2f,0x52,0x65,0x61,0x64,0x56,0x61,0x72,0x69,0x61,0x62,0x6c,0x65,0x4f,0x70,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0xba,0xb8,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x34,0x0,0x0,0x0,0x3e,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0x4c,0x0,0x0,0x0,0xa4,0xb8,0xff,0xff,0x8,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xc5,0x24,0x22,0x3d,0x1d,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x73,0x74,0x72,0x65,0x61,0x6d,0x5f,0x34,0x2f,0x73,0x74,0x72,0x69,0x64,0x65,0x64,0x5f,0x73,0x6c,0x69,0x63,0x65,0x31,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0x32,0xb9,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x34,0x0,0x0,0x0,0x3d,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0x44,0x0,0x0,0x0,0x1c,0xb9,0xff,0xff,0x8,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xc5,0x24,0x22,0x3d,0x15,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x73,0x74,0x72,0x65,0x61,0x6d,0x5f,0x34,0x2f,0x63,0x6f,0x6e,0x63,0x61,0x74,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x15,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0xa2,0xb9,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x30,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0x9c,0x0,0x0,0x0,0x8c,0xb9,0xff,0xff,0x8,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1,0x0,0x0,0x0,0xc5,0x24,0x22,0x3d,0x70,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x61,0x63,0x74,0x69,0x76,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x33,0x2f,0x52,0x65,0x6c,0x75,0x3b,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x62,0x61,0x74,0x63,0x68,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x32,0x2f,0x46,0x75,0x73,0x65,0x64,0x42,0x61,0x74,0x63,0x68,0x4e,0x6f,0x72,0x6d,0x56,0x33,0x3b,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x63,0x6f,0x6e,0x76,0x32,0x64,0x5f,0x34,0x2f,0x43,0x6f,0x6e,0x76,0x32,0x44,0x3b,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x63,0x6f,0x6e,0x76,0x32,0x64,0x5f,0x33,0x2f,0x43,0x6f,0x6e,0x76,0x32,0x44,0x0,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0x6a,0xba,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x30,0x0,0x0,0x0,0x3b,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0xb4,0x0,0x0,0x0,0x54,0xba,0xff,0xff,0x8,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xec,0xb9,0x68,0x3d,0x89,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x64,0x65,0x70,0x74,0x68,0x77,0x69,0x73,0x65,0x5f,0x63,0x6f,0x6e,0x76,0x32,0x64,0x5f,0x32,0x2f,0x42,0x69,0x61,0x73,0x41,0x64,0x64,0x3b,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x63,0x6f,0x6e,0x76,0x32,0x64,0x5f,0x34,0x2f,0x43,0x6f,0x6e,0x76,0x32,0x44,0x3b,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x64,0x65,0x70,0x74,0x68,0x77,0x69,0x73,0x65,0x5f,0x63,0x6f,0x6e,0x76,0x32,0x64,0x5f,0x32,0x2f,0x64,0x65,0x70,0x74,0x68,0x77,0x69,0x73,0x65,0x3b,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x64,0x65,0x70,0x74,0x68,0x77,0x69,0x73,0x65,0x5f,0x63,0x6f,0x6e,0x76,0x32,0x64,0x5f,0x32,0x2f,0x42,0x69,0x61,0x73,0x41,0x64,0x64,0x2f,0x52,0x65,0x61,0x64,0x56,0x61,0x72,0x69,0x61,0x62,0x6c,0x65,0x4f,0x70,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0x4a,0xbb,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x34,0x0,0x0,0x0,0x3a,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0x4c,0x0,0x0,0x0,0x34,0xbb,0xff,0xff,0x8,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x43,0x88,0x30,0x3d,0x1d,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x73,0x74,0x72,0x65,0x61,0x6d,0x5f,0x33,0x2f,0x73,0x74,0x72,0x69,0x64,0x65,0x64,0x5f,0x73,0x6c,0x69,0x63,0x65,0x31,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0xc2,0xbb,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x34,0x0,0x0,0x0,0x39,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0x44,0x0,0x0,0x0,0xac,0xbb,0xff,0xff,0x8,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x43,0x88,0x30,0x3d,0x15,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x73,0x74,0x72,0x65,0x61,0x6d,0x5f,0x33,0x2f,0x63,0x6f,0x6e,0x63,0x61,0x74,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xd,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0x32,0xbc,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x30,0x0,0x0,0x0,0x38,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0x9c,0x0,0x0,0x0,0x1c,0xbc,0xff,0xff,0x8,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1,0x0,0x0,0x0,0x43,0x88,0x30,0x3d,0x70,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x61,0x63,0x74,0x69,0x76,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x32,0x2f,0x52,0x65,0x6c,0x75,0x3b,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x62,0x61,0x74,0x63,0x68,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x31,0x2f,0x46,0x75,0x73,0x65,0x64,0x42,0x61,0x74,0x63,0x68,0x4e,0x6f,0x72,0x6d,0x56,0x33,0x3b,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x63,0x6f,0x6e,0x76,0x32,0x64,0x5f,0x34,0x2f,0x43,0x6f,0x6e,0x76,0x32,0x44,0x3b,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x63,0x6f,0x6e,0x76,0x32,0x64,0x5f,0x32,0x2f,0x43,0x6f,0x6e,0x76,0x32,0x44,0x0,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0xfa,0xbc,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x30,0x0,0x0,0x0,0x37,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0xb4,0x0,0x0,0x0,0xe4,0xbc,0xff,0xff,0x8,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xae,0x2,0x3e,0x3d,0x89,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x64,0x65,0x70,0x74,0x68,0x77,0x69,0x73,0x65,0x5f,0x63,0x6f,0x6e,0x76,0x32,0x64,0x5f,0x31,0x2f,0x42,0x69,0x61,0x73,0x41,0x64,0x64,0x3b,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x63,0x6f,0x6e,0x76,0x32,0x64,0x5f,0x34,0x2f,0x43,0x6f,0x6e,0x76,0x32,0x44,0x3b,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x64,0x65,0x70,0x74,0x68,0x77,0x69,0x73,0x65,0x5f,0x63,0x6f,0x6e,0x76,0x32,0x64,0x5f,0x31,0x2f,0x64,0x65,0x70,0x74,0x68,0x77,0x69,0x73,0x65,0x3b,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x64,0x65,0x70,0x74,0x68,0x77,0x69,0x73,0x65,0x5f,0x63,0x6f,0x6e,0x76,0x32,0x64,0x5f,0x31,0x2f,0x42,0x69,0x61,0x73,0x41,0x64,0x64,0x2f,0x52,0x65,0x61,0x64,0x56,0x61,0x72,0x69,0x61,0x62,0x6c,0x65,0x4f,0x70,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0xda,0xbd,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x34,0x0,0x0,0x0,0x36,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0x4c,0x0,0x0,0x0,0xc4,0xbd,0xff,0xff,0x8,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xc1,0x8c,0x27,0x3d,0x1d,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x73,0x74,0x72,0x65,0x61,0x6d,0x5f,0x32,0x2f,0x73,0x74,0x72,0x69,0x64,0x65,0x64,0x5f,0x73,0x6c,0x69,0x63,0x65,0x31,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0x52,0xbe,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x34,0x0,0x0,0x0,0x35,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0x44,0x0,0x0,0x0,0x3c,0xbe,0xff,0xff,0x8,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xc1,0x8c,0x27,0x3d,0x15,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x73,0x74,0x72,0x65,0x61,0x6d,0x5f,0x32,0x2f,0x63,0x6f,0x6e,0x63,0x61,0x74,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x9,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0xc2,0xbe,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x34,0x0,0x0,0x0,0x34,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0x9c,0x0,0x0,0x0,0xac,0xbe,0xff,0xff,0x8,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xc1,0x8c,0x27,0x3d,0x6e,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x61,0x63,0x74,0x69,0x76,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x31,0x2f,0x52,0x65,0x6c,0x75,0x3b,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x62,0x61,0x74,0x63,0x68,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x61,0x74,0x69,0x6f,0x6e,0x2f,0x46,0x75,0x73,0x65,0x64,0x42,0x61,0x74,0x63,0x68,0x4e,0x6f,0x72,0x6d,0x56,0x33,0x3b,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x63,0x6f,0x6e,0x76,0x32,0x64,0x5f,0x34,0x2f,0x43,0x6f,0x6e,0x76,0x32,0x44,0x3b,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x63,0x6f,0x6e,0x76,0x32,0x64,0x5f,0x31,0x2f,0x43,0x6f,0x6e,0x76,0x32,0x44,0x0,0x0,0x4,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0x8a,0xbf,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x34,0x0,0x0,0x0,0x33,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0x9c,0x0,0x0,0x0,0x74,0xbf,0xff,0xff,0x8,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xf5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xd3,0x46,0xa0,0x3f,0x6d,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x64,0x65,0x70,0x74,0x68,0x77,0x69,0x73,0x65,0x5f,0x63,0x6f,0x6e,0x76,0x32,0x64,0x2f,0x42,0x69,0x61,0x73,0x41,0x64,0x64,0x3b,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x64,0x65,0x70,0x74,0x68,0x77,0x69,0x73,0x65,0x5f,0x63,0x6f,0x6e,0x76,0x32,0x64,0x2f,0x64,0x65,0x70,0x74,0x68,0x77,0x69,0x73,0x65,0x3b,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x64,0x65,0x70,0x74,0x68,0x77,0x69,0x73,0x65,0x5f,0x63,0x6f,0x6e,0x76,0x32,0x64,0x2f,0x42,0x69,0x61,0x73,0x41,0x64,0x64,0x2f,0x52,0x65,0x61,0x64,0x56,0x61,0x72,0x69,0x61,0x62,0x6c,0x65,0x4f,0x70,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0x52,0xc0,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x34,0x0,0x0,0x0,0x32,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0x4c,0x0,0x0,0x0,0x3c,0xc0,0xff,0xff,0x8,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x42,0x2d,0xbf,0x3f,0x1d,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x73,0x74,0x72,0x65,0x61,0x6d,0x5f,0x31,0x2f,0x73,0x74,0x72,0x69,0x64,0x65,0x64,0x5f,0x73,0x6c,0x69,0x63,0x65,0x31,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0xca,0xc0,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x34,0x0,0x0,0x0,0x31,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0x44,0x0,0x0,0x0,0xb4,0xc0,0xff,0xff,0x8,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x42,0x2d,0xbf,0x3f,0x15,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x73,0x74,0x72,0x65,0x61,0x6d,0x5f,0x31,0x2f,0x63,0x6f,0x6e,0x63,0x61,0x74,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x5,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0x3a,0xc1,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x30,0x0,0x0,0x0,0x30,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0x5c,0x0,0x0,0x0,0x24,0xc1,0xff,0xff,0x8,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1,0x0,0x0,0x0,0x42,0x2d,0xbf,0x3f,0x30,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x61,0x63,0x74,0x69,0x76,0x61,0x74,0x69,0x6f,0x6e,0x2f,0x52,0x65,0x6c,0x75,0x3b,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x73,0x74,0x72,0x65,0x61,0x6d,0x2f,0x63,0x6f,0x6e,0x76,0x32,0x64,0x2f,0x43,0x6f,0x6e,0x76,0x32,0x44,0x0,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0xc2,0xc1,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x30,0x0,0x0,0x0,0x2f,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0x44,0x0,0x0,0x0,0xac,0xc1,0xff,0xff,0x8,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1,0x0,0x0,0x0,0xd1,0xd0,0xd0,0x3d,0x1b,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x73,0x74,0x72,0x65,0x61,0x6d,0x2f,0x73,0x74,0x72,0x69,0x64,0x65,0x64,0x5f,0x73,0x6c,0x69,0x63,0x65,0x32,0x0,0x4,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x28,0x0,0x0,0x0,0x32,0xc2,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x30,0x0,0x0,0x0,0x2e,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0x3c,0x0,0x0,0x0,0x1c,0xc2,0xff,0xff,0x8,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1,0x0,0x0,0x0,0xd1,0xd0,0xd0,0x3d,0x13,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x73,0x74,0x72,0x65,0x61,0x6d,0x2f,0x63,0x6f,0x6e,0x63,0x61,0x74,0x0,0x4,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x5,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x28,0x0,0x0,0x0,0x9a,0xc2,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x30,0x0,0x0,0x0,0x2d,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0x4c,0x0,0x0,0x0,0x84,0xc2,0xff,0xff,0x8,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1,0x0,0x0,0x0,0xd1,0xd0,0xd0,0x3d,0x22,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x73,0x74,0x72,0x65,0x61,0x6d,0x2f,0x63,0x6f,0x6e,0x63,0x61,0x74,0x2f,0x52,0x65,0x61,0x64,0x56,0x61,0x72,0x69,0x61,0x62,0x6c,0x65,0x4f,0x70,0x0,0x0,0x4,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x28,0x0,0x0,0x0,0x12,0xc3,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x34,0x0,0x0,0x0,0x2c,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0x54,0x0,0x0,0x0,0xfc,0xc2,0xff,0xff,0x8,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xd0,0x2d,0xe8,0x3c,0x24,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x73,0x74,0x72,0x65,0x61,0x6d,0x5f,0x35,0x2f,0x63,0x6f,0x6e,0x63,0x61,0x74,0x2f,0x52,0x65,0x61,0x64,0x56,0x61,0x72,0x69,0x61,0x62,0x6c,0x65,0x4f,0x70,0x0,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0x92,0xc3,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x34,0x0,0x0,0x0,0x2b,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0x54,0x0,0x0,0x0,0x7c,0xc3,0xff,0xff,0x8,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xc5,0x24,0x22,0x3d,0x24,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x73,0x74,0x72,0x65,0x61,0x6d,0x5f,0x34,0x2f,0x63,0x6f,0x6e,0x63,0x61,0x74,0x2f,0x52,0x65,0x61,0x64,0x56,0x61,0x72,0x69,0x61,0x62,0x6c,0x65,0x4f,0x70,0x0,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0x12,0xc4,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x34,0x0,0x0,0x0,0x2a,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0x54,0x0,0x0,0x0,0xfc,0xc3,0xff,0xff,0x8,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x43,0x88,0x30,0x3d,0x24,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x73,0x74,0x72,0x65,0x61,0x6d,0x5f,0x33,0x2f,0x63,0x6f,0x6e,0x63,0x61,0x74,0x2f,0x52,0x65,0x61,0x64,0x56,0x61,0x72,0x69,0x61,0x62,0x6c,0x65,0x4f,0x70,0x0,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0x92,0xc4,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x34,0x0,0x0,0x0,0x29,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0x54,0x0,0x0,0x0,0x7c,0xc4,0xff,0xff,0x8,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xc1,0x8c,0x27,0x3d,0x24,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x73,0x74,0x72,0x65,0x61,0x6d,0x5f,0x32,0x2f,0x63,0x6f,0x6e,0x63,0x61,0x74,0x2f,0x52,0x65,0x61,0x64,0x56,0x61,0x72,0x69,0x61,0x62,0x6c,0x65,0x4f,0x70,0x0,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0x12,0xc5,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x34,0x0,0x0,0x0,0x28,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0x54,0x0,0x0,0x0,0xfc,0xc4,0xff,0xff,0x8,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x42,0x2d,0xbf,0x3f,0x24,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x73,0x74,0x72,0x65,0x61,0x6d,0x5f,0x31,0x2f,0x63,0x6f,0x6e,0x63,0x61,0x74,0x2f,0x52,0x65,0x61,0x64,0x56,0x61,0x72,0x69,0x61,0x62,0x6c,0x65,0x4f,0x70,0x0,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0x92,0xc5,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x30,0x0,0x0,0x0,0x27,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0x4c,0x0,0x0,0x0,0x7c,0xc5,0xff,0xff,0x8,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1,0x0,0x0,0x0,0xd1,0xd0,0xd0,0x3d,0x20,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x74,0x66,0x2e,0x65,0x78,0x70,0x61,0x6e,0x64,0x5f,0x64,0x69,0x6d,0x73,0x2f,0x45,0x78,0x70,0x61,0x6e,0x64,0x44,0x69,0x6d,0x73,0x31,0x0,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x28,0x0,0x0,0x0,0xfa,0xfe,0xff,0xff,0x14,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x26,0x0,0x0,0x0,0x0,0x0,0x0,0xd,0x1c,0x0,0x0,0x0,0x58,0xc6,0xff,0xff,0xf,0x0,0x0,0x0,0x73,0x74,0x72,0x65,0x61,0x6d,0x5f,0x35,0x2f,0x73,0x74,0x61,0x74,0x65,0x73,0x0,0x0,0x0,0x0,0x0,0x2e,0xff,0xff,0xff,0x14,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x25,0x0,0x0,0x0,0x0,0x0,0x0,0xd,0x1c,0x0,0x0,0x0,0x8c,0xc6,0xff,0xff,0xf,0x0,0x0,0x0,0x73,0x74,0x72,0x65,0x61,0x6d,0x5f,0x34,0x2f,0x73,0x74,0x61,0x74,0x65,0x73,0x0,0x0,0x0,0x0,0x0,0x62,0xff,0xff,0xff,0x14,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x24,0x0,0x0,0x0,0x0,0x0,0x0,0xd,0x1c,0x0,0x0,0x0,0xc0,0xc6,0xff,0xff,0xf,0x0,0x0,0x0,0x73,0x74,0x72,0x65,0x61,0x6d,0x5f,0x33,0x2f,0x73,0x74,0x61,0x74,0x65,0x73,0x0,0x0,0x0,0x0,0x0,0x96,0xff,0xff,0xff,0x14,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x23,0x0,0x0,0x0,0x0,0x0,0x0,0xd,0x1c,0x0,0x0,0x0,0xf4,0xc6,0xff,0xff,0xf,0x0,0x0,0x0,0x73,0x74,0x72,0x65,0x61,0x6d,0x5f,0x32,0x2f,0x73,0x74,0x61,0x74,0x65,0x73,0x0,0x0,0x0,0x0,0x0,0xca,0xff,0xff,0xff,0x14,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x22,0x0,0x0,0x0,0x0,0x0,0x0,0xd,0x1c,0x0,0x0,0x0,0x28,0xc7,0xff,0xff,0xf,0x0,0x0,0x0,0x73,0x74,0x72,0x65,0x61,0x6d,0x5f,0x31,0x2f,0x73,0x74,0x61,0x74,0x65,0x73,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe,0x0,0x18,0x0,0x14,0x0,0x13,0x0,0xc,0x0,0x8,0x0,0x4,0x0,0xe,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x21,0x0,0x0,0x0,0x0,0x0,0x0,0xd,0x1c,0x0,0x0,0x0,0x6c,0xc7,0xff,0xff,0xd,0x0,0x0,0x0,0x73,0x74,0x72,0x65,0x61,0x6d,0x2f,0x73,0x74,0x61,0x74,0x65,0x73,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x52,0xc7,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x90,0x1,0x0,0x0,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0xa4,0x1,0x0,0x0,0x3c,0xc7,0xff,0xff,0x8,0x0,0x0,0x0,0xfc,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0xd9,0x89,0x8b,0x3b,0x61,0x7,0x2a,0x3b,0x9,0x2d,0x8d,0x3b,0x70,0x61,0x90,0x3b,0xb4,0x4d,0x83,0x3b,0x75,0xf7,0x7d,0x3b,0x2b,0xe0,0x81,0x3b,0xbe,0x5e,0x52,0x3b,0xb7,0x13,0x85,0x3b,0xe4,0x78,0x58,0x3b,0x71,0x7e,0x59,0x3b,0x3e,0x4b,0x86,0x3b,0x8e,0xbf,0x38,0x3b,0x5a,0xed,0x59,0x3b,0xf1,0x2e,0x95,0x3b,0xb3,0x6b,0x90,0x3b,0xee,0x57,0x39,0x3b,0x10,0x6b,0x4e,0x3b,0x4e,0x26,0x6c,0x3b,0x5f,0xd6,0x65,0x3b,0x3,0xe5,0x34,0x3b,0xcb,0xeb,0x72,0x3b,0xba,0x97,0x86,0x3b,0xf2,0x78,0x9a,0x3b,0xdf,0x92,0x79,0x3b,0x2a,0x31,0x86,0x3b,0x6a,0x5a,0x78,0x3b,0x34,0x12,0x5b,0x3b,0xe6,0xdb,0x5c,0x3b,0x69,0x32,0x52,0x3b,0x1a,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x73,0x74,0x72,0x65,0x61,0x6d,0x2f,0x63,0x6f,0x6e,0x76,0x32,0x64,0x2f,0x43,0x6f,0x6e,0x76,0x32,0x44,0x0,0x0,0x4,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0x5,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x28,0x0,0x0,0x0,0x22,0xc9,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x90,0x1,0x0,0x0,0x1d,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0xac,0x1,0x0,0x0,0xc,0xc9,0xff,0xff,0x8,0x0,0x0,0x0,0xfc,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0xa4,0xa3,0xe3,0x39,0xb0,0xb0,0x8a,0x39,0x7e,0x4f,0xe6,0x39,0xe0,0x89,0xeb,0x39,0x79,0x34,0xd6,0x39,0x37,0x28,0xcf,0x39,0x26,0xe0,0xd3,0x39,0x93,0x98,0xab,0x39,0x23,0x19,0xd9,0x39,0xcc,0x92,0xb0,0x39,0x24,0x68,0xb1,0x39,0x5a,0x15,0xdb,0x39,0x56,0xb2,0x96,0x39,0x9c,0xc2,0xb1,0x39,0xa7,0x5f,0xf3,0x39,0x9e,0x9a,0xeb,0x39,0xa0,0x2e,0x97,0x39,0x5d,0x5f,0xa8,0x39,0xbf,0x9f,0xc0,0x39,0xa7,0x79,0xbb,0x39,0xa0,0x8d,0x93,0x39,0xbb,0x25,0xc6,0x39,0x21,0x92,0xdb,0x39,0x8a,0x0,0xfc,0x39,0xe8,0x92,0xcb,0x39,0xcf,0xea,0xda,0x39,0xa,0x94,0xca,0x39,0x7c,0xb1,0xb2,0x39,0xd2,0x26,0xb4,0x39,0x6a,0x74,0xab,0x39,0x20,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x64,0x65,0x70,0x74,0x68,0x77,0x69,0x73,0x65,0x5f,0x63,0x6f,0x6e,0x76,0x32,0x64,0x2f,0x64,0x65,0x70,0x74,0x68,0x77,0x69,0x73,0x65,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0xee,0xca,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x94,0x1,0x0,0x0,0x1e,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0xb0,0x1,0x0,0x0,0xfa,0xdb,0xff,0xff,0x3,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0xfc,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0x1f,0x97,0xd7,0x3a,0x4f,0x5c,0xd7,0x3a,0xb8,0xc1,0x37,0x3b,0x31,0x52,0xe9,0x3a,0x16,0x43,0x1a,0x3b,0x2f,0x83,0x1b,0x3b,0xb0,0xaa,0x2b,0x3b,0x3a,0x46,0x3e,0x3b,0x24,0x88,0x14,0x3b,0xda,0x76,0x8,0x3b,0xab,0x9f,0x2d,0x3b,0xb9,0xf2,0x25,0x3b,0xb7,0xb6,0x11,0x3b,0xd3,0x68,0x41,0x3b,0x17,0x5a,0x5a,0x3b,0x31,0x40,0x9,0x3b,0x31,0x89,0x9c,0x3a,0x4d,0x33,0xa2,0x3a,0xab,0xb5,0xaa,0x3a,0x69,0xcc,0x14,0x3b,0xe7,0x49,0x0,0x3b,0x12,0x16,0x19,0x3b,0x26,0xc8,0xf,0x3b,0xc5,0x23,0x25,0x3b,0x34,0xf7,0xc2,0x3a,0xa2,0x8c,0xf1,0x3a,0x9c,0xd6,0x18,0x3b,0x69,0xc6,0x15,0x3b,0xf6,0xcc,0x6d,0x3b,0xa7,0xe3,0x4,0x3b,0x21,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x64,0x65,0x70,0x74,0x68,0x77,0x69,0x73,0x65,0x5f,0x63,0x6f,0x6e,0x76,0x32,0x64,0x2f,0x64,0x65,0x70,0x74,0x68,0x77,0x69,0x73,0x65,0x31,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x5,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0xca,0xcc,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x90,0x1,0x0,0x0,0x1d,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0xb8,0x1,0x0,0x0,0xb4,0xcc,0xff,0xff,0x8,0x0,0x0,0x0,0xfc,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0xdd,0xff,0x20,0x3b,0xf2,0xd3,0x20,0x3b,0x5,0x3a,0x89,0x3b,0x92,0x3d,0x2e,0x3b,0xa6,0x66,0x66,0x3b,0xbc,0x44,0x68,0x3b,0xb3,0x32,0x80,0x3b,0x9,0x18,0x8e,0x3b,0xaa,0xd7,0x5d,0x3b,0x99,0xd1,0x4b,0x3b,0xd2,0xa8,0x81,0x3b,0xdd,0xda,0x77,0x3b,0x2a,0xa2,0x59,0x3b,0x67,0x6f,0x90,0x3b,0xd1,0xf,0xa3,0x3b,0x50,0xfe,0x4c,0x3b,0x10,0xcc,0xe9,0x3a,0xe7,0x41,0xf2,0x3a,0x71,0xf7,0xfe,0x3a,0xa1,0x3d,0x5e,0x3b,0xa3,0x9b,0x3f,0x3b,0x10,0xa5,0x64,0x3b,0x7f,0xbf,0x56,0x3b,0xc4,0xa5,0x76,0x3b,0xe8,0x98,0x11,0x3b,0xa1,0x62,0x34,0x3b,0x47,0x46,0x64,0x3b,0x6,0xb3,0x5f,0x3b,0xf6,0x95,0xb1,0x3b,0xb0,0x7a,0x46,0x3b,0x2d,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x64,0x65,0x70,0x74,0x68,0x77,0x69,0x73,0x65,0x5f,0x63,0x6f,0x6e,0x76,0x32,0x64,0x2f,0x42,0x69,0x61,0x73,0x41,0x64,0x64,0x2f,0x52,0x65,0x61,0x64,0x56,0x61,0x72,0x69,0x61,0x62,0x6c,0x65,0x4f,0x70,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0xa2,0xce,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0xf4,0x2,0x0,0x0,0x1c,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0x4,0x3,0x0,0x0,0x8c,0xce,0xff,0xff,0x8,0x0,0x0,0x0,0xe8,0x1,0x0,0x0,0x3c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0x87,0x15,0xad,0x39,0xf3,0xb9,0x9b,0x39,0xe3,0x7c,0x9c,0x39,0x3a,0x24,0x99,0x39,0xac,0x4d,0xb7,0x39,0x61,0x6b,0xb6,0x39,0x68,0x28,0x6c,0x39,0x86,0xe7,0x46,0x39,0x17,0xa,0x2b,0x39,0x95,0x10,0x1e,0x3a,0x52,0x3d,0x9f,0x39,0x30,0x5d,0x99,0x39,0x55,0x76,0x9e,0x39,0xeb,0xcb,0x81,0x39,0xad,0xec,0x5b,0x39,0xae,0x4f,0x5f,0x39,0xf8,0x6c,0xa1,0x39,0x9b,0x66,0xb5,0x39,0xb4,0xe,0xbf,0x39,0x77,0xe2,0x87,0x39,0x80,0x1,0x9a,0x39,0x8,0xc7,0x2f,0x39,0xac,0xb2,0x8c,0x39,0x10,0x27,0xa1,0x39,0xea,0x19,0xdb,0x39,0xc5,0x23,0xb7,0x39,0xd5,0x2f,0x9a,0x39,0xcc,0x98,0x8d,0x39,0x72,0xcb,0x6c,0x39,0x4b,0x61,0x9b,0x39,0x13,0x78,0xb1,0x39,0xc,0xc7,0x87,0x39,0x66,0x64,0x82,0x39,0x70,0xd6,0x98,0x39,0x42,0x13,0x88,0x39,0x77,0x32,0xdd,0x39,0x27,0xb7,0xdb,0x39,0xad,0x77,0x8e,0x39,0xad,0xbc,0x5d,0x39,0x5e,0xbb,0x0,0x3a,0x42,0x9,0xd1,0x39,0xb9,0x6f,0x1,0x3a,0x58,0x2a,0x81,0x39,0xb5,0xf2,0x88,0x39,0x3e,0x37,0x8d,0x39,0x79,0x65,0xc7,0x39,0xb3,0xcb,0x3f,0x39,0x38,0x52,0xb4,0x39,0x27,0x24,0x84,0x39,0x8c,0x70,0xaa,0x39,0xde,0x37,0x30,0x39,0xfb,0xe4,0x91,0x39,0xb4,0x4b,0xbd,0x39,0x10,0x40,0x93,0x39,0x63,0x8e,0xf9,0x39,0xb0,0x3e,0x8e,0x39,0x25,0xcc,0xc8,0x39,0x8d,0xe,0x54,0x39,0x5e,0xa9,0xa0,0x39,0x82,0xa3,0x6a,0x39,0x15,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x63,0x6f,0x6e,0x76,0x32,0x64,0x5f,0x31,0x2f,0x43,0x6f,0x6e,0x76,0x32,0x44,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0xd2,0xd1,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0xf8,0x2,0x0,0x0,0x1b,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x1c,0x3,0x0,0x0,0xbc,0xd1,0xff,0xff,0x8,0x0,0x0,0x0,0xec,0x1,0x0,0x0,0x3c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0xae,0xba,0xd8,0x39,0x9a,0xfe,0xc2,0x39,0xb2,0xf2,0xc3,0x39,0x5,0xc2,0xbf,0x39,0x84,0x86,0xe5,0x39,0x29,0x6b,0xe4,0x39,0x97,0xda,0x93,0x39,0x76,0xf,0x79,0x39,0x40,0x2b,0x56,0x39,0x30,0xec,0x45,0x3a,0xc3,0x64,0xc7,0x39,0x58,0x9,0xc0,0x39,0x98,0x6b,0xc6,0x39,0xb7,0x86,0xa2,0x39,0xc4,0xb0,0x89,0x39,0x95,0xcf,0x8b,0x39,0x88,0x21,0xca,0x39,0xa1,0x24,0xe3,0x39,0x18,0x3c,0xef,0x39,0x45,0x26,0xaa,0x39,0x17,0xd7,0xc0,0x39,0xd,0x1a,0x5c,0x39,0x31,0x2d,0xb0,0x39,0xff,0xc9,0xc9,0x39,0xd0,0x2c,0x9,0x3a,0xc,0x52,0xe5,0x39,0x1b,0x11,0xc1,0x39,0x58,0x4d,0xb1,0x39,0xaa,0x40,0x94,0x39,0x97,0x8f,0xc2,0x39,0x4a,0x38,0xde,0x39,0xf0,0x3,0xaa,0x39,0xa5,0x45,0xa3,0x39,0x9d,0x60,0xbf,0x39,0x5d,0x63,0xaa,0x39,0xbc,0x7c,0xa,0x3a,0x42,0x8f,0x9,0x3a,0x6d,0x64,0xb2,0x39,0x44,0xd3,0x8a,0x39,0x70,0x31,0x21,0x3a,0x9e,0xdf,0x2,0x3a,0x46,0x13,0x22,0x3a,0x66,0xbc,0xa1,0x39,0x29,0x7b,0xab,0x39,0x30,0xd3,0xb0,0x39,0x2b,0xad,0xf9,0x39,0xbf,0x28,0x70,0x39,0x8c,0xca,0xe1,0x39,0x4e,0x76,0xa5,0x39,0xfe,0x6a,0xd5,0x39,0x57,0xa7,0x5c,0x39,0xf3,0xae,0xb6,0x39,0x5e,0x7,0xed,0x39,0x8e,0x61,0xb8,0x39,0x8,0x3e,0x1c,0x3a,0x11,0x1d,0xb2,0x39,0x49,0x6e,0xfb,0x39,0xc3,0xc3,0x84,0x39,0x9b,0x2c,0xc9,0x39,0x1b,0xe7,0x92,0x39,0x2a,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x62,0x61,0x74,0x63,0x68,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x61,0x74,0x69,0x6f,0x6e,0x2f,0x46,0x75,0x73,0x65,0x64,0x42,0x61,0x74,0x63,0x68,0x4e,0x6f,0x72,0x6d,0x56,0x33,0x0,0x0,0x1,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0xe,0xd5,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0xfc,0x2,0x0,0x0,0x1a,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0x18,0x3,0x0,0x0,0x1a,0xe6,0xff,0xff,0x3,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0xec,0x1,0x0,0x0,0x3c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0x98,0xcd,0x0,0x3b,0xfe,0x46,0xc,0x3b,0x71,0x7,0x26,0x3b,0x25,0xe5,0x38,0x3b,0xd3,0x22,0xe,0x3b,0x82,0xcc,0x30,0x3b,0x2a,0xda,0x31,0x3b,0x25,0x92,0xa7,0x3a,0xb7,0x7f,0x11,0x3b,0x2e,0xb7,0x20,0x3b,0xc,0x99,0xf,0x3b,0xb6,0x55,0x2f,0x3b,0x90,0xd6,0xf9,0x3a,0xea,0x8,0xa9,0x3a,0x42,0x56,0x23,0x3b,0xf9,0x2f,0x22,0x3b,0xbb,0xfc,0xe4,0x3a,0x13,0xf5,0x6,0x3b,0x2d,0xd6,0xf7,0x3a,0xda,0x6f,0x19,0x3b,0x5,0x3,0x46,0x3b,0xae,0x4f,0x12,0x3b,0xe7,0x48,0xea,0x3a,0x9b,0xaa,0x4f,0x3b,0x97,0x7f,0xf9,0x3a,0x2b,0xc0,0xda,0x3a,0xd3,0xf2,0x3,0x3b,0xae,0x8d,0xe3,0x3a,0xe6,0x99,0x9,0x3b,0xce,0x6,0xf3,0x3a,0x7a,0xc6,0x44,0x3b,0xdc,0x7e,0x75,0x3b,0x22,0xe7,0xee,0x3a,0x5b,0xbb,0x1f,0x3b,0x51,0x38,0xa,0x3b,0x7b,0x5e,0x8,0x3b,0x27,0x32,0x2f,0x3b,0xfc,0x88,0xe9,0x3a,0x79,0x77,0x11,0x3b,0x24,0x45,0x4d,0x3b,0x4b,0xf5,0x29,0x3b,0x41,0xe2,0x0,0x3b,0x9e,0xa1,0x28,0x3b,0x77,0x90,0xf0,0x3a,0x93,0x55,0x17,0x3b,0x38,0xf1,0x12,0x3b,0xfc,0x3,0x2f,0x3b,0x7a,0x6b,0xa7,0x3a,0x26,0x46,0x0,0x3b,0x55,0xfa,0xee,0x3a,0x6f,0x2e,0xc0,0x3a,0x72,0xaa,0x54,0x3b,0x90,0x86,0x88,0x3b,0x4a,0x98,0x0,0x3b,0xf4,0x9d,0x41,0x3b,0x15,0x7f,0x5d,0x3b,0xa,0xec,0xe,0x3b,0xac,0x85,0xac,0x3a,0xc2,0x35,0x39,0x3b,0x4c,0x93,0x9,0x3b,0x22,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x64,0x65,0x70,0x74,0x68,0x77,0x69,0x73,0x65,0x5f,0x63,0x6f,0x6e,0x76,0x32,0x64,0x5f,0x31,0x2f,0x64,0x65,0x70,0x74,0x68,0x77,0x69,0x73,0x65,0x0,0x0,0x4,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x9,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0x52,0xd8,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0xf8,0x2,0x0,0x0,0x19,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x20,0x3,0x0,0x0,0x3c,0xd8,0xff,0xff,0x8,0x0,0x0,0x0,0xec,0x1,0x0,0x0,0x3c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0xdf,0x99,0xa8,0x38,0xe1,0x9e,0xb7,0x38,0x48,0x54,0xd9,0x38,0x48,0x6,0xf2,0x38,0xbc,0xd,0xba,0x38,0x3c,0x6d,0xe7,0x38,0x36,0xce,0xe8,0x38,0xf1,0x58,0x5b,0x38,0xa0,0x74,0xbe,0x38,0xb9,0x5f,0xd2,0x38,0x96,0xf7,0xbb,0x38,0xa2,0x82,0xe5,0x38,0x56,0x84,0xa3,0x38,0x82,0x43,0x5d,0x38,0x27,0xce,0xd5,0x38,0xf0,0x4c,0xd4,0x38,0xc5,0xde,0x95,0x38,0x26,0xa8,0xb0,0x38,0xfb,0x34,0xa2,0x38,0xa8,0xd8,0xc8,0x38,0xd7,0x98,0x1,0x39,0xd9,0x84,0xbf,0x38,0x5f,0x56,0x99,0x38,0x79,0xea,0x7,0x39,0x69,0x4b,0xa3,0x38,0xa2,0x2b,0x8f,0x38,0xe8,0xb7,0xac,0x38,0x8a,0xee,0x94,0x38,0x1a,0x1e,0xb4,0x38,0xf,0xf,0x9f,0x38,0xaa,0xc9,0x0,0x39,0xbc,0xac,0x20,0x39,0x22,0x5c,0x9c,0x38,0x16,0x16,0xd1,0x38,0x78,0xed,0xb4,0x38,0x39,0x81,0xb2,0x38,0x16,0x54,0xe5,0x38,0xc3,0xd8,0x98,0x38,0xd6,0x69,0xbe,0x38,0xf7,0x58,0x6,0x39,0xec,0x78,0xde,0x38,0xeb,0xb4,0xa8,0x38,0x4b,0xbc,0xdc,0x38,0x82,0x72,0x9d,0x38,0x10,0x18,0xc6,0x38,0x4c,0x58,0xc0,0x38,0xa7,0x17,0xe5,0x38,0x53,0x26,0x5b,0x38,0x94,0xe8,0xa7,0x38,0xb3,0x68,0x9c,0x38,0xe9,0x8f,0x7b,0x38,0x1e,0x30,0xb,0x39,0xb1,0xb5,0x32,0x39,0x19,0x54,0xa8,0x38,0xfd,0x70,0xfd,0x38,0xaf,0xf7,0x10,0x39,0x1f,0x15,0xbb,0x38,0x1d,0xd4,0x61,0x38,0xcd,0x6f,0xf2,0x38,0x76,0x15,0xb4,0x38,0x2f,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x64,0x65,0x70,0x74,0x68,0x77,0x69,0x73,0x65,0x5f,0x63,0x6f,0x6e,0x76,0x32,0x64,0x5f,0x31,0x2f,0x42,0x69,0x61,0x73,0x41,0x64,0x64,0x2f,0x52,0x65,0x61,0x64,0x56,0x61,0x72,0x69,0x61,0x62,0x6c,0x65,0x4f,0x70,0x0,0x1,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0x92,0xdb,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0xf4,0x2,0x0,0x0,0x18,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0x4,0x3,0x0,0x0,0x7c,0xdb,0xff,0xff,0x8,0x0,0x0,0x0,0xe8,0x1,0x0,0x0,0x3c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0x6e,0x86,0xa3,0x3b,0xe1,0x61,0xe6,0x3b,0x3d,0x8a,0xe,0x3c,0x30,0x3b,0xad,0x3b,0x3b,0x4e,0xe5,0x3b,0x2f,0x5f,0x77,0x3b,0x8f,0x8f,0xd,0x3c,0xf8,0xcc,0xa0,0x3b,0xcb,0xd4,0xbe,0x3b,0xd2,0xd8,0xa0,0x3b,0xa5,0x2,0xa4,0x3b,0x4c,0x75,0x3e,0x3b,0x63,0x44,0xb1,0x3b,0x74,0xb1,0x95,0x3b,0x58,0x30,0x9b,0x3b,0xc7,0x2f,0xcd,0x3b,0x4b,0x78,0xaf,0x3b,0xb8,0xd7,0xb4,0x3b,0xb5,0xf0,0x65,0x3b,0x5a,0x35,0xb2,0x3b,0xfb,0x46,0xa6,0x3b,0xb9,0x98,0xb3,0x3b,0x35,0xeb,0xa0,0x3b,0xf5,0x4,0xa0,0x3b,0x12,0xf6,0xb2,0x3b,0x95,0xf2,0xa0,0x3b,0xef,0x1c,0x99,0x3b,0x96,0x57,0x1,0x3c,0xc9,0x36,0x98,0x3b,0xbb,0x45,0xa5,0x3b,0xf1,0xe3,0x71,0x3b,0xc3,0x8,0x47,0x3b,0x82,0x62,0x95,0x3b,0x8b,0xc4,0xdd,0x3b,0x8,0xd,0xa7,0x3b,0xa,0x8f,0x9c,0x3b,0xb1,0xf9,0x7b,0x3b,0x65,0xe9,0x91,0x3b,0x43,0xa9,0x9c,0x3b,0x8a,0x5a,0x6,0x3c,0xe,0x70,0xcc,0x3b,0xd8,0x2b,0xa8,0x3b,0xf0,0xb7,0xd6,0x3b,0xbc,0x63,0xe5,0x3b,0x56,0x44,0xe2,0x3b,0x12,0xee,0xc3,0x3b,0xa9,0xd2,0xa5,0x3b,0x6e,0x61,0xb3,0x3b,0x2b,0xc2,0x9e,0x3b,0xa2,0xbf,0x5a,0x3b,0x2d,0x94,0x95,0x3b,0xa3,0x86,0xac,0x3b,0xf5,0x2f,0xc3,0x3b,0xf,0xc2,0xc0,0x3b,0xa8,0xc1,0x9a,0x3b,0xd2,0x53,0xa8,0x3b,0xa1,0xc6,0xa9,0x3b,0x92,0x99,0x91,0x3b,0x63,0x11,0x7b,0x3b,0xd,0xbb,0xfa,0x3b,0x15,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x63,0x6f,0x6e,0x76,0x32,0x64,0x5f,0x32,0x2f,0x43,0x6f,0x6e,0x76,0x32,0x44,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0xc2,0xde,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0xf4,0x2,0x0,0x0,0x17,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x1c,0x3,0x0,0x0,0xac,0xde,0xff,0xff,0x8,0x0,0x0,0x0,0xe8,0x1,0x0,0x0,0x3c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0xf8,0xbe,0x72,0x39,0xe,0xff,0xaa,0x39,0x2e,0x98,0xd3,0x39,0xbe,0x93,0x80,0x39,0x76,0x32,0xaa,0x39,0x3c,0x9b,0x37,0x39,0xf,0x24,0xd2,0x39,0x9e,0xb3,0x6e,0x39,0xee,0xa3,0x8d,0x39,0x36,0xc5,0x6e,0x39,0x5c,0x77,0x73,0x39,0xd,0x5d,0xd,0x39,0x9c,0x92,0x83,0x39,0x8a,0x36,0x5e,0x39,0x2,0x5f,0x66,0x39,0x9c,0x4b,0x98,0x39,0x1e,0x3d,0x82,0x39,0xff,0x39,0x86,0x39,0xf,0xab,0x2a,0x39,0x76,0x45,0x84,0x39,0xd8,0xd4,0x76,0x39,0x3b,0x4d,0x85,0x39,0x81,0xe0,0x6e,0x39,0xb5,0x8a,0x6d,0x39,0x81,0xd4,0x84,0x39,0x74,0xeb,0x6e,0x39,0x27,0x4a,0x63,0x39,0xb8,0x0,0xc0,0x39,0x82,0xf4,0x61,0x39,0xf7,0x56,0x75,0x39,0xb5,0x89,0x33,0x39,0x96,0xba,0x13,0x39,0x5a,0xc1,0x5d,0x39,0x31,0x9a,0xa4,0x39,0xd7,0xfa,0x77,0x39,0x9a,0x67,0x68,0x39,0xf5,0x5,0x3b,0x39,0x80,0x99,0x58,0x39,0x87,0x8e,0x68,0x39,0x35,0x71,0xc7,0x39,0x4e,0xbd,0x97,0x39,0x9a,0xa4,0x79,0x39,0xc4,0x5e,0x9f,0x39,0x6c,0x42,0xaa,0x39,0x16,0xf1,0xa7,0x39,0xbe,0x6c,0x91,0x39,0x2c,0x28,0x76,0x39,0x30,0x24,0x85,0x39,0x8b,0xab,0x6b,0x39,0x84,0x5c,0x22,0x39,0x14,0xb,0x5e,0x39,0xbb,0xd,0x80,0x39,0xa3,0xdf,0x90,0x39,0xc,0x12,0x8f,0x39,0xb3,0xba,0x65,0x39,0xf2,0xdf,0x79,0x39,0x65,0x6,0x7c,0x39,0x1,0x23,0x58,0x39,0x88,0x59,0x3a,0x39,0x74,0x19,0xba,0x39,0x2c,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x62,0x61,0x74,0x63,0x68,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x31,0x2f,0x46,0x75,0x73,0x65,0x64,0x42,0x61,0x74,0x63,0x68,0x4e,0x6f,0x72,0x6d,0x56,0x33,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0xfe,0xe1,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0xfc,0x2,0x0,0x0,0x16,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0x18,0x3,0x0,0x0,0xa,0xf3,0xff,0xff,0x3,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0xec,0x1,0x0,0x0,0x3c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0x69,0x29,0x5f,0x3b,0xf0,0xe6,0x1a,0x3b,0x59,0xfb,0x13,0x3b,0x54,0x64,0xae,0x3a,0x39,0x2f,0x2a,0x3b,0x7a,0xb5,0xeb,0x3a,0x91,0x2a,0x2,0x3b,0xe9,0x41,0xf6,0x3a,0x48,0x1e,0xa4,0x3a,0xe9,0x82,0xf8,0x3a,0xe0,0xe3,0x9b,0x3a,0xc1,0x92,0x97,0x3a,0xaf,0x14,0x4,0x3b,0xca,0x8e,0xb1,0x3a,0xf5,0x62,0x8,0x3b,0x8c,0x18,0x50,0x3b,0xf9,0xea,0xf,0x3b,0x84,0xc4,0xdf,0x3a,0x81,0x51,0xe,0x3b,0x6,0x5,0x72,0x3a,0x8d,0x98,0xbe,0x3a,0xbd,0xfe,0x14,0x3b,0xaf,0x65,0x3e,0x3b,0x84,0xc8,0x54,0x3b,0xf,0x2c,0x15,0x3b,0xef,0x6e,0x17,0x3b,0x50,0x99,0xf2,0x3a,0x5,0x58,0x32,0x3b,0x89,0xc0,0xd4,0x3a,0xf9,0x89,0x0,0x3b,0x28,0x40,0xde,0x3a,0xfa,0x98,0xca,0x3a,0x1f,0xa3,0x13,0x3b,0x61,0x17,0x11,0x3b,0x33,0xe9,0xa6,0x3b,0xb7,0x2b,0x15,0x3b,0xf9,0x4e,0xb2,0x3a,0x8,0xf0,0x14,0x3b,0xa1,0x8f,0xae,0x3a,0xb5,0x33,0x2d,0x3b,0x4b,0xb0,0x84,0x3b,0x26,0x35,0x39,0x3b,0x34,0xb,0xe,0x3b,0x35,0x58,0x4d,0x3b,0xc8,0xb3,0x39,0x3b,0x75,0xc6,0xdb,0x3a,0x25,0x9c,0x41,0x3b,0xd,0x60,0x2e,0x3b,0x76,0x39,0xef,0x3a,0xa3,0xb8,0xdb,0x3a,0xee,0x4f,0x1d,0x3b,0x92,0xf5,0xd2,0x3a,0x3e,0xff,0xe0,0x3a,0xd2,0x3,0xb5,0x3a,0x80,0xc5,0xe4,0x3a,0x64,0x8e,0xb6,0x3a,0x38,0x57,0x5d,0x3b,0x39,0x5a,0xca,0x3a,0x1c,0xf0,0x94,0x3a,0x3a,0x9f,0x22,0x3b,0x22,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x64,0x65,0x70,0x74,0x68,0x77,0x69,0x73,0x65,0x5f,0x63,0x6f,0x6e,0x76,0x32,0x64,0x5f,0x32,0x2f,0x64,0x65,0x70,0x74,0x68,0x77,0x69,0x73,0x65,0x0,0x0,0x4,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xd,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0x42,0xe5,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0xf8,0x2,0x0,0x0,0x15,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x20,0x3,0x0,0x0,0x2c,0xe5,0xff,0xff,0x8,0x0,0x0,0x0,0xec,0x1,0x0,0x0,0x3c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0x41,0xe3,0x19,0x39,0x70,0xa2,0xd5,0x38,0x23,0x17,0xcc,0x38,0x99,0x83,0x70,0x38,0x1a,0xb6,0xea,0x38,0x3a,0x8a,0xa2,0x38,0x19,0x85,0xb3,0x38,0x64,0xd0,0xa9,0x38,0x59,0x58,0x62,0x38,0x47,0x5e,0xab,0x38,0x48,0xff,0x56,0x38,0x25,0xb,0x51,0x38,0xc,0x29,0xb6,0x38,0x5a,0xe1,0x74,0x38,0x41,0x19,0xbc,0x38,0xa4,0x7f,0xf,0x39,0x4b,0x7c,0xc6,0x38,0x36,0x4e,0x9a,0x38,0x92,0x47,0xc4,0x38,0x46,0xe4,0x26,0x38,0x54,0x6e,0x83,0x38,0xe1,0x7c,0xcd,0x38,0x40,0x4b,0x3,0x39,0x1d,0xbb,0x12,0x39,0x62,0xbb,0xcd,0x38,0xbe,0xd9,0xd0,0x38,0x88,0x4a,0xa7,0x38,0xe2,0xf6,0xf5,0x38,0x9c,0xb5,0x92,0x38,0x8c,0x46,0xb1,0x38,0x68,0x42,0x99,0x38,0x2,0xb5,0x8b,0x38,0x75,0x9d,0xcb,0x38,0x9a,0x1a,0xc8,0x38,0x55,0x32,0x66,0x39,0xe8,0xba,0xcd,0x38,0x68,0xea,0x75,0x38,0x98,0x68,0xcd,0x38,0x51,0xbf,0x70,0x38,0x7a,0xdf,0xee,0x38,0xa8,0xff,0x36,0x39,0x3e,0x6e,0xff,0x38,0x9e,0xe6,0xc3,0x38,0xf1,0x99,0xd,0x39,0x72,0xe,0x0,0x39,0x6b,0x8d,0x97,0x38,0x67,0x82,0x5,0x39,0xb3,0x7d,0xf0,0x38,0xd6,0xf6,0xa4,0x38,0xe4,0x83,0x97,0x38,0x5f,0xf5,0xd8,0x38,0x1e,0x79,0x91,0x38,0x3d,0x27,0x9b,0x38,0xf4,0xa5,0x79,0x38,0x8d,0xc1,0x9d,0x38,0x20,0xc6,0x7b,0x38,0xc7,0xa1,0x18,0x39,0xbc,0x89,0x8b,0x38,0xb4,0x68,0x4d,0x38,0xe,0x48,0xe0,0x38,0x2f,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x64,0x65,0x70,0x74,0x68,0x77,0x69,0x73,0x65,0x5f,0x63,0x6f,0x6e,0x76,0x32,0x64,0x5f,0x32,0x2f,0x42,0x69,0x61,0x73,0x41,0x64,0x64,0x2f,0x52,0x65,0x61,0x64,0x56,0x61,0x72,0x69,0x61,0x62,0x6c,0x65,0x4f,0x70,0x0,0x1,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0x82,0xe8,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0xf4,0x2,0x0,0x0,0x14,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0x4,0x3,0x0,0x0,0x6c,0xe8,0xff,0xff,0x8,0x0,0x0,0x0,0xe8,0x1,0x0,0x0,0x3c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0x57,0x30,0x8b,0x3b,0x5a,0xf0,0xf,0x3b,0x5e,0x4f,0x67,0x3b,0x89,0x57,0x3a,0x3b,0xd0,0xac,0x88,0x3b,0xd,0x9,0x62,0x3b,0x4e,0x69,0x5f,0x3b,0xff,0x3e,0xc6,0x3b,0xfc,0x21,0x46,0x3b,0x39,0xea,0x1e,0x3b,0x8,0xe6,0x98,0x3b,0x34,0xef,0x69,0x3b,0x5d,0x48,0x4d,0x3b,0x37,0x24,0x7a,0x3b,0xf1,0xbd,0x5e,0x3b,0xee,0x6c,0x68,0x3b,0x53,0x1e,0x7d,0x3b,0xad,0x6f,0x26,0x3b,0x7f,0xe,0x4f,0x3b,0x9d,0x54,0x7d,0x3b,0x10,0x19,0x2c,0x3b,0x35,0x54,0x9a,0x3b,0xdd,0x75,0xc,0x3b,0x81,0xd2,0x46,0x3b,0xda,0xcb,0x4,0x3c,0x4,0xb0,0x58,0x3b,0x6a,0x4d,0x95,0x3a,0xef,0x2e,0x91,0x3b,0xcd,0x77,0x74,0x3b,0x5d,0xc6,0x81,0x3b,0xbc,0x2d,0x47,0x3b,0x9e,0xde,0x9e,0x3b,0xb8,0xfd,0x3c,0x3b,0x94,0xa9,0x79,0x3b,0xb1,0x47,0x6e,0x3b,0x69,0x6e,0x4d,0x3b,0x16,0x1,0x62,0x3b,0x11,0xa1,0xa7,0x3b,0xe,0xc7,0x66,0x3b,0x30,0xf3,0x64,0x3b,0x2f,0xba,0x4c,0x3b,0xfa,0x9b,0xb0,0x3b,0x9f,0x13,0x8b,0x3b,0x18,0x31,0x4d,0x3b,0xa8,0x9a,0x0,0x3b,0xff,0x1a,0x5e,0x3b,0x37,0x28,0xc0,0x3b,0x9e,0xd0,0x69,0x3b,0xcf,0x4a,0x95,0x3b,0x50,0x85,0x71,0x3b,0x19,0x7f,0x68,0x3b,0xb0,0xbc,0x64,0x3b,0xfa,0x7b,0x6a,0x3b,0x30,0xd2,0x7e,0x3b,0x28,0x67,0x68,0x3b,0x3c,0x23,0x90,0x3b,0x8b,0x5,0x14,0x3b,0x97,0x93,0xa8,0x3b,0x9a,0x72,0x6c,0x3b,0x49,0x16,0x68,0x3b,0x15,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x63,0x6f,0x6e,0x76,0x32,0x64,0x5f,0x33,0x2f,0x43,0x6f,0x6e,0x76,0x32,0x44,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0xb2,0xeb,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0xf8,0x2,0x0,0x0,0x13,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x20,0x3,0x0,0x0,0x9c,0xeb,0xff,0xff,0x8,0x0,0x0,0x0,0xec,0x1,0x0,0x0,0x3c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0xca,0x11,0x7d,0x39,0x5b,0xda,0x2,0x39,0xeb,0x47,0x52,0x39,0xa9,0x66,0x29,0x39,0xbf,0x7f,0x78,0x39,0x5d,0x7c,0x4d,0x39,0xb0,0x19,0x4b,0x39,0x11,0x39,0xb4,0x39,0xb2,0x1e,0x34,0x39,0xad,0x77,0x10,0x39,0x82,0xff,0x8a,0x39,0xad,0xaa,0x54,0x39,0xab,0x9e,0x3a,0x39,0x7d,0x66,0x63,0x39,0xe7,0x7d,0x4a,0x39,0x85,0x4b,0x53,0x39,0x4f,0x1b,0x66,0x39,0x15,0x4e,0x17,0x39,0x83,0x3b,0x3c,0x39,0xaa,0x4c,0x66,0x39,0xb3,0x73,0x1c,0x39,0x65,0x4c,0x8c,0x39,0xa6,0x61,0xff,0x38,0x2a,0xbf,0x34,0x39,0x5f,0x72,0xf1,0x39,0xe3,0xfc,0x44,0x39,0x97,0xba,0x87,0x38,0xf9,0xfb,0x83,0x39,0x1e,0x3e,0x5e,0x39,0x9,0xf4,0x6b,0x39,0x1a,0x12,0x35,0x39,0x21,0x6d,0x90,0x39,0x30,0xcf,0x2b,0x39,0x0,0xf7,0x62,0x39,0x6,0x9e,0x58,0x39,0x41,0xc1,0x3a,0x39,0x1f,0x75,0x4d,0x39,0xb5,0x63,0x98,0x39,0xff,0xcb,0x51,0x39,0xaa,0x22,0x50,0x39,0x6a,0x1d,0x3a,0x39,0x9e,0x8d,0xa0,0x39,0x93,0xdd,0x7c,0x39,0x83,0x89,0x3a,0x39,0x1d,0xd3,0xe9,0x38,0xc5,0xe9,0x49,0x39,0x0,0xb0,0xae,0x39,0xde,0x8e,0x54,0x39,0x38,0xb8,0x87,0x39,0x38,0x90,0x5b,0x39,0x9,0x5c,0x53,0x39,0x1f,0xf1,0x4f,0x39,0xa6,0x2a,0x55,0x39,0x8c,0xa7,0x67,0x39,0x45,0x46,0x53,0x39,0x9d,0x8,0x83,0x39,0x86,0x90,0x6,0x39,0x2f,0x40,0x99,0x39,0x94,0xf3,0x56,0x39,0xc0,0xfc,0x52,0x39,0x2c,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x62,0x61,0x74,0x63,0x68,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x32,0x2f,0x46,0x75,0x73,0x65,0x64,0x42,0x61,0x74,0x63,0x68,0x4e,0x6f,0x72,0x6d,0x56,0x33,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0xf2,0xee,0xff,0xff,0x0,0x0,0x0,0x1,0x28,0x0,0x0,0x0,0x10,0x3,0x0,0x0,0x12,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0x2c,0x3,0x0,0x0,0x0,0x0,0x12,0x0,0x10,0x0,0x0,0x0,0x0,0x0,0xc,0x0,0x8,0x0,0x0,0x0,0x0,0x0,0x4,0x0,0x12,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0xec,0x1,0x0,0x0,0x3c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0x39,0xa3,0x1f,0x3b,0x23,0x21,0x2,0x3b,0x1e,0xee,0x43,0x3b,0x2,0x79,0xf7,0x3a,0x0,0x50,0xd6,0x3a,0xcc,0xe,0x25,0x3b,0x83,0xa6,0xd3,0x3a,0xa1,0xde,0xf4,0x3a,0xd3,0x91,0xd1,0x3a,0x18,0x0,0x8c,0x3a,0x74,0x3c,0x13,0x3b,0xe6,0x90,0x45,0x3b,0xc3,0x55,0xf2,0x3a,0x81,0xf3,0xb6,0x3a,0xd8,0x71,0x7,0x3b,0x57,0xdb,0x21,0x3b,0xcd,0xd8,0x11,0x3b,0xf4,0x1d,0x66,0x3b,0xf8,0x2,0xc7,0x3a,0xe9,0xd3,0x42,0x3b,0xf9,0x3d,0xab,0x3a,0xc3,0x35,0x10,0x3b,0x29,0x61,0x83,0x3a,0xec,0xe9,0x61,0x3b,0xa3,0x55,0x73,0x3b,0xd5,0xb2,0x9,0x3b,0x5f,0xd2,0x83,0x3a,0xc4,0x31,0x58,0x3b,0x84,0x4d,0x9e,0x3a,0x18,0xb3,0x11,0x3b,0x5,0x47,0xb,0x3b,0x7f,0xca,0x18,0x3b,0xd6,0xfa,0x87,0x3a,0x7e,0x25,0xc3,0x3a,0x39,0x2,0x1e,0x3b,0x5e,0xe3,0x28,0x3b,0x1d,0x9c,0xd6,0x3a,0x86,0xa8,0xe,0x3b,0x52,0x9a,0x4,0x3b,0x37,0x58,0x31,0x3b,0x0,0xab,0xa1,0x3a,0x78,0xa9,0x5a,0x3b,0x63,0x2c,0x40,0x3b,0x24,0x8,0xf8,0x3a,0x5a,0xa8,0x75,0x3a,0xc7,0x6d,0x22,0x3b,0xba,0x4a,0x3b,0x3b,0x21,0xf6,0xe4,0x3a,0x67,0xb0,0xd4,0x3a,0x87,0xc8,0xfe,0x3a,0xff,0x6,0x54,0x3b,0x7c,0xf6,0x9,0x3b,0x20,0x46,0x71,0x3b,0x7f,0xc8,0x3,0x3b,0xd5,0x8f,0x20,0x3b,0x54,0xef,0x1f,0x3b,0x95,0x27,0x8a,0x3a,0x91,0x99,0x93,0x3b,0xb1,0xd6,0x3b,0x3b,0x8a,0x11,0xfb,0x3a,0x22,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x64,0x65,0x70,0x74,0x68,0x77,0x69,0x73,0x65,0x5f,0x63,0x6f,0x6e,0x76,0x32,0x64,0x5f,0x33,0x2f,0x64,0x65,0x70,0x74,0x68,0x77,0x69,0x73,0x65,0x0,0x0,0x4,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x15,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0x4a,0xf2,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0xf8,0x2,0x0,0x0,0x11,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x20,0x3,0x0,0x0,0x34,0xf2,0xff,0xff,0x8,0x0,0x0,0x0,0xec,0x1,0x0,0x0,0x3c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0x70,0x38,0xca,0x38,0x52,0xd7,0xa4,0x38,0xa6,0x31,0xf8,0x38,0x1f,0xbe,0x9c,0x38,0x68,0xbd,0x87,0x38,0x24,0x16,0xd1,0x38,0xc5,0xd,0x86,0x38,0xe,0x18,0x9b,0x38,0x61,0xbc,0x84,0x38,0x56,0x58,0x31,0x38,0xce,0x82,0xba,0x38,0x24,0x44,0xfa,0x38,0x14,0x7d,0x99,0x38,0xbd,0xc0,0x67,0x38,0xfe,0x92,0xab,0x38,0x19,0x8,0xcd,0x38,0x49,0xc0,0xb8,0x38,0x2,0xc0,0x11,0x39,0xed,0x18,0x7c,0x38,0x2a,0xcc,0xf6,0x38,0xa0,0xeb,0x58,0x38,0x78,0xad,0xb6,0x38,0xb5,0x6c,0x26,0x38,0x7a,0x16,0xf,0x39,0x24,0x1f,0x1a,0x39,0xe4,0x6d,0xae,0x38,0x1e,0xfc,0x26,0x38,0x8b,0xee,0x8,0x39,0x95,0x87,0x48,0x38,0x85,0x90,0xb8,0x38,0xe5,0x6d,0xb0,0x38,0x2d,0x8c,0xc1,0x38,0x87,0x40,0x2c,0x38,0x82,0x33,0x77,0x38,0x34,0x28,0xc8,0x38,0x47,0xf0,0xd5,0x38,0x9d,0xed,0x87,0x38,0x45,0xb6,0xb4,0x38,0x67,0xf9,0xa7,0x38,0x97,0xa6,0xe0,0x38,0xdd,0xca,0x4c,0x38,0xa6,0x7e,0xa,0x39,0x62,0x6f,0xf3,0x38,0xc7,0x18,0x9d,0x38,0xd2,0x97,0x1b,0x38,0x99,0xc1,0xcd,0x38,0x61,0x40,0xed,0x38,0xa4,0x4,0x91,0x38,0x2e,0xb6,0x86,0x38,0x7e,0x5f,0xa1,0x38,0xe2,0x4a,0x6,0x39,0x97,0xc3,0xae,0x38,0x8,0xd1,0x18,0x39,0x9c,0xef,0xa6,0x38,0x29,0x64,0xcb,0x38,0xd8,0x98,0xca,0x38,0xc8,0x1,0x2f,0x38,0xc2,0xf8,0x3a,0x39,0xad,0xf1,0xed,0x38,0x29,0x5,0x9f,0x38,0x2f,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x64,0x65,0x70,0x74,0x68,0x77,0x69,0x73,0x65,0x5f,0x63,0x6f,0x6e,0x76,0x32,0x64,0x5f,0x33,0x2f,0x42,0x69,0x61,0x73,0x41,0x64,0x64,0x2f,0x52,0x65,0x61,0x64,0x56,0x61,0x72,0x69,0x61,0x62,0x6c,0x65,0x4f,0x70,0x0,0x1,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0x8a,0xf5,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0xf4,0x2,0x0,0x0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0x4,0x3,0x0,0x0,0x74,0xf5,0xff,0xff,0x8,0x0,0x0,0x0,0xe8,0x1,0x0,0x0,0x3c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0x6a,0xd1,0x56,0x3b,0xed,0xc3,0xbe,0x3a,0xbb,0x15,0xd5,0x3a,0xbd,0xe6,0x19,0x3b,0x95,0xa6,0xb,0x3b,0x39,0x45,0xed,0x3a,0xf3,0x73,0x7,0x3b,0x76,0x2a,0x25,0x3b,0x49,0xd6,0x74,0x3b,0x7e,0x1b,0x1,0x3b,0x2,0xe0,0xfb,0x3a,0x29,0x45,0x1e,0x3b,0xfc,0x67,0x2e,0x3b,0x2f,0x15,0xf6,0x3a,0x11,0x30,0xe,0x3b,0xf2,0x42,0xf,0x3b,0xbe,0xb1,0xce,0x3a,0xf,0x33,0x0,0x3b,0xac,0xf9,0x11,0x3b,0xd0,0x61,0x12,0x3b,0x6a,0x20,0x41,0x3b,0x1d,0x49,0xef,0x3a,0x22,0x5c,0x90,0x3b,0x2d,0xcd,0xdd,0x3a,0xe3,0x78,0x42,0x3b,0x42,0x5a,0x2,0x3b,0x17,0x64,0x2d,0x3b,0x9c,0x9d,0x25,0x3b,0xb2,0x10,0x6,0x3b,0xb6,0xf2,0x27,0x3b,0x11,0x40,0xbe,0x3a,0x8a,0x0,0x24,0x3b,0x25,0xe2,0x1c,0x3b,0x49,0x8d,0x3c,0x3b,0xfc,0x4e,0xe9,0x3a,0x12,0xd3,0x6b,0x3b,0x7e,0x6c,0x15,0x3b,0xa4,0x4c,0x57,0x3b,0x2d,0x6,0x21,0x3b,0x3f,0x96,0xf9,0x3a,0x73,0x4e,0xc7,0x3a,0x85,0xe,0x11,0x3b,0x12,0xd6,0xdb,0x3a,0x1e,0xe0,0x26,0x3b,0x76,0xb3,0x6a,0x3b,0x7a,0x6e,0xcc,0x3a,0xa1,0x6c,0x51,0x3b,0x5,0x5a,0x34,0x3b,0xd9,0x5d,0x17,0x3b,0x32,0xb2,0x15,0x3b,0xf1,0xd9,0x66,0x3b,0xca,0xe8,0xa,0x3b,0x27,0x4e,0x67,0x3a,0xc7,0xbc,0x47,0x3b,0x9e,0x6c,0x12,0x3b,0xf2,0xd6,0xf1,0x3a,0x85,0xab,0x49,0x3b,0xb7,0xf,0x3a,0x3b,0xa,0x13,0xf1,0x3a,0x2c,0x93,0xe2,0x3a,0x15,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x63,0x6f,0x6e,0x76,0x32,0x64,0x5f,0x34,0x2f,0x43,0x6f,0x6e,0x76,0x32,0x44,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0xba,0xf8,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0xf8,0x2,0x0,0x0,0xf,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x20,0x3,0x0,0x0,0xa4,0xf8,0xff,0xff,0x8,0x0,0x0,0x0,0xec,0x1,0x0,0x0,0x3c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0xd5,0x66,0xb1,0x39,0xd6,0x89,0x1d,0x39,0x6e,0xf8,0x2f,0x39,0xc7,0x30,0x7e,0x39,0x51,0xa7,0x66,0x39,0x82,0xf1,0x43,0x39,0x67,0xb8,0x5f,0x39,0xd6,0x65,0x88,0x39,0x2d,0x31,0xca,0x39,0x60,0x3d,0x55,0x39,0x15,0x1,0x50,0x39,0x2,0xb4,0x82,0x39,0x57,0x7,0x90,0x39,0x88,0x38,0x4b,0x39,0x9,0xd8,0x6a,0x39,0x9,0x9e,0x6c,0x39,0x64,0xb1,0x2a,0x39,0x7a,0xbd,0x53,0x39,0x7b,0x19,0x71,0x39,0x7b,0xc5,0x71,0x39,0xa,0x7d,0x9f,0x39,0x8a,0x9b,0x45,0x39,0x75,0x6e,0xee,0x39,0x35,0x2b,0x37,0x39,0x83,0x99,0xa0,0x39,0xdd,0x4b,0x57,0x39,0xb6,0x30,0x8f,0x39,0xed,0xc4,0x88,0x39,0xa6,0x6d,0x5d,0x39,0x7,0xb2,0x8a,0x39,0xf2,0x1c,0x1d,0x39,0xce,0x6f,0x87,0x39,0xd4,0x8e,0x81,0x39,0xe4,0xb5,0x9b,0x39,0xed,0xab,0x40,0x39,0xd3,0xbf,0xc2,0x39,0x96,0xcb,0x76,0x39,0x99,0xcc,0xb1,0x39,0x3a,0xfa,0x84,0x39,0x59,0x1d,0x4e,0x39,0x85,0x97,0x24,0x39,0x17,0x95,0x6f,0x39,0xbb,0x8b,0x35,0x39,0x43,0xcf,0x89,0x39,0x50,0xd2,0xc1,0x39,0x5,0xd3,0x28,0x39,0x8d,0xf2,0xac,0x39,0x45,0xf0,0x94,0x39,0xa,0x1,0x7a,0x39,0xb6,0x3e,0x77,0x39,0x72,0xa4,0xbe,0x39,0xd8,0x6d,0x65,0x39,0x6b,0x4,0xbf,0x38,0xa1,0xf2,0xa4,0x39,0x54,0xd7,0x71,0x39,0x7e,0xb7,0x47,0x39,0x33,0x8b,0xa6,0x39,0x5f,0xa7,0x99,0x39,0xb5,0x15,0x47,0x39,0x5c,0x1c,0x3b,0x39,0x2c,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x62,0x61,0x74,0x63,0x68,0x5f,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x33,0x2f,0x46,0x75,0x73,0x65,0x64,0x42,0x61,0x74,0x63,0x68,0x4e,0x6f,0x72,0x6d,0x56,0x33,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0xfa,0xfb,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x30,0x0,0x0,0x0,0xe,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0x3c,0x0,0x0,0x0,0xe4,0xfb,0xff,0xff,0x8,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x5f,0xdb,0x4b,0x3b,0x12,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x64,0x65,0x6e,0x73,0x65,0x2f,0x4d,0x61,0x74,0x4d,0x75,0x6c,0x0,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x2c,0x1,0x0,0x0,0x5a,0xfc,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x34,0x0,0x0,0x0,0xd,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x50,0x0,0x0,0x0,0x44,0xfc,0xff,0xff,0x8,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x49,0xe3,0xb8,0x38,0x22,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x64,0x65,0x6e,0x73,0x65,0x2f,0x42,0x69,0x61,0x73,0x41,0x64,0x64,0x2f,0x52,0x65,0x61,0x64,0x56,0x61,0x72,0x69,0x61,0x62,0x6c,0x65,0x4f,0x70,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xca,0xfc,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x20,0x0,0x0,0x0,0x1c,0xfd,0xff,0xff,0x13,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x66,0x6c,0x61,0x74,0x74,0x65,0x6e,0x2f,0x43,0x6f,0x6e,0x73,0x74,0x0,0x1,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0xa,0xfd,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0xb,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x2c,0x0,0x0,0x0,0x5c,0xfd,0xff,0xff,0x1c,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x73,0x74,0x72,0x65,0x61,0x6d,0x5f,0x34,0x2f,0x73,0x74,0x72,0x69,0x64,0x65,0x64,0x5f,0x73,0x6c,0x69,0x63,0x65,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x56,0xfd,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0xa,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x2c,0x0,0x0,0x0,0xa8,0xfd,0xff,0xff,0x1c,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x73,0x74,0x72,0x65,0x61,0x6d,0x5f,0x33,0x2f,0x73,0x74,0x72,0x69,0x64,0x65,0x64,0x5f,0x73,0x6c,0x69,0x63,0x65,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0xa2,0xfd,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x9,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x2c,0x0,0x0,0x0,0xf4,0xfd,0xff,0xff,0x1d,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x73,0x74,0x72,0x65,0x61,0x6d,0x5f,0x35,0x2f,0x73,0x74,0x72,0x69,0x64,0x65,0x64,0x5f,0x73,0x6c,0x69,0x63,0x65,0x32,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0xee,0xfd,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x2c,0x0,0x0,0x0,0x40,0xfe,0xff,0xff,0x1c,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x73,0x74,0x72,0x65,0x61,0x6d,0x5f,0x32,0x2f,0x73,0x74,0x72,0x69,0x64,0x65,0x64,0x5f,0x73,0x6c,0x69,0x63,0x65,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x3a,0xfe,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x2c,0x0,0x0,0x0,0x8c,0xfe,0xff,0xff,0x1c,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x73,0x74,0x72,0x65,0x61,0x6d,0x5f,0x31,0x2f,0x73,0x74,0x72,0x69,0x64,0x65,0x64,0x5f,0x73,0x6c,0x69,0x63,0x65,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x86,0xfe,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x2c,0x0,0x0,0x0,0xd8,0xfe,0xff,0xff,0x1d,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x73,0x74,0x72,0x65,0x61,0x6d,0x5f,0x35,0x2f,0x73,0x74,0x72,0x69,0x64,0x65,0x64,0x5f,0x73,0x6c,0x69,0x63,0x65,0x31,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0xd2,0xfe,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x5,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x2c,0x0,0x0,0x0,0x24,0xff,0xff,0xff,0x1c,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x73,0x74,0x72,0x65,0x61,0x6d,0x5f,0x35,0x2f,0x73,0x74,0x72,0x69,0x64,0x65,0x64,0x5f,0x73,0x6c,0x69,0x63,0x65,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x1e,0xff,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x28,0x0,0x0,0x0,0x70,0xff,0xff,0xff,0x1b,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x73,0x74,0x72,0x65,0x61,0x6d,0x2f,0x73,0x74,0x72,0x69,0x64,0x65,0x64,0x5f,0x73,0x6c,0x69,0x63,0x65,0x31,0x0,0x1,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x66,0xff,0xff,0xff,0x0,0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x28,0x0,0x0,0x0,0xb8,0xff,0xff,0xff,0x1a,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x73,0x74,0x72,0x65,0x61,0x6d,0x2f,0x73,0x74,0x72,0x69,0x64,0x65,0x64,0x5f,0x73,0x6c,0x69,0x63,0x65,0x0,0x0,0x1,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0xae,0xff,0xff,0xff,0x0,0x0,0x0,0x1,0x18,0x0,0x0,0x0,0x18,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x30,0x0,0x0,0x0,0x4,0x0,0x4,0x0,0x4,0x0,0x0,0x0,0x1f,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x2f,0x74,0x66,0x2e,0x65,0x78,0x70,0x61,0x6e,0x64,0x5f,0x64,0x69,0x6d,0x73,0x2f,0x45,0x78,0x70,0x61,0x6e,0x64,0x44,0x69,0x6d,0x73,0x0,0x1,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x0,0x0,0x16,0x0,0x1c,0x0,0x18,0x0,0x17,0x0,0x10,0x0,0xc,0x0,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7,0x0,0x16,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x20,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0x54,0x0,0x0,0x0,0xc,0x0,0xc,0x0,0x0,0x0,0x0,0x0,0x8,0x0,0x4,0x0,0xc,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1,0x0,0x0,0x0,0xd1,0xd0,0xd0,0x3d,0x1d,0x0,0x0,0x0,0x73,0x65,0x72,0x76,0x69,0x6e,0x67,0x5f,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x5f,0x69,0x6e,0x70,0x75,0x74,0x5f,0x61,0x75,0x64,0x69,0x6f,0x3a,0x30,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x28,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0xe4,0x0,0x0,0x0,0xc8,0x0,0x0,0x0,0xb8,0x0,0x0,0x0,0xa8,0x0,0x0,0x0,0x94,0x0,0x0,0x0,0x74,0x0,0x0,0x0,0x64,0x0,0x0,0x0,0x50,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0x28,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x58,0xff,0xff,0xff,0x72,0x0,0x0,0x0,0x0,0x0,0x0,0x72,0xa4,0xff,0xff,0xff,0xe,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0xe,0xb4,0xff,0xff,0xff,0x9,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0xc4,0xff,0xff,0xff,0x4,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xd4,0xff,0xff,0xff,0x3,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0xa4,0xff,0xff,0xff,0x90,0x0,0x0,0x0,0x0,0x0,0x0,0x7f,0xf0,0xff,0xff,0xff,0x2d,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x2d,0xc,0x0,0x10,0x0,0xf,0x0,0x0,0x0,0x8,0x0,0x4,0x0,0xc,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0xdc,0xff,0xff,0xff,0x8f,0x0,0x0,0x0,0x0,0x0,0x0,0x7f,0xe8,0xff,0xff,0xff,0x16,0x0,0x0,0x0,0x0,0x0,0x0,0x16,0xf4,0xff,0xff,0xff,0x8e,0x0,0x0,0x0,0x0,0x0,0x0,0x7f,0xc,0x0,0xc,0x0,0xb,0x0,0x0,0x0,0x0,0x0,0x4,0x0,0xc,0x0,0x0,0x0,0x81,0x0,0x0,0x0,0x0,0x0,0x0,0x7f}; diff --git a/src/audio/microwakeword/mww_model_data.h b/src/audio/microwakeword/mww_model_data.h new file mode 100644 index 000000000000..669e79a07708 --- /dev/null +++ b/src/audio/microwakeword/mww_model_data.h @@ -0,0 +1,17 @@ +#ifndef __MWW_MODEL_DATA_H__ +#define __MWW_MODEL_DATA_H__ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +static const unsigned int g_mww_model_data_size = 52272; +extern const unsigned char g_mww_model_data[]; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/audio/tensorflow/CMakeLists.txt b/src/audio/tensorflow/CMakeLists.txt index 5cb3086f46b1..8dddd9dc5294 100644 --- a/src/audio/tensorflow/CMakeLists.txt +++ b/src/audio/tensorflow/CMakeLists.txt @@ -1,6 +1,19 @@ # Copyright (c) 2025 Intel Corporation. # SPDX-License-Identifier: Apache-2.0 +# Newer xt-clang LLVMs accept this to keep literals in .rodata; older +# xt-clang (e.g. RI-2022.10, LLVM 10) rejects the sub-option. Detect it. +set(TFLM_TEXT_SECTION_LITERALS_FALSE_FLAG "") +if(CMAKE_C_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + include(CheckCXXCompilerFlag) + check_cxx_compiler_flag("-mllvm --text-section-literals=false" + TFLM_HAS_MLLVM_TEXT_SECTION_LITERALS_FALSE) + if(TFLM_HAS_MLLVM_TEXT_SECTION_LITERALS_FALSE) + set(TFLM_TEXT_SECTION_LITERALS_FALSE_FLAG -mllvm --text-section-literals=false) + add_compile_options(${TFLM_TEXT_SECTION_LITERALS_FALSE_FLAG}) + endif() +endif() + # are we building the llext module ? if(CONFIG_COMP_TENSORFLOW STREQUAL "m" AND DEFINED CONFIG_LLEXT) add_subdirectory(llext ${PROJECT_BINARY_DIR}/tflm_llext) @@ -19,62 +32,31 @@ set(RUY_PATH ${sof_top_dir}/../ruy) add_library(nn_hifi_lib STATIC ${NN_HIFI_PATH}/algo/common/src/xa_nnlib_common_api.c - ${NN_HIFI_PATH}/algo/kernels/reorg/hifi4/xa_nn_pad_8.c - ${NN_HIFI_PATH}/algo/kernels/reorg/hifi4/xa_nn_stride_slice_int16.c - ${NN_HIFI_PATH}/algo/kernels/reorg/hifi4/xa_nn_batch_to_space_nd_8.c - ${NN_HIFI_PATH}/algo/kernels/reorg/hifi4/xa_nn_transpose_8.c - ${NN_HIFI_PATH}/algo/kernels/reorg/hifi4/xa_nn_depth_to_space_8.c - ${NN_HIFI_PATH}/algo/kernels/reorg/hifi4/xa_nn_pad_16.c - ${NN_HIFI_PATH}/algo/kernels/reorg/hifi4/xa_nn_stride_slice_int32.c - ${NN_HIFI_PATH}/algo/kernels/reorg/hifi4/xa_nn_space_to_batch_nd_8.c - ${NN_HIFI_PATH}/algo/kernels/reorg/hifi4/xa_nn_pad_32.c - ${NN_HIFI_PATH}/algo/kernels/reorg/hifi4/xa_nn_stride_slice_int8.c - ${NN_HIFI_PATH}/algo/kernels/reorg/hifi4/xa_nn_space_to_depth_8.c ${NN_HIFI_PATH}/algo/kernels/activations/hifi4/xa_nn_activations_32_32.c ${NN_HIFI_PATH}/algo/kernels/activations/hifi4/xa_nn_activations_f32_f32.c - ${NN_HIFI_PATH}/algo/kernels/activations/hifi4/xa_nn_activations_sym16_sym16.c - ${NN_HIFI_PATH}/algo/kernels/activations/hifi4/xa_nn_softmax_asym8_asym8.c - ${NN_HIFI_PATH}/algo/kernels/activations/hifi4/xa_nn_activations_32_16.c - ${NN_HIFI_PATH}/algo/kernels/activations/hifi4/xa_nn_activations_16_16.c - ${NN_HIFI_PATH}/algo/kernels/activations/hifi4/xa_nn_activations_8_8.c - ${NN_HIFI_PATH}/algo/kernels/activations/hifi4/xa_nn_activations_asym16_asym16.c - ${NN_HIFI_PATH}/algo/kernels/activations/hifi4/xa_nn_activations_32_8.c - ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_matXvec_16x16_16_circ_nb.c - ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_conv2d_pointwise_16x16.c - ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_conv2d_depthwise_16x16.c - ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_transpose_conv_circ_buf.c - ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_conv2d_group_sym8sxasym8s.c - ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_matXvec_asym8xasym8_asym8_circ_nb.c - ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_conv2d_depthwise_sym8sxasym8s.c + ${NN_HIFI_PATH}/algo/kernels/basic/hifi4/xa_nn_elm_add_f32.c + ${NN_HIFI_PATH}/algo/kernels/basic/hifi4/xa_nn_elm_sub_f32.c + ${NN_HIFI_PATH}/algo/kernels/basic/hifi4/xa_nn_elm_mul_f32.c + ${NN_HIFI_PATH}/algo/kernels/basic/hifi4/xa_nn_elm_abs_f32.c + ${NN_HIFI_PATH}/algo/ndsp/hifi4/src/nanf_tbl.c + ${NN_HIFI_PATH}/algo/ndsp/hifi4/src/inff_tbl.c + ${NN_HIFI_PATH}/algo/ndsp/hifi4/src/pow2f_tbl.c + ${NN_HIFI_PATH}/algo/ndsp/hifi4/src/expf_tbl.c + ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_matXvec_8x8_8_circ.c - ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_conv2d_pointwise_sym8sxsym16s.c ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_conv2d_pointwise_8x16.c ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_circ_buf.c ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_conv2d_std_8x8.c ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_conv2d_depthwise.c ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_matXvec_16x16_16_circ.c - ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_transpose_conv_f32.c - ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_conv2d_depthwise_f32.c - ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_matXvec_f32_circ.c ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_conv2d_std_circ_buf.c - ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_transpose_conv_sym8sxasym8s.c ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_matXvec_8x16_16_circ.c - ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_matXvec_sym8sxsym16s_sym16s_circ.c ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_conv1d_std_8x8.c ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_conv2d_std_8x16.c - ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_conv2d_std_sym8sxsym16s.c - ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_conv2d_pointwise_f32.c - ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_matXvec_f32_circ_nb.c - ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_conv2d_std_sym8sxasym8s.c - ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_matXvec_asym8xasym8_asym8_circ.c - ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_conv2d_pointwise_sym8sxasym8s.c ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_conv2d_depthwise_8x8.c - ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_transpose_conv_sym8sxsym16s.c - ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_conv2d_std_f32.c ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_conv1d_std_8x16.c ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_conv2d_pointwise_8x8.c ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_conv2d_std_16x16.c - ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_matXvec_sym8sxasym8s_asym8s_circ.c ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_conv2d_pointwise_asym8xasym8.c ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_conv2d_std_asym8xasym8.c ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_conv1d_std_circ_buf.c @@ -82,117 +64,11 @@ add_library(nn_hifi_lib STATIC ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_matXvec_8x16_16_circ_nb.c ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_conv1d_std_16x16.c ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_matXvec_8x8_8_circ_nb.c - ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_conv2d_std_sym4sxasym8s.c - ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_conv1d_std_f32.c - ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_conv2d_depthwise_sym8sxsym16s.c ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_conv2d_depthwise_asym8xasym8.c - ${NN_HIFI_PATH}/algo/kernels/cnn/hifi4/xa_nn_conv2d_depthwise_8x16.c - ${NN_HIFI_PATH}/algo/kernels/matXvec/hifi4/xa_nn_matmul_f32.c - ${NN_HIFI_PATH}/algo/kernels/matXvec/hifi4/xa_nn_matXvec_asym8xasym8_batch.c - ${NN_HIFI_PATH}/algo/kernels/matXvec/hifi4/xa_nn_matmul_sym8sxasym8s.c - ${NN_HIFI_PATH}/algo/kernels/matXvec/hifi4/xa_nn_matmul_8x8.c - ${NN_HIFI_PATH}/algo/kernels/matXvec/hifi4/xa_nn_matmul_8x16.c - ${NN_HIFI_PATH}/algo/kernels/matXvec/hifi4/xa_nn_matXvec_asym4sxasym8s.c - ${NN_HIFI_PATH}/algo/kernels/matXvec/hifi4/xa_nn_matmul_sym8sxsym16s.c - ${NN_HIFI_PATH}/algo/kernels/matXvec/hifi4/xa_nn_matXvec_f32_batch.c - ${NN_HIFI_PATH}/algo/kernels/matXvec/hifi4/xa_nn_matXvec_f32.c - ${NN_HIFI_PATH}/algo/kernels/matXvec/hifi4/xa_nn_matXvec_16x16_batch.c - ${NN_HIFI_PATH}/algo/kernels/matXvec/hifi4/xa_nn_matXvec_sym8sxsym16s.c - ${NN_HIFI_PATH}/algo/kernels/matXvec/hifi4/xa_nn_matmul_asym8sxasym8s.c - ${NN_HIFI_PATH}/algo/kernels/matXvec/hifi4/xa_nn_matXvec_16x8.c - ${NN_HIFI_PATH}/algo/kernels/matXvec/hifi4/xa_nn_matXvec_8x16.c - ${NN_HIFI_PATH}/algo/kernels/matXvec/hifi4/xa_nn_matXvec_8x8.c - ${NN_HIFI_PATH}/algo/kernels/matXvec/hifi4/xa_nn_matXvec_asym8sxasym8s.c - ${NN_HIFI_PATH}/algo/kernels/matXvec/hifi4/xa_nn_matmul_asym8xasym8.c - ${NN_HIFI_PATH}/algo/kernels/matXvec/hifi4/xa_nn_matmul_16x16.c - ${NN_HIFI_PATH}/algo/kernels/matXvec/hifi4/xa_nn_matXvec_8x16_batch.c - ${NN_HIFI_PATH}/algo/kernels/matXvec/hifi4/xa_nn_matXvec_16x16.c - ${NN_HIFI_PATH}/algo/kernels/matXvec/hifi4/xa_nn_matXvec_asym8xasym8.c - ${NN_HIFI_PATH}/algo/kernels/matXvec/hifi4/xa_nn_matXvec_sym8sxasym8s.c - ${NN_HIFI_PATH}/algo/kernels/matXvec/hifi4/xa_nn_matXvec_8x8_batch.c - ${NN_HIFI_PATH}/algo/kernels/pool/hifi4/xa_nn_maxpool_f32.c - ${NN_HIFI_PATH}/algo/kernels/pool/hifi4/xa_nn_maxpool_8.c - ${NN_HIFI_PATH}/algo/kernels/pool/hifi4/xa_nn_maxpool_asym8_nhwc.c - ${NN_HIFI_PATH}/algo/kernels/pool/hifi4/xa_nn_avgpool_f32_nhwc.c - ${NN_HIFI_PATH}/algo/kernels/pool/hifi4/xa_nn_maxpool_16_nhwc.c - ${NN_HIFI_PATH}/algo/kernels/pool/hifi4/xa_nn_avgpool_16.c - ${NN_HIFI_PATH}/algo/kernels/pool/hifi4/xa_nn_avgpool_16_nhwc.c - ${NN_HIFI_PATH}/algo/kernels/pool/hifi4/xa_nn_avgpool_asym8.c - ${NN_HIFI_PATH}/algo/kernels/pool/hifi4/xa_nn_avgpool.c - ${NN_HIFI_PATH}/algo/kernels/pool/hifi4/xa_nn_inv_256_tbl.c - ${NN_HIFI_PATH}/algo/kernels/pool/hifi4/xa_nn_maxpool.c - ${NN_HIFI_PATH}/algo/kernels/pool/hifi4/xa_nn_maxpool_8_nhwc.c - ${NN_HIFI_PATH}/algo/kernels/pool/hifi4/xa_nn_maxpool_16.c - ${NN_HIFI_PATH}/algo/kernels/pool/hifi4/xa_nn_avgpool_8.c - ${NN_HIFI_PATH}/algo/kernels/pool/hifi4/xa_nn_maxpool_f32_nhwc.c - ${NN_HIFI_PATH}/algo/kernels/pool/hifi4/xa_nn_avgpool_asym8_nhwc.c - ${NN_HIFI_PATH}/algo/kernels/pool/hifi4/xa_nn_avgpool_f32.c - ${NN_HIFI_PATH}/algo/kernels/pool/hifi4/xa_nn_maxpool_asym8.c - ${NN_HIFI_PATH}/algo/kernels/pool/hifi4/xa_nn_avgpool_8_nhwc.c - ${NN_HIFI_PATH}/algo/kernels/norm/hifi4/xa_nn_l2_norm_asym8s.c - ${NN_HIFI_PATH}/algo/kernels/norm/hifi4/xa_nn_l2_norm_f32.c - ${NN_HIFI_PATH}/algo/kernels/basic/hifi4/xa_nn_elm_sqrt_f32.c - ${NN_HIFI_PATH}/algo/kernels/basic/hifi4/xa_nn_elm_mul_16x16.c - ${NN_HIFI_PATH}/algo/kernels/basic/hifi4/xa_nn_elm_add_quant8.c - ${NN_HIFI_PATH}/algo/kernels/basic/hifi4/xa_nn_elm_mul_f32.c - ${NN_HIFI_PATH}/algo/kernels/basic/hifi4/xa_nn_lstm_utils.c - ${NN_HIFI_PATH}/algo/kernels/basic/hifi4/xa_nn_dot_prod_16x16.c - ${NN_HIFI_PATH}/algo/kernels/basic/hifi4/xa_nn_elm_sub_quant16.c - ${NN_HIFI_PATH}/algo/kernels/basic/hifi4/xa_nn_elm_round_f32.c - ${NN_HIFI_PATH}/algo/kernels/basic/hifi4/xa_nn_elm_mul_acc_f32.c - ${NN_HIFI_PATH}/algo/kernels/basic/hifi4/xa_nn_elm_cosine_f32.c - ${NN_HIFI_PATH}/algo/kernels/basic/hifi4/xa_nn_reduce_asym8s_asym8s.c - ${NN_HIFI_PATH}/algo/kernels/basic/hifi4/xa_nn_memset_f32.c - ${NN_HIFI_PATH}/algo/kernels/basic/hifi4/xa_nn_floor_f32.c - ${NN_HIFI_PATH}/algo/kernels/basic/hifi4/xa_nn_elm_squared_diff_quant8.c - ${NN_HIFI_PATH}/algo/kernels/basic/hifi4/xa_nn_elm_add_quant16.c - ${NN_HIFI_PATH}/algo/kernels/basic/hifi4/xa_nn_reduce_asym16s_asym16s.c - ${NN_HIFI_PATH}/algo/kernels/basic/hifi4/xa_nn_elm_minmax_8.c - ${NN_HIFI_PATH}/algo/kernels/basic/hifi4/xa_nn_elm_logn_f32.c - ${NN_HIFI_PATH}/algo/kernels/basic/hifi4/xa_nn_elm_div_f32.c - ${NN_HIFI_PATH}/algo/kernels/basic/hifi4/xa_nn_elm_sub_f32.c - ${NN_HIFI_PATH}/algo/kernels/basic/hifi4/xa_nn_elm_compare_quant8.c - ${NN_HIFI_PATH}/algo/kernels/basic/hifi4/xa_nn_elm_logical_bool.c - ${NN_HIFI_PATH}/algo/kernels/basic/hifi4/xa_nn_broadcast_8_8.c - ${NN_HIFI_PATH}/algo/kernels/basic/hifi4/xa_nn_elm_quantize.c - ${NN_HIFI_PATH}/algo/kernels/basic/hifi4/xa_nn_elm_neg_f32.c - ${NN_HIFI_PATH}/algo/kernels/basic/hifi4/xa_nn_elm_mul_quant16.c - ${NN_HIFI_PATH}/algo/kernels/basic/hifi4/xa_nn_elm_add_f32.c - ${NN_HIFI_PATH}/algo/kernels/basic/hifi4/xa_nn_vec_interpolation_q15.c - ${NN_HIFI_PATH}/algo/kernels/basic/hifi4/xa_nn_elm_square_f32.c - ${NN_HIFI_PATH}/algo/kernels/basic/hifi4/xa_nn_elm_sine_f32.c - ${NN_HIFI_PATH}/algo/kernels/basic/hifi4/xa_nn_elm_abs_f32.c - ${NN_HIFI_PATH}/algo/kernels/basic/hifi4/xa_nn_memmove.c - ${NN_HIFI_PATH}/algo/kernels/basic/hifi4/xa_nn_elm_mul_quant8.c - ${NN_HIFI_PATH}/algo/kernels/basic/hifi4/xa_nn_elm_squared_diff_quant16.c - ${NN_HIFI_PATH}/algo/kernels/basic/hifi4/xa_nn_memmove_16.c - ${NN_HIFI_PATH}/algo/kernels/basic/hifi4/xa_nn_elm_sub_quant8.c - ${NN_HIFI_PATH}/algo/kernels/basic/hifi4/xa_nn_elm_ceil_f32.c - ${NN_HIFI_PATH}/algo/kernels/basic/hifi4/xa_nn_elm_rsqrt_f32.c ${NN_HIFI_PATH}/algo/kernels/fc/hifi4/xa_nn_fully_connected.c - ${NN_HIFI_PATH}/algo/ndsp/hifi4/src/vec_tanh32x32_hifi4.c - ${NN_HIFI_PATH}/algo/ndsp/hifi4/src/scl_sigmoidf_hifi4.c - ${NN_HIFI_PATH}/algo/ndsp/hifi4/src/inv2pif_tbl.c - ${NN_HIFI_PATH}/algo/ndsp/hifi4/src/nanf_tbl.c - ${NN_HIFI_PATH}/algo/ndsp/hifi4/src/pow2f_tbl.c - ${NN_HIFI_PATH}/algo/ndsp/hifi4/src/vec_sigmoidf_hifi4.c - ${NN_HIFI_PATH}/algo/ndsp/hifi4/src/vec_reluf_hifi4.c - ${NN_HIFI_PATH}/algo/ndsp/hifi4/src/expf_tbl.c - ${NN_HIFI_PATH}/algo/ndsp/hifi4/src/vec_tanhf_hifi4.c - ${NN_HIFI_PATH}/algo/ndsp/hifi4/src/vec_sigmoid32x32_hifi4.c - ${NN_HIFI_PATH}/algo/ndsp/hifi4/src/lognf_tbl.c - ${NN_HIFI_PATH}/algo/ndsp/hifi4/src/sinf_tbl.c - ${NN_HIFI_PATH}/algo/ndsp/hifi4/src/vec_cosinef_hifi4.c - ${NN_HIFI_PATH}/algo/ndsp/hifi4/src/vec_sinef_hifi4.c - ${NN_HIFI_PATH}/algo/ndsp/hifi4/src/vec_softmaxf_hifi4.c - ${NN_HIFI_PATH}/algo/ndsp/hifi4/src/scl_tanhf_hifi4.c - ${NN_HIFI_PATH}/algo/ndsp/hifi4/src/vec_softmax32x32_hifi4.c - ${NN_HIFI_PATH}/algo/ndsp/hifi4/src/vec_lognf_hifi4.c - ${NN_HIFI_PATH}/algo/ndsp/hifi4/src/sqrt2f_tbl.c - ${NN_HIFI_PATH}/algo/ndsp/hifi4/src/inff_tbl.c - ${NN_HIFI_PATH}/algo/ndsp/hifi4/src/vec_alognf_hifi4.c - ${NN_HIFI_PATH}/algo/ndsp/hifi4/src/vec_relu32x32_hifi4.c - ${NN_HIFI_PATH}/algo/ndsp/hifi4/src/tanhf_tbl.c + ${NN_HIFI_PATH}/algo/kernels/pool/hifi4/xa_nn_inv_256_tbl.c + ${NN_HIFI_PATH}/algo/kernels/reorg/hifi4/xa_nn_transpose_8.c + ${NN_HIFI_PATH}/algo/kernels/reorg/hifi4/xa_nn_pad_8.c ) target_include_directories(nn_hifi_lib PRIVATE @@ -200,31 +76,63 @@ target_include_directories(nn_hifi_lib PRIVATE ${NN_HIFI_PATH}/algo/common/include/ ${NN_HIFI_PATH}/include/nnlib/ ${NN_HIFI_PATH}/algo/ndsp/hifi4/include + ${TFLM_TOOLCHAIN_INCLUDE_ROOT} + ${TFLM_HAL_SOC_PATH} ) +target_compile_options(nn_hifi_lib PRIVATE + ${TFLM_TEXT_SECTION_LITERALS_FALSE_FLAG} +) + +endif() # TENSORFLOW_HAVE_NNLIB_HIFI4 + + +if(TENSORFLOW_HAVE_NNLIB_HIFI4) + # TODO: Need to detect and add mul16/32 options. -#ifeq "$(has_mul16)" "0" -#CFLAGS += -mno-mul16 -#endif -#ifeq "$(has_mul32)" "0" -#CFLAGS += -mno-mul32 -mno-div32 -#endif +target_compile_definitions(nn_hifi_lib PRIVATE + -DHIFI4=1 + -DHAVE_VFPU=1 + -DHAVE_VFPU_SINGLE_PRECISION=1 + -DXCHAL_HAVE_HIFI4=1 + -DXCHAL_HAVE_HIFI4_VFPU=1 + + __xtensa__=1 + __XTENSA__=1 + __XCC__ + __XCC_CLANG__ + "XT_MAX(a,b)=((a)>(b)?(a):(b))" + "XT_MIN(a,b)=((a)<(b)?(a):(b))" + "AE_MOVINT16_FROMINT32(v)=((ae_int16)(v))" + "AE_CVT64F32_H(v)=((ae_int64)(int64_t)(int32_t)AE_MOVAD32_H(v))" + "AE_CVT64F32_L(v)=((ae_int64)(int64_t)(int32_t)AE_MOVAD32_L(v))" +) + target_compile_options(nn_hifi_lib PRIVATE -fsigned-char -fno-exceptions -mlongcalls - -INLINE:requested - -mcoproc -fno-zero-initialized-in-bss - -mtext-section-literals -Wsign-compare - -m32 -DMODEL_INT16 -DNNLIB_V2 -Dhifi4 -DTFLITE_SINGLE_ROUNDING=1 ) +target_compile_definitions(nn_hifi_lib PRIVATE + __XCC__ + __XCC_CLANG__ +) +target_compile_options(nn_hifi_lib PRIVATE + -mcpu=${SOC_TOOLCHAIN_NAME} + "SHELL:-include xtensahifiintrin.h" + "SHELL:-include ${NN_HIFI_PATH}/algo/common/include/xa_nnlib_hifi_isa_compat.h" +) + +endif() # TENSORFLOW_HAVE_NNLIB_HIFI4 (nn_hifi_lib defs/opts) + + # TODO: complete sources have been added here from userspace build but # not all are needed so this is a list of "needed" sources to build # a memory and performance optimized TFLM for SOF. @@ -332,46 +240,12 @@ add_library(tflm_lib STATIC #${TFLM_PATH}/tensorflow/lite/micro/kernels/var_handle.cc #${TFLM_PATH}/tensorflow/lite/micro/kernels/while.cc #${TFLM_PATH}/tensorflow/lite/micro/kernels/zeros_like.cc - # xtensa kernels - ${TFLM_PATH}/tensorflow/lite/micro/kernels/xtensa/sub.cc - ${TFLM_PATH}/tensorflow/lite/micro/kernels/xtensa/conv_hifi.cc - ${TFLM_PATH}/tensorflow/lite/micro/kernels/xtensa/pooling_vision.cc - ${TFLM_PATH}/tensorflow/lite/micro/kernels/xtensa/softmax_vision.cc - ${TFLM_PATH}/tensorflow/lite/micro/kernels/xtensa/unidirectional_sequence_lstm.cc - ${TFLM_PATH}/tensorflow/lite/micro/kernels/xtensa/transpose_conv.cc - ${TFLM_PATH}/tensorflow/lite/micro/kernels/xtensa/fully_connected_common_xtensa.cc - ${TFLM_PATH}/tensorflow/lite/micro/kernels/xtensa/lstm_eval_hifi.cc - ${TFLM_PATH}/tensorflow/lite/micro/kernels/xtensa/add_vision.cc - ${TFLM_PATH}/tensorflow/lite/micro/kernels/xtensa/depthwise_conv.cc - ${TFLM_PATH}/tensorflow/lite/micro/kernels/xtensa/reshape.cc - ${TFLM_PATH}/tensorflow/lite/micro/kernels/xtensa/softmax.cc - ${TFLM_PATH}/tensorflow/lite/micro/kernels/xtensa/depthwise_conv_hifi.cc - ${TFLM_PATH}/tensorflow/lite/micro/kernels/xtensa/conv_int16_reference.cc - ${TFLM_PATH}/tensorflow/lite/micro/kernels/xtensa/conv_int8_reference.cc - ${TFLM_PATH}/tensorflow/lite/micro/kernels/xtensa/fully_connected_int8.cc - ${TFLM_PATH}/tensorflow/lite/micro/kernels/xtensa/pad_vision.cc - ${TFLM_PATH}/tensorflow/lite/micro/kernels/xtensa/fully_connected_vision.cc - ${TFLM_PATH}/tensorflow/lite/micro/kernels/xtensa/conv_int8_int16.cc - ${TFLM_PATH}/tensorflow/lite/micro/kernels/xtensa/conv.cc - ${TFLM_PATH}/tensorflow/lite/micro/kernels/xtensa/softmax_int8_int16.cc - ${TFLM_PATH}/tensorflow/lite/micro/kernels/xtensa/logistic.cc - ${TFLM_PATH}/tensorflow/lite/micro/kernels/xtensa/reduce.cc - ${TFLM_PATH}/tensorflow/lite/micro/kernels/xtensa/lstm_eval.cc - ${TFLM_PATH}/tensorflow/lite/micro/kernels/xtensa/reshape_vision.cc - ${TFLM_PATH}/tensorflow/lite/micro/kernels/xtensa/pad.cc - ${TFLM_PATH}/tensorflow/lite/micro/kernels/xtensa/reduce_vision.cc - ${TFLM_PATH}/tensorflow/lite/micro/kernels/xtensa/dequantize.cc - ${TFLM_PATH}/tensorflow/lite/micro/kernels/xtensa/add.cc - ${TFLM_PATH}/tensorflow/lite/micro/kernels/xtensa/pooling_int8.cc - ${TFLM_PATH}/tensorflow/lite/micro/kernels/xtensa/depthwise_conv_vision.cc - ${TFLM_PATH}/tensorflow/lite/micro/kernels/xtensa/strided_slice.cc - ${TFLM_PATH}/tensorflow/lite/micro/kernels/xtensa/conv_common_xtensa.cc - ${TFLM_PATH}/tensorflow/lite/micro/kernels/xtensa/svdf.cc - ${TFLM_PATH}/tensorflow/lite/micro/kernels/xtensa/fully_connected.cc - ${TFLM_PATH}/tensorflow/lite/micro/kernels/xtensa/leaky_relu.cc - ${TFLM_PATH}/tensorflow/lite/micro/kernels/xtensa/quantize.cc - ${TFLM_PATH}/tensorflow/lite/micro/kernels/xtensa/pooling.cc - ${TFLM_PATH}/tensorflow/lite/micro/kernels/xtensa/conv_vision.cc + # reference kernels for speech model ops + ${TFLM_PATH}/tensorflow/lite/micro/kernels/conv.cc + ${TFLM_PATH}/tensorflow/lite/micro/kernels/depthwise_conv.cc + ${TFLM_PATH}/tensorflow/lite/micro/kernels/fully_connected.cc + ${TFLM_PATH}/tensorflow/lite/micro/kernels/reshape.cc + ${TFLM_PATH}/tensorflow/lite/micro/kernels/softmax.cc ${TFLM_PATH}/tensorflow/lite/micro/mock_micro_graph.cc ${TFLM_PATH}/tensorflow/lite/micro/flatbuffer_utils.cc ${TFLM_PATH}/tensorflow/lite/micro/micro_interpreter_graph.cc @@ -415,7 +289,6 @@ target_include_directories(tflm_lib PRIVATE ${RUY_PATH} ${NN_HIFI_PATH} ${NN_HIFI_PATH}/include - ${sof_top_dir}/posix/include ) # TODO: Need to detect and add mul16/32 options. @@ -425,9 +298,38 @@ target_include_directories(tflm_lib PRIVATE #ifeq "$(has_mul32)" "0" #CFLAGS += -mno-mul32 -mno-div32 #endif + +# These select/enable the HiFi4 nnlib-optimized code paths in some TFLM +# kernels. Only valid when nn_hifi_lib is actually built and linked -- +# forcing XCHAL_HAVE_HIFI4 on a non-HiFi4 target risks enabling HiFi4-only +# branches in system/toolchain headers that don't apply to this core. +if(TENSORFLOW_HAVE_NNLIB_HIFI4) +target_compile_definitions(tflm_lib PRIVATE + -DHIFI4=1 + -DHAVE_VFPU=1 + -DHAVE_VFPU_SINGLE_PRECISION=1 + -DXCHAL_HAVE_HIFI4=1 + -DXCHAL_HAVE_HIFI4_VFPU=1 + + __xtensa__=1 + __XTENSA__=1 + __XCC__ + __XCC_CLANG__ + "XT_MAX(a,b)=((a)>(b)?(a):(b))" + "XT_MIN(a,b)=((a)<(b)?(a):(b))" + "AE_MOVINT16_FROMINT32(v)=((ae_int16)(v))" + "AE_CVT64F32_H(v)=((ae_int64)(int64_t)(int32_t)AE_MOVAD32_H(v))" + "AE_CVT64F32_L(v)=((ae_int64)(int64_t)(int32_t)AE_MOVAD32_L(v))" +) +target_compile_options(tflm_lib PRIVATE + -DHIFI4 + -DKERNELS_OPTIMIZED_FOR_SPEED + -DNNLIB_V2 +) +endif() # TENSORFLOW_HAVE_NNLIB_HIFI4 + target_compile_options(tflm_lib PRIVATE -std=c++17 - -stdlib=libc++ -fno-rtti -fno-exceptions -fno-threadsafe-statics @@ -450,16 +352,117 @@ target_compile_options(tflm_lib PRIVATE -DKERNELS_OPTIMIZED_FOR_SPEED -DTF_LITE_MCU_DEBUG_LOG -DTF_LITE_USE_CTIME - --xtensa-core=ace10_LX7HiFi4_2022_10 - -mcoproc - -DHIFI4 -mlongcalls -DNNLIB_V2 -Wno-shadow ) +if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + target_compile_options(tflm_lib PRIVATE + -stdlib=libc++ + "SHELL:-include xtensahifiintrin.h" + -fno-vectorize + -fno-slp-vectorize + ) +else() + # gcc equivalents for vectorize disabling + target_compile_options(tflm_lib PRIVATE + -fno-tree-vectorize + -fno-tree-slp-vectorize + ) +endif() + +if(CMAKE_C_COMPILER_ID STREQUAL "Xtensa") + target_compile_options(tflm_lib PRIVATE + --xtensa-core=ace10_LX7HiFi4_2022_10 + -mcoproc + ) +elseif(CMAKE_C_COMPILER_ID STREQUAL "Clang") + target_compile_options(tflm_lib PRIVATE + -mcpu=${SOC_TOOLCHAIN_NAME} + ) +endif() + +if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") + target_include_directories(tflm_lib SYSTEM PRIVATE + ${TFLM_TOOLCHAIN_INCLUDE_ROOT}/c++/14.3.0 + ${TFLM_TOOLCHAIN_INCLUDE_ROOT}/c++/14.3.0/xtensa-${SOC_TOOLCHAIN_NAME}_zephyr-elf + ${TFLM_TOOLCHAIN_INCLUDE_ROOT} + ) +endif() + add_local_sources(sof tflm-classify.c llext-wrap.c) -# Need to link libc++ and libc after tflm and nnlib -zephyr_link_libraries(tflm_lib nn_hifi_lib c++ c) +# Link nnlib only when it was actually built (HiFi4 target + Clang) +if(TENSORFLOW_HAVE_NNLIB_HIFI4) + zephyr_link_libraries(tflm_lib nn_hifi_lib) +else() + zephyr_link_libraries(tflm_lib) +endif() + +# CONFIG_MINIMAL_LIBC (SOF's global default) has no libm and is missing a +# few libc functions (e.g. abs()) that TFLM needs in a statically-linked +# (non-LLEXT) image. Linking the toolchain's whole libc.a is too broad: it +# conflicts with Zephyr's own malloc/free (multiple definition) and pulls in +# an __assert_no_args that needs an unavailable stderr. Instead, extract just +# the specific archive members TFLM actually needs into a small private +# archive and link only that. +if(NOT CONFIG_COMP_TENSORFLOW STREQUAL "m") + set(TFLM_TOOLCHAIN_LIBC_ARCHIVE + ${ZEPHYR_SDK_INSTALL_DIR}/gnu/xtensa-${SOC_TOOLCHAIN_NAME}_zephyr-elf/xtensa-${SOC_TOOLCHAIN_NAME}_zephyr-elf/lib/libc.a) + set(TFLM_LIBC_SHIM_MEMBERS + libc_stdlib_abs.c.o + libm_math_s_floor.c.o + # TFLM QuantizeMultiplier() uses double frexp() + round() at Prepare time. + libm_math_s_frexp.c.o + libm_common_s_round.c.o + libm_math_sf_exp.c.o + libm_math_sf_log.c.o + libm_math_sf_ceil.c.o + libm_common_sf_fmax.c.o + libm_common_sf_fmin.c.o + libm_common_sf_round.c.o + # error-handling/predicate helpers the above call internally + libm_common_sf_isnan.c.o + libm_common_sf_issignaling.c.o + libm_common_math_errf_uflowf.c.o + libm_common_math_errf_oflowf.c.o + libm_common_math_errf_divzerof.c.o + libm_common_math_errf_invalidf.c.o + ) + set(TFLM_LIBC_SHIM_DIR ${CMAKE_CURRENT_BINARY_DIR}/tflm_libc_shim) + set(TFLM_LIBC_SHIM_ARCHIVE ${CMAKE_CURRENT_BINARY_DIR}/libtflm_libc_shim.a) + file(MAKE_DIRECTORY ${TFLM_LIBC_SHIM_DIR}) + add_custom_command( + OUTPUT ${TFLM_LIBC_SHIM_ARCHIVE} + COMMAND ${CMAKE_AR} x ${TFLM_TOOLCHAIN_LIBC_ARCHIVE} ${TFLM_LIBC_SHIM_MEMBERS} + COMMAND ${CMAKE_AR} rcs ${TFLM_LIBC_SHIM_ARCHIVE} ${TFLM_LIBC_SHIM_MEMBERS} + WORKING_DIRECTORY ${TFLM_LIBC_SHIM_DIR} + DEPENDS ${TFLM_TOOLCHAIN_LIBC_ARCHIVE} ${CMAKE_CURRENT_LIST_FILE} + COMMENT "Extracting abs()/libm members TFLM needs from the toolchain libc.a" + ) + add_custom_target(tflm_libc_shim_gen DEPENDS ${TFLM_LIBC_SHIM_ARCHIVE}) + add_library(tflm_libc_shim STATIC IMPORTED GLOBAL) + set_target_properties(tflm_libc_shim PROPERTIES IMPORTED_LOCATION ${TFLM_LIBC_SHIM_ARCHIVE}) + add_dependencies(tflm_libc_shim tflm_libc_shim_gen) + zephyr_link_libraries(tflm_libc_shim) + + # TFLM/flatbuffers use assert() internally; the toolchain's own + # __assert_no_args implementation needs an unavailable stderr, so disable + # assert() outright instead (standard practice for release TFLM builds). + target_compile_definitions(tflm_lib PRIVATE NDEBUG) +endif() zephyr_include_directories(${TFLM_PATH}) +zephyr_include_directories(${FLATBUFFERS_PATH}/include) +zephyr_include_directories(${GEMMLOWP_PATH}) +zephyr_include_directories(${RUY_PATH}) +if(TENSORFLOW_HAVE_NNLIB_HIFI4) +zephyr_include_directories(${NN_HIFI_PATH}/algo/kernels/include) +zephyr_include_directories(${NN_HIFI_PATH}/include) +endif() +target_include_directories(modules_sof SYSTEM PRIVATE + ${TFLM_TOOLCHAIN_INCLUDE_ROOT}/c++/14.3.0 + ${TFLM_TOOLCHAIN_INCLUDE_ROOT}/c++/14.3.0/xtensa-${SOC_TOOLCHAIN_NAME}_zephyr-elf + ${TFLM_TOOLCHAIN_INCLUDE_ROOT} +) + diff --git a/src/audio/tensorflow/README.md b/src/audio/tensorflow/README.md index a8e3f59ba3ce..89b25c812ca5 100644 --- a/src/audio/tensorflow/README.md +++ b/src/audio/tensorflow/README.md @@ -1,22 +1,649 @@ -# TensorFlow Lite Micro (TFLM) Architecture +# TensorFlow Lite Micro (TFLM) & Wake-on-Voice (WoV) Architecture -This directory acts as the bridge for running ML models. +This directory provides the TensorFlow Lite for Microcontrollers (TFLM) classification module (`TFLMCLY`) for Sound Open Firmware (SOF), including integration with MFCC feature extraction, `mtrace` stream shutdown summary logging, IPC host notifications, Key Phrase Buffer (KPB) Wake-on-Voice (WoV) trigger infrastructure, and abstracted audio input sources across **HDA**, **DMIC**, **SSP (I2S)**, and **SoundWire (ALH)**. + +Two build modes are supported, selected automatically per target core: + +- **LLEXT module** (HiFi4/HiFi5 targets: MTL, PTL, ARL, ...) — `CONFIG_COMP_TENSORFLOW=m`, built with Clang, linked against the HiFi4-optimized `nnlib-hifi4` kernels. +- **Statically linked into `zephyr.elf`** (HiFi3 targets with no LLEXT/module-manager support, e.g. TGL/cavs2.5) — `CONFIG_COMP_TENSORFLOW=y`, built with the Zephyr SDK GCC toolchain, `nnlib-hifi4` NOT built or linked (see [Build Instructions](#build-instructions) below). + +--- ## Overview -Integrates TensorFlow Lite for Microcontrollers into the SOF audio pipeline. Evaluates pre-trained neural network topologies inline with the audio stream for tasks like wake-word, noise cancellation, or sound classification. +The TFLM module evaluates pre-trained micro speech neural network models inline within the SOF audio processing graph. It receives pre-processed audio feature tensors (mel-log spectrograms from the `mfcc` component), runs model inference in the **Data Processing (DP) domain**, logs keyword detections and stream shutdown event summaries to `mtrace`, issues IPC4 notifications to the host audio driver, and signals the KPB module to drain pre-roll audio history upon keyword detection. + +--- + +## Architecture & Data Flow + +### Dual-Path Wake-on-Voice (WoV) Architecture -## Architecture Diagram +To allow continuous keyword evaluation without streaming audio to the host until a keyword is detected, the pipeline separates real-time keyword detection from host PCM draining via KPB: ```mermaid -graph LR - Feat[Audio Features] --> TFLM[TFLM Inference Engine] - SubGraph[FlatBuffer Model] -.-> TFLM - TFLM --> Out[Inference Labels/Scores] +graph TD + subgraph Audio_Inputs ["Abstracted Hardware DAI Input Sources"] + HDA["HDA Analog Input (dai_type: HDA)"] + DMIC["PCH DMIC Digital Mic (dai_type: DMIC)"] + SSP["I2S / Bluetooth Codec (dai_type: SSP)"] + SDW["SoundWire SmartMic (dai_type: ALH)"] + end + + subgraph DAI_Abstraction ["Backend DAI Copier Widget"] + DAI["dai-copier.1 (dai_type: $CAPTURE_DAI_TYPE)"] + end + + subgraph KPB_Pipeline ["Capture & KPB Pipeline"] + Gain["gain.2.1 (Volume Control)"] + KPB["kpb.2.1 (Key Phrase Buffer)"] + end + + subgraph Detect_Pipeline ["Real-Time Detection Path (KPB Pin 1) - DP Domain"] + SRC["src.1.1 (Resampler: 48kHz -> 16kHz)"] + MFCC["mfcc.1.1 (Mel-40 Feature Extractor)"] + TFLM["tflmcly.1.1 (TFLM Keyword Classifier)"] + DetHost["host-copier.1.capture (PCM device 1: arm/observe only, see Usage)"] + end + + subgraph Host_Pipeline ["Host WoV Draining Path (KPB Pin 2)"] + Host["host-copier.0.capture (PCM device 0: real drain target)"] + end + + HDA --> DAI + DMIC --> DAI + SSP --> DAI + SDW --> DAI + + DAI --> Gain + Gain --> KPB + KPB -- Pin 1: Live Audio --> SRC + SRC --> MFCC + MFCC -- Mel-40 Q9.23 Tensors --> TFLM + TFLM --> DetHost + + TFLM -.->|1. KPB_EVENT_BEGIN_DRAINING Notifier| KPB + TFLM -.->|2. IPC4 Notification (scaffolded, not wired up)| Host_Driver[Host Driver] + TFLM -.->|3. Stream Shutdown Event Logging| MTrace[mtrace / Trace Log] + + KPB -- Pin 2: Pre-roll History Buffer --> Host +``` + +**Note on pipe 1's host-copier**: `host-copier.1.capture` (PCM device 1, "HDA Mic TFLM Detect") exists to *arm/instantiate* the detection pipeline and to give a host-visible device for debugging — it is **not** the WoV drain target. `arecord`-ing it will get an immediate `Input/output error` once its ring buffer underruns, because `tflmcly` (not the host) is the real consumer on this pipe; this is expected. The pipeline stays fully armed and running as long as the PCM is *opened*, whether or not a read ever succeeds — see [Usage](#usage) for how to hold it open for testing without triggering the read-error teardown. The actual pre-roll audio delivered to the host on keyword detection always arrives via `host-copier.0.capture` (PCM device 0). + +--- + +## Domain Execution Model (LL vs. DP) + +- **Low Latency (LL) Domain (Timer Task / 1ms tick loop)**: + - Components: `dai-copier`, `eqiir`, `tdfb`, `drc`, `host-copier` + - Purpose: Fixed 1 ms tick loop executed on Core 0 to meet hard real-time audio hardware deadlines. + - Metrics: Reported via `ll_schedule.stats_report` (e.g. `ll core 0 timer avg 22,049 cycles (~56 µs)`). + +- **Data Processing (DP) Domain (Asynchronous Task)**: + - Components: `src`, `micsel`, `mfcc`, `tflmcly` + - Purpose: Runs asynchronously in a background task whenever a new feature hop is produced by `mfcc` — measured empirically at roughly one inference every ~500ms (bring-up wall-clock gate, see [Known Limitations](#known-limitations--open-issues)). + - **Separation**: Because TFLM runs in the DP domain, model inference cycles take place outside the 1 ms LL tick loop, guaranteeing zero impact on real-time LL audio latency or buffer overruns. On targets without a pre-existing DP scheduler user, `platform_init()` now calls `scheduler_dp_init()` explicitly so `mfcc`/`tflmcly` have somewhere to run (`src/platform/intel/cavs/platform.c`). + +### MFCC frame format + +Per hop, MFCC emits a 24-byte `struct mfcc_data_header` (magic/frame_number/reserved/energy/noise_energy/vad_flag) followed by `TFLM_FEATURE_SIZE` (40) `int32_t` Q9.23 mel-log values — `24 + 40*4 = 184` bytes (`MFCC_FRAME_BYTES` in the pipeline template). `tflm_process()` strips this header and requantizes each Q9.23 value into `int8_t` against the model's *real* input tensor `scale`/`zero_point` (read from the interpreter at prepare time, not assumed) before feeding the model's 49-hop sliding feature window. + +--- + +## Known Limitations / Open Issues + +- **Feature-representation mismatch (stock model only)**: the shipped 4-class `silence/unknown/yes/no` model was trained against TFLM's original `micro_speech` frontend, which applies a *nonlinear* PCAN auto-gain-control normalization before quantization. SOF's MFCC produces *linear* mel-log values. Empirically, real captured audio normalizes to `norm ≈ 0.03–1.5` (Q9.23 mel-log value / 2^23), while this model's actual `input_scale=0.101715`/`zero_point=-128` need `norm ≈ 0–26` to use its int8 dynamic range — so every real input saturates into the bottom ~8% of the range and the model outputs a flat, content-independent prediction. No linear rescale of `mfcc_mel_q23_to_int8()` fixes this; it needs either a model retrained directly on real SOF MFCC mel-log features (recommended — see [Training a Custom Keyword Model](#training-a-custom-keyword-model-with-piper-tts)), or a from-scratch PCAN-AGC-equivalent normalization stage ahead of quantization. **Training a new model on real SOF features, as described below, avoids this problem entirely** since train-time and inference-time feature extraction then match by construction. +- **500ms inference cadence is a bring-up shortcut**, not the model's trained stride (20ms/hop, 49-hop/~1s sliding window). Fine for initial bring-up; revisit before judging a new model's real-world accuracy, since a cadence mismatch vs. training assumptions can look like a model-quality problem. +- **IPC4 host notification is scaffolded but not wired up** (`tflm_ipc_notification_init()` never allocates/registers `cd->msg`, so `tflm_send_keyword_notification()` silently no-ops). KPB draining (a separate mechanism) still works. Finish this if the host driver needs an explicit "keyword X detected" event rather than just observing PCM start flowing on device 0. +- **Per-instance state is global**, not per-`comp_dev` (`g_tflm_cd`, `g_tflm_initialized`, per-category counters, etc.). Fine for a single detector instance; would need reworking for concurrent multi-`tflmcly` use. +- **Category count/labels are still hardcoded in a few places** beyond `TFLM_CATEGORY_DATA` (shutdown-summary format string, the KPB-trigger rule `max_idx >= 2`) — generalize before changing the category set. + +--- + +## Abstracted Audio Input Sources in Topology v2 + +The TFLM Keyword Detection and KPB pre-roll pipeline is decoupled from the physical DAI input source using the generic `dai-copier` widget: + +```conf +Object.Widget.dai-copier.1 { + dai_type $CAPTURE_DAI_TYPE # "HDA", "DMIC", "SSP", or "ALH" (SoundWire) + copier_type $CAPTURE_COPIER_TYPE # "HDA", "DMIC", "SSP", or "ALH" + stream_name $CAPTURE_DAI_NAME # "Analog", "DMIC01", "SSP0", "SDW0-Capture" + node_type $CAPTURE_NODE_TYPE # $HDA_LINK_INPUT_CLASS, $DMIC_LINK_INPUT_CLASS, etc. +} +``` + +Platform wrappers select the input source cleanly via configuration defines: +```conf +Define { + CAPTURE_SOURCE "hda" # Options: "hda", "dmic", "ssp", "soundwire" +} + +IncludeByKey.CAPTURE_SOURCE { + "hda" "platform/intel/capture-hda.conf" + "dmic" "platform/intel/capture-dmic.conf" + "ssp" "platform/intel/capture-ssp.conf" + "soundwire" "platform/intel/capture-sdw.conf" +} +``` + +--- + +## Topology v2 Integration & Usage + +### 1. Component Widget Definition (`include/components/tflm.conf`) + +Defines `Class.Widget."tflmcly"`: +- **UUID**: `42:c6:1d:c5:e1:a2:df:48:a4:90:e2:74:8c:b6:36:3e` (`c51dc642-a2e1-48df-a490e2748cb6363e`) +- **Type**: `effect` + +### 2. Detection Pipeline Template (`include/pipelines/cavs/host-gateway-micsel-mfcc-tflm-capture.conf`) + +Instantiates the real-time detection graph — `mfcc.1` carries a real bytes-control config default (`HDA_MIC_MFCC_PARAMS`, defaulting to `include/components/mfcc/mel40_compress.conf`), and `tflmcly.1`'s output is routed to a real host-copier rather than a terminal virtual sink: + +```conf +Object.Widget { + host-copier."1" { + type "aif_out" + node_type $HDA_HOST_INPUT_CLASS + stream_name "HDA Mic TFLM Detect" + pcm_id $index + } + src."1" { ... } + mfcc."1" { + Object.Control.bytes."1" { + name "HDA Mic MFCC bytes" + IncludeByKey.HDA_MIC_MFCC_PARAMS { + "default" "include/components/mfcc/mel40_compress.conf" + } + } + } + tflmcly."1" { scheduler_domain "DP" } +} + +Object.Base.route [ + { source tflmcly.$index.1; sink "host-copier.$index.capture" } +] +``` + +### 3. Top-Level Topology Configuration (`sof-hda-generic.conf` + `hda-mic-tflm-kpb.conf` overlay) + +Instantiates the complete HDA Mic WoV topology with dual-path KPB routing: +```conf +Object.Base.route [ + # DAI -> Gain -> KPB + { source "dai-copier.HDA.Analog.capture"; sink "gain.2.1" } + { source "gain.2.1"; sink "kpb.2.1" } + + # KPB Pin 1 -> Real-time Detection Path (DP Domain) + { source "kpb.2.1"; sink "src.1.1" } + + # KPB Pin 2 -> Host WoV Draining Path + { source "kpb.2.1"; sink "host-copier.0.capture" } +] +``` + +A "HDA Mic TFLM Detect" PCM entry (`$HDA_TFLM_DETECT_PIPELINE_ID`, mono S32_LE @16kHz) exposes pipe 1's host-copier as PCM device 1. + +--- + +## Build Instructions + +### HiFi4/HiFi5 targets (MTL, PTL, ARL, ...) — LLEXT module, Clang + +```bash +source .venv/bin/activate +export LLVM_TOOLCHAIN_PATH= +west build -b intel_adsp/ app -d build--tflm -- \ + -DCONFIG_COMP_TENSORFLOW=m +``` + +### HiFi3 targets with no LLEXT support (TGL/cavs2.5) — static link, GCC + +Requires `CONFIG_COMP_TENSORFLOW=y` (not `m`) plus C++17 and enough stack/heap for the interpreter's arena, TFLM's own allocations, and `avcodec`-style blocking calls off the DP task — all already added to `app/boards/intel_adsp_cavs25.conf` on this branch: + +```conf +CONFIG_SOF_STAGING=y +CONFIG_CPP=y +CONFIG_STD_CPP17=y +CONFIG_COMP_TENSORFLOW=y +CONFIG_STACK_SIZE_EDF=32768 +CONFIG_HEAP_MEM_POOL_SIZE=32768 +CONFIG_COMMON_LIBC_MALLOC_ARENA_SIZE=32768 +``` + +Build with the Zephyr SDK GCC toolchain (no Clang/LLVM involved): + +```bash +source .venv/bin/activate +export ZEPHYR_SDK_INSTALL_DIR=/home/lrg/zephyr-sdk-1.0.1 +export ZEPHYR_TOOLCHAIN_VARIANT=zephyr +unset LLVM_TOOLCHAIN_PATH +west build -b intel_adsp/cavs25 app -d build-tgl-tflm-gcc +``` + +`src/audio/tensorflow/CMakeLists.txt` auto-detects that this target has no `nnlib-hifi4` support (`CONFIG_XTENSA_HIFI4` unset, even though the compiler may still be Clang for other targets) and skips building/linking `nn_hifi_lib`, falling back to plain-C TFLM reference kernels. It also extracts just the `abs()`/libm archive members TFLM needs from the toolchain's `libc.a` into a small private `tflm_libc_shim`, since `CONFIG_MINIMAL_LIBC` lacks them and linking the whole `libc.a` collides with Zephyr's own `malloc`/`free`. + +### Building topology targets + +From `sof/tools/build_tools`: + +```bash +# Build HDA TFLM KPB Topologies (MTL / PTL / TGL) +ninja topology2_prod_sof-mtl-hda-tflm-kpb +ninja topology2_prod_sof-ptl-hda-tflm-kpb +ninja topology2_prod_sof-tgl-hda-tflm-kpb + +# Build SoundWire TFLM Topology (ARL-S) +ninja topology2_dev_sof-arl-cs42l43-l0-cs35l56-l23-mfcc-mel-normal +``` + +--- + +## Usage + +### PCM device map (`sof-hda-tflm` topology) + +| Device | Widget | Role | +|---|---|---| +| `hw:0,0` | `host-copier.0.capture` | Real WoV output: KPB pin 2's pre-roll drain target. Reading this exercises the full `dai-copier -> gain -> kpb -> host` chain and is the right place to capture the actual detected/drained audio. | +| `hw:0,1` | `host-copier.1.capture` ("HDA Mic TFLM Detect") | Arms/observes the detection pipeline only — see the [pipeline diagram note](#dual-path-wake-on-voice-wov-architecture). Not a continuous PCM stream; see below. | + +### Sanity-checking the WoV drain path end-to-end + +```bash +ssh root@ 'arecord -D hw:0,0 -f S32_LE -r 48000 -c 2 -d 4 /tmp/sanity.wav' +``` + +A clean, error-free capture here confirms the physical DAI, gain, and KPB chain are all healthy independent of TFLM/MFCC. + +### Arming the detection pipeline and watching inferences + +`hw:0,1` is not meant to be read continuously: `tflmcly` (not the host) is the real consumer on this pipe, so `arecord`'s first failed `read()` tears the pipeline straight back down. To arm it and hold it running for observation, open the PCM directly via `libasound` without ever reading from it — e.g. a small ctypes/C snippet calling `snd_pcm_open()` + `snd_pcm_set_params()` + `snd_pcm_start()` on `hw:0,1` and then just sleeping. In parallel, tail `mtrace` on the DUT: + +```bash +ssh root@ '/usr/local/bin/mtrace-reader.py' > /tmp/mtrace.log & +# ... arm hw:0,1 and play/speak keywords into the mic ... +# look for periodic "[TFLM PREPARE]", "[DBG hop]", "[DBG raw_output]" lines +``` + +On a high-confidence detection, `KPB_EVENT_BEGIN_DRAINING` fires and pre-roll history starts flowing via `host-copier.0.capture` — i.e. it shows up on `hw:0,0`, not `hw:0,1`. + +### Stream shutdown summary + +Upon stream reset or module destruction (`tflm_reset()` / `tflm_free()`), TFLM emits a summary to `printk`/`mtrace`: + +```text +[TFLM STREAM SHUTDOWN SUMMARY] Total Inferences=142 | Keyword Events: Silence=120, Unknown=18, Yes=3, No=1 | Total KPB Triggers=4 ``` -## Configuration and Scripts +- `Total Inferences`: cumulative classification inferences completed during the stream session. +- `Keyword Events`: per-category classification breakdown. +- `Total KPB Triggers`: high-confidence detections that triggered `KPB_EVENT_BEGIN_DRAINING`. + +--- + +## Training a Custom Keyword Model with Piper-TTS + +The stock model only recognizes `yes`/`no` (plus `silence`/`unknown`). The +shipped `sof_tflm_quantized_model_data.{cc,h}` was retrained end-to-end +against real SOF mel40 features (currently against the `hey_linux` +keyword) using the scripts under [./tune/](./tune/). This section +documents that exact recipe so the model can be reproduced, a different +keyword substituted, or several keywords combined into one model. + +### Pipeline overview + +The training flow is orchestrated by +[sof_tflm_train_pipeline.sh](./tune/sof_tflm_train_pipeline.sh), which +chains four steps into one command: + +| Step | Script | What it does | +|------|--------|-------------| +| 0a | [sof_tflm_generate_keyword_dataset.sh](./tune/sof_tflm_generate_keyword_dataset.sh) | Synthesize `