diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..2b71df4 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,15 @@ +# These are supported funding model platforms + +github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry +polar: # Replace with a single Polar username +buy_me_a_coffee: # Replace with a single Buy Me a Coffee username +thanks_dev: # Replace with a single thanks.dev username +custom: ['https://www.paypal.com/paypalme/wernerdungspaypal'] diff --git a/README.md b/README.md index d411629..7497f33 100644 --- a/README.md +++ b/README.md @@ -65,6 +65,13 @@ For details please see [software.md](./software.md) - temperature sensors - optional: integrated control algorithm - OTA software update (of ESP32 and STM32) + - +Latest Software can be found here : +https://github.com/SurfGargano/VdMot_Controller/releases/latest + +Hardware can be found here: +**Hardware for VdMot_Controller is available via mail. Please write to vdmot@storbecknet.de. ** + ## License This project is licensed under the terms of the GNU General Public License v3.0 license. diff --git a/releases/STM32/1.2.0_Dev/STM32_C1_firmware.bin b/releases/STM32/1.2.0_Dev/STM32_C1_firmware.bin deleted file mode 100644 index 3f40911..0000000 Binary files a/releases/STM32/1.2.0_Dev/STM32_C1_firmware.bin and /dev/null differ diff --git a/releases/STM32/1.2.2_Dev/STM32_C1_firmware.bin b/releases/STM32/1.2.2_Dev/STM32_C1_firmware.bin deleted file mode 100644 index c1c0f4b..0000000 Binary files a/releases/STM32/1.2.2_Dev/STM32_C1_firmware.bin and /dev/null differ diff --git a/releases/STM32/1.2.2_Dev/STM32_C2_firmware.bin b/releases/STM32/1.2.2_Dev/STM32_C2_firmware.bin deleted file mode 100644 index e6252fe..0000000 Binary files a/releases/STM32/1.2.2_Dev/STM32_C2_firmware.bin and /dev/null differ diff --git a/releases/STM32/1.3.0_Dev/STM32_C1_firmware.bin b/releases/STM32/1.3.0_Dev/STM32_C1_firmware.bin deleted file mode 100644 index d97064c..0000000 Binary files a/releases/STM32/1.3.0_Dev/STM32_C1_firmware.bin and /dev/null differ diff --git a/releases/STM32/1.3.0_Dev/STM32_C2_firmware.bin b/releases/STM32/1.3.0_Dev/STM32_C2_firmware.bin deleted file mode 100644 index b05e877..0000000 Binary files a/releases/STM32/1.3.0_Dev/STM32_C2_firmware.bin and /dev/null differ diff --git a/releases/STM32/1.3.2_Dev/STM32_C1_firmware.bin b/releases/STM32/1.3.2_Dev/STM32_C1_firmware.bin deleted file mode 100644 index 0d209bc..0000000 Binary files a/releases/STM32/1.3.2_Dev/STM32_C1_firmware.bin and /dev/null differ diff --git a/releases/STM32/1.3.2_Dev/STM32_C2_firmware.bin b/releases/STM32/1.3.2_Dev/STM32_C2_firmware.bin deleted file mode 100644 index 1916f2d..0000000 Binary files a/releases/STM32/1.3.2_Dev/STM32_C2_firmware.bin and /dev/null differ diff --git a/releases/STM32/1.3.3_Dev/STM32_C1_firmware.bin b/releases/STM32/1.3.3_Dev/STM32_C1_firmware.bin deleted file mode 100644 index 6fade19..0000000 Binary files a/releases/STM32/1.3.3_Dev/STM32_C1_firmware.bin and /dev/null differ diff --git a/releases/STM32/1.3.3_Dev/STM32_C2_firmware.bin b/releases/STM32/1.3.3_Dev/STM32_C2_firmware.bin deleted file mode 100644 index 5edb125..0000000 Binary files a/releases/STM32/1.3.3_Dev/STM32_C2_firmware.bin and /dev/null differ diff --git a/releases/STM32/1.3.4_Dev/STM32_C1_firmware.bin b/releases/STM32/1.3.4_Dev/STM32_C1_firmware.bin deleted file mode 100644 index 87a4a67..0000000 Binary files a/releases/STM32/1.3.4_Dev/STM32_C1_firmware.bin and /dev/null differ diff --git a/releases/STM32/1.3.4_Dev/STM32_C2_firmware.bin b/releases/STM32/1.3.4_Dev/STM32_C2_firmware.bin deleted file mode 100644 index e3816a5..0000000 Binary files a/releases/STM32/1.3.4_Dev/STM32_C2_firmware.bin and /dev/null differ diff --git a/releases/STM32/1.3.6_Dev/STM32F411_C1_firmware.bin b/releases/STM32/1.3.6_Dev/STM32F411_C1_firmware.bin deleted file mode 100644 index e9953a8..0000000 Binary files a/releases/STM32/1.3.6_Dev/STM32F411_C1_firmware.bin and /dev/null differ diff --git a/releases/STM32/1.3.6_Dev/STM32F411_C2_firmware.bin b/releases/STM32/1.3.6_Dev/STM32F411_C2_firmware.bin deleted file mode 100644 index eab387c..0000000 Binary files a/releases/STM32/1.3.6_Dev/STM32F411_C2_firmware.bin and /dev/null differ diff --git a/releases/STM32/1.3.6_Dev/STM32_C1_firmware.bin b/releases/STM32/1.3.6_Dev/STM32_C1_firmware.bin deleted file mode 100644 index 2474271..0000000 Binary files a/releases/STM32/1.3.6_Dev/STM32_C1_firmware.bin and /dev/null differ diff --git a/releases/STM32/1.3.6_Dev/STM32_C2_firmware.bin b/releases/STM32/1.3.6_Dev/STM32_C2_firmware.bin deleted file mode 100644 index 8b7f351..0000000 Binary files a/releases/STM32/1.3.6_Dev/STM32_C2_firmware.bin and /dev/null differ diff --git a/releases/STM32/1.3.7_Dev/STM32F411_C1_firmware.bin b/releases/STM32/1.4.0_Dev/STM32F411_C1_firmware.bin similarity index 57% rename from releases/STM32/1.3.7_Dev/STM32F411_C1_firmware.bin rename to releases/STM32/1.4.0_Dev/STM32F411_C1_firmware.bin index a903f5a..2fef7be 100644 Binary files a/releases/STM32/1.3.7_Dev/STM32F411_C1_firmware.bin and b/releases/STM32/1.4.0_Dev/STM32F411_C1_firmware.bin differ diff --git a/releases/STM32/1.3.7_Dev/STM32F411_C2_firmware.bin b/releases/STM32/1.4.0_Dev/STM32F411_C2_firmware.bin similarity index 57% rename from releases/STM32/1.3.7_Dev/STM32F411_C2_firmware.bin rename to releases/STM32/1.4.0_Dev/STM32F411_C2_firmware.bin index d7469f9..bb66472 100644 Binary files a/releases/STM32/1.3.7_Dev/STM32F411_C2_firmware.bin and b/releases/STM32/1.4.0_Dev/STM32F411_C2_firmware.bin differ diff --git a/releases/STM32/1.3.7_Dev/STM32_C1_firmware.bin b/releases/STM32/1.4.0_Dev/STM32_C1_firmware.bin similarity index 55% rename from releases/STM32/1.3.7_Dev/STM32_C1_firmware.bin rename to releases/STM32/1.4.0_Dev/STM32_C1_firmware.bin index 7b1f916..5c78d89 100644 Binary files a/releases/STM32/1.3.7_Dev/STM32_C1_firmware.bin and b/releases/STM32/1.4.0_Dev/STM32_C1_firmware.bin differ diff --git a/releases/STM32/1.3.7_Dev/STM32_C2_firmware.bin b/releases/STM32/1.4.0_Dev/STM32_C2_firmware.bin similarity index 56% rename from releases/STM32/1.3.7_Dev/STM32_C2_firmware.bin rename to releases/STM32/1.4.0_Dev/STM32_C2_firmware.bin index 9ca5e8b..64e4efa 100644 Binary files a/releases/STM32/1.3.7_Dev/STM32_C2_firmware.bin and b/releases/STM32/1.4.0_Dev/STM32_C2_firmware.bin differ diff --git a/releases/STM32/1.4.8_Dev/STM32F411_C1_firmware.bin b/releases/STM32/1.4.8_Dev/STM32F411_C1_firmware.bin new file mode 100644 index 0000000..7478c7c Binary files /dev/null and b/releases/STM32/1.4.8_Dev/STM32F411_C1_firmware.bin differ diff --git a/releases/STM32/1.4.8_Dev/STM32F411_C2_firmware.bin b/releases/STM32/1.4.8_Dev/STM32F411_C2_firmware.bin new file mode 100644 index 0000000..6a9e519 Binary files /dev/null and b/releases/STM32/1.4.8_Dev/STM32F411_C2_firmware.bin differ diff --git a/releases/STM32/1.4.8_Dev/STM32_C1_firmware.bin b/releases/STM32/1.4.8_Dev/STM32_C1_firmware.bin new file mode 100644 index 0000000..9c2e75d Binary files /dev/null and b/releases/STM32/1.4.8_Dev/STM32_C1_firmware.bin differ diff --git a/releases/STM32/1.4.8_Dev/STM32_C2_firmware.bin b/releases/STM32/1.4.8_Dev/STM32_C2_firmware.bin new file mode 100644 index 0000000..3ba0d7c Binary files /dev/null and b/releases/STM32/1.4.8_Dev/STM32_C2_firmware.bin differ diff --git a/releases/STM32/1.4.9_Dev/STM32F411_C1_firmware.bin b/releases/STM32/1.4.9_Dev/STM32F411_C1_firmware.bin new file mode 100644 index 0000000..3e36a7f Binary files /dev/null and b/releases/STM32/1.4.9_Dev/STM32F411_C1_firmware.bin differ diff --git a/releases/STM32/1.4.9_Dev/STM32F411_C2_firmware.bin b/releases/STM32/1.4.9_Dev/STM32F411_C2_firmware.bin new file mode 100644 index 0000000..294eb85 Binary files /dev/null and b/releases/STM32/1.4.9_Dev/STM32F411_C2_firmware.bin differ diff --git a/releases/STM32/1.4.9_Dev/STM32_C1_firmware.bin b/releases/STM32/1.4.9_Dev/STM32_C1_firmware.bin new file mode 100644 index 0000000..96e6b71 Binary files /dev/null and b/releases/STM32/1.4.9_Dev/STM32_C1_firmware.bin differ diff --git a/releases/STM32/1.4.9_Dev/STM32_C2_firmware.bin b/releases/STM32/1.4.9_Dev/STM32_C2_firmware.bin new file mode 100644 index 0000000..5a2a74a Binary files /dev/null and b/releases/STM32/1.4.9_Dev/STM32_C2_firmware.bin differ diff --git a/releases/WTH32/1.2.0_Dev/ESP32_firmware.bin b/releases/WTH32/1.2.0_Dev/ESP32_firmware.bin deleted file mode 100644 index da98bba..0000000 Binary files a/releases/WTH32/1.2.0_Dev/ESP32_firmware.bin and /dev/null differ diff --git a/releases/WTH32/1.2.1_Dev/ESP32_firmware.bin b/releases/WTH32/1.2.1_Dev/ESP32_firmware.bin deleted file mode 100644 index b0b1ebb..0000000 Binary files a/releases/WTH32/1.2.1_Dev/ESP32_firmware.bin and /dev/null differ diff --git a/releases/WTH32/1.2.2_Dev/ESP32_firmware.bin b/releases/WTH32/1.2.2_Dev/ESP32_firmware.bin deleted file mode 100644 index b5adc7f..0000000 Binary files a/releases/WTH32/1.2.2_Dev/ESP32_firmware.bin and /dev/null differ diff --git a/releases/WTH32/1.2.3_Dev/ESP32_firmware.bin b/releases/WTH32/1.2.3_Dev/ESP32_firmware.bin deleted file mode 100644 index 2c5c8f0..0000000 Binary files a/releases/WTH32/1.2.3_Dev/ESP32_firmware.bin and /dev/null differ diff --git a/releases/WTH32/1.2.4_Dev/ESP32_firmware.bin b/releases/WTH32/1.2.4_Dev/ESP32_firmware.bin deleted file mode 100644 index 19ea906..0000000 Binary files a/releases/WTH32/1.2.4_Dev/ESP32_firmware.bin and /dev/null differ diff --git a/releases/WTH32/1.2.5_Dev/ESP32_firmware.bin b/releases/WTH32/1.2.5_Dev/ESP32_firmware.bin deleted file mode 100644 index 5406c88..0000000 Binary files a/releases/WTH32/1.2.5_Dev/ESP32_firmware.bin and /dev/null differ diff --git a/releases/WTH32/1.3.0_Dev/ESP32_firmware.bin b/releases/WTH32/1.3.0_Dev/ESP32_firmware.bin deleted file mode 100644 index 9facba3..0000000 Binary files a/releases/WTH32/1.3.0_Dev/ESP32_firmware.bin and /dev/null differ diff --git a/releases/WTH32/1.3.2_Dev/ESP32_firmware.bin b/releases/WTH32/1.3.2_Dev/ESP32_firmware.bin deleted file mode 100644 index aea66c4..0000000 Binary files a/releases/WTH32/1.3.2_Dev/ESP32_firmware.bin and /dev/null differ diff --git a/releases/WTH32/1.3.3_Dev/ESP32_firmware.bin b/releases/WTH32/1.3.3_Dev/ESP32_firmware.bin deleted file mode 100644 index 4350d32..0000000 Binary files a/releases/WTH32/1.3.3_Dev/ESP32_firmware.bin and /dev/null differ diff --git a/releases/WTH32/1.3.4_Dev/ESP32_firmware.bin b/releases/WTH32/1.3.4_Dev/ESP32_firmware.bin deleted file mode 100644 index f4af283..0000000 Binary files a/releases/WTH32/1.3.4_Dev/ESP32_firmware.bin and /dev/null differ diff --git a/releases/WTH32/1.3.6_Dev/ESP32_firmware.bin b/releases/WTH32/1.3.6_Dev/ESP32_firmware.bin deleted file mode 100644 index de555f2..0000000 Binary files a/releases/WTH32/1.3.6_Dev/ESP32_firmware.bin and /dev/null differ diff --git a/releases/WTH32/1.3.7_Dev/ESP32_firmware.bin b/releases/WTH32/1.3.7_Dev/ESP32_firmware.bin deleted file mode 100644 index 416d337..0000000 Binary files a/releases/WTH32/1.3.7_Dev/ESP32_firmware.bin and /dev/null differ diff --git a/releases/WTH32/1.4.0_Dev/ESP32_firmware.bin b/releases/WTH32/1.4.0_Dev/ESP32_firmware.bin new file mode 100644 index 0000000..97b795a Binary files /dev/null and b/releases/WTH32/1.4.0_Dev/ESP32_firmware.bin differ diff --git a/releases/WTH32/1.4.10_Dev/ESP32_firmware.bin b/releases/WTH32/1.4.10_Dev/ESP32_firmware.bin new file mode 100644 index 0000000..d0ef982 Binary files /dev/null and b/releases/WTH32/1.4.10_Dev/ESP32_firmware.bin differ diff --git a/releases/WTH32/1.4.1_Dev/ESP32_firmware.bin b/releases/WTH32/1.4.1_Dev/ESP32_firmware.bin new file mode 100644 index 0000000..9ee858c Binary files /dev/null and b/releases/WTH32/1.4.1_Dev/ESP32_firmware.bin differ diff --git a/releases/WTH32/1.4.2_Dev/ESP32_firmware.bin b/releases/WTH32/1.4.2_Dev/ESP32_firmware.bin new file mode 100644 index 0000000..a2f072a Binary files /dev/null and b/releases/WTH32/1.4.2_Dev/ESP32_firmware.bin differ diff --git a/releases/WTH32/1.4.3_Dev/ESP32_firmware.bin b/releases/WTH32/1.4.3_Dev/ESP32_firmware.bin new file mode 100644 index 0000000..ed60368 Binary files /dev/null and b/releases/WTH32/1.4.3_Dev/ESP32_firmware.bin differ diff --git a/releases/WTH32/1.4.4_Dev/ESP32_firmware.bin b/releases/WTH32/1.4.4_Dev/ESP32_firmware.bin new file mode 100644 index 0000000..e4c0cc2 Binary files /dev/null and b/releases/WTH32/1.4.4_Dev/ESP32_firmware.bin differ diff --git a/releases/WTH32/1.4.6_Dev/ESP32_firmware.bin b/releases/WTH32/1.4.6_Dev/ESP32_firmware.bin new file mode 100644 index 0000000..258e52b Binary files /dev/null and b/releases/WTH32/1.4.6_Dev/ESP32_firmware.bin differ diff --git a/releases/WTH32/1.4.7_Dev/ESP32_firmware.bin b/releases/WTH32/1.4.7_Dev/ESP32_firmware.bin new file mode 100644 index 0000000..fb7c3d1 Binary files /dev/null and b/releases/WTH32/1.4.7_Dev/ESP32_firmware.bin differ diff --git a/releases/WTH32/1.4.8_Dev/ESP32_firmware.bin b/releases/WTH32/1.4.8_Dev/ESP32_firmware.bin new file mode 100644 index 0000000..e2116ce Binary files /dev/null and b/releases/WTH32/1.4.8_Dev/ESP32_firmware.bin differ diff --git a/releases/WTH32/1.4.9_Dev/ESP32_firmware.bin b/releases/WTH32/1.4.9_Dev/ESP32_firmware.bin new file mode 100644 index 0000000..4ff15ab Binary files /dev/null and b/releases/WTH32/1.4.9_Dev/ESP32_firmware.bin differ diff --git a/software_esp32/ChangeLog.md b/software_esp32/ChangeLog.md index 90ee659..3c86b14 100644 --- a/software_esp32/ChangeLog.md +++ b/software_esp32/ChangeLog.md @@ -11,6 +11,80 @@ All notable changes to this project will be documented in this file. ## [Unreleased] - Development +## [1.4.10] +### Added +- Webui : Show information if stm failed +- PI Control : deadband added +### Fixed +- Mqtt : reconnect mqtt if control setup is saved to subscribe topics again +- SNTP : connection improved + +## [1.4.9] +### Added +- HA discovery : temperature_state_topic added + +## [1.4.8] +### Fixed +- Webui : if stm32 is not responding after reset an error message is displayed in config and config save button is enabled again +- Webui : manual set valve button on status page was not displayed after login. +- update : if the file-end is 256 byte aligned a verify error occurs during update stm after flashing +### Changed +- Webui : display all temp sensors on status page if 'publish all temps' is enabled +### Added +- Pi Control : actual pi control values will be saved in rtc ram and + reloaded after reset by SW (will take by update or reboot with SW, not when power off/on or hardware reset) +- Webui : more in state info during calibration + +## [1.4.7] +### Changed +- Webui : handling for login to save login parameters in browser password manager +- Webui : display temp sensor name on status page in temp1 and temp2 +### Added +- WebUI : logout button + + +## [1.4.6] +### Changed +- Mqtt : bugfix in topic generation +- Webui : disable config save button while loading +- Temp : Index of temp offset in config was wrong + +### Added +- Mqtt : publish min/max for valve control +- Discovery : topics for temp and volt sensors corrected +- WebUI : hover on table line -> orange + +## [1.4.4] +### Added +- Mqtt : publish ip added + send initial value for valve/control/mode after boot. + Discovery of 0.5 degree step with climate +- Control : Initial value for target temperature after boot +- Config : Increase email config to 64 chars + +## [1.4.3] +### Added +- STM : Boot0 ota : reduce Baudrate by div 2 if init failed. Retry 2 times +- Mqtt : discovery: climate and valve added +- Mqtt : tValue and tTarget will be resend by VDMot if received from a server and differs from the last one. + (Only if strict seperate topics is enabled) + +## [1.4.2] +### Changed +- Mqtt : discovery: if valve name und temp name is empty then the idx-number is set as name + delete last topics (user can avtivate) in HA prior sending new discovery +### Added +- STM : check for compatibility to WTH32 version + +## [1.4.1] +### Changed +- Mqtt : blanks in valve name und temp name allowed +### Added +- Mqtt : discovery for home assistant + +## [1.4.0] +### Changed +- System : add DS2438 for voltage sensors ## [1.3.7] ### Changed diff --git a/software_esp32/ESP32_firmware_test_Boot0.bin b/software_esp32/ESP32_firmware_test_Boot0.bin new file mode 100644 index 0000000..4b8af30 Binary files /dev/null and b/software_esp32/ESP32_firmware_test_Boot0.bin differ diff --git a/software_esp32/include/PIControl.h b/software_esp32/include/PIControl.h index b2bd17b..5b25849 100644 --- a/software_esp32/include/PIControl.h +++ b/software_esp32/include/PIControl.h @@ -56,6 +56,9 @@ #define windowActionOpen 2 #define windowActionClose 3 +#define piControlDynamicKi 0 +#define piControlStaticKi 1 + enum CHECKACTION {nothing,gotoMin,gotoPark,control}; enum WINDOWSTATE {windowIdle,windowOpenLock,windowCloseRestore}; @@ -80,7 +83,10 @@ class CPiControl: public Executable void exec() override { controlValve(); } + double getpProp(float e); float piCtrl(float target,float value); + void savePiControl(); + void reloadPiControl(); void updateControllerGains(float observedError); uint8_t calcValve(); void controlValve(); @@ -109,15 +115,15 @@ class CPiControl: public Executable uint8_t windowOpenTarget; bool controlActive; bool failed; - float esum; + double esum; + double old_esum; + bool start; private: void doControlValve(); CHECKACTION checkAction(uint8_t idx); - float iProp; + double iProp; time_t ts; - bool start; - uint8_t lastControlPosition; }; diff --git a/software_esp32/include/RtcRam.h b/software_esp32/include/RtcRam.h new file mode 100644 index 0000000..e8dedb7 --- /dev/null +++ b/software_esp32/include/RtcRam.h @@ -0,0 +1,22 @@ +#pragma once + +#include "globals.h" + +#define RTC_RAM_PATTERN "RTCPattern001" + +typedef struct { + char pattern[15]; + float target; + float value; + float iProp; + float esum; + float lastControlPosition; +} PI_CONTROL_RTC; + +typedef struct { + PI_CONTROL_RTC piControlRtc[ACTUATOR_COUNT]; +} PI_CONTROL_RTCS; + + +extern RTC_NOINIT_ATTR int readingCnt; +extern RTC_NOINIT_ATTR PI_CONTROL_RTCS piControlRtcs; \ No newline at end of file diff --git a/software_esp32/include/Services.h b/software_esp32/include/Services.h index 2c7943a..ffc7dc6 100644 --- a/software_esp32/include/Services.h +++ b/software_esp32/include/Services.h @@ -67,7 +67,7 @@ class CServices void checkDS18(); void valvesSetLearn(); void checkGetNtp(); - + void GetLastTargetValues(); bool serviceValvesStarted; private: TEMPSTATES tempStates[TEMP_SENSORS_COUNT]; diff --git a/software_esp32/include/VdmConfig.h b/software_esp32/include/VdmConfig.h index 7954912..21bcf72 100644 --- a/software_esp32/include/VdmConfig.h +++ b/software_esp32/include/VdmConfig.h @@ -47,12 +47,14 @@ #define pinSetFactoryCfg 2 -enum protType {protTypeNone=0,protTypeMqtt=1}; +enum protType {protTypeNone=0,protTypeMqtt=1,protTypeMqttHA=2}; #define allowHeatingCooling 0 #define allowHeating 1 #define allowCooling 2 +enum numFormat {numFormatIntl=0,numFormatGer=1}; + typedef struct { uint8_t eth_wifi; bool dhcpEnabled; @@ -97,6 +99,7 @@ typedef struct { typedef struct { uint8_t timeoutTSActive : 1 ; uint8_t timeoutDSActive : 1 ; + uint8_t numFormat : 1 ; } VDM_PROTOCOL_MQTT_CONFIG_FLAGS; @@ -108,7 +111,7 @@ typedef struct { typedef struct { - uint8_t dataProtocol; // 0 = no protocol , 1 = mqtt + uint8_t dataProtocol; // 0 = no protocol , 1 = mqtt, 2 = mqtt HA uint32_t brokerIp; uint16_t brokerPort; uint32_t brokerInterval; @@ -157,12 +160,14 @@ typedef struct { } VDM_VALVE_CONTROL_CONFIG; typedef struct { - float alpha; -} VDM_VALVE_CONTROL_CONFIG_ALPHA; + float tTarget; +} VDM_VALVE_CONTROL_INIT; typedef struct { - uint8_t usePrediction : 1; -} VDM_VALVES_CONTROL_CONFIG_FLAGS; + float alpha; + float beta; + float deadband; +} VDM_VALVE_CONTROL1_CONFIG; typedef struct { VDM_VALVE_CONTROL_CONFIG valveControlConfig[ACTUATOR_COUNT]; @@ -170,6 +175,14 @@ typedef struct { uint8_t parkingPosition; } VDM_VALVES_CONTROL_CONFIG; +typedef struct { + VDM_VALVE_CONTROL1_CONFIG valveControl1Config[ACTUATOR_COUNT]; +} VDM_VALVES_CONTROL1_CONFIG; + +typedef struct { + VDM_VALVE_CONTROL_INIT valveControlInit[ACTUATOR_COUNT]; +} VDM_VALVES_CONTROL_INIT; + typedef struct { char name[11]; @@ -182,6 +195,25 @@ typedef struct { VDM_TEMP_CONFIG tempConfig[TEMP_SENSORS_COUNT]; } VDM_TEMPS_CONFIG; +typedef struct { + char name[11]; + bool active; + float offset; + float factor; + char unit[9]; + char ID[25]; +} VDM_VOLT_CONFIG; + +typedef struct { + uint8_t avType; + uint16_t noOfAv; +} VDM_VOLT_AV_CONFIG; + +typedef struct { + VDM_VOLT_CONFIG voltConfig[VOLT_SENSORS_COUNT]; + VDM_VOLT_AV_CONFIG voltAVConfig[VOLT_SENSORS_COUNT]; +} VDM_VOLTS_CONFIG; + typedef struct { uint8_t pushOver : 1 ; uint8_t email : 1 ; @@ -232,10 +264,13 @@ typedef struct VDM_PROTOCOL_CONFIG protConfig; VDM_VALVES_CONFIG valvesConfig; VDM_TEMPS_CONFIG tempsConfig; + VDM_VOLTS_CONFIG voltsConfig; VDM_SYSTEM_CONFIG systemConfig; VDM_VALVES_CONTROL_CONFIG valvesControlConfig; VDM_SYSTEM_TIME_ZONE_CONFIG timeZoneConfig; VDM_MSG_CONFIG messengerConfig; + VDM_VALVES_CONTROL_INIT valvesControlInit; + VDM_VALVES_CONTROL1_CONFIG valvesControl1Config; } CONFIG_FLASH; typedef struct { @@ -288,14 +323,17 @@ typedef struct { #define nvsValvesControlCfg "valvesCtrlCfg" #define nvsValves "valves" #define nvsValvesControl "valvesCtrl" -#define nvsValvesControlAlpha "vCtrlAlpha" +#define nvsValvesControl1 "valvesCtrl1" #define nvsValvesControlHeatControl "vCtrlHeat" #define nvsValvesControlParkPos "vCtrlParkPos" -#define nvsValvesControlFlags "vCtrlFlags" +#define nvsValvesControlInit "vCtrlInit" #define nvsTempsCfg "tempsCfg" #define nvsTemps "temps" +#define nvsVoltsCfg "voltsCfg" +#define nvsVolts "volts" + #define nvsDayOfCalib "dayOfCalib" #define nvsHourOfCalib "hourOfCalib" #define nvsMovCalib "movCalib" @@ -345,6 +383,7 @@ class CVdmConfig void postValvesCfg (JsonObject doc); void postValvesControlCfg (JsonObject doc); void postTempsCfg (JsonObject doc); + void postVoltsCfg (JsonObject doc); void postSysCfg (JsonObject doc); void postMessengerCfg (JsonObject doc); String handleAuth (JsonObject doc); diff --git a/software_esp32/include/VdmNet.h b/software_esp32/include/VdmNet.h index 8865ab8..2d8c770 100644 --- a/software_esp32/include/VdmNet.h +++ b/software_esp32/include/VdmNet.h @@ -61,8 +61,9 @@ #include #include -#define noneProtocol 0 -#define mqttProtocol 1 +#define noneProtocol 0 +#define mqttProtocol 1 +#define mqttProtocolHA 2 #define interfaceAuto 0 #define interfaceEth 1 @@ -103,6 +104,7 @@ class CVdmNet void startBroker(); void mqttBroker(); void startSysLog(); + void configTzTime(const char* tz, const char* server1, const char* server2=NULL, const char* server3=NULL); bool checkSntpReachable(); TWifiState wifiState; diff --git a/software_esp32/include/VdmSystem.h b/software_esp32/include/VdmSystem.h index 7a6c6eb..c252e28 100644 --- a/software_esp32/include/VdmSystem.h +++ b/software_esp32/include/VdmSystem.h @@ -45,9 +45,14 @@ #include "VdmConfig.h" #include "esp_system.h" #include "helper.h" +#include +#include +#include #define systemMsgSTMReset "stm not working. reset stm" -#define systemMsgReset "reset system" +#define systemMsgReset "reset system by " +#define FS_READ_MODE 'r' +#define FS_WRITE_MODE 'w' #define systemStateOK 0 #define systemStateInfo 1 @@ -62,7 +67,6 @@ typedef struct String fsize; } fileinfo; - class CVdmSystem { public: @@ -80,20 +84,31 @@ class CVdmSystem bool getLocalTime(struct tm * info); String getLastResetReason(); void sendResetReason(); + void openFile (String fName,char mode); + void writelnToFile (String line); + String readlnFromFile (); + int fileAvailable (); + void closeFile (); esp_chip_info_t chip_info; fileinfo Filenames[maxFiles]; // Enough for most purposes! uint8_t numfiles; String stmVersion; + uint32_t stmNRevision; + uint32_t stmMinRequired; + bool stmVersionFalse; uint32_t stmID; time_t stmBuild; uint8_t systemState; String systemMessage; bool getFSInProgress; uint32_t stackSize; + + private: bool spiffsStarted; - + File dir; + File fsfile; }; extern CVdmSystem VdmSystem; diff --git a/software_esp32/include/compile_time.h b/software_esp32/include/compile_time.h index 0c7d9f8..bf47263 100644 --- a/software_esp32/include/compile_time.h +++ b/software_esp32/include/compile_time.h @@ -54,7 +54,8 @@ (month == 8 ? 0 : 31 + \ (month == 9 ? 0 : 30 + \ (month == 10 ? 0 : 31 + \ - (month == 11 ? 0 : 30)))))))))))) \ + (month == 11 ? 0 : 30 + \ + (month == 12 ? 0 : 31))))))))))))) \ #define GET_LEAP_DAYS ((__TIME_YEARS__-1968)/4 - (__TIME_MONTH__ <=2 ? 1 : 0)) @@ -70,6 +71,7 @@ #define __TIME_UNIX__ ((__TIME_YEARS__-UNIX_START_YEAR)*SEC_PER_YEAR+ \ GET_LEAP_DAYS*SEC_PER_DAY+ \ + SEC_PER_DAY+ \ GET_MONTH2DAYS(__TIME_MONTH__)*SEC_PER_DAY+ \ __TIME_DAYS__*SEC_PER_DAY-SEC_PER_DAY+ \ __TIME_HOURS__*SEC_PER_HOUR+ \ diff --git a/software_esp32/include/globals.h b/software_esp32/include/globals.h index cb5d52c..7793325 100644 --- a/software_esp32/include/globals.h +++ b/software_esp32/include/globals.h @@ -48,6 +48,7 @@ #define ACTUATOR_COUNT 12 #define TEMP_SENSORS_COUNT 34 +#define VOLT_SENSORS_COUNT 8 // debug mode #define VISMODE_DEFAULT VISMODE_ATOMIC diff --git a/software_esp32/include/helper.h b/software_esp32/include/helper.h index 3e23ee8..cbefbe5 100644 --- a/software_esp32/include/helper.h +++ b/software_esp32/include/helper.h @@ -45,9 +45,12 @@ #include "VdmConfig.h" #include "esp_system.h" - String ip2String (IPAddress ipv4addr); String ConvBinUnits(size_t bytes, byte resolution); bool isNumber(const String& str); bool isFloat(const std::string& str); - +void replace (char* buffer,uint16_t size,char find, char with); +uint32_t versionExplode (String sv); +char* findCharInString (char c,char* pString,size_t size); +char* copyStringUntilChar (char* pString,char* buffer,char c,size_t pSize,size_t bSize); +size_t strlcat(char *dst, const char *src, size_t dsize); diff --git a/software_esp32/include/mqtt.h b/software_esp32/include/mqtt.h index a84a81e..0f1b9e9 100644 --- a/software_esp32/include/mqtt.h +++ b/software_esp32/include/mqtt.h @@ -43,23 +43,30 @@ #include "globals.h" #include "VdmConfig.h" -#define MAINTOPIC_LEN 100 +#define MAINTOPIC_LEN 120 // MQTT settings #define DEFAULT_MAINTOPIC "VdMotFBH/" // /VdMotFBH/valve/1/actual #define DEFAULT_COMMONTOPIC "common/" #define DEFAULT_VALVESTOPIC "valves/" #define DEFAULT_TEMPSTOPIC "temps/" - +#define DEFAULT_VOLTSTOPIC "sensors/" +#define HA_FILE_NAME "/HADiscovery.cfg" #define publishNothing 0 #define publishCommon 1 #define publishValves 2 #define publishTemps 4 +#define publishVolts 8 + +#define publishAll publishCommon+publishValves+publishTemps+publishVolts #define MAX_MQTT_RETRIES 100 #define STATE_FAILED 9 +enum HAD_STATE { HAD_IDLE, HAD_STARTED, HAD_INPROGRSS,HAD_FINISHED }; +enum ACTION_HA { HA_DISCOVERY_ONLY, HA_DELETE_ONLY, HA_DELETE_AND_DISCOVERY}; + typedef struct { bool controlActive; uint8_t position; @@ -68,6 +75,11 @@ typedef struct { uint16_t meanCurrent; int temp1; int temp2; + float tTarget; + float tValue; + uint8_t controlMode; + uint8_t startActiveZone; + uint8_t endActiveZone; uint32_t ts; bool publishNow; bool publishTimeOut; @@ -86,6 +98,13 @@ typedef struct { bool publishNow; } LASTTEMPVALUES; +typedef struct { + float vad; // temperature of assigned sensor + char id[25]; + uint32_t ts; + bool publishNow; +} LASTVOLTVALUES; + typedef struct { uint8_t heatControl; uint8_t parkingPosition; @@ -100,6 +119,20 @@ typedef struct { bool messengerSent; } VALVESTATE; +typedef struct { + String topicClass; + String topic; + String name; + String unique_id; + String state_topic; + String command_topic; + String icon; + String options; + String device_class; + String state_class; + String unit_of_measurement; + String configuration_url; +} HA_Item; class CMqtt { @@ -110,27 +143,36 @@ class CMqtt void mqtt_setup(IPAddress brokerIP,uint16_t brokerPort); void mqtt_loop(); void callback(char* topic, byte* payload, unsigned int length); + void deleteDiscoveryHA(); + void sendDiscoveryHA(HA_Item thisHAItem); + void executeDiscoveryHA(); + void executeDiscoveryHANow(); int mqttState; bool mqttConnected; bool mqttReceived; VALVESTATE valveStates[ACTUATOR_COUNT]; + HAD_STATE hadState; + ACTION_HA actionHA; + bool forceReconnect; private: void publish_all (uint8_t publishFlags); void publish_common (); void publish_valves (); void publish_temps (); + void publish_volts(); uint8_t checkForPublish (); void checktValueTimeOut (); bool checkTopicName(char* topic,char* ref,bool set=true); bool checkTopicPath(char* topic,char* ref); void subscribe (char* topicstr, char* thisTopic, uint8_t size, bool publishValue=false); - void publishValue (char* topicstr, char* valstr); + void publishValue (char* topicstr, char* valstr, size_t size); bool messengerSend; bool firstPublish; char mqtt_mainTopic[MAINTOPIC_LEN] = {0}; char mqtt_commonTopic[MAINTOPIC_LEN] = {0}; char mqtt_valvesTopic[MAINTOPIC_LEN]= {0}; char mqtt_tempsTopic[MAINTOPIC_LEN]= {0}; + char mqtt_voltsTopic[MAINTOPIC_LEN]= {0}; char mqtt_callbackTopic[MAINTOPIC_LEN]= {0}; char stationName[sizeof(VdmConfig.configFlash.systemConfig.stationName)+5]= {0}; uint32_t tsPublish; @@ -140,7 +182,10 @@ class CMqtt LASTCOMMONVALUES lastCommonValues; LASTVALVEVALUES lastValveValues[ACTUATOR_COUNT]; LASTTEMPVALUES lastTempValues[TEMP_SENSORS_COUNT]; + LASTVOLTVALUES lastVoltValues[VOLT_SENSORS_COUNT]; boolean topicsReceived; + String haDiscoveryTopic; + }; extern CMqtt Mqtt; \ No newline at end of file diff --git a/software_esp32/include/stm32.h b/software_esp32/include/stm32.h index c4e9ed3..ea5edb7 100644 --- a/software_esp32/include/stm32.h +++ b/software_esp32/include/stm32.h @@ -55,6 +55,9 @@ #define otaDelayErase 50 #define otaDelayCmd 50 +#define otaBaudrateNormal 115200 +#define otaBaudrateBoot0 otaBaudrateNormal/4 + typedef struct { File fsfile; uint32_t size; @@ -78,7 +81,7 @@ class CStm32 public: CStm32(); void STM32ota_setup(); - void STM32ota_begin(); + void STM32ota_begin(int BaudRate); void STM32ota_start(uint8_t command, String thisFileName); void STM32ota_loop(); void FlashMode(); @@ -100,7 +103,8 @@ class CStm32 uint8_t stm32StartRead(uint32_t rdaddress, uint16_t rdlen); int stm32ota_command; ota_state stm32ota_state; - + int baudRateBoot0; + uint8_t retryBoot0; int timeout; int count; uint8_t buffer[STM32OTA_BLOCKSIZE]; diff --git a/software_esp32/include/stmApp.h b/software_esp32/include/stmApp.h index 0199e88..1b5232a 100644 --- a/software_esp32/include/stmApp.h +++ b/software_esp32/include/stmApp.h @@ -70,6 +70,18 @@ typedef struct { char id[25]; } TEMPID_STRUC; +typedef struct { + int16_t vad; // temperature of assigned sensor + float value; + char id[25]; + bool failed; +} VOLT_STRUC; + +typedef struct { + char id[25]; +} VOLTID_STRUC; + + typedef struct { uint16_t maxHighCurrent; uint16_t maxLowCurrent; @@ -87,6 +99,8 @@ typedef struct { #define APP_PRE_SETTARGETPOS "stgtp" #define APP_PRE_GETONEWIRECNT "gonec" #define APP_PRE_GETONEWIREDATA "goned" +#define APP_PRE_GETOWVOLTCNT "gowvc" +#define APP_PRE_GETOWVOLTDATA "gowvd" #define APP_PRE_SETONEWIRESEARCH "stons" #define APP_PRE_SET1STSENSORINDEX "stsnx" #define APP_PRE_SET2NDSENSORINDEX "stsny" @@ -135,11 +149,11 @@ typedef struct { #define ARG_DELIMITER String(" ") enum COMM_STATE {COMM_IDLE,COMM_SENDTARGET,COMM_CHECKTARGET,COMM_GETDATA, - COMM_GETONEWIRE,COMM_GETONEWIRECOUNT,COMM_GETEEPSTATE,COMM_HANDLEQUEUE}; + COMM_GETONEWIRE,COMM_GETONEWIRECOUNT,COMM_GETOWVOLT,COMM_GETOWVOLTCOUNT,COMM_GETEEPSTATE,COMM_HANDLEQUEUE}; enum STM_START_PROC {STM_NOT_READY,STM_READY,STM_READ_ALL_FROM_QUEUE}; -enum STM_INIT_STATE {STM_INIT_NOT_STARTED,STM_INIT_STARTED,STM_INIT_FINISHED}; +enum STM_INIT_STATE {STM_INIT_NOT_STARTED,STM_INIT_STARTED,STM_INIT_FINISHED,STM_FAILED}; enum APP_STATE {APP_IDLE,APP_PENDING,APP_TIMEOUT}; enum EEP_STATE {EEP_IDLE,EEP_REQUEST,EEP_DONE}; @@ -169,12 +183,16 @@ class CStmApp void getParametersFromSTM(); void softReset(); int8_t findTempID(char* ID); + int8_t findVoltID(char* ID); int8_t findTempIdxInValve (uint8_t tempIdx); ACTUATOR_STRUC actuators[ACTUATOR_COUNT]; TEMP_STRUC temps[TEMP_SENSORS_COUNT]; TEMPID_STRUC tempsId[TEMP_SENSORS_COUNT]; + VOLT_STRUC volts[VOLT_SENSORS_COUNT]; + VOLTID_STRUC voltsId[VOLT_SENSORS_COUNT]; uint8_t tempsCount; + uint8_t voltsCount; bool setTempIdxActive; bool waitForFinishQueue; MOTOR_CHARS motorChars; @@ -186,6 +204,7 @@ class CStmApp EEP_STATE eepState; bool waitEEPFinished; bool oneWireAllRead; + bool stmFailed; private: void appHandler(); @@ -212,8 +231,11 @@ class CStmApp APP_STATE appState; COMM_STATE commstate; uint8_t tempIndex; + uint8_t voltIndex; uint8_t checkTempsCount; + uint8_t checkVoltsCount; uint8_t tempsPrivCount; + uint8_t voltsPrivCount; String cmd_buffer; char buffer[1200]; diff --git a/software_esp32/include/web.h b/software_esp32/include/web.h index 3172846..d019152 100644 --- a/software_esp32/include/web.h +++ b/software_esp32/include/web.h @@ -58,6 +58,7 @@ class CWeb void postValvesPos(); String getValvesStatus(); String getTempsStatus(VDM_TEMPS_CONFIG tempsConfig); + String getVoltsStatus(VDM_VOLTS_CONFIG voltsConfig); String getNetInfo(VDM_NETWORK_INFO networkInfo); String getNetConfig (VDM_NETWORK_CONFIG netConfig); String getProtConfig (VDM_PROTOCOL_CONFIG protConfig); @@ -65,7 +66,9 @@ class CWeb String getMotorConfig (MOTOR_CHARS motorConfig); String getValvesControlConfig (VDM_VALVES_CONTROL_CONFIG valvesControlConfig); String getTempsConfig (VDM_TEMPS_CONFIG tempsConfig); + String getVoltsConfig (VDM_VOLTS_CONFIG voltsConfig); String getTempSensorsID(); + String getVoltSensorsID(); String getSysDynInfo(); String getSysInfo(); String getSysConfig (VDM_SYSTEM_CONFIG sysConfig); diff --git a/software_esp32/partitions.bin b/software_esp32/partitions.bin new file mode 100644 index 0000000..0e52b4c Binary files /dev/null and b/software_esp32/partitions.bin differ diff --git a/software_esp32/platformio.ini b/software_esp32/platformio.ini index 205e3b8..be37971 100644 --- a/software_esp32/platformio.ini +++ b/software_esp32/platformio.ini @@ -9,22 +9,23 @@ ; https://docs.platformio.org/page/projectconf.html [common] -firmware_version = '"1.3.7"' -firmware_version_dev = '"1.3.7_Dev"' +firmware_version = '"1.4.10"' +firmware_version_dev = '"1.4.10_Dev"' +minFirmwareSTMRequired = '"1.4.0"' [env] platform = espressif32 framework = arduino -monitor_port = COM5 +monitor_port = COM4 monitor_speed = 115200 -upload_port = COM5 +upload_port = COM4 upload_speed = 115200 ;board_build.partitions = myPartitions.csv lib_deps = bblanchon/ArduinoJson@^6.18.5 arcao/Syslog@^2.0.0 knolleary/PubSubClient@^2.8 - davetcc/TaskManagerIO@^1.3.0 + ;davetcc/TaskManagerIO@^1.5.0 khoih-prog/AsyncWebServer_WT32_ETH01@^1.4.1 me-no-dev/AsyncTCP@^1.1.1 bakercp/CRC32@^2.0.0 @@ -49,10 +50,12 @@ build_flags = ;-DAppDebug ;-DnetUseMDNS -DEnvDevelop + ;-DEnvDevelop_Level1 ;-DuseRS485 ;-DuseCAN -DUSE_LittleFS -DDYNAMIC_JSON_DOCUMENT_SIZE=4096 + -DminSTMRequired=${common.minFirmwareSTMRequired} [env:wt32-eth01_release] board = wt32-eth01 @@ -66,8 +69,9 @@ board_build.f_cpu = 240000000L build_flags = -O2 -DFIRMWARE_VERSION=${common.firmware_version} - ;-DnetUseMDNS -DUSE_LittleFS + -DDYNAMIC_JSON_DOCUMENT_SIZE=4096 + -DminSTMRequired=${common.minFirmwareSTMRequired} diff --git a/software_esp32/src/Messenger.cpp b/software_esp32/src/Messenger.cpp index be1f222..3402c63 100644 --- a/software_esp32/src/Messenger.cpp +++ b/software_esp32/src/Messenger.cpp @@ -75,7 +75,7 @@ int CMessenger::testPO(JsonObject doc) char userToken [31]={0}; char title [31]={0}; char message [31] = {"Test from "}; - strncat (message,VdmConfig.configFlash.systemConfig.stationName,sizeof(message) - strlen(message) - 1) ; + strlcat (message,VdmConfig.configFlash.systemConfig.stationName,sizeof(message)) ; if (!doc["appToken"].isNull()) strncpy(appToken,doc["appToken"].as(),sizeof(appToken)); if (!doc["userToken"].isNull()) strncpy(userToken,doc["userToken"].as(),sizeof(userToken)); @@ -108,7 +108,7 @@ void CMessenger::testEmail(JsonObject doc) char recipient [65]={0}; uint16_t port=465; char message [65] = {"Test from "}; - strncat (message,VdmConfig.configFlash.systemConfig.stationName,sizeof(message) - strlen(message) - 1) ; + strlcat (message,VdmConfig.configFlash.systemConfig.stationName,sizeof(message)) ; if (!doc["user"].isNull()) strncpy(user,doc["user"].as(),sizeof(user)); if (!doc["pwd"].isNull()) strncpy(pwd,doc["pwd"].as(),sizeof(pwd)); if (!doc["host"].isNull()) strncpy(host,doc["host"].as(),sizeof(host)); diff --git a/software_esp32/src/PIControl.cpp b/software_esp32/src/PIControl.cpp index 35089de..ac65519 100644 --- a/software_esp32/src/PIControl.cpp +++ b/software_esp32/src/PIControl.cpp @@ -45,29 +45,75 @@ #include "VdmConfig.h" #include "VdmNet.h" #include +#include "RtcRam.h" CPiControl PiControl[ACTUATOR_COUNT]; +void CPiControl::savePiControl() { + piControlRtcs.piControlRtc[valveIndex].target=target; + piControlRtcs.piControlRtc[valveIndex].value=value; + piControlRtcs.piControlRtc[valveIndex].iProp=iProp; + piControlRtcs.piControlRtc[valveIndex].esum=esum; + strncpy(piControlRtcs.piControlRtc[valveIndex].pattern,RTC_RAM_PATTERN,sizeof(piControlRtcs.piControlRtc[valveIndex].pattern)); + piControlRtcs.piControlRtc[valveIndex].lastControlPosition=lastControlPosition; +} + +void CPiControl::reloadPiControl() { + if (strncmp(piControlRtcs.piControlRtc[valveIndex].pattern,RTC_RAM_PATTERN,sizeof(RTC_RAM_PATTERN))==0) { + target=piControlRtcs.piControlRtc[valveIndex].target; + value=piControlRtcs.piControlRtc[valveIndex].value; + iProp=piControlRtcs.piControlRtc[valveIndex].iProp; + esum=piControlRtcs.piControlRtc[valveIndex].esum; + lastControlPosition=piControlRtcs.piControlRtc[valveIndex].lastControlPosition; + start=true; + time(&ts); + setValveAction(lastControlPosition); + // UART_DBG.println("Reload pi valve # "+String(valveIndex+1)); + if (VdmConfig.configFlash.netConfig.syslogLevel>=VISMODE_ATOMIC) { + syslog.log(LOG_DEBUG, "pic: reload pi valve # "+String(valveIndex+1)+" ("+String(VdmConfig.configFlash.valvesConfig.valveConfig[valveIndex].name)+") tTarget = "+String(target)+" tValue = "+String(value)+" iProp = "+String(iProp)+" esum = "+String(esum)+" position = "+String(lastControlPosition)); + } + } else { + if (VdmConfig.configFlash.netConfig.syslogLevel>=VISMODE_ATOMIC) { + syslog.log(LOG_DEBUG, "pic: no reload pi valve # "+String(valveIndex+1)+" ("+String(VdmConfig.configFlash.valvesConfig.valveConfig[valveIndex].name)+")"); + } + // UART_DBG.println("No reload pi valve # "+String(valveIndex+1)); + setValveAction(VdmConfig.configFlash.valvesControlInit.valveControlInit[valveIndex].tTarget); + } +} + +double CPiControl::getpProp(float e) { + // p - proportion + double p = kp * e + 50 + offset + dynOffset; + if (p > 100.0) p = 100.0; + if (p < 0.0) p = 0.0; + return p; +} float CPiControl::piCtrl(float target,float value) { - float p; - float y; - float e; - - if ((xp==0) || (ti==0)) return (startValvePos); - + double p; + double y; + double e; + double dt; time_t now; + + if ((xp==0) || (ti==0)) return (startValvePos); + if (!start) { time(&ts); iProp=startValvePos-50; start=true; esum=0; } + + old_esum=esum; + time(&now); ta=difftime(now,ts); // in sec time(&ts); + dt = ((double)ta / (double)ti); + if (windowControlState == windowCloseRestore) { ta = VdmConfig.configFlash.valvesControlConfig.valveControlConfig[valveIndex].ts; windowControlState = windowIdle; @@ -80,35 +126,50 @@ float CPiControl::piCtrl(float target,float value) { e=value-target; } - // p - proportion - y = kp * e; - p = y + 50 + offset + dynOffset; - if (p > 100.0) p = 100.0; - if (p < 0.0) p = 0.0; - - - if (scheme==0) { - // i - proportion - iProp += ((float)ta / (float)ti) * y; - } else { - esum += e; - iProp = ki * ((float)ta / (float)ti) * esum; + switch (scheme) { + default: + case piControlDynamicKi : + { + // p - proportion + p = getpProp(e); + // i - proportion + iProp += dt * kp * e; + // pi + y = p + iProp; + break; + } + case piControlStaticKi : + { + // p - proportion + //p = getpProp(e); + p = kp * e + 50 + offset + dynOffset; + esum += e*dt; + iProp = ki * esum; + // pi + y = p + iProp; + break; + } } - // pi - y = p + iProp; if (VdmConfig.configFlash.netConfig.syslogLevel>=VISMODE_ATOMIC) { - syslog.log(LOG_DEBUG, "pic:calc valve position : #"+String(valveIndex+1)+" ("+String(VdmConfig.configFlash.valvesConfig.valveConfig[valveIndex].name)+") tTarget = "+String(target)+" tValue = "+String(value)+" diff = "+String(e)+" iProp = "+String(iProp)+" kp = "+String(kp)+" esum = "+String(esum)+" p = "+String(p)+" y = "+String(y)); + syslog.log(LOG_DEBUG, "pic: calc valve position : #"+String(valveIndex+1)+" ("+String(VdmConfig.configFlash.valvesConfig.valveConfig[valveIndex].name)+") tTarget = "+String(target)+" tValue = "+String(value)+" diff = "+String(e)+" iProp = "+String(iProp)+" kp = "+String(kp)+" esum = "+String(esum)+" p = "+String(p)+" y = "+String(y)); } + if (y > 100.0) { y = 100.0; iProp = 100.0 - p; + if (esum>old_esum) esum=old_esum; } if (y < 0.0) { y = 0.0; iProp = 0.0 - p; + if (esum=VISMODE_ATOMIC) { + syslog.log(LOG_DEBUG, "pic: calc valve position corrected : #"+String(valveIndex+1)+" ("+String(VdmConfig.configFlash.valvesConfig.valveConfig[valveIndex].name)+") tTarget = "+String(target)+" tValue = "+String(value)+" diff = "+String(e)+" iProp = "+String(iProp)+" kp = "+String(kp)+" esum = "+String(esum)+" p = "+String(p)+" y = "+String(y)); } - + return y; } @@ -215,7 +276,7 @@ void CPiControl::controlValve() case nothing: break; case gotoMin: - setPosition(VdmConfig.configFlash.valvesControlConfig.valveControlConfig[valveIndex].startActiveZone); + setPosition(startActiveZone); break; case gotoPark: setPosition(VdmConfig.heatValues.parkPosition); @@ -261,6 +322,10 @@ void CPiControl::doControlValve() { uint8_t valvePosition; if (!getValueFromSource()) return; + // deadband + if (VdmConfig.configFlash.valvesControl1Config.valveControl1Config[valveIndex].deadband>0) { + if (abs(target-value)startActiveZone) { valvePosition=round((((float)(endActiveZone-startActiveZone))*newValveValue/100.0)+startActiveZone); @@ -274,6 +339,7 @@ void CPiControl::doControlValve() if (controlActive==0) valvePosition=0; setPosition(valvePosition); lastControlPosition=valvePosition; + savePiControl(); } void CPiControl::setControlActive(uint8_t thisControl) diff --git a/software_esp32/src/RtcRam.cpp b/software_esp32/src/RtcRam.cpp new file mode 100644 index 0000000..61aa88e --- /dev/null +++ b/software_esp32/src/RtcRam.cpp @@ -0,0 +1,5 @@ +#include "globals.h" +#include "RtcRam.h" + +RTC_NOINIT_ATTR int readingCnt; +RTC_NOINIT_ATTR PI_CONTROL_RTCS piControlRtcs; \ No newline at end of file diff --git a/software_esp32/src/ServerServices.cpp b/software_esp32/src/ServerServices.cpp index fb99c23..3440d5a 100644 --- a/software_esp32/src/ServerServices.cpp +++ b/software_esp32/src/ServerServices.cpp @@ -164,6 +164,7 @@ void valvesDetect (JsonObject doc) void writeValvesControl (JsonObject doc) { VdmConfig.writeValvesControlConfig(false,VdmTask.restartPiTask); + Mqtt.forceReconnect=true; } void mqttReconnect (JsonObject doc) @@ -178,6 +179,16 @@ void sysLogSave (JsonObject doc) VdmNet.startSysLog(); } +void discoveryHA (JsonObject doc) +{ + if (Mqtt.hadState==HAD_IDLE) { + if (!doc["actionHA"].isNull()) + Mqtt.actionHA = doc["actionHA"]; + else Mqtt.actionHA = HA_DISCOVERY_ONLY; + Mqtt.hadState=HAD_STARTED; + } +} + void CServerServices::postSetValve (JsonObject doc) { uint8_t index; @@ -306,6 +317,11 @@ void handleTemps(AsyncWebServerRequest *request) request->send(200,aj,Web.getTempsStatus(VdmConfig.configFlash.tempsConfig)); } +void handleVolts(AsyncWebServerRequest *request) +{ + request->send(200,aj,Web.getVoltsStatus(VdmConfig.configFlash.voltsConfig)); +} + void handleNetInfo(AsyncWebServerRequest *request) { request->send(200,aj,Web.getNetInfo(VdmNet.networkInfo)); @@ -346,6 +362,16 @@ void handleTempSensorsID(AsyncWebServerRequest *request) request->send(200,aj,Web.getTempSensorsID ()); } +void handleVoltsConfig(AsyncWebServerRequest *request) +{ + request->send(200,aj,Web.getVoltsConfig (VdmConfig.configFlash.voltsConfig)); +} + +void handleVoltSensorsID(AsyncWebServerRequest *request) +{ + request->send(200,aj,Web.getVoltSensorsID ()); +} + void handleSysInfo(AsyncWebServerRequest *request) { request->send(200,aj,Web.getSysInfo()); @@ -387,10 +413,10 @@ bool handleCmd(JsonObject doc) { typedef void (*fp)(JsonObject doc); fp fpList[] = {&restart,&writeConfig,&resetConfig,&restoreConfig,&fileDelete,&setGetFS, - &setClearFS,&scanTSensors,&valvesCalibration,&valvesAssembly,&valvesDetect,&writeValvesControl,&mqttReconnect,&sysLogSave} ; + &setClearFS,&scanTSensors,&valvesCalibration,&valvesAssembly,&valvesDetect,&writeValvesControl,&mqttReconnect,&sysLogSave,&discoveryHA} ; char const *names[]= {"reboot", "saveCfg","resetCfg","restoreCfg","fDelete","getFS", - "clearFS","scanTempSensors","vCalib","vAssembly","valvesDetect","vCtrlSave","mqttReconnect","sysLogSave",NULL}; + "clearFS","scanTempSensors","vCalib","vAssembly","valvesDetect","vCtrlSave","mqttReconnect","sysLogSave","discoveryHA",NULL}; char const **p; bool found = false; @@ -474,6 +500,7 @@ void CServerServices::initServer() server.onNotFound(handleNotFound); server.on("/valves",HTTP_GET,[](AsyncWebServerRequest * request) {handleValves(request);}); server.on("/temps",HTTP_GET,[](AsyncWebServerRequest * request) {handleTemps(request);}); + server.on("/volts",HTTP_GET,[](AsyncWebServerRequest * request) {handleVolts(request);}); server.on("/netinfo",HTTP_GET,[](AsyncWebServerRequest * request) {handleNetInfo(request);}); server.on("/netconfig",HTTP_GET,[](AsyncWebServerRequest * request) {handleNetConfig(request);}); server.on("/protconfig",HTTP_GET,[](AsyncWebServerRequest * request) {handleProtConfig(request);}); @@ -481,12 +508,14 @@ void CServerServices::initServer() server.on("/motorconfig",HTTP_GET,[](AsyncWebServerRequest * request) {handleMotorConfig(request);}); server.on("/valvesctrlconfig",HTTP_GET,[](AsyncWebServerRequest * request) {handleValvesControlConfig(request);}); server.on("/tempsconfig",HTTP_GET,[](AsyncWebServerRequest * request) {handleTempsConfig(request);}); + server.on("/voltsconfig",HTTP_GET,[](AsyncWebServerRequest * request) {handleVoltsConfig(request);}); server.on("/sysinfo",HTTP_GET,[](AsyncWebServerRequest * request) {handleSysInfo(request);}); server.on("/sysdyninfo",HTTP_GET,[](AsyncWebServerRequest * request) {handleSysDynInfo(request);}); server.on("/fsdir",HTTP_GET,[](AsyncWebServerRequest * request) {handleGetFSDir(request);}); server.on("/stmupdate", HTTP_GET, [](AsyncWebServerRequest * request) {handleWebPageStmUpdate(request);}); server.on("/stmupdstatus", HTTP_GET, [](AsyncWebServerRequest * request) {handleStmUpdStatus(request);}); server.on("/tempsensorsid", HTTP_GET, [](AsyncWebServerRequest * request) {handleTempSensorsID(request);}); + server.on("/voltsensorsid", HTTP_GET, [](AsyncWebServerRequest * request) {handleVoltSensorsID(request);}); server.on("/sysconfig", HTTP_GET, [](AsyncWebServerRequest * request) {handleGetSysConfig(request);}); server.on("/msgconfig", HTTP_GET, [](AsyncWebServerRequest * request) {handleGetMsgConfig(request);}); server.on("/stm?", HTTP_GET, [](AsyncWebServerRequest * request) {handleGetStm(request);}); @@ -569,6 +598,15 @@ AsyncCallbackJsonWebHandler* valvesControlCfgHandler = new AsyncCallbackJsonWebH }); server.addHandler(tempsCfgHandler); + AsyncCallbackJsonWebHandler* voltsCfgHandler = new AsyncCallbackJsonWebHandler("/voltsconfig", [](AsyncWebServerRequest *request, JsonVariant &json) { + if (json.is()) { + JsonObject&& jsonObj = json.as(); + VdmConfig.postVoltsCfg (jsonObj); + request->send(200, aj, resOk); + } else request->send(400, tp, "Not an object"); + }); + server.addHandler(voltsCfgHandler); + AsyncCallbackJsonWebHandler* tempsAuthHandler = new AsyncCallbackJsonWebHandler("/auth", [](AsyncWebServerRequest *request, JsonVariant &json) { if (json.is()) { JsonObject&& jsonObj = json.as(); diff --git a/software_esp32/src/Services.cpp b/software_esp32/src/Services.cpp index 5494cc9..6455b8f 100644 --- a/software_esp32/src/Services.cpp +++ b/software_esp32/src/Services.cpp @@ -136,7 +136,7 @@ void CServices::checkGetNtp() VdmNet.sntpReachable=VdmNet.checkSntpReachable(); #ifdef EnvDevelop UART_DBG.println("checkGetNtp : "+String(VdmNet.sntpReachable)); - #endif + #endif if (VdmNet.sntpReachable) { if (VdmSystem.getLocalTime(&VdmNet.startTimeinfo)) { if ((VdmNet.startTimeinfo.tm_hour==getNtpHour) && (VdmNet.startTimeinfo.tm_min==getNtpMin)) { @@ -161,12 +161,14 @@ void CServices::servicesLoop() void CServices::runOnce() { - StmApp.getParametersFromSTM(); + VdmNet.setupNtp(); + StmApp.getParametersFromSTM(); } void CServices::runOnceDelayed10() { VdmTask.startApp(); + GetLastTargetValues(); VdmNet.startBroker(); checkGetNtp(); } @@ -177,6 +179,18 @@ void CServices::runOnceDelayed60() VdmTask.piTaskInitiated=true; } +void CServices::GetLastTargetValues() +{ + for (uint8_t picIdx=0; picIdx=protTypeMqtt) { prefs.putULong(nvsProtBrokerIp,configFlash.protConfig.brokerIp); prefs.putUShort(nvsProtBrokerPort,configFlash.protConfig.brokerPort); prefs.putULong(nvsProtBrokerInterval,configFlash.protConfig.brokerInterval); @@ -363,6 +391,11 @@ void CVdmConfig::writeConfig(bool reboot) prefs.clear(); prefs.putBytes(nvsTemps, (void *) configFlash.tempsConfig.tempConfig, sizeof(configFlash.tempsConfig.tempConfig)); prefs.end(); + + prefs.begin(nvsVoltsCfg,false); + prefs.clear(); + prefs.putBytes(nvsVolts, (void *) &configFlash.voltsConfig, sizeof(configFlash.voltsConfig)); + prefs.end(); prefs.begin(nvsTZCfg,false); prefs.clear(); @@ -405,9 +438,14 @@ void CVdmConfig::writeValvesControlConfig(bool reboot, bool restartTask) prefs.begin(nvsValvesControlCfg,false); prefs.clear(); prefs.putBytes(nvsValvesControl, (void *) configFlash.valvesControlConfig.valveControlConfig, sizeof(configFlash.valvesControlConfig.valveControlConfig)); + prefs.putBytes(nvsValvesControl1, (void *) configFlash.valvesControl1Config.valveControl1Config, sizeof(configFlash.valvesControl1Config.valveControl1Config)); + prefs.putBytes(nvsValvesControlInit, (void *) configFlash.valvesControlInit.valveControlInit, sizeof(configFlash.valvesControlInit.valveControlInit)); prefs.putUChar (nvsValvesControlHeatControl,configFlash.valvesControlConfig.heatControl); prefs.putUChar (nvsValvesControlParkPos,configFlash.valvesControlConfig.parkingPosition); prefs.end(); + if (VdmConfig.configFlash.netConfig.syslogLevel>=VISMODE_ATOMIC) { + syslog.log(LOG_DEBUG, "pic: write control config, reboot = "+String(reboot)+" , restart = "+String(restartTask)+" , initiated = "+String(VdmTask.piTaskInitiated)); + } if (reboot) { Services.restartSystem(); } else { @@ -485,6 +523,7 @@ void CVdmConfig::postProtCfg (JsonObject doc) if (!doc["mqttTODSActive"].isNull()) configFlash.protConfig.mqttConfig.flags.timeoutDSActive = doc["mqttTODSActive"]; if (!doc["mqttTO"].isNull()) configFlash.protConfig.mqttConfig.timeOut = doc["mqttTO"]; if (!doc["mqttToPos"].isNull()) configFlash.protConfig.mqttConfig.toPos = doc["mqttToPos"]; + if (!doc["numFormat"].isNull()) configFlash.protConfig.mqttConfig.flags.numFormat = doc["numFormat"]; } void CVdmConfig::postValvesCfg (JsonObject doc) @@ -566,6 +605,8 @@ void CVdmConfig::postValvesControlCfg (JsonObject doc) if (!doc["scheme"].isNull()) configFlash.valvesControlConfig.valveControlConfig[idx].scheme=doc["scheme"]; if (!doc["startAZ"].isNull()) configFlash.valvesControlConfig.valveControlConfig[idx].startActiveZone=doc["startAZ"]; if (!doc["endAZ"].isNull()) configFlash.valvesControlConfig.valveControlConfig[idx].endActiveZone=doc["endAZ"]; + if (!doc["inittTarget"].isNull()) configFlash.valvesControlInit.valveControlInit[idx].tTarget=doc["inittTarget"]; + if (!doc["deadband"].isNull()) configFlash.valvesControl1Config.valveControl1Config[idx].deadband=doc["deadband"]; } } else { for (uint8_t i=0; i(),sizeof(configFlash.voltsConfig.voltConfig[i].name)); + if (!doc["volts"][i]["id"].isNull()) strncpy(configFlash.voltsConfig.voltConfig[i].ID,doc["volts"][i]["id"].as(),sizeof(configFlash.voltsConfig.voltConfig[i].ID)); + if (!doc["volts"][i]["active"].isNull()) configFlash.voltsConfig.voltConfig[i].active=doc["volts"][i]["active"]; + if (!doc["volts"][i]["offset"].isNull()) configFlash.voltsConfig.voltConfig[i].offset=(doc["volts"][i]["offset"].as()) ; + if (!doc["volts"][i]["factor"].isNull()) configFlash.voltsConfig.voltConfig[i].factor=(doc["volts"][i]["factor"].as()) ; + if (!doc["volts"][i]["unit"].isNull()) strncpy(configFlash.voltsConfig.voltConfig[i].unit,doc["volts"][i]["unit"].as(),sizeof(configFlash.voltsConfig.voltConfig[i].unit)); + } +} + + void CVdmConfig::postSysCfg (JsonObject doc) { if (!doc["CF"].isNull()) configFlash.systemConfig.celsiusFahrenheit = doc["CF"]; diff --git a/software_esp32/src/VdmNet.cpp b/software_esp32/src/VdmNet.cpp index fc85960..d6696c3 100644 --- a/software_esp32/src/VdmNet.cpp +++ b/software_esp32/src/VdmNet.cpp @@ -167,7 +167,6 @@ void CVdmNet::setupEth() UART_DBG.println("Setup Eth cable is connected"); #endif ServerServices.initServer(); - setupNtp(); UART_DBG.println(ETH.localIP()); serverIsStarted=true; ethState=ethConnected; @@ -251,17 +250,35 @@ void CVdmNet::setupWifi() bool CVdmNet::checkSntpReachable() { - return sntp_getreachability(0)==1; + u8_t ret = sntp_getreachability(0); + // UART_DBG.println("checkSntpReachable "+String(ret)+':'+String(sntp_getservername(0))); + return (ret==1); +} + +void CVdmNet::configTzTime(const char* tz, const char* server1, const char* server2, const char* server3) +{ + //tcpip_adapter_init(); // Should not hurt anything if already inited + esp_err_t err=esp_netif_init(); + if(sntp_enabled()){ + sntp_stop(); + } + sntp_setoperatingmode(SNTP_OPMODE_POLL); + sntp_setservername(0, (char*)server1); + if (server2!=NULL) sntp_setservername(1, (char*)server2); + if (server3!=NULL) sntp_setservername(2, (char*)server3); + sntp_init(); + int senv=setenv("TZ", tz, 1); + tzset(); + UART_DBG.println("configTzTime "+String(err)+" , "+String(senv)); } void CVdmNet::setupNtp() { // Init and get the time - VdmNet.sntpActive=strlen(VdmConfig.configFlash.netConfig.timeServer)>0; if (VdmNet.sntpActive) { - UART_DBG.println("Get time from server "+String(VdmConfig.configFlash.netConfig.timeServer)); + UART_DBG.println("Get time from server "+String(VdmConfig.configFlash.netConfig.timeServer)+":"+String(sntp_enabled())); configTzTime(VdmConfig.configFlash.timeZoneConfig.tzCode ,VdmConfig.configFlash.netConfig.timeServer); VdmSystem.getLocalTime(&startTimeinfo); } @@ -271,6 +288,7 @@ void CVdmNet::startBroker() { switch (VdmConfig.configFlash.protConfig.dataProtocol) { case mqttProtocol: + case mqttProtocolHA: { Mqtt.mqtt_setup(VdmConfig.configFlash.protConfig.brokerIp,VdmConfig.configFlash.protConfig.brokerPort); VdmTask.startMqtt(VdmConfig.configFlash.protConfig.brokerInterval); @@ -298,9 +316,6 @@ void CVdmNet::checkNet() #endif startSysLog(); - //delay (3000); - //VdmTask.startApp(); - //delay (2000); VdmTask.startServices(); } else { diff --git a/software_esp32/src/VdmSystem.cpp b/software_esp32/src/VdmSystem.cpp index 38ec7d2..1269ca3 100644 --- a/software_esp32/src/VdmSystem.cpp +++ b/software_esp32/src/VdmSystem.cpp @@ -40,10 +40,14 @@ #include "globals.h" #include "VdmSystem.h" #include "VdmNet.h" +#include "VdmTask.h" #include "Messenger.h" #include "esp_spi_flash.h" #include "helper.h" #include +#include +#include +#include #include #ifdef USE_LittleFS @@ -70,6 +74,7 @@ String ResetReason[] = { CVdmSystem VdmSystem; + CVdmSystem::CVdmSystem() { spiffsStarted=false; @@ -78,6 +83,10 @@ CVdmSystem::CVdmSystem() systemMessage=""; systemState = systemStateOK; getFSInProgress = false; + stmNRevision=0; + stmMinRequired=0; + stmVersionFalse=false; + } void CVdmSystem::getSystemInfo() @@ -122,16 +131,17 @@ String CVdmSystem::localTime() { bool CVdmSystem::getLocalTime(struct tm * info) { uint32_t start = millis(); - uint32_t ms=10; + uint32_t ms=1000; time_t now; - // while((millis()-start) <= ms) { + while((millis()-start) <= ms) { time(&now); localtime_r(&now, info); if(info->tm_year > (2016 - 1900)){ return true; } + VdmTask.yieldTask(10); // delay(10); - // } + } return false; } @@ -150,7 +160,8 @@ String CVdmSystem::getUpTime() { void CVdmSystem::sendResetReason() { - String ResetMsg = systemMsgReset+':'+getLastResetReason(); + String ResetMsg = String(systemMsgReset)+String(":")+getLastResetReason(); + // UART_DBG.println("SystemMsgReason: "+ResetMsg); VdmSystem.setSystemState(systemStateInfo,ResetMsg); if (VdmConfig.configFlash.netConfig.syslogLevel>=VISMODE_DETAIL) { syslog.log(LOG_DEBUG, ResetMsg); @@ -181,8 +192,7 @@ void CVdmSystem::getFSDirectory() Filenames[numfiles].ftype = (file.isDirectory() ? "Dir" : "File"); Filenames[numfiles].fsize = ConvBinUnits(file.size(), 1); #ifdef EnvDevelop - UART_DBG.print("get file : "); - UART_DBG.println(file.name()); + UART_DBG.println("get file : "+String(file.name())+", type "+Filenames[numfiles].ftype+", size "+Filenames[numfiles].fsize); #endif file = root.openNextFile(); numfiles++; @@ -218,10 +228,9 @@ void CVdmSystem::fileDelete (String fileName) void CVdmSystem::setSystemState(uint8_t thisSystemState,String thisSystemMsg) { systemState=thisSystemState; - systemMessage= String(thisSystemMsg); + systemMessage= thisSystemMsg; - UART_DBG.print("SystemMsg: "); - UART_DBG.println(systemMessage); + UART_DBG.println("SystemMsg: "+systemMessage); } String CVdmSystem::getLastResetReason() @@ -229,4 +238,35 @@ String CVdmSystem::getLastResetReason() uint8_t rr=esp_reset_reason(); if (rr>10) rr=0; return (ResetReason[rr]); +} + +void CVdmSystem::openFile (String fName,char mode) +{ + if (!spiffsStarted) SPIFFS.begin(true); + spiffsStarted=true; + if ((mode==FS_WRITE_MODE) && SPIFFS.exists(fName)) SPIFFS.remove(fName); + fsfile = SPIFFS.open(fName,(const char*) &mode,(mode==FS_WRITE_MODE)); + fsfile.seek(0); +} + +void CVdmSystem::writelnToFile (String line) +{ + String thisLine=line; + if (!thisLine.endsWith("\n")) thisLine=thisLine+"\n"; + fsfile.write((const uint8_t*) thisLine.c_str(), thisLine.length()); +} + +String CVdmSystem::readlnFromFile () +{ + return fsfile.readStringUntil('\n'); +} + +int CVdmSystem::fileAvailable () +{ + return fsfile.available(); +} + +void CVdmSystem::closeFile () +{ + fsfile.close(); } \ No newline at end of file diff --git a/software_esp32/src/VdmTask.cpp b/software_esp32/src/VdmTask.cpp index caf86af..d0994bf 100644 --- a/software_esp32/src/VdmTask.cpp +++ b/software_esp32/src/VdmTask.cpp @@ -114,7 +114,9 @@ void CVdmTask::startApp() void CVdmTask::startStm32Ota(uint8_t command,String thisFileName) { taskManager.setTaskEnabled (taskIdApp,false); + taskManager.setTaskEnabled (taskIdMqtt,false); delay (1000); // wait to finish task; + Stm32.STM32ota_setup(); Stm32.STM32ota_start(command,thisFileName); if (taskIdStm32Ota==TASKMGR_INVALIDID) { @@ -155,7 +157,12 @@ void CVdmTask::stopPIServices() { for (uint8_t picIdx=0; picIdx=VISMODE_ATOMIC) { + syslog.log(LOG_DEBUG, "pic: stop task pi valve # "+String(picIdx+1)+" ("+String(VdmConfig.configFlash.valvesConfig.valveConfig[picIdx].name)+") "+String(taskIdPiControl[picIdx],16)); + } + taskManager.cancelTask (taskIdPiControl[picIdx]); + } taskIdPiControl[picIdx]=TASKMGR_INVALIDID; } } @@ -168,8 +175,12 @@ void CVdmTask::startPIServices(bool startTask) UART_DBG.println("Start pi tasks "+String(startTask)); #endif for (uint8_t picIdx=0; picIdx=VISMODE_ATOMIC) { + syslog.log(LOG_DEBUG, "pic: start task pi valve # "+String(picIdx+1)+" ("+String(VdmConfig.configFlash.valvesConfig.valveConfig[picIdx].name)+") "+String(startTask)+" , ts = "+String(VdmConfig.configFlash.valvesControlConfig.valveControlConfig[picIdx].ts)); + } PiControl[picIdx].valveIndex=picIdx; PiControl[picIdx].ti=VdmConfig.configFlash.valvesControlConfig.valveControlConfig[picIdx].ti; PiControl[picIdx].xp=VdmConfig.configFlash.valvesControlConfig.valveControlConfig[picIdx].xp; @@ -182,16 +193,22 @@ void CVdmTask::startPIServices(bool startTask) PiControl[picIdx].startActiveZone=VdmConfig.configFlash.valvesControlConfig.valveControlConfig[picIdx].startActiveZone; PiControl[picIdx].endActiveZone=VdmConfig.configFlash.valvesControlConfig.valveControlConfig[picIdx].endActiveZone; if (StmApp.motorChars.startOnPower>100) StmApp.motorChars.startOnPower=0; - PiControl[picIdx].startValvePos=StmApp.motorChars.startOnPower; + PiControl[picIdx].startValvePos=VdmConfig.configFlash.valvesControlInit.valveControlInit[picIdx].tTarget; //StmApp.motorChars.startOnPower; + PiControl[picIdx].reloadPiControl(); + //PiControl[picIdx].start=false; if (startTask) { if (VdmConfig.configFlash.valvesControlConfig.valveControlConfig[picIdx].ts>0) { if (taskIdPiControl[picIdx]==TASKMGR_INVALIDID) { //UART_DBG.println("Start pi tasks valve # "+String(picIdx)+":"+String(VdmConfig.configFlash.valvesControlConfig.valveControlConfig[picIdx].ts)); taskIdPiControl[picIdx] = taskManager.scheduleFixedRate(VdmConfig.configFlash.valvesControlConfig.valveControlConfig[picIdx].ts, &PiControl[picIdx], TIME_SECONDS); //UART_DBG.println("Start pi tasks valve #"+String(picIdx)+":"+String(taskIdPiControl[picIdx])); + if (VdmConfig.configFlash.netConfig.syslogLevel>=VISMODE_ATOMIC) { + syslog.log(LOG_DEBUG, "pic: started task pi valve # "+String(picIdx+1)+" ("+String(VdmConfig.configFlash.valvesConfig.valveConfig[picIdx].name)+") "+String(startTask)); + } } } } + } } } diff --git a/software_esp32/src/helper.cpp b/software_esp32/src/helper.cpp index b08bca6..5edd7cc 100644 --- a/software_esp32/src/helper.cpp +++ b/software_esp32/src/helper.cpp @@ -39,6 +39,7 @@ #include "helper.h" +#include "VdmSystem.h" String ip2String (IPAddress ipv4addr) { @@ -77,3 +78,89 @@ bool isFloat(const std::string& str) strtof(str.c_str(), &ptr); return (*ptr) == '\0'; } + + +void replace (char* buffer,uint16_t size,char find, char with) +{ + for(int i = 0; i=0) memcpy(&s,sv.c_str(),pos); else s=sv; + arr[2-i]=s.toInt(); + sv.remove(0,pos+1); + // UART_DBG.println("versionExplode pos "+String(pos)+":"+s+","+sv); + } + + for (uint8_t i=0;i<3;i++) { + result|=(uint32_t)arr[i]<<(8*i); + } + // UART_DBG.println("versionExplode "+sv+": result="+String(result,16)); + return result; +} + + char* findCharInString (char c,char* pString,size_t size) + { + char* p = pString; + size_t len = 0; + while ((*p!=c) && (*p!=0) && (len=bSize) return NULL; + return p; + } + +size_t strlcat(char *dst, const char *src, size_t dsize) +{ + const char *odst = dst; + const char *osrc = src; + size_t n = dsize; + size_t dlen; + + /* Find the end of dst and adjust bytes left but don't go past end. */ + while (n-- != 0 && *dst != '\0') + dst++; + dlen = dst - odst; + n = dsize - dlen; + + if (n-- == 0) + return(dlen + strlen(src)); + while (*src != '\0') { + if (n != 0) { + *dst++ = *src; + n--; + } + src++; + } + *dst = '\0'; + + return(dlen + (src - osrc)); /* count does not include NUL */ +} diff --git a/software_esp32/src/main.cpp b/software_esp32/src/main.cpp index 22d95b5..7bfee74 100644 --- a/software_esp32/src/main.cpp +++ b/software_esp32/src/main.cpp @@ -49,6 +49,7 @@ #include "esp_err.h" #include "Messenger.h" #include "VdmTask.h" +#include "RtcRam.h" uint32_t * StackPtrAtStart; uint32_t * StackPtrEnd; @@ -56,6 +57,7 @@ UBaseType_t watermarkStart; uint32_t stackSize; + void setup(void) { disableCore0WDT(); disableCore1WDT(); @@ -76,8 +78,11 @@ void setup(void) { UART_DBG.printf("Free Stack near start is: %d \r\n", (uint32_t)StackPtrAtStart - (uint32_t)StackPtrEnd); UART_DBG.printf("Free Prefs entries %d \r\n", VdmConfig.prefs.freeEntries()); UART_DBG.printf("Config space %d bytes (max 20k) \r\n", sizeof(VdmConfig.configFlash)); + UART_DBG.println("readingCnt read at Start "+String(readingCnt)); #endif + readingCnt = 123; + UART_DBG.println("readingCnt read "+String(readingCnt)); Stm32.STM32ota_setup(); uint8_t rr=esp_reset_reason(); if (rr!=1) { // not at power on reset diff --git a/software_esp32/src/mqtt.cpp b/software_esp32/src/mqtt.cpp index 26e6fe7..c160da0 100644 --- a/software_esp32/src/mqtt.cpp +++ b/software_esp32/src/mqtt.cpp @@ -80,23 +80,26 @@ void CMqtt::mqtt_setup(IPAddress brokerIP,uint16_t brokerPort) mqttReceived=false; mqtt_client.setServer(brokerIP, brokerPort); mqtt_client.setCallback(mcallback); - + + hadState=HAD_IDLE; memset (mqtt_mainTopic,0,sizeof(mqtt_mainTopic)); if (VdmConfig.configFlash.protConfig.protocolFlags.publishPathAsRoot) strncpy(mqtt_mainTopic,"/",sizeof(mqtt_mainTopic)); if (strlen(VdmConfig.configFlash.systemConfig.stationName)>0) { - strncat(mqtt_mainTopic, VdmConfig.configFlash.systemConfig.stationName,sizeof(mqtt_mainTopic) - strlen (mqtt_mainTopic) - 1); - strncat(mqtt_mainTopic, "/",sizeof(mqtt_mainTopic) - strlen (mqtt_mainTopic) - 1); + strlcat(mqtt_mainTopic, VdmConfig.configFlash.systemConfig.stationName,sizeof(mqtt_mainTopic)); + strlcat(mqtt_mainTopic, "/",sizeof(mqtt_mainTopic)); } else { - strncat(mqtt_mainTopic, DEFAULT_MAINTOPIC,sizeof(mqtt_mainTopic) - strlen (mqtt_mainTopic) - 1); + strlcat(mqtt_mainTopic, DEFAULT_MAINTOPIC,sizeof(mqtt_mainTopic)); } strncpy(mqtt_commonTopic, mqtt_mainTopic, sizeof(mqtt_commonTopic)); - strncat(mqtt_commonTopic, DEFAULT_COMMONTOPIC,sizeof(mqtt_commonTopic) - strlen (mqtt_commonTopic) - 1); + strlcat(mqtt_commonTopic, DEFAULT_COMMONTOPIC,sizeof(mqtt_commonTopic)); strncpy(mqtt_valvesTopic, mqtt_mainTopic,sizeof(mqtt_commonTopic)); - strncat(mqtt_valvesTopic, DEFAULT_VALVESTOPIC,sizeof(mqtt_valvesTopic)- strlen (mqtt_valvesTopic) - 1); + strlcat(mqtt_valvesTopic, DEFAULT_VALVESTOPIC,sizeof(mqtt_valvesTopic)); strncpy(mqtt_tempsTopic, mqtt_mainTopic,sizeof(mqtt_commonTopic)); - strncat(mqtt_tempsTopic, DEFAULT_TEMPSTOPIC,sizeof(mqtt_tempsTopic)- strlen (mqtt_tempsTopic) - 1); + strlcat(mqtt_tempsTopic, DEFAULT_TEMPSTOPIC,sizeof(mqtt_voltsTopic)); + strncpy(mqtt_voltsTopic, mqtt_mainTopic,sizeof(mqtt_commonTopic)); + strlcat(mqtt_voltsTopic, DEFAULT_VOLTSTOPIC,sizeof(mqtt_voltsTopic)); if (strlen(VdmConfig.configFlash.systemConfig.stationName)>0) { strncpy(stationName, VdmConfig.configFlash.systemConfig.stationName,sizeof(stationName)); @@ -105,6 +108,7 @@ void CMqtt::mqtt_setup(IPAddress brokerIP,uint16_t brokerPort) for (uint8_t x = 0;x(1000*VdmConfig.configFlash.protConfig.publishInterval)) { tsPublish = millis(); - return publishCommon+publishValves+publishTemps; + return publishAll; } } else { if ((millis()-tsForcePublish)>(1000*VdmConfig.configFlash.protConfig.publishInterval)) { - #ifdef EnvDevelop + #ifdef EnvDevelop_Level1 UART_DBG.println("force publish"); #endif tsForcePublish = millis(); - return publishCommon+publishValves+publishTemps; + return publishAll; } forcePublish = false; if ((millis()-tsPublish)>(1000*VdmConfig.configFlash.protConfig.minBrokerDelay)) { @@ -178,25 +182,56 @@ uint8_t CMqtt::checkForPublish() } } } + // volts + for (i=0;i(1000*VdmConfig.configFlash.protConfig.minBrokerDelay)) { + if ((lastVoltValues[i].vad!=StmApp.volts[i].vad) || + ((millis()-lastVoltValues[i].ts)>(1000*VdmConfig.configFlash.protConfig.publishInterval))) { + result|=publishVolts; + lastVoltValues[i].publishNow=true; + } + } + } + } } return result; } void CMqtt::mqtt_loop() { - if (!mqtt_client.connected()) { + if ((!mqtt_client.connected()) || forceReconnect) { firstPublish=true; + forceReconnect=false; reconnect(); } if (mqtt_client.connected()) { mqtt_client.loop(); if (VdmConfig.configFlash.protConfig.publishInterval<2) VdmConfig.configFlash.protConfig.publishInterval=2; uint8_t check=checkForPublish(); - - if (check!=0) { - firstPublish=false; - publish_all(check); + + switch (hadState) { + case HAD_IDLE : { + if (check!=0) { + publish_all(check); + } + break; + } + case HAD_STARTED : { + hadState = HAD_INPROGRSS; + executeDiscoveryHA(); + break; + } + case HAD_INPROGRSS : { + break; + } + case HAD_FINISHED : { + hadState = HAD_IDLE; + break; + } } + messengerSend=false; connectTimeout=millis(); } else { @@ -233,17 +268,13 @@ void CMqtt::disconnect() { void CMqtt::subscribe (char* topicstr, char* thisTopic, uint8_t size, bool publishValue) { - strncat(topicstr, thisTopic,size - strlen (topicstr) - 1); + strlcat(topicstr, thisTopic,size); uint8_t len = strlen(topicstr); if (VdmConfig.configFlash.protConfig.protocolFlags.publishSeparate) { - /* if (publishValue) { - strncat(topicstr, "/value",size - strlen (topicstr) - 1); - mqtt_client.subscribe(topicstr); - topicstr[len]=0; - }*/ - strncat(topicstr, "/set",size - strlen (topicstr) - 1); + strlcat(topicstr, "/set",size); } mqtt_client.subscribe(topicstr); + //UART_DBG.println("subscribe "+String(topicstr)); } void CMqtt::reconnect() @@ -290,17 +321,13 @@ void CMqtt::reconnect() // make some subscriptions memset(topicstr,0x0,sizeof(topicstr)); - strncat(topicstr,mqtt_commonTopic,sizeof(topicstr) - strlen (topicstr) - 1); + strlcat(topicstr,mqtt_commonTopic,sizeof(topicstr)); len = strlen(topicstr); - subscribe (topicstr, (char*) "heatControl",sizeof(topicstr),true); - //strncat(topicstr, "heatControl",sizeof(topicstr) - strlen (topicstr) - 1); - //mqtt_client.subscribe(topicstr); + subscribe (topicstr, (char*) "heatControl",sizeof(topicstr),true); topicstr[len] = '\0'; subscribe (topicstr, (char*) "parkPosition",sizeof(topicstr),true); - //strncat(topicstr, "parkPosition",sizeof(topicstr) - strlen (topicstr) - 1); - //mqtt_client.subscribe(topicstr); - + for (uint8_t x = 0;x0) + if (strlen(VdmConfig.configFlash.valvesConfig.valveConfig[x].name)>0) { strncpy(nrstr,VdmConfig.configFlash.valvesConfig.valveConfig[x].name,sizeof(nrstr)); + replace (nrstr,strlen(nrstr),' ','_'); + } // prepare prefix - strncat(topicstr, mqtt_valvesTopic,sizeof(topicstr) - strlen (topicstr) - 1); - strncat(topicstr, nrstr,sizeof(topicstr) - strlen (topicstr) - 1); + strlcat(topicstr, mqtt_valvesTopic,sizeof(topicstr)); + strlcat(topicstr, nrstr,sizeof(topicstr)); len = strlen(topicstr); // target value subscribe (topicstr, (char*) "/target",sizeof(topicstr),true); - //strncat(topicstr, "/target",sizeof(topicstr) - strlen (topicstr) - 1); - //mqtt_client.subscribe(topicstr); - + if (VdmConfig.configFlash.valvesControlConfig.valveControlConfig[x].controlFlags.active) { if (VdmConfig.configFlash.valvesControlConfig.valveControlConfig[x].link==0) { if (VdmConfig.configFlash.valvesControlConfig.valveControlConfig[x].valueSource==0) { // temp value topicstr[len] = '\0'; - subscribe (topicstr, (char*) "/tValue",sizeof(topicstr)); - //strncat(topicstr, "/tValue",sizeof(topicstr) - strlen (topicstr) - 1); - //mqtt_client.subscribe(topicstr); + subscribe (topicstr, (char*) "/tValue",sizeof(topicstr)); } if (VdmConfig.configFlash.valvesControlConfig.valveControlConfig[x].targetSource==0) { // temp target topicstr[len] = '\0'; subscribe (topicstr, (char*) "/tTarget",sizeof(topicstr)); - //strncat(topicstr, "/tTarget",sizeof(topicstr) - strlen (topicstr) - 1); - //mqtt_client.subscribe(topicstr); } + // temp dyn offset + topicstr[len] = '\0'; + subscribe (topicstr, (char*) "/control/dynOffs",sizeof(topicstr)); } // window state if (VdmConfig.configFlash.valvesControlConfig.valveControlConfig[x].link==0) { if (VdmConfig.configFlash.valvesControlConfig.valveControlConfig[x].controlFlags.windowInstalled) { topicstr[len] = '\0'; subscribe (topicstr, (char*) "/window/state",sizeof(topicstr)); - //strncat(topicstr, "/window/state",sizeof(topicstr) - strlen (topicstr) - 1); - //mqtt_client.subscribe(topicstr); // window target (%) topicstr[len] = '\0'; subscribe (topicstr, (char*) "/window/target",sizeof(topicstr)); - //strncat(topicstr, "/window/target",sizeof(topicstr) - strlen (topicstr) - 1); - //mqtt_client.subscribe(topicstr); } } // control active if (VdmConfig.configFlash.valvesControlConfig.valveControlConfig[x].link==0) { topicstr[len] = '\0'; - subscribe (topicstr, (char*) "/control/mode",sizeof(topicstr)); - //strncat(topicstr, "/control/mode",sizeof(topicstr) - strlen (topicstr) - 1); - //mqtt_client.subscribe(topicstr); + subscribe (topicstr, (char*) "/control/mode",sizeof(topicstr)); } } } @@ -386,7 +406,7 @@ bool CMqtt::checkTopicName(char* topic,char* ref,bool set) strncpy(refSet,ref1, sizeof(refSet)); if (VdmConfig.configFlash.protConfig.protocolFlags.publishSeparate) { - strncat(refSet, "/set",sizeof(refSet) - strlen (refSet) - 1); + strlcat(refSet, "/set",sizeof(refSet)); } if (VdmConfig.configFlash.netConfig.syslogLevel>=VISMODE_ATOMIC) { @@ -402,7 +422,7 @@ bool CMqtt::checkTopicName(char* topic,char* ref,bool set) } // add /set for iobroker if separate topics used - strncat(refSet, "/set",sizeof(refSet) - strlen (refSet) - 1); + strlcat(refSet, "/set",sizeof(refSet)); if (VdmConfig.configFlash.netConfig.syslogLevel>=VISMODE_ATOMIC) { syslog.log(LOG_DEBUG, "MQTT: checkTopic (/set) "+String(topic1)+" : "+String(refSet)); } @@ -443,19 +463,19 @@ void CMqtt::callback(char* topic, byte* payload, unsigned int length) uint8_t val8; bool topicFound = false; char value[32] = {0}; + char rbName[11] = {0}; // local zero terminated copy of payload memcpy(value, payload, std::min(sizeof(value) - 1, length)); if (VdmConfig.configFlash.netConfig.syslogLevel>=VISMODE_DETAIL) { syslog.log(LOG_DEBUG, "MQTT: callback "+String(topic)+" : "+String(value)); } - + // UART_DBG.println("callback "+String (topic) +":"+String(value)); + if (length>0) { - //if (!VdmConfig.configFlash.protConfig.protocolFlags.publishPathAsRoot) { - if (topic[0]=='/') { - topic++; // adjust topic - } - //} + if (topic[0]=='/') { + topic++; // adjust topic + } if (VdmConfig.configFlash.netConfig.syslogLevel>=VISMODE_ATOMIC) { syslog.log(LOG_DEBUG, "MQTT: check callback common "+String(topic)+" : "+String(mqtt_commonTopic)); } @@ -467,7 +487,6 @@ void CMqtt::callback(char* topic, byte* payload, unsigned int length) pt= (char*) topic; pRef=mqtt_commonTopic; if (pRef[0]=='/') pRef++; - // pt+= strlen(mqtt_commonTopic); pt+=strlen(pRef); topicFound = checkTopicName(pt,(char*)"/heatControl"); if (topicFound) { @@ -514,7 +533,9 @@ void CMqtt::callback(char* topic, byte* payload, unsigned int length) idx=0; found = false; for (i=0;i0) + if (strlen(VdmConfig.configFlash.valvesConfig.valveConfig[x].name)>0) { strncpy(nrstr,VdmConfig.configFlash.valvesConfig.valveConfig[x].name,sizeof(nrstr)); + replace (nrstr,strlen(nrstr),' ','_'); + } // prepare prefix - strncat(topicstr, mqtt_valvesTopic,sizeof(topicstr) - strlen (topicstr) - 1); - strncat(topicstr, nrstr,sizeof(topicstr) - strlen (topicstr) - 1); + strlcat(topicstr, mqtt_valvesTopic,sizeof(topicstr)); + strlcat(topicstr, nrstr,sizeof(topicstr)); len = strlen(topicstr); // target if ((lastValveValues[x].target!=StmApp.actuators[x].target_position) || forcePublish || lastValveValues[x].publishTimeOut) { topicstr[len] = '\0'; - strncat(topicstr, "/target",sizeof(topicstr) - strlen (topicstr) - 1); + strlcat(topicstr, "/target",sizeof(topicstr)); itoa(StmApp.actuators[x].target_position, valstr, 10); - publishValue(topicstr, valstr); + publishValue(topicstr, valstr, sizeof(topicstr)); lastValveValues[x].target=StmApp.actuators[x].target_position; } // state if ((lastValveValues[x].state!=valveStates[x].thisState) || forcePublish || lastValveValues[x].publishTimeOut) { topicstr[len] = '\0'; - strncat(topicstr, "/state",sizeof(topicstr) - strlen (topicstr) - 1); + strlcat(topicstr, "/state",sizeof(topicstr)); if (VdmConfig.configFlash.protConfig.protocolFlags.publishPlainText) { if (valveStates[x].thisState<10) { strcpy(valstr,valveStatesStr[valveStates[x].thisState]); @@ -659,29 +693,68 @@ void CMqtt::publish_valves () { } else { itoa(valveStates[x].thisState, valstr, 10); } - publishValue(topicstr, valstr); + publishValue(topicstr, valstr, sizeof(topicstr)); if (StmApp.actuators[x].calibration) { topicstr[len] = '\0'; - strncat(topicstr, "/calibration/date",sizeof(topicstr) - strlen (topicstr) - 1); - publishValue(topicstr, (char*) VdmSystem.localTime().c_str()); + strlcat(topicstr, "/calibration/date",sizeof(topicstr)); + publishValue(topicstr, (char*) VdmSystem.localTime().c_str(), sizeof(topicstr)); } if ((VdmConfig.configFlash.valvesControlConfig.valveControlConfig[x].link>0) && (VdmConfig.configFlash.valvesControlConfig.valveControlConfig[x].link<13)) { topicstr[len] = '\0'; - strncat(topicstr, "/control/link",sizeof(topicstr) - strlen (topicstr) - 1); + strlcat(topicstr, "/control/link",sizeof(topicstr)); strcpy(valstr,VdmConfig.configFlash.valvesConfig.valveConfig[VdmConfig.configFlash.valvesControlConfig.valveControlConfig[x].link-1].name); - publishValue(topicstr, valstr); + publishValue(topicstr, valstr, sizeof(topicstr)); } lastValveValues[x].state=valveStates[x].thisState; } + if (VdmConfig.configFlash.protConfig.protocolFlags.publishSeparate) { + // tTarget + if ((lastValveValues[x].tTarget!=PiControl[x].target) || forcePublish || lastValveValues[x].publishTimeOut) { + topicstr[len] = '\0'; + strlcat(topicstr, "/tTarget",sizeof(topicstr)); + publishValue(topicstr, (char*) (String(PiControl[x].target,1)).c_str(), sizeof(topicstr)); + lastValveValues[x].tTarget=PiControl[x].target; + } + // tTarget + if ((lastValveValues[x].tValue!=PiControl[x].value) || forcePublish || lastValveValues[x].publishTimeOut) { + topicstr[len] = '\0'; + strlcat(topicstr, "/tValue",sizeof(topicstr)); + publishValue(topicstr, (char*) (String(PiControl[x].value,1)).c_str(), sizeof(topicstr)); + lastValveValues[x].tValue=PiControl[x].value; + } + } + if ((lastValveValues[x].controlMode!=PiControl[x].controlActive) || forcePublish || lastValveValues[x].publishTimeOut) { + topicstr[len] = '\0'; + strlcat(topicstr, "/control/mode",sizeof(topicstr)); + if (VdmConfig.configFlash.protConfig.protocolFlags.publishPlainText) { + strcpy(valstr,PiControl[x].controlActive ? "auto" : "off"); + } else itoa(PiControl[x].controlActive, valstr, 10); + publishValue(topicstr, valstr, sizeof(topicstr)); + lastValveValues[x].controlMode=PiControl[x].controlActive; + } + if ((lastValveValues[x].startActiveZone!=PiControl[x].startActiveZone) || forcePublish || lastValveValues[x].publishTimeOut) { + topicstr[len] = '\0'; + strlcat(topicstr, "/control/min",sizeof(topicstr)); + itoa(PiControl[x].startActiveZone, valstr, 10); + publishValue(topicstr, valstr, sizeof(topicstr)); + lastValveValues[x].startActiveZone=PiControl[x].startActiveZone; + } + if ((lastValveValues[x].endActiveZone!=PiControl[x].endActiveZone) || forcePublish || lastValveValues[x].publishTimeOut) { + topicstr[len] = '\0'; + strlcat(topicstr, "/control/max",sizeof(topicstr)); + itoa(PiControl[x].endActiveZone, valstr, 10); + publishValue(topicstr, valstr, sizeof(topicstr)); + lastValveValues[x].endActiveZone=PiControl[x].endActiveZone; + } // calibration repetitions if ((lastValveValues[x].calibRetries!=StmApp.actuators[x].calibRetries) || forcePublish || lastValveValues[x].publishTimeOut) { topicstr[len] = '\0'; - strncat(topicstr, "/calibration/repetitions",sizeof(topicstr) - strlen (topicstr) - 1); + strlcat(topicstr, "/calibration/repetitions",sizeof(topicstr)); itoa(StmApp.actuators[x].calibRetries, valstr, 10); - publishValue(topicstr, valstr); + publishValue(topicstr, valstr, sizeof(topicstr)); lastValveValues[x].calibRetries=StmApp.actuators[x].calibRetries; } // diag @@ -689,39 +762,39 @@ void CMqtt::publish_valves () { // meancurrent if ((lastValveValues[x].meanCurrent!=StmApp.actuators[x].meancurrent) || forcePublish || lastValveValues[x].publishTimeOut) { topicstr[len] = '\0'; - strncat(topicstr, "/diag/meanCurrrent",sizeof(topicstr) - strlen (topicstr) - 1); + strlcat(topicstr, "/diag/meanCurrrent",sizeof(topicstr)); itoa(StmApp.actuators[x].meancurrent, valstr, 10); - publishValue(topicstr, valstr); + publishValue(topicstr, valstr, sizeof(topicstr)); lastValveValues[x].meanCurrent=StmApp.actuators[x].meancurrent; } // counts if ((lastValveValues[x].openCount!=StmApp.actuators[x].opening_count) || forcePublish || lastValveValues[x].publishTimeOut) { topicstr[len] = '\0'; - strncat(topicstr, "/diag/openCount",sizeof(topicstr) - strlen (topicstr) - 1); + strlcat(topicstr, "/diag/openCount",sizeof(topicstr)); itoa(StmApp.actuators[x].opening_count, valstr, 10); - publishValue(topicstr, valstr); + publishValue(topicstr, valstr, sizeof(topicstr)); lastValveValues[x].openCount=StmApp.actuators[x].opening_count; } if ((lastValveValues[x].closeCount!=StmApp.actuators[x].closing_count) || forcePublish || lastValveValues[x].publishTimeOut) { topicstr[len] = '\0'; - strncat(topicstr, "/diag/closeCount",sizeof(topicstr) - strlen (topicstr) - 1); + strlcat(topicstr, "/diag/closeCount",sizeof(topicstr)); itoa(StmApp.actuators[x].closing_count, valstr, 10); - publishValue(topicstr, valstr); + publishValue(topicstr, valstr, sizeof(topicstr)); lastValveValues[x].closeCount=StmApp.actuators[x].closing_count; } if ((lastValveValues[x].deadzoneCount!=StmApp.actuators[x].deadzone_count) || forcePublish || lastValveValues[x].publishTimeOut) { topicstr[len] = '\0'; - strncat(topicstr, "/diag/deadZoneCount",sizeof(topicstr) - strlen (topicstr) - 1); + strlcat(topicstr, "/diag/deadZoneCount",sizeof(topicstr)); itoa(StmApp.actuators[x].deadzone_count, valstr, 10); - publishValue(topicstr, valstr); + publishValue(topicstr, valstr, sizeof(topicstr)); lastValveValues[x].deadzoneCount=StmApp.actuators[x].deadzone_count; } // moves if ((lastValveValues[x].movements!=StmApp.actuators[x].movements) || forcePublish || lastValveValues[x].publishTimeOut) { topicstr[len] = '\0'; - strncat(topicstr, "/diag/moves",sizeof(topicstr) - strlen (topicstr) - 1); + strlcat(topicstr, "/diag/moves",sizeof(topicstr)); itoa(StmApp.actuators[x].movements, valstr, 10); - publishValue(topicstr, valstr); + publishValue(topicstr, valstr, sizeof(topicstr)); lastValveValues[x].movements=StmApp.actuators[x].movements; } } @@ -731,11 +804,12 @@ void CMqtt::publish_valves () { if (StmApp.actuators[x].tIdx1>0) { if ((lastValveValues[x].temp1!=StmApp.actuators[x].temp1) || forcePublish || lastValveValues[x].publishTimeOut) { topicstr[len] = '\0'; - strncat(topicstr, "/temp1",sizeof(topicstr) - strlen (topicstr) - 1); + strlcat(topicstr, "/temp1",sizeof(topicstr)); if (StmApp.actuators[x].temp1>-500) { s = String(((float)StmApp.actuators[x].temp1)/10,1); + if (VdmConfig.configFlash.protConfig.mqttConfig.flags.numFormat==numFormatGer) s.replace('.',','); } else s="failed"; - publishValue(topicstr, (char*) &s); + publishValue(topicstr, (char*) &s, sizeof(topicstr)); lastValveValues[x].temp1=StmApp.actuators[x].temp1; } } @@ -743,11 +817,12 @@ void CMqtt::publish_valves () { if (StmApp.actuators[x].tIdx2>0) { if ((lastValveValues[x].temp2!=StmApp.actuators[x].temp2) || forcePublish || lastValveValues[x].publishTimeOut) { topicstr[len] = '\0'; - strncat(topicstr, "/temp2",sizeof(topicstr) - strlen (topicstr) - 1); + strlcat(topicstr, "/temp2",sizeof(topicstr)); if (StmApp.actuators[x].temp2>-500) { s = String(((float)StmApp.actuators[x].temp2)/10,1); + if (VdmConfig.configFlash.protConfig.mqttConfig.flags.numFormat==numFormatGer) s.replace('.',','); } else s="failed"; - publishValue(topicstr, (char*) &s); + publishValue(topicstr, (char*) &s, sizeof(topicstr)); lastValveValues[x].temp2=StmApp.actuators[x].temp2; } } @@ -778,25 +853,28 @@ void CMqtt::publish_temps() memset(topicstr,0x0,sizeof(topicstr)); memset(nrstr,0x0,sizeof(nrstr)); itoa((x+1), nrstr, 10); - if (strlen(VdmConfig.configFlash.tempsConfig.tempConfig[tempIdx].name)>0) + if (strlen(VdmConfig.configFlash.tempsConfig.tempConfig[tempIdx].name)>0) { strncpy(nrstr,VdmConfig.configFlash.tempsConfig.tempConfig[tempIdx].name,sizeof(nrstr)); + replace (nrstr,strlen(nrstr),' ','_'); + } // prepare prefix - strncat(topicstr, mqtt_tempsTopic,sizeof(topicstr) - strlen (topicstr) - 1); - strncat(topicstr, nrstr,sizeof(topicstr) - strlen (topicstr) - 1); + strlcat(topicstr, mqtt_tempsTopic,sizeof(topicstr)); + strlcat(topicstr, nrstr,sizeof(topicstr)); len = strlen(topicstr); // id - strncat(topicstr, "/id",sizeof(topicstr) - strlen (topicstr) - 1); - publishValue(topicstr, StmApp.temps[x].id); + strlcat(topicstr, "/id",sizeof(topicstr)); + publishValue(topicstr, StmApp.temps[x].id, sizeof(topicstr)); // actual value topicstr[len] = '\0'; - strncat(topicstr, "/value",sizeof(topicstr) - strlen (topicstr) - 1); + strlcat(topicstr, "/value",sizeof(topicstr)); if (StmApp.temps[x].temperature<=-500) { s = "failed"; } else { - s = String(((float)StmApp.temps[x].temperature)/10,1); + s = String(((float)StmApp.temps[x].temperature)/10,1); + if (VdmConfig.configFlash.protConfig.mqttConfig.flags.numFormat==numFormatGer) s.replace('.',','); } - publishValue(topicstr, (char*) &s); + publishValue(topicstr, (char*) &s, sizeof(topicstr)); } } } @@ -808,6 +886,55 @@ void CMqtt::publish_temps() } } +void CMqtt::publish_volts() +{ + char topicstr[MAINTOPIC_LEN+50]; + char nrstr[21]; + int8_t voltIdx; + uint8_t len; + String s; + + if ((StmApp.stmInitState==STM_INIT_FINISHED) && StmApp.oneWireAllRead) { + for (uint8_t x = 0;x=0) { + memset(topicstr,0x0,sizeof(topicstr)); + memset(nrstr,0x0,sizeof(nrstr)); + itoa((x+1), nrstr, 10); + if (strlen(VdmConfig.configFlash.voltsConfig.voltConfig[voltIdx].name)>0) { + strncpy(nrstr,VdmConfig.configFlash.voltsConfig.voltConfig[voltIdx].name,sizeof(nrstr)); + replace (nrstr,strlen(nrstr),' ','_'); + } + // prepare prefix + strlcat(topicstr, mqtt_voltsTopic,sizeof(topicstr)); + strlcat(topicstr, nrstr,sizeof(topicstr)); + len = strlen(topicstr); + // id + strlcat(topicstr, "/id",sizeof(topicstr)); + publishValue(topicstr, StmApp.volts[voltIdx].id, sizeof(topicstr)); + // actual value + topicstr[len] = '\0'; + strlcat(topicstr, "/value",sizeof(topicstr)); + if (StmApp.volts[voltIdx].failed) s="failed"; + else + s = String(StmApp.volts[voltIdx].value,3); + if (VdmConfig.configFlash.protConfig.mqttConfig.flags.numFormat==numFormatGer) s.replace('.',','); + publishValue(topicstr, (char*) &s, sizeof(topicstr)); + // unit + topicstr[len] = '\0'; + strlcat(topicstr, "/unit",sizeof(topicstr)); + publishValue(topicstr, VdmConfig.configFlash.voltsConfig.voltConfig[voltIdx].unit, sizeof(topicstr)); + } + } + lastVoltValues[x].vad=StmApp.volts[x].vad; + lastVoltValues[x].publishNow=false; + lastVoltValues[x].ts=millis(); + } + } +} + + void CMqtt::publish_common () { char topicstr[MAINTOPIC_LEN+50]; @@ -819,11 +946,18 @@ void CMqtt::publish_common () const char systemStates[3][11] = {"ok","info","error"}; memset(topicstr,0x0,sizeof(topicstr)); - strncat(topicstr,mqtt_commonTopic,sizeof(topicstr) - strlen (topicstr) - 1); + strlcat(topicstr,mqtt_commonTopic,sizeof(topicstr)); len = strlen(topicstr); + if (firstPublish) { + strlcat(topicstr, "ip",sizeof(topicstr)); + strcpy(valstr,VdmNet.networkInfo.ip.toString().c_str()); + publishValue(topicstr, valstr, sizeof(topicstr)); + } + + topicstr[len] = '\0'; if ((!VdmConfig.configFlash.protConfig.protocolFlags.publishOnChange) || forcePublish || (lastCommonValues.heatControl!=VdmConfig.heatValues.heatControl)) { - strncat(topicstr, "heatControl",sizeof(topicstr) - strlen (topicstr) - 1); + strlcat(topicstr, "heatControl",sizeof(topicstr)); if (VdmConfig.configFlash.protConfig.protocolFlags.publishPlainText) { if (VdmConfig.heatValues.heatControl<4) { strcpy(valstr,heatControlStates[VdmConfig.heatValues.heatControl]); @@ -831,21 +965,21 @@ void CMqtt::publish_common () } else { itoa(VdmConfig.heatValues.heatControl, valstr, 10); } - publishValue(topicstr, valstr); + publishValue(topicstr, valstr, sizeof(topicstr)); lastCommonValues.heatControl=VdmConfig.heatValues.heatControl; } topicstr[len] = '\0'; if ((!VdmConfig.configFlash.protConfig.protocolFlags.publishOnChange) || forcePublish || (lastCommonValues.parkingPosition!=VdmConfig.heatValues.parkPosition)) { - strncat(topicstr, "parkPosition",sizeof(topicstr) - strlen (topicstr) - 1); + strlcat(topicstr, "parkPosition",sizeof(topicstr)); itoa(VdmConfig.heatValues.parkPosition, valstr, 10); - publishValue(topicstr, valstr); + publishValue(topicstr, valstr, sizeof(topicstr)); lastCommonValues.parkingPosition=VdmConfig.heatValues.parkPosition; } topicstr[len] = '\0'; if ((!VdmConfig.configFlash.protConfig.protocolFlags.publishOnChange) || forcePublish || (lastCommonValues.systemState!=VdmSystem.systemState)) { - strncat(topicstr, "state",sizeof(topicstr) - strlen (topicstr) - 1); + strlcat(topicstr, "state",sizeof(topicstr)); if (VdmConfig.configFlash.protConfig.protocolFlags.publishPlainText) { if (VdmSystem.systemState<3) { strcpy(valstr,systemStates[VdmSystem.systemState]); @@ -853,24 +987,24 @@ void CMqtt::publish_common () } else { itoa(VdmSystem.systemState , valstr, 10); } - publishValue(topicstr, valstr); + publishValue(topicstr, valstr, sizeof(topicstr)); lastCommonValues.systemState=VdmSystem.systemState; } topicstr[len] = '\0'; if (VdmConfig.configFlash.protConfig.protocolFlags.publishUpTime) { - strncat(topicstr, "uptime",sizeof(topicstr) - strlen (topicstr) - 1); + strlcat(topicstr, "uptime",sizeof(topicstr)); String upTime = VdmSystem.getUpTime(); if ((!VdmConfig.configFlash.protConfig.protocolFlags.publishOnChange) || forcePublish || (lastCommonValues.upTime!=upTime)) { lastCommonValues.upTime = upTime; - publishValue(topicstr, (char*) upTime.c_str()); + publishValue(topicstr, (char*) upTime.c_str(), sizeof(topicstr)); } } topicstr[len] = '\0'; if ((!VdmConfig.configFlash.protConfig.protocolFlags.publishOnChange) || forcePublish || (lastCommonValues.systemMessage!=VdmSystem.systemMessage)) { topicstr[len] = '\0'; - strncat(topicstr, "message",sizeof(topicstr) - strlen (topicstr) - 1); - publishValue(topicstr, (char*) VdmSystem.systemMessage.c_str()); + strlcat(topicstr, "message",sizeof(topicstr)); + publishValue(topicstr, (char*) VdmSystem.systemMessage.c_str(), sizeof(topicstr)); lastCommonValues.systemMessage=VdmSystem.systemMessage; } } @@ -880,6 +1014,8 @@ void CMqtt::publish_all (uint8_t publishFlags) if (CHECK_BIT(publishFlags,0)==1) publish_common (); if (CHECK_BIT(publishFlags,1)==1) publish_valves (); if (CHECK_BIT(publishFlags,2)==1) publish_temps (); + if (CHECK_BIT(publishFlags,3)==1) publish_volts (); + firstPublish=false; } void CMqtt::checktValueTimeOut () @@ -923,4 +1059,468 @@ void CMqtt::checktValueTimeOut () if (messengerToSend) Messenger.sendMessage (title.c_str(),s.c_str()); } } +} + +void CMqtt::deleteDiscoveryHA() +{ + String line; + VdmSystem.openFile(HA_FILE_NAME,FS_READ_MODE); + while(VdmSystem.fileAvailable()) { + line = VdmSystem.readlnFromFile(); + mqtt_client.publish((char*) line.c_str(),(const uint8_t*) "",0,true); + if (VdmConfig.configFlash.netConfig.syslogLevel>=VISMODE_ATOMIC) { + syslog.log(LOG_DEBUG, "MQTT: discovery delete: "+line); + } + // UART_DBG.println("discovery delete: "+String(line)); + } + VdmSystem.closeFile(); +} + +void CMqtt::sendDiscoveryHA(HA_Item thisHAItem) +{ + HA_Item haItem=thisHAItem; + String root=""; + if (VdmConfig.configFlash.protConfig.protocolFlags.publishPathAsRoot) root="/"; + haItem.unique_id = String(VdmConfig.configFlash.systemConfig.stationName)+"."+haItem.unique_id; + + if (haItem.state_topic.length()==0) haItem.state_topic = "null" ; + else haItem.state_topic = "\""+String(root)+String(VdmConfig.configFlash.systemConfig.stationName)+"/"+haItem.state_topic+"/value"+"\""; + + if (haItem.command_topic.length()==0) haItem.command_topic = "null" ; + else haItem.command_topic = "\""+String(root)+String(VdmConfig.configFlash.systemConfig.stationName)+"/"+haItem.command_topic+"/set"+"\""; + if (haItem.icon.length()>0) haItem.icon = "\"icon\": \""+haItem.icon+"\",\n"; + if (haItem.unit_of_measurement.length()>0) haItem.unit_of_measurement = "\"unit_of_measurement\" : \""+haItem.unit_of_measurement+"\",\n"; + + if (haItem.device_class.length()==0) haItem.device_class = "null" ; + else haItem.device_class = "\""+haItem.device_class+"\""; + if (haItem.state_class.length()==0) haItem.state_class = "null" ; + else haItem.state_class = "\""+haItem.state_class+"\""; + + haItem.unique_id.replace(" ","_"); + + if (haItem.options.length()>0) haItem.options = haItem.options+",\n"; + + String json = "{\"name\": \""+haItem.name+"\",\n" + "\"unique_id\": \""+haItem.unique_id+"\",\n" + "\"state_topic\": "+haItem.state_topic+",\n" + "\"command_topic\": "+haItem.command_topic+",\n" + +haItem.icon+ + "\"device_class\": "+haItem.device_class+",\n" + "\"state_class\": "+haItem.state_class+",\n" + +haItem.unit_of_measurement+ + haItem.options+ + "\"device\": {\n" + "\"identifiers\": \""+String(VdmConfig.configFlash.systemConfig.stationName)+"\",\n" + "\"name\": \""+String(VdmConfig.configFlash.systemConfig.stationName)+"\",\n" + "\"sw_version\": \""+String(FIRMWARE_VERSION)+"\",\n" + "\"hw_version\": \"2.0\",\n" + "\"model\": \"full\",\n" + "\"manufacturer\": \"Lenti84/Surfgargano\",\n" + "\"configuration_url\": \"http://"+VdmNet.networkInfo.ip.toString()+"/#config\"\n" + "}\n" + "}\n"; + + + haDiscoveryTopic = "homeassistant/"+haItem.topicClass+"/"+String(VdmConfig.configFlash.systemConfig.stationName)+"/"+String (haItem.topic)+"/config"; + + uint16_t bl = 20+haDiscoveryTopic.length()+json.length(); + uint16_t bs = mqtt_client.getBufferSize(); + if (bs=VISMODE_ATOMIC) { + syslog.log(LOG_DEBUG, "MQTT: discovery topic: "+haDiscoveryTopic); + syslog.log(LOG_DEBUG, "MQTT: discovery item: "+json); + } + + //UART_DBG.println("discovery topic : "+String(haDiscoveryTopic)); + //UART_DBG.println("discovery item: "+String(json.length())+"="+String(json)); + //UART_DBG.println("discovery result: "+String(result)+" bufferSize "+String(mqtt_client.getBufferSize())); + delay(100); +} + +void CMqtt::executeDiscoveryHA() +{ + switch (actionHA) { + case HA_DISCOVERY_ONLY: + { + executeDiscoveryHANow(); + break; + } + case HA_DELETE_ONLY: + { + deleteDiscoveryHA(); + break; + } + case HA_DELETE_AND_DISCOVERY: + { + deleteDiscoveryHA(); + executeDiscoveryHANow(); + break; + } + } + Mqtt.hadState=HAD_IDLE; +} + +void CMqtt::executeDiscoveryHANow() +{ + // StationName/ + /* common/ + heatControl/ + value + set + message/ + value + parkPosition/ + value + set + state/ + value + uptime/ [config] + value + */ + + /* valves/ + valveName/ [config] + calibration/ + repetitions/ + value + control/ + mode/ + set + diag/ [config] + openCount/ + value + closeCount/ + value + deadZoneCount/ + value + meanCurrent/ + value + moves/ + value + window/ [config] + state/ + set + target/ + set + dynOffs/ + set + state/ + value + tTarget/ [config] + set + tValue/ [config] + set + target/ + value + set + temp1/ [config] + value + temp2/ [config] + value + */ + + /* temps/ + sensorName/ [config] + id/ + value + value/ + value + */ + + /* sensors/ + sensorName/ [config] + id/ + value + unit/ + value + value/ + value + */ + +/* Example + Topic : + homeassistant/sensor/VdMot/Schlafzimmer_Heizung/config + JSON: + {"name": "Schlafzimmer Heizung", + "unique_id": "VdMot.Schlafzimmer_Heizung", + "state_topic": "VdMot/temps/wohn/value/value", + "icon": "mdi:temperature-celsius", + "device_class": "temperature", + "state_class": "measurement", + "unit_of_measurement" : "°C", + "device": { + "identifiers": "VdMot", + "name": "VdMot", + "sw_version": "1.4.0dev", + "hw_version": "2.0", + "model": "", + "manufacturer": "Lenti84/Surfgargano", + "configuration_url": "http://ip/#config" + } + } + +*/ + + +/* + String topicClass; + String topic; + String name; + String unique_id; + String state_topic; + String command_topic; + String icon; + String options; + String device_class; + String state_class; + String unit_of_measurement; + String configuration_url; +*/ + +static const HA_Item haCommonItems[] = { + {"select","heatControl","heatControl","common.heatControl","common/heatControl","common/heatControl","mdi:heat-pump-outline","\"options\": [\"manual\",\"heat\",\"cool\",\"off\"]","","",""}, + {"text","message","message","common.message","common/message","common/message","mdi:message","","volume","measurement",""}, + {"number","parkPosition","parkPosition","common.parkPosition","common/parkPosition","common/parkPosition","mdi:parking","","volume","measurement",""}, + {"text","state","state","common.state","common/state","common/state","mdi:state-machine","","volume","measurement",""}, + {"text","uptime","uptime","common.uptime","common/uptime","common/uptime","mdi:timelapse","","volume","measurement",""}, + {"text","ip","ip","common.ip","common/ip","common/ip","mdi:message","","volume","measurement",""}, + {""} + }; + +static const HA_Item haClimateItems[] = { + {"climate","climate","climate","valves.climate","tValue","tTarget","mdi:thermostat","","","",""}, + {""} + }; + +static const HA_Item haValvesItems[] = { + {"text","valves_state","state","valves.state","state","state","mdi:state-machine","","volume","measurement",""}, + {"valve","valves_target","target","valves.target","target","target","mdi:valve","\"reports_position\": true","water","measurement","%"}, + {"sensor","valves_temp1","temp1","valves.temp1","temp1","","mdi:thermometer","","temperature","measurement","°C"}, + {"sensor","valves_temp2","temp2","valves.temp2","temp2","","mdi:thermometer","","temperature","measurement","°C"}, + {"number","valves_control_dynOffs","valves.control.dynOffs","valves.control.dynOffs","control/dynOffs","control/dynOffs","mdi:gauge","","volume","measurement",""}, + {"number","valves_control_min","valves.control.min","valves.control.min","control/min","control/min","mdi:gauge","","volume","measurement",""}, + {"number","valves_control_max","valves.control.max","valves.control.max","control/max","control/max","mdi:gauge","","volume","measurement",""}, + {"select","valves_window_state","window.state","valves.window.state","window/state","window/state","mdi:switch","\"options\": [\"close\",\"open\"]","","",""}, + {"number","valves_window_target","window.target","valves.window.target","window/target","window/target","mdi:gauge","","volume","measurement",""}, + {"text","valves_calibration_date","calibration.date","valves.calibration.date","calibration/date","calibration/date","mdi:timelapse","","volume","measurement",""}, + {"text","valves_calibration_repetitions","calibration.repetitions","valves.calibration.repetitions","calibration/repetitions","calibration/repetitions","mdi:valve","","volume","measurement",""}, + {"text","valves_diag_openCount","diag.openCount","valves.diag.openCount","diag/openCount","diag/openCount","mdi:valve","","volume","measurement",""}, + {"text","valves_diag_closeCount","diag.closeCount","valves.diag.closeCount","diag/closeCount","diag/closeCount","mdi:valve","","volume","measurement",""}, + {"text","valves_diag_deadZoneCount","diag.deadZoneCount","valves.diag.deadZoneCount","diag/deadZoneCount","diag/deadZoneCount","mdi:valve","","volume","measurement",""}, + {"text","valves_diag_moves","diag.moves","valves.diag.moves","diag/moves","diag/moves","mdi:valve","","volume","measurement",""}, + {"text","valves_diag_meanCurrrent","diag.meanCurrrent","valves.diag.meanCurrrent","diag/meanCurrrent","diag/meanCurrrent","mdi:valve","","volume","measurement",""}, + {""} + }; + +static const HA_Item haTempsItems[] = { + {"sensor","temps","temps","temps","temps","","mdi:thermometer","","temperature","measurement","°C"}, + {""} + }; + +static const HA_Item haVoltsItems[] = { + {"sensor","volts","volts","volts","sensors","","","","voltage","measurement",""}, + {""} + }; + + uint8_t i; + HA_Item haItem; + String rbName; + + /* common/ + heatControl/ + value + set + message/ + value + parkPosition/ + value + set + state/ + value + uptime/ [config] + value + */ + + VdmSystem.openFile(HA_FILE_NAME,FS_WRITE_MODE); + + // common + i=0; + do { + haItem=haCommonItems[i]; + if (haItem.topic=="uptime") { + if (VdmConfig.configFlash.protConfig.protocolFlags.publishUpTime) sendDiscoveryHA(haItem); + } else if (haItem.topic=="heatControl"){ + if (!VdmConfig.configFlash.protConfig.protocolFlags.publishPlainText) { + haItem.options="\"options\": [\"0\",\"1\",\"2\",\"3\"]"; + } + sendDiscoveryHA(haItem); + } + else sendDiscoveryHA(haItem); + i++; + } + while (haCommonItems[i].topicClass!=""); + + // climate + String tcTopic; + String tsTopic; + String ctTopic; + String modeCmdTopic; + String modeStateTopic; + String root=""; + if (VdmConfig.configFlash.protConfig.protocolFlags.publishPathAsRoot) root="/"; + + for (uint8_t x = 0;x0) + haItem.state_topic="valves/"+rbName+"/"+haItem.state_topic; + if (haItem.command_topic.length()>0) + haItem.command_topic="valves/"+rbName+"/"+haItem.command_topic; + if (haValvesItems[i].topic=="valves_temp1") { + if (StmApp.actuators[x].tIdx1>0) sendDiscoveryHA(haItem); + } else if (haValvesItems[i].topic=="valves_temp2") { + if (StmApp.actuators[x].tIdx2>0) sendDiscoveryHA(haItem); + } + else if (haValvesItems[i].topic=="valves_window_state") { + if (VdmConfig.configFlash.valvesControlConfig.valveControlConfig[x].controlFlags.active && VdmConfig.configFlash.valvesControlConfig.valveControlConfig[x].controlFlags.windowInstalled) { + if (!VdmConfig.configFlash.protConfig.protocolFlags.publishPlainText) { + haItem.topicClass="switch"; + haItem.options="\"payload_on\": \"1\",\"payload_off\": \"0\",\"state_on\": \"1\",\"state_off\": \"0\""; + } + sendDiscoveryHA(haItem); + } + } + else if (haValvesItems[i].topic=="valves_window_target") { + if (VdmConfig.configFlash.valvesControlConfig.valveControlConfig[x].controlFlags.active && VdmConfig.configFlash.valvesControlConfig.valveControlConfig[x].controlFlags.windowInstalled) sendDiscoveryHA(haItem); + } + else if (haValvesItems[i].topic=="valves_control_mode") { + if (VdmConfig.configFlash.valvesControlConfig.valveControlConfig[x].controlFlags.active) { + if (!VdmConfig.configFlash.protConfig.protocolFlags.publishPlainText) { + haItem.topicClass="switch"; + haItem.options="\"payload_on\": \"1\",\"payload_off\": \"0\",\"state_on\": \"1\",\"state_off\": \"0\""; + } + sendDiscoveryHA(haItem); + } + } + else if (haValvesItems[i].topic=="valves_control_dynOffs") { + if (VdmConfig.configFlash.valvesControlConfig.valveControlConfig[x].controlFlags.active) sendDiscoveryHA(haItem); + } + + else if (haValvesItems[i].topic.indexOf("valves_diag")>=0) { + if (VdmConfig.configFlash.protConfig.protocolFlags.publishDiag) sendDiscoveryHA(haItem); + } + else sendDiscoveryHA(haItem); + i++; + } + while (haValvesItems[i].topicClass!=""); + } + } + + //temp sensors + for (uint8_t x = 0;x0) sendDiscoveryHA(haItem); + i++; + } + while (haTempsItems[i].topicClass!=""); + } + } + // volt sensors + for (uint8_t x = 0;x0) sendDiscoveryHA(haItem); + i++; + } + while (haVoltsItems[i].topicClass!=""); + } + } + VdmSystem.closeFile(); + hadState = HAD_FINISHED; } \ No newline at end of file diff --git a/software_esp32/src/stm32.cpp b/software_esp32/src/stm32.cpp index e0b5706..bb26ef8 100644 --- a/software_esp32/src/stm32.cpp +++ b/software_esp32/src/stm32.cpp @@ -126,6 +126,8 @@ void CStm32::STM32ota_loop() stm32ota_state = STM32OTA_PREPAREFILE; stmUpdPercent = 0; stm32ota_command = 0; + baudRateBoot0 = otaBaudrateNormal; + retryBoot0 = 0; } break; @@ -147,8 +149,20 @@ void CStm32::STM32ota_loop() break; - case STM32OTA_PREPARE: - STM32ota_begin(); + case STM32OTA_PREPARE: + if (!skipsigning) { + if (VdmConfig.configFlash.netConfig.syslogLevel>=VISMODE_ATOMIC) { + syslog.log(LOG_DEBUG, "STM32 ota: prepare normal"); + } + STM32ota_begin(otaBaudrateNormal); + } else { + if (VdmConfig.configFlash.netConfig.syslogLevel>=VISMODE_ATOMIC) { + syslog.log(LOG_DEBUG, "STM32 ota: prepare boot0 with "+String(baudRateBoot0)+" Bd"); + } + STM32ota_begin(baudRateBoot0); + } + + ResetSTM32(true); VdmTask.yieldTask(1500); // stm32 is a little slow UART_STM32.flush(); // flush garbage in rx buffer @@ -214,7 +228,7 @@ void CStm32::STM32ota_loop() if (VdmConfig.configFlash.netConfig.syslogLevel>=VISMODE_ATOMIC) { syslog.log(LOG_DEBUG, "STM32 ota: ready to beef"); } - if (timeout >= 30) { // 300 ms + if (timeout >= 30) { // 30*50 ms UART_STM32.write(STM32INIT); stm32ota_state = STM32OTA_GETID; stmUpdPercent = 10; @@ -228,20 +242,28 @@ void CStm32::STM32ota_loop() #ifdef EnvDevelop if (timeout==0) { UART_DBG.println("STM32 ota: get id"); - if (VdmConfig.configFlash.netConfig.syslogLevel>=VISMODE_ATOMIC) { - syslog.log(LOG_DEBUG, "STM32 ota: get id"); - } } #endif + if (timeout >= 3) { - - // id = StmOta.stm32GetId(); - + if (VdmConfig.configFlash.netConfig.syslogLevel>=VISMODE_ATOMIC) { + syslog.log(LOG_DEBUG, "STM32 ota: get id"); + } if (StmOta.stm32GetId()) { stm32ota_state = STM32OTA_ERASE_START; stmUpdPercent = 15; + timeout = 0; + } + else { + retryBoot0 ++; + if (retryBoot0<3) { + baudRateBoot0 = baudRateBoot0 / 2; + if (VdmConfig.configFlash.netConfig.syslogLevel>=VISMODE_ATOMIC) { + syslog.log(LOG_DEBUG, "STM32 ota: failed, try with "+String(baudRateBoot0)+ "Bd"); + } + stm32ota_state = STM32OTA_PREPARE; + } else stm32ota_state = STM32OTA_ERROR; } - else stm32ota_state = STM32OTA_ERROR; } else timeout++; @@ -376,9 +398,11 @@ void CStm32::STM32ota_loop() if (VdmConfig.configFlash.netConfig.syslogLevel>=VISMODE_ATOMIC) { syslog.log(LOG_DEBUG, "STM32 ota: write last bytes"); } - if (FlashBytes(myflashfile.blockcnt, myflashfile.lastbytes) != 0) { - stm32ota_state = STM32OTA_ERROR; - break; + if (myflashfile.lastbytes>0) { + if (FlashBytes(myflashfile.blockcnt, myflashfile.lastbytes) != 0) { + stm32ota_state = STM32OTA_ERROR; + break; + } } stm32ota_state = STM32OTA_VERIFY; blockcounter = 0; @@ -572,17 +596,17 @@ void CStm32::STM32ota_start(uint8_t command, String thisFileName) // has to be called prior to stm32 flash transactions -void CStm32::STM32ota_begin() +void CStm32::STM32ota_begin(int BaudRate) { #ifdef EnvDevelop UART_DBG.println("STM32 ota: begin"); #endif if (VdmConfig.configFlash.netConfig.syslogLevel>=VISMODE_ATOMIC) { - syslog.log(LOG_DEBUG, "STM32 ota: begin"); + syslog.log(LOG_DEBUG, "STM32 ota: begin Baudrate = "+String(BaudRate)); } // flash interface // ATTENTION: on WT32-ETH01 use for UART_STM32 pins: RX2 IO35 and TX2 IO17 - UART_STM32.begin(115200, SERIAL_8E1, STM32_RX, STM32_TX, false, 20000UL); + UART_STM32.begin(BaudRate, SERIAL_8E1, STM32_RX, STM32_TX, false, 20000UL); clearUART_STM32Buffer(); #ifdef EnvDevelop UART_DBG.println("STM32 ota: init state machine"); @@ -770,6 +794,7 @@ int CStm32::FlashBytes(int Block, int Bytes) // unTested uint8_t CStm32::stm32StartRead(uint32_t rdaddress, uint16_t rdlen) { + if (rdlen==0) return STM32OK; // send read request StmOta.stm32SendCommand(STM32RD); diff --git a/software_esp32/src/stm32ota.cpp b/software_esp32/src/stm32ota.cpp index d35410f..0c27e8b 100644 --- a/software_esp32/src/stm32ota.cpp +++ b/software_esp32/src/stm32ota.cpp @@ -48,6 +48,7 @@ Credits to https://github.com/csnol/1CHIP-Programmers #include "globals.h" #include "stm32ota.h" #include "stm32.h" +#include "VdmNet.h" CStmOta StmOta; @@ -125,7 +126,7 @@ uint8_t CStmOta::stm32ErasenStart() stm32SendCommand(STM32ERASEN); - for (x=0;x<100;x++) { + for (x=0;x<200;x++) { if (UART_STM32.available()>0) { if (UART_STM32.read() == STM32ACK) { @@ -243,22 +244,35 @@ char CStmOta::stm32Version() stm32SendCommand(STM32GET); - for (x=0;x<100;x++) { + for (x=0;x<200;x++) { if (UART_STM32.available()>0) { vsbuf[0] = UART_STM32.read(); if (vsbuf[0] != STM32ACK) { Serial.println("Error GetVersion: wrong answer"); + if (VdmConfig.configFlash.netConfig.syslogLevel>=VISMODE_ATOMIC) { + syslog.log(LOG_DEBUG, "STM32 : Error GetVersion: wrong answer"); + } return STM32ERR; } else { UART_STM32.readBytesUntil(STM32ACK, vsbuf, 14); + if (VdmConfig.configFlash.netConfig.syslogLevel>=VISMODE_ATOMIC) { + syslog.log(LOG_DEBUG, "STM32 :GetVersion time "+String(x)); + } return vsbuf[1]; } } - else Serial.println("Error GetVersion: no data"); + else { + Serial.println("Error GetVersion: no data"); + if (VdmConfig.configFlash.netConfig.syslogLevel>=VISMODE_ATOMIC) { + syslog.log(LOG_DEBUG, "STM32 : Error GetVersion: no data"); + } + } delayMicroseconds(otaDelayCmd); } - + if (VdmConfig.configFlash.netConfig.syslogLevel>=VISMODE_ATOMIC) { + syslog.log(LOG_DEBUG, "STM32 : Error GetVersion: timeout"); + } return STM32ERR; } @@ -274,7 +288,7 @@ uint8_t CStmOta::stm32GetId() stm32SendCommand(STM32ID); - for (x=0;x<100;x++) { + for (x=0;x<200;x++) { if (UART_STM32.available()>0) { sbuf[0] = UART_STM32.read(); if (sbuf[0] == STM32ACK) { @@ -289,12 +303,18 @@ uint8_t CStmOta::stm32GetId() UART_DBG.print("--> type is "); UART_DBG.println(chipName); #endif + if (VdmConfig.configFlash.netConfig.syslogLevel>=VISMODE_ATOMIC) { + syslog.log(LOG_DEBUG, "STM32 ota: getid: Id: 0x"+String(chipId,HEX)+" type : "+String(chipName)+" elapsed "+String(x)); + } return 1; } else { #ifdef EnvDevelop UART_DBG.println("Error: wrong answer"); #endif + if (VdmConfig.configFlash.netConfig.syslogLevel>=VISMODE_ATOMIC) { + syslog.log(LOG_DEBUG, "STM32 ota: Error getid : wrong answer"); + } return 0; } } @@ -303,6 +323,9 @@ uint8_t CStmOta::stm32GetId() #ifdef EnvDevelop UART_DBG.println("- Error: no data"); #endif + if (VdmConfig.configFlash.netConfig.syslogLevel>=VISMODE_ATOMIC) { + syslog.log(LOG_DEBUG, "STM32 ota: Error getid: no data"); + } return 0; } diff --git a/software_esp32/src/stmApp.cpp b/software_esp32/src/stmApp.cpp index 5a619ae..d9263e3 100644 --- a/software_esp32/src/stmApp.cpp +++ b/software_esp32/src/stmApp.cpp @@ -60,6 +60,7 @@ static const char* commCmds [] = {APP_PRE_SETTARGETPOS,APP_PRE_GETONEWIRECNT,APP_PRE_GETONEWIREDATA, + APP_PRE_GETOWVOLTCNT,APP_PRE_GETOWVOLTDATA, APP_PRE_SETONEWIRESEARCH,APP_PRE_SETALLVLVOPEN,APP_PRE_GETVLVDATA, APP_PRE_SETVLLEARN,APP_PRE_GETVERSION,APP_PRE_GETHWINFO,APP_PRE_GETTARGETPOS, APP_PRE_SETMOTCHARS,APP_PRE_GETMOTCHARS,APP_PRE_SETVLVSENSOR, @@ -75,6 +76,7 @@ CStmApp::CStmApp() settarget_check =false; tempIndex=0; checkTempsCount = 0; + checkVoltsCount = 0; cmd_buffer = ""; found = false; bufptr = buffer; @@ -82,6 +84,7 @@ CStmApp::CStmApp() argcnt = 0; tempsPrivCount=0; tempsCount=0; + voltsCount=0; setTempIdxActive=false; waitForFinishQueue=false; setMotorCharsActive=false; @@ -102,7 +105,7 @@ CStmApp::CStmApp() stmInitState=STM_INIT_NOT_STARTED; fastGetOneWire=false; oneWireAllRead=false; - + stmFailed=false; } void CStmApp::app_setup() { @@ -163,7 +166,7 @@ int16_t CStmApp::getTOffset(uint8_t tIdx) { int16_t result = 0; if (tIdx>0) { - result = VdmConfig.configFlash.tempsConfig.tempConfig[tIdx].offset; + result = VdmConfig.configFlash.tempsConfig.tempConfig[tIdx-1].offset; } return (result); } @@ -208,6 +211,7 @@ void CStmApp::getParametersFromSTM() app_cmd(APP_PRE_GETLEARNMOVEM); app_cmd(APP_PRE_GETONEWIRECNT,String(255)); app_cmd(APP_PRE_GETONEWIRESETT,String(255)); + app_cmd(APP_PRE_GETOWVOLTCNT,String(255)); app_cmd(APP_PRE_GETVLSTATUS); fastGetOneWire=true; } @@ -361,6 +365,18 @@ int8_t CStmApp::findTempID(char* ID) return -1; } +int8_t CStmApp::findVoltID(char* ID) +{ + for (uint8_t i=0;i0) { + if (strncmp(ID,VdmConfig.configFlash.voltsConfig.voltConfig[i].ID,sizeof(VdmConfig.configFlash.voltsConfig.voltConfig[i].ID))==0) { + return (i); + } + } + } + return -1; +} + int8_t CStmApp::findTempIdxInValve (uint8_t tempIdx) { uint8_t idx=0; @@ -386,6 +402,7 @@ void CStmApp::app_check_data() int availcnt; uint8_t noToken; uint8_t val8; + String sv; #ifdef STMSimulation #warning STMSimulation active @@ -448,7 +465,7 @@ void CStmApp::app_check_data() found = false; if (stmStatus==STM_NOT_READY) stmStatus=STM_READY; - + stmFailed=false; // devide buffer into command and data // **************************************** @@ -614,7 +631,7 @@ void CStmApp::app_check_data() appState=APP_IDLE; } - // get onewire data answer + // get temp onewire data answer // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ else if(memcmp(APP_PRE_GETONEWIRECNT,cmd,5) == 0) { @@ -622,12 +639,12 @@ void CStmApp::app_check_data() tempsPrivCount= atoi(argptr[0]); if (tempsPrivCount!=tempsCount) app_cmd(APP_PRE_GETONEWIRECNT,String(255)); if (VdmConfig.configFlash.netConfig.syslogLevel>=VISMODE_DETAIL) { - syslog.log(LOG_DEBUG,"STMApp:one wire count "+String(tempsPrivCount)); + syslog.log(LOG_DEBUG,"STMApp:one wire temp count "+String(tempsPrivCount)); } } if(argcnt == 2) { if (VdmConfig.configFlash.netConfig.syslogLevel>=VISMODE_DETAIL) { - syslog.log(LOG_DEBUG,"STMApp:one wire data "+String(argptr[1])); + syslog.log(LOG_DEBUG,"STMApp:one wire temp data "+String(argptr[1])); } tempsPrivCount= atoi(argptr[0]); if (tempsPrivCount>0) { @@ -637,7 +654,6 @@ void CStmApp::app_check_data() if ((cmdptr=strchr(ps,','))!=NULL) *cmdptr='\0'; strncpy(tempsId[idx].id,ps,sizeof(tempsId[idx].id)); ps=cmdptr+1; - idx++; } } tempsCount=tempsPrivCount; @@ -652,7 +668,7 @@ void CStmApp::app_check_data() else if(memcmp(APP_PRE_GETONEWIREDATA,cmd,5) == 0) { if(argcnt == 2) { if (VdmConfig.configFlash.netConfig.syslogLevel>=VISMODE_DETAIL) { - syslog.log(LOG_DEBUG,"STMApp:one wire data "+String(argptr[0])+":"+String(argptr[1])); + syslog.log(LOG_DEBUG,"STMApp:one wire temp data "+String(argptr[0])+":"+String(argptr[1])); } strncpy(tempsId[tempIndex].id,argptr[0],sizeof(tempsId[tempIndex].id)); @@ -671,13 +687,13 @@ void CStmApp::app_check_data() if (VdmTask.piTaskInitiated) oneWireAllRead=true; } #ifdef AppDebug - UART_DBG.println("read onwire "+String(tempIndex)+":"+String(fastGetOneWire)); + UART_DBG.println("read temp onwire "+String(tempIndex)+":"+String(fastGetOneWire)); #endif } // handle incomplete messages to not block 1-wire request cycle else if(argcnt == 1) { if (VdmConfig.configFlash.netConfig.syslogLevel>=VISMODE_DETAIL) { - syslog.log(LOG_DEBUG,"STMApp:one wire data - only 1 arg"); + syslog.log(LOG_DEBUG,"STMApp:one wire temp data - only 1 arg"); } tempIndex++; if (tempIndex>=tempsCount) { // all temp sensors read @@ -689,14 +705,105 @@ void CStmApp::app_check_data() appState=APP_IDLE; } + // get volt onewire data answer + // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + + else if(memcmp(APP_PRE_GETOWVOLTCNT,cmd,5) == 0) { + if(argcnt == 1) { + voltsPrivCount= atoi(argptr[0]); + if (voltsPrivCount!=voltsCount) app_cmd(APP_PRE_GETOWVOLTCNT,String(255)); + if (VdmConfig.configFlash.netConfig.syslogLevel>=VISMODE_DETAIL) { + syslog.log(LOG_DEBUG,"STMApp:one wire volt count "+String(voltsPrivCount)); + } + } + if(argcnt == 2) { + if (VdmConfig.configFlash.netConfig.syslogLevel>=VISMODE_DETAIL) { + syslog.log(LOG_DEBUG,"STMApp:one wire volt data "+String(argptr[1])); + } + voltsPrivCount= atoi(argptr[0]); + if (voltsPrivCount>0) { + char* cmdptr; + char* ps=argptr[1]; + for (uint8_t idx=0; idx=VISMODE_DETAIL) { + syslog.log(LOG_DEBUG,"STMApp:one wire volt data "+String(argptr[0])+":"+String(argptr[1])); + } + strncpy(voltsId[voltIndex].id,argptr[0],sizeof(voltsId[voltIndex].id)); + memset(volts[voltIndex].id,0x0,sizeof(volts[voltIndex].id)); + strncpy(volts[voltIndex].id,argptr[0],sizeof(volts[voltIndex].id)); + + int8_t idx=findVoltID(argptr[0]); + if (idx>=0) { + memset(volts[idx].id,0x0,sizeof(volts[idx].id)); + strncpy(volts[idx].id,argptr[0],sizeof(volts[idx].id)); + volts[idx].vad=atoi(argptr[1]); + volts[idx].failed=(volts[idx].vad<=-1000); + float c = (float) volts[idx].vad; + volts[idx].value=(c/100.0+VdmConfig.configFlash.voltsConfig.voltConfig[idx].offset) * VdmConfig.configFlash.voltsConfig.voltConfig[idx].factor; + } + voltIndex++; + + + if (voltIndex>=voltsCount) { // all volt sensors read + voltIndex=0; + fastGetOneWire=false; + if (VdmTask.piTaskInitiated) oneWireAllRead=true; + } + #ifdef AppDebug + UART_DBG.println("read onwire "+String(tempIndex)+":"+String(fastGetOneWire)); + #endif + } + // handle incomplete messages to not block 1-wire request cycle + else if(argcnt == 1) { + if (VdmConfig.configFlash.netConfig.syslogLevel>=VISMODE_DETAIL) { + syslog.log(LOG_DEBUG,"STMApp:one wire data - only 1 arg"); + } + voltIndex++; + if (voltIndex>=tempsCount) { // all temp sensors read + voltIndex=0; + fastGetOneWire=false; + if (VdmTask.piTaskInitiated) oneWireAllRead=true; + } + } + appState=APP_IDLE; + } + else if(memcmp(APP_PRE_GETVERSION,cmd,5) == 0) { if(argcnt > 0) { VdmSystem.stmVersion=argptr[0]; VdmSystem.stmBuild=0; } + if(argcnt > 1) { VdmSystem.stmBuild=atoi(argptr[1]); } + #ifdef minSTMRequired + int8_t pos; + pos=VdmSystem.stmVersion.indexOf('_'); + if (pos>=0) { + sv=VdmSystem.stmVersion; + sv.remove(pos); + } + VdmSystem.stmNRevision=versionExplode(sv); + VdmSystem.stmMinRequired=versionExplode(minSTMRequired); + VdmSystem.stmVersionFalse=VdmSystem.stmNRevision0) { commstate = COMM_GETONEWIRE; } else { - commstate = COMM_HANDLEQUEUE; + commstate = COMM_GETOWVOLTCOUNT; } if (checkTempsCount==0) { app_comm_send(APP_PRE_GETONEWIRECNT); @@ -987,24 +1095,55 @@ void CStmApp::app_comm_machine() appState=APP_PENDING; if (VdmConfig.configFlash.netConfig.syslogLevel>=VISMODE_DETAIL) { - syslog.log(LOG_DEBUG,"get one wire count"); + syslog.log(LOG_DEBUG,"get one wire temp count"); } } checkTempsCount--; break; case COMM_GETONEWIRE: - if (!fastGetOneWire) commstate = COMM_HANDLEQUEUE; + if (!fastGetOneWire) commstate = COMM_GETOWVOLTCOUNT; if (tempsPrivCount>0) { app_comm_send(APP_PRE_GETONEWIREDATA,&tempIndex); appState=APP_PENDING; if (VdmConfig.configFlash.netConfig.syslogLevel>=VISMODE_DETAIL) { - syslog.log(LOG_DEBUG,"get one wire data: " + String(sendbuffer)); + syslog.log(LOG_DEBUG,"get one wire temp data: " + String(sendbuffer)); } } break; + case COMM_GETOWVOLTCOUNT: + if (voltsPrivCount>0) { + commstate = COMM_GETOWVOLT; + } else { + commstate = COMM_HANDLEQUEUE; + } + if (checkVoltsCount==0) { + app_comm_send(APP_PRE_GETOWVOLTCNT); + checkVoltsCount=20; + appState=APP_PENDING; + + if (VdmConfig.configFlash.netConfig.syslogLevel>=VISMODE_DETAIL) { + syslog.log(LOG_DEBUG,"get one wire volt count"); + } + } + checkVoltsCount--; + break; + + case COMM_GETOWVOLT: + if (!fastGetOneWire) commstate = COMM_HANDLEQUEUE; + if (voltsPrivCount>0) { + app_comm_send(APP_PRE_GETOWVOLTDATA,&voltIndex); + appState=APP_PENDING; + + if (VdmConfig.configFlash.netConfig.syslogLevel>=VISMODE_DETAIL) { + syslog.log(LOG_DEBUG,"get one wire volt data: " + String(sendbuffer)); + } + } + break; + + case COMM_HANDLEQUEUE: if ((cmd_buffer=="") && (Queue.available()>0) && (stmStatus>=STM_READY)) { memset(&cmd_buffer,0x0,sizeof(cmd_buffer)); diff --git a/software_esp32/src/tfs_data.c b/software_esp32/src/tfs_data.c index 00501c3..689263f 100644 --- a/software_esp32/src/tfs_data.c +++ b/software_esp32/src/tfs_data.c @@ -225,2939 +225,3364 @@ static const unsigned char tfs____web_pages_favicon_ico[] = { static const unsigned char tfs____web_pages_index_html[] = { /* ../web_pages/index.html */ - 0x1f, 0x8b, 0x08, 0x08, 0x06, 0x34, 0x92, 0x66, 0x02, 0x03, + 0x1f, 0x8b, 0x08, 0x08, 0x45, 0x15, 0xb3, 0x67, 0x02, 0x03, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, - 0x00, 0xc4, 0x5c, 0xe9, 0x73, 0xdc, 0xb6, 0x92, 0xff, 0xac, - 0x54, 0xe5, 0x7f, 0xc0, 0x8e, 0xcb, 0x1b, 0x29, 0xa5, 0xd1, - 0x5c, 0x92, 0x6c, 0xcb, 0x92, 0xea, 0x29, 0x52, 0xfc, 0xac, - 0x5d, 0x1f, 0xda, 0x48, 0x4e, 0x6a, 0xf7, 0xd5, 0xfb, 0x80, - 0x21, 0x31, 0x33, 0x78, 0xe2, 0xf5, 0x48, 0x8e, 0x0e, 0xbb, - 0xf2, 0xbf, 0x6f, 0x77, 0x03, 0x20, 0x41, 0x12, 0x33, 0xc3, - 0xd1, 0xe1, 0xc4, 0x15, 0x9b, 0x83, 0xa3, 0xfb, 0x87, 0x46, - 0x5f, 0x38, 0xc8, 0xc3, 0xff, 0x38, 0xfb, 0x7c, 0x7a, 0xf5, - 0xbf, 0x17, 0xbf, 0xb2, 0x59, 0x1e, 0x06, 0xc7, 0x3f, 0xfe, - 0xf0, 0xe3, 0x0f, 0x87, 0xfa, 0xe9, 0x70, 0x26, 0xb8, 0x8f, - 0xff, 0x06, 0x32, 0xba, 0x66, 0xa9, 0x08, 0x8e, 0x3a, 0xd2, - 0x8b, 0xa3, 0x0e, 0x9b, 0xa5, 0x62, 0x72, 0xd4, 0xf1, 0x79, - 0xce, 0x0f, 0xb6, 0x3b, 0x8b, 0x1b, 0xec, 0xec, 0xf4, 0x26, - 0xfc, 0x06, 0x4b, 0x76, 0xe0, 0x2f, 0x6a, 0x18, 0x8a, 0x9c, - 0xb3, 0x88, 0x87, 0xe2, 0xa8, 0x73, 0x23, 0xc5, 0x6d, 0x12, - 0xa7, 0x79, 0x87, 0x41, 0x83, 0x5c, 0x44, 0xf9, 0x51, 0xe7, - 0x56, 0xfa, 0xf9, 0xec, 0xc8, 0x17, 0xd0, 0x47, 0x74, 0xe9, - 0xc7, 0x36, 0x93, 0x91, 0xcc, 0x25, 0x0f, 0xba, 0x99, 0xc7, - 0x03, 0x71, 0x34, 0xe8, 0x28, 0x84, 0x59, 0x7e, 0x1f, 0x08, - 0x78, 0xdc, 0x18, 0xc7, 0xfe, 0x3d, 0xfb, 0x06, 0x0f, 0x8c, - 0x4d, 0x80, 0x4c, 0x77, 0xc2, 0x43, 0x19, 0xdc, 0x1f, 0xb0, - 0x8c, 0x47, 0x59, 0x37, 0x13, 0xa9, 0x9c, 0xbc, 0xa5, 0xca, - 0x90, 0xa7, 0x53, 0x19, 0x1d, 0xf4, 0xf1, 0xd7, 0x9f, 0xf0, - 0x7f, 0xef, 0x67, 0x76, 0xe2, 0xfb, 0x8c, 0xb3, 0x71, 0xc0, - 0xbd, 0x6b, 0x36, 0x86, 0xbf, 0xa6, 0x69, 0x3c, 0x8f, 0x7c, - 0x40, 0x13, 0xc4, 0x29, 0xcb, 0x63, 0x96, 0xcf, 0x04, 0xfc, - 0x93, 0x00, 0xdc, 0x1b, 0x39, 0xe5, 0xb9, 0x8c, 0x23, 0xf6, - 0x73, 0x0f, 0xba, 0xee, 0x40, 0xe1, 0x27, 0x7e, 0x43, 0x5c, - 0x37, 0xca, 0x8e, 0x5d, 0xea, 0x78, 0xc0, 0x5e, 0x8c, 0x46, - 0x23, 0xe4, 0xb2, 0x11, 0xdf, 0x88, 0x74, 0x12, 0xc4, 0xb7, - 0x07, 0x6c, 0x26, 0x7d, 0x5f, 0x44, 0x9a, 0xb5, 0x62, 0x7e, - 0x89, 0x03, 0x20, 0x16, 0x28, 0xbb, 0x0c, 0x86, 0x99, 0x49, - 0x5f, 0x15, 0x58, 0xfc, 0xc6, 0x3c, 0xad, 0xf2, 0xe4, 0x8a, - 0x2b, 0x90, 0xe5, 0xf9, 0x01, 0x0b, 0xc4, 0x24, 0x27, 0x56, - 0xbe, 0xcc, 0x92, 0x80, 0xc3, 0xb0, 0xc7, 0x41, 0xec, 0x5d, - 0x53, 0x91, 0x41, 0x33, 0x19, 0xe2, 0x1f, 0x2a, 0xca, 0xc5, - 0x5d, 0xde, 0xe5, 0x81, 0x9c, 0x46, 0x07, 0xcc, 0x03, 0x81, - 0x8b, 0x94, 0x8a, 0x13, 0xee, 0xfb, 0x32, 0x9a, 0x1e, 0xb0, - 0xc1, 0x6e, 0x72, 0xc7, 0x06, 0xfb, 0xc9, 0x5d, 0xd9, 0xda, - 0x17, 0x5e, 0x9c, 0x12, 0x96, 0x03, 0x16, 0xc5, 0x91, 0xa0, - 0x1a, 0x12, 0x74, 0x26, 0xbf, 0x0a, 0xe8, 0xf2, 0x4a, 0xb5, - 0x2e, 0xc6, 0x75, 0x3a, 0xe3, 0xd1, 0x54, 0x8d, 0x43, 0x09, - 0x32, 0x9e, 0xe8, 0x11, 0xc2, 0x70, 0x66, 0x28, 0x92, 0xda, - 0x80, 0x0e, 0x54, 0xe1, 0x22, 0x61, 0xfa, 0xbe, 0x6f, 0x0f, - 0x87, 0x66, 0xab, 0xc2, 0xf0, 0xbd, 0x11, 0x1b, 0xe9, 0x60, - 0x3e, 0xe3, 0x39, 0xcb, 0x66, 0xf1, 0x3c, 0xf0, 0x59, 0x9c, - 0x88, 0x88, 0x71, 0x9c, 0xd1, 0x20, 0xce, 0x84, 0x99, 0x4e, - 0x64, 0x0a, 0x50, 0xb2, 0x90, 0x07, 0x01, 0xcb, 0xbc, 0x54, - 0x88, 0x28, 0xab, 0x42, 0x42, 0x65, 0x8d, 0x14, 0xa0, 0x42, - 0xae, 0x66, 0xec, 0x05, 0xdb, 0x3f, 0x66, 0x40, 0x1c, 0x49, - 0x2a, 0x12, 0x4c, 0x66, 0x30, 0x1b, 0x59, 0x86, 0x00, 0x22, - 0xb6, 0xdf, 0xef, 0xb3, 0x44, 0xde, 0x89, 0x20, 0x63, 0xa0, - 0xc5, 0x62, 0x1b, 0x15, 0x40, 0x30, 0x64, 0x48, 0xa2, 0xd8, - 0x66, 0xe2, 0xce, 0x13, 0x49, 0x0e, 0x1a, 0x9b, 0x12, 0x8d, - 0x89, 0x4c, 0xb3, 0x1c, 0x50, 0x09, 0xb6, 0xd9, 0x79, 0x1f, - 0x87, 0xa2, 0xb3, 0xb5, 0xc3, 0x2e, 0x67, 0xf1, 0x6d, 0x6d, - 0x5c, 0x68, 0x27, 0x1c, 0x14, 0x65, 0xf5, 0x00, 0x37, 0x69, - 0x0c, 0x5b, 0x6a, 0x5c, 0x7f, 0x0b, 0x85, 0x2f, 0xb9, 0x01, - 0x8a, 0xed, 0x37, 0x43, 0x7e, 0xa7, 0xec, 0xeb, 0x00, 0xb1, - 0x26, 0x77, 0x5b, 0xda, 0x84, 0xca, 0x59, 0x89, 0xe2, 0x7c, - 0xf3, 0x80, 0x70, 0x75, 0xbd, 0x99, 0x0c, 0x7c, 0x68, 0x51, - 0x15, 0xc6, 0x9f, 0xd5, 0x0e, 0x96, 0xd0, 0xb4, 0x72, 0xa6, - 0x72, 0x3a, 0x5b, 0xa4, 0x9d, 0x8c, 0xfd, 0x69, 0x0b, 0xf3, - 0x0a, 0x90, 0x77, 0x52, 0x91, 0x25, 0x31, 0x58, 0xc1, 0x8d, - 0x00, 0x8f, 0x10, 0x70, 0x90, 0x25, 0xc8, 0x14, 0x54, 0x53, - 0xf8, 0x96, 0x31, 0x22, 0xaf, 0x5b, 0x99, 0xcf, 0xd8, 0x7f, - 0xf1, 0x1b, 0x7e, 0xe9, 0xa5, 0x12, 0xa4, 0x78, 0x6b, 0xa6, - 0x62, 0x0e, 0xf6, 0x0e, 0x5d, 0xa5, 0xa7, 0xb4, 0x0d, 0x8b, - 0xc8, 0xf9, 0x00, 0x7d, 0x20, 0xa5, 0x68, 0x86, 0xfc, 0x5a, - 0x64, 0x36, 0xb5, 0x20, 0x8e, 0xaf, 0xd9, 0x34, 0x8e, 0xfd, - 0xa6, 0x56, 0x6c, 0x6a, 0xe0, 0x96, 0x99, 0x82, 0xaa, 0xe6, - 0x12, 0x3c, 0x51, 0x70, 0x8f, 0x16, 0x9b, 0x83, 0x7f, 0x44, - 0x05, 0x9f, 0xc5, 0xa9, 0xfc, 0x8a, 0x93, 0x03, 0xe5, 0x0f, - 0x16, 0xfa, 0x4e, 0x29, 0x00, 0xf6, 0x2d, 0x89, 0x33, 0xa9, - 0xac, 0x0e, 0xbc, 0x2a, 0xd8, 0xdf, 0x4d, 0x4d, 0xe0, 0x76, - 0x63, 0x5b, 0xf6, 0x65, 0x3f, 0x3e, 0xce, 0xe2, 0x60, 0x9e, - 0x2b, 0x8b, 0xa5, 0xb9, 0x38, 0x60, 0x7d, 0x65, 0xd8, 0x71, - 0xa2, 0x1f, 0xd5, 0x34, 0xb8, 0x89, 0x56, 0xe6, 0xb2, 0x30, - 0x7d, 0x87, 0xa3, 0xb1, 0xbd, 0x8a, 0x71, 0x48, 0xc5, 0xfc, - 0x6e, 0xd4, 0xbd, 0x5d, 0xce, 0xc7, 0xc6, 0xdf, 0xb3, 0x4d, - 0x14, 0x0b, 0xcc, 0x30, 0x9b, 0x09, 0xc2, 0x37, 0xe8, 0xf7, - 0x5f, 0x92, 0x4d, 0x4c, 0xe6, 0x30, 0x0b, 0x09, 0x9f, 0x0a, - 0xd3, 0x74, 0xcb, 0x58, 0x28, 0x1f, 0x9f, 0xea, 0xce, 0x4a, - 0x76, 0xda, 0x2d, 0xdc, 0xce, 0xa4, 0x1a, 0x29, 0x63, 0x0d, - 0x93, 0x65, 0xac, 0x74, 0x70, 0x20, 0x75, 0x36, 0xec, 0x2b, - 0x97, 0xc5, 0x6c, 0xb6, 0x6f, 0x5d, 0x70, 0x01, 0xaa, 0x9a, - 0xf5, 0x82, 0xf9, 0x07, 0xb4, 0x45, 0xc5, 0xd9, 0xe1, 0xab, - 0xf6, 0xf6, 0xf6, 0xde, 0x2e, 0x40, 0x55, 0x73, 0xd8, 0xd0, - 0x3d, 0x4e, 0x7d, 0x91, 0xda, 0x28, 0xe3, 0x79, 0x0e, 0xdc, - 0x84, 0x5d, 0xe4, 0xcd, 0xd3, 0x0c, 0x09, 0x25, 0xb1, 0x34, - 0xde, 0xda, 0x1e, 0x8d, 0xed, 0xae, 0x75, 0xf8, 0xab, 0x7a, - 0x65, 0xc6, 0xb4, 0xbe, 0x0d, 0x86, 0x2f, 0x4b, 0xef, 0x65, - 0x06, 0x62, 0x79, 0x5e, 0xe7, 0x70, 0x5e, 0xbd, 0x7a, 0xf5, - 0x98, 0x4e, 0x1b, 0xba, 0xd7, 0x24, 0x85, 0x70, 0x6f, 0x3a, - 0xe8, 0x51, 0x93, 0x64, 0xd8, 0x10, 0xf0, 0x83, 0x92, 0x4a, - 0xbf, 0x36, 0xb0, 0x3d, 0x83, 0x5e, 0x35, 0xef, 0xa6, 0xdc, - 0x97, 0xf3, 0xcc, 0x2a, 0x77, 0x07, 0x32, 0x8b, 0xa7, 0x6c, - 0x32, 0xed, 0x92, 0xda, 0x2b, 0xc6, 0x83, 0x55, 0x8c, 0x17, - 0x33, 0x40, 0xea, 0xc9, 0xb3, 0x51, 0x47, 0x06, 0x60, 0x00, - 0x61, 0x57, 0x46, 0xc9, 0x3c, 0x27, 0x0b, 0x34, 0x33, 0xd8, - 0xef, 0x17, 0x91, 0xd6, 0x6e, 0x33, 0xb0, 0x1b, 0x8d, 0x16, - 0x34, 0x1a, 0xda, 0x8d, 0x86, 0x7b, 0x56, 0xa3, 0xb2, 0xcd, - 0xc8, 0x6e, 0x63, 0x9a, 0x6c, 0xa8, 0xb4, 0xa9, 0x8b, 0x7a, - 0x5b, 0x0c, 0x80, 0x88, 0xa7, 0x95, 0x99, 0xdd, 0x58, 0x32, - 0xb1, 0x1b, 0x75, 0x01, 0x6c, 0xb8, 0xa7, 0x75, 0x63, 0x89, - 0xd0, 0x0b, 0x6e, 0xc3, 0xe7, 0x66, 0xb7, 0x31, 0x4d, 0x25, - 0x69, 0xf3, 0x3c, 0x8c, 0x18, 0xa4, 0x91, 0x09, 0x84, 0xf3, - 0xa1, 0x3d, 0x3d, 0x05, 0x94, 0xd1, 0x5f, 0x01, 0x65, 0x64, - 0x59, 0x64, 0x81, 0x64, 0xf7, 0xaf, 0x40, 0xb2, 0x6b, 0x0b, - 0x85, 0x7a, 0x5c, 0x81, 0x73, 0x16, 0x41, 0x70, 0x99, 0xf3, - 0x5c, 0x90, 0x6d, 0x68, 0xa7, 0x57, 0xd2, 0x31, 0xb6, 0xa0, - 0xac, 0x65, 0xd0, 0xb7, 0x73, 0xc7, 0x0a, 0x8d, 0xf3, 0x70, - 0xda, 0x20, 0x53, 0xf8, 0x4e, 0x7b, 0x2c, 0x38, 0xcc, 0x92, - 0x06, 0x08, 0x24, 0x10, 0x68, 0xa1, 0x57, 0xf8, 0xc0, 0x4a, - 0x8d, 0x66, 0x64, 0x40, 0x2f, 0x17, 0x35, 0xcc, 0x7d, 0x1d, - 0x3d, 0x35, 0xbc, 0x8a, 0xba, 0x6f, 0xe8, 0x30, 0x31, 0x1c, - 0x2c, 0x66, 0x35, 0x58, 0xc4, 0x6b, 0xc3, 0xd1, 0x74, 0x2d, - 0x6e, 0x8b, 0x66, 0xc4, 0xb0, 0x1a, 0xda, 0x26, 0xef, 0x62, - 0x36, 0x7b, 0x42, 0x66, 0x83, 0xdd, 0x2a, 0xb3, 0x1d, 0xca, - 0x6b, 0x17, 0x66, 0xca, 0xd4, 0x24, 0xc3, 0x3c, 0xf6, 0x5b, - 0x8b, 0xdc, 0xa1, 0xb9, 0x22, 0x69, 0xb8, 0x1d, 0xa4, 0x07, - 0x5a, 0x18, 0xf0, 0x24, 0xd3, 0x6c, 0x6f, 0x64, 0x26, 0xc7, - 0x32, 0x90, 0x39, 0x90, 0x35, 0x35, 0x25, 0x77, 0x06, 0xa9, - 0xcd, 0x78, 0x9e, 0xe7, 0x71, 0x44, 0xc9, 0x9f, 0xbd, 0xd4, - 0x28, 0x94, 0xa8, 0xbf, 0xb3, 0x2f, 0xc2, 0x72, 0x59, 0x73, - 0xab, 0x24, 0x02, 0x6e, 0x3d, 0x50, 0x96, 0xe3, 0x88, 0x71, - 0x93, 0xc9, 0xc4, 0x5e, 0x93, 0x4c, 0x31, 0xc5, 0xb3, 0x10, - 0x5a, 0x1c, 0x75, 0x12, 0xd5, 0x96, 0xf0, 0xab, 0x37, 0xbf, - 0xbc, 0x19, 0xed, 0x55, 0x97, 0x6f, 0x9a, 0x97, 0x5e, 0xbf, - 0x1a, 0x7d, 0x77, 0xe1, 0x77, 0x9a, 0xb4, 0xf1, 0xa0, 0xb6, - 0x18, 0x60, 0x22, 0x50, 0x39, 0xfc, 0x07, 0xa0, 0xeb, 0xf7, - 0x2b, 0xe8, 0xbc, 0x3e, 0xfe, 0x71, 0x8f, 0x7d, 0xf0, 0xfd, - 0xc5, 0x3d, 0xf8, 0xeb, 0xe5, 0xdd, 0x58, 0xfe, 0x38, 0x26, - 0x60, 0xf0, 0x5c, 0x33, 0x40, 0x06, 0x07, 0xcb, 0x8e, 0x20, - 0x9e, 0x9e, 0x22, 0xa3, 0x6a, 0x6e, 0xa0, 0x61, 0x9b, 0x6d, - 0x89, 0x2e, 0x98, 0x0c, 0x9f, 0xe7, 0xb1, 0x3b, 0x89, 0xdf, - 0xb0, 0x23, 0x4a, 0x80, 0xd0, 0xa6, 0x29, 0xac, 0x84, 0xf6, - 0xec, 0xa8, 0x42, 0xe3, 0xf2, 0x66, 0xc2, 0xbb, 0x1e, 0xc7, - 0x77, 0x08, 0x35, 0xa9, 0x64, 0x2c, 0x03, 0xcd, 0x50, 0x39, - 0x19, 0x74, 0x1f, 0xc3, 0xb5, 0x20, 0x38, 0x39, 0xb0, 0x2a, - 0x0f, 0x33, 0xa8, 0x96, 0x9d, 0x03, 0x3e, 0x16, 0x81, 0x93, - 0x40, 0x2d, 0xc8, 0x18, 0x67, 0x63, 0xf7, 0xae, 0xa4, 0x5a, - 0x83, 0xfd, 0xe7, 0x18, 0xdd, 0xa0, 0x36, 0xbc, 0xfd, 0xb5, - 0x86, 0x37, 0x70, 0x8c, 0x6f, 0xbf, 0xfd, 0xf8, 0x2a, 0x59, - 0xe2, 0x60, 0xef, 0x39, 0xc6, 0x37, 0xac, 0x8d, 0x6f, 0x6f, - 0xad, 0xf1, 0x0d, 0x1d, 0xe3, 0xdb, 0x5b, 0x36, 0x3e, 0xbd, - 0xb5, 0xf0, 0x31, 0xf6, 0x79, 0xc0, 0x36, 0x4b, 0x83, 0x32, - 0xcb, 0xc9, 0x90, 0x2a, 0xbe, 0x39, 0xd6, 0x8d, 0x4c, 0xed, - 0x2c, 0xf9, 0xb0, 0x76, 0x1f, 0xdf, 0x33, 0x5f, 0x4c, 0xf8, - 0x3c, 0xc8, 0x55, 0x2f, 0xc8, 0xe8, 0x8b, 0x45, 0xf6, 0x44, - 0xde, 0x09, 0x9f, 0x1a, 0x43, 0xba, 0x82, 0x5b, 0x02, 0x0c, - 0x68, 0x78, 0xc2, 0x34, 0xfc, 0x0a, 0xa9, 0xb5, 0x2f, 0xee, - 0x00, 0xa6, 0x6a, 0x23, 0x73, 0xda, 0x97, 0x88, 0x93, 0x82, - 0x52, 0x35, 0x1f, 0xc2, 0xe8, 0x8a, 0x0d, 0x3f, 0xc4, 0x9e, - 0xda, 0xff, 0x8b, 0x27, 0xb4, 0x68, 0x06, 0x01, 0x98, 0x1e, - 0x2a, 0x24, 0xea, 0xd5, 0xbb, 0xbd, 0x92, 0x2f, 0xd7, 0x09, - 0x2f, 0x89, 0xc6, 0x3b, 0x5c, 0x43, 0xab, 0xc0, 0xad, 0xbb, - 0xea, 0x60, 0x5f, 0x6b, 0xa2, 0xe7, 0x57, 0xb7, 0x29, 0xf7, - 0x2c, 0x69, 0x66, 0xb1, 0xd5, 0xaf, 0x11, 0xe5, 0x48, 0x99, - 0x97, 0x42, 0x7c, 0x65, 0x72, 0xc2, 0x22, 0x21, 0x70, 0x53, - 0x46, 0xf7, 0x68, 0xba, 0xa9, 0x74, 0x3a, 0xde, 0xec, 0x6f, - 0xc3, 0x9f, 0x2d, 0xc5, 0x85, 0x07, 0x01, 0x36, 0xd2, 0xfb, - 0x81, 0xcb, 0xba, 0x71, 0xd5, 0x6f, 0xbb, 0xbf, 0xb3, 0xab, - 0xfa, 0xfe, 0x42, 0x9b, 0xb3, 0xb7, 0x3d, 0x16, 0x27, 0xdc, - 0x83, 0x20, 0xaf, 0x7a, 0x17, 0x93, 0xab, 0x26, 0xd6, 0xec, - 0x08, 0x58, 0x73, 0xda, 0xf5, 0x2a, 0xbb, 0x04, 0xae, 0xa0, - 0x22, 0xf0, 0x4f, 0x65, 0x6f, 0xb8, 0x50, 0x66, 0x6b, 0xcd, - 0x56, 0x6e, 0x16, 0x18, 0x5f, 0x58, 0xac, 0xee, 0xd8, 0x8b, - 0xd7, 0xaf, 0x5f, 0x57, 0x64, 0xff, 0xba, 0xff, 0xb2, 0xa1, - 0x7b, 0xa7, 0xb4, 0x35, 0xf7, 0x0b, 0x39, 0x7f, 0x8d, 0x50, - 0xed, 0xd6, 0x55, 0xf6, 0x2f, 0x5e, 0x70, 0xfa, 0xaf, 0xb2, - 0x57, 0x50, 0xec, 0x9f, 0x55, 0x96, 0xf6, 0xc3, 0xd7, 0x95, - 0xf5, 0x7e, 0x3d, 0x6a, 0x18, 0xbb, 0x46, 0x16, 0x2a, 0xfe, - 0x6e, 0x97, 0xbf, 0x27, 0xb1, 0x37, 0xcf, 0x6a, 0x8c, 0xfb, - 0xfd, 0xbe, 0xb5, 0x28, 0x75, 0x6d, 0xf7, 0x3a, 0xb7, 0x21, - 0xca, 0xfc, 0x4a, 0x6f, 0x4a, 0x62, 0xa0, 0x67, 0xac, 0x92, - 0xe6, 0xe1, 0xa2, 0xe1, 0xad, 0x2a, 0xa3, 0xf5, 0xc3, 0x94, - 0x27, 0x2a, 0x9e, 0x5a, 0x65, 0xb9, 0x08, 0xa1, 0x71, 0x2e, - 0xf4, 0xe2, 0x22, 0xc3, 0xfd, 0xae, 0x44, 0xf0, 0x7c, 0x13, - 0xe7, 0xa2, 0x3b, 0x91, 0xf9, 0x36, 0x0b, 0x65, 0x14, 0xf2, - 0xbb, 0xcd, 0xe1, 0x6b, 0x88, 0x3d, 0xdb, 0x6c, 0x30, 0x49, - 0xb7, 0x40, 0x37, 0x9a, 0x04, 0xd2, 0xf8, 0x16, 0x7a, 0xc3, - 0x5c, 0x66, 0x71, 0x94, 0xde, 0xdb, 0x01, 0xb1, 0x40, 0x38, - 0x78, 0x2e, 0x88, 0x23, 0x5c, 0x2f, 0x6f, 0xbd, 0x7d, 0x10, - 0xa8, 0xe1, 0x33, 0xcb, 0x8d, 0xf6, 0x04, 0x1e, 0x27, 0xb7, - 0xd1, 0x73, 0x4f, 0xad, 0x0d, 0xb1, 0x2d, 0x42, 0x84, 0xe8, - 0xcb, 0x9b, 0x7f, 0x98, 0x54, 0xea, 0x9f, 0xf0, 0x5b, 0x6f, - 0x81, 0x92, 0x96, 0x76, 0xc5, 0x0d, 0x38, 0x80, 0xcc, 0xf8, - 0x73, 0xfc, 0x8f, 0x82, 0x97, 0x72, 0x24, 0x98, 0xc7, 0xed, - 0x56, 0x8c, 0x35, 0x03, 0x93, 0xc6, 0xed, 0x63, 0x1d, 0x70, - 0xc0, 0x56, 0xb1, 0xfd, 0x3f, 0xf2, 0xfb, 0x44, 0x1c, 0x75, - 0x4c, 0x69, 0xe7, 0x9f, 0x64, 0x3e, 0xdd, 0x6e, 0x76, 0x30, - 0x78, 0xad, 0x9d, 0x35, 0xf7, 0xff, 0x35, 0xcf, 0x72, 0xf0, - 0xd3, 0x32, 0xc3, 0x8d, 0x6a, 0x94, 0x1a, 0x78, 0x4a, 0x75, - 0x36, 0x00, 0x26, 0x4b, 0x36, 0xef, 0xd8, 0xce, 0x65, 0x68, - 0x3e, 0x6a, 0x2f, 0x76, 0x67, 0xa4, 0x82, 0x98, 0x76, 0xd0, - 0x37, 0x3c, 0xdd, 0x04, 0x0e, 0x24, 0x0a, 0x9e, 0x25, 0xc2, - 0xcb, 0xbb, 0x64, 0x93, 0x07, 0xc3, 0xde, 0x00, 0xcb, 0x8c, - 0x73, 0xf2, 0x78, 0xe0, 0x6d, 0x9a, 0xc6, 0xbd, 0x3d, 0x6a, - 0x5f, 0xcd, 0x49, 0x6d, 0x4a, 0xa5, 0x0f, 0x3c, 0xa0, 0x1d, - 0x61, 0x8e, 0x79, 0x62, 0x77, 0x8a, 0xff, 0x82, 0x9c, 0x36, - 0x27, 0x3c, 0x05, 0xc4, 0x19, 0xba, 0x19, 0x5f, 0x6c, 0xbf, - 0x98, 0x70, 0xfc, 0xc3, 0x5e, 0xef, 0xbd, 0xdc, 0x46, 0x17, - 0xb1, 0x47, 0x7f, 0xf7, 0xb7, 0x28, 0xfc, 0xf4, 0x0c, 0x59, - 0x8a, 0x24, 0x20, 0xdf, 0xae, 0x9a, 0x58, 0xf4, 0x34, 0x20, - 0x49, 0xdc, 0xc4, 0xe4, 0x69, 0x49, 0xf9, 0x4d, 0xdf, 0x17, - 0xd3, 0xed, 0x17, 0xc3, 0xfe, 0x78, 0xff, 0xf5, 0x84, 0xed, - 0xf5, 0x81, 0xe2, 0x9b, 0x11, 0xfe, 0x61, 0x40, 0x8f, 0x9c, - 0x5c, 0x6f, 0x88, 0x74, 0x88, 0x98, 0xf6, 0xdb, 0x5d, 0x90, - 0xf5, 0x5b, 0x92, 0xdc, 0xc6, 0x02, 0x72, 0x2a, 0x75, 0x5f, - 0x87, 0x1c, 0x2e, 0x8e, 0x53, 0x1e, 0xe9, 0x89, 0xe8, 0xef, - 0xec, 0x65, 0x58, 0x04, 0x1e, 0x74, 0x7c, 0x2d, 0x21, 0xf9, - 0x48, 0x60, 0x08, 0x50, 0xed, 0x89, 0x03, 0xe3, 0xf8, 0xba, - 0x61, 0xfc, 0xd5, 0x55, 0xee, 0x28, 0xd2, 0x1e, 0xb2, 0xea, - 0x20, 0x5d, 0xea, 0x73, 0x40, 0x8f, 0x3a, 0xf1, 0xb7, 0xc2, - 0x52, 0xa1, 0x20, 0x34, 0x82, 0xed, 0x6a, 0x1a, 0xa3, 0xa9, - 0xa0, 0x87, 0xee, 0xfc, 0x73, 0x5b, 0xff, 0x8a, 0xe6, 0xe1, - 0x58, 0xa4, 0xe5, 0xef, 0x04, 0xf2, 0xfd, 0x5b, 0x98, 0x7d, - 0x5b, 0x45, 0xf7, 0xd6, 0x50, 0xd1, 0xde, 0xcf, 0x8f, 0x55, - 0x3f, 0x22, 0x53, 0x55, 0x40, 0xb2, 0x91, 0xa6, 0xf2, 0x15, - 0x1b, 0xe3, 0xcf, 0x2b, 0xfd, 0x4c, 0x04, 0x80, 0xde, 0x08, - 0x48, 0x2d, 0xc0, 0xb4, 0x78, 0x1c, 0x38, 0x8b, 0x6e, 0xc5, - 0x91, 0xb2, 0x85, 0x1a, 0x17, 0x3f, 0x65, 0x8b, 0x17, 0x78, - 0x48, 0xc7, 0xbe, 0x35, 0xd3, 0x0a, 0x6a, 0x86, 0xde, 0xe9, - 0x05, 0x6e, 0x5f, 0x61, 0xb0, 0x5d, 0xd6, 0xe6, 0x93, 0xc8, - 0x61, 0xc6, 0xae, 0x97, 0x37, 0x82, 0xec, 0x66, 0x22, 0xa7, - 0x2b, 0xdb, 0xd0, 0x84, 0x2e, 0x6d, 0xf4, 0x25, 0xf1, 0xc1, - 0x9b, 0x2e, 0x6f, 0x73, 0x32, 0x8e, 0xe7, 0xf9, 0xb2, 0x26, - 0xb4, 0xa3, 0x93, 0xc8, 0x28, 0x2a, 0x16, 0xf6, 0xee, 0x03, - 0x27, 0xbd, 0x73, 0xa3, 0x12, 0x22, 0xe5, 0xe5, 0xcc, 0x8f, - 0xf2, 0xd4, 0x45, 0x2f, 0x98, 0x55, 0xf6, 0x54, 0xfe, 0x36, - 0x47, 0xf5, 0x90, 0x68, 0x15, 0xcb, 0x8b, 0x42, 0x51, 0x22, - 0x19, 0xea, 0xfc, 0x24, 0x8d, 0x73, 0x95, 0x24, 0xef, 0xec, - 0xe3, 0xf1, 0xf9, 0x04, 0x2f, 0x0a, 0xd0, 0x31, 0x1d, 0xa8, - 0x87, 0xea, 0x43, 0x1a, 0xb4, 0x4e, 0x87, 0x78, 0xad, 0xe6, - 0xeb, 0xb4, 0xd5, 0xea, 0x46, 0x62, 0xa1, 0x53, 0x28, 0x95, - 0x42, 0xea, 0x9c, 0x77, 0xf0, 0x6a, 0x77, 0x7b, 0x38, 0x7a, - 0xb3, 0xbd, 0x33, 0x50, 0x5e, 0xbc, 0xd0, 0x4e, 0x2d, 0xa9, - 0xb6, 0xed, 0xc7, 0x31, 0xa8, 0x78, 0xb8, 0x46, 0x07, 0x9c, - 0x98, 0x25, 0xad, 0x5f, 0x6f, 0x39, 0x36, 0x3a, 0x86, 0x7d, - 0x3b, 0xcd, 0xfd, 0x9b, 0x99, 0x99, 0x6b, 0x71, 0x4f, 0x9b, - 0xd1, 0x59, 0x29, 0x0c, 0xb5, 0xb9, 0x91, 0xc6, 0x21, 0xfb, - 0x66, 0x5a, 0x91, 0x07, 0xc6, 0x43, 0x07, 0x2d, 0x33, 0xb1, - 0x89, 0xee, 0x7c, 0x8b, 0xb4, 0x0f, 0xd4, 0x64, 0x59, 0xc3, - 0xd1, 0xde, 0x9b, 0xa2, 0xe9, 0x9f, 0xc4, 0x19, 0xe7, 0x77, - 0x05, 0x5b, 0x6c, 0xb2, 0x9a, 0xa7, 0xbb, 0x55, 0x93, 0x61, - 0xbc, 0x8a, 0x5d, 0xdc, 0x82, 0x59, 0xdc, 0x86, 0xd5, 0x72, - 0x3e, 0x2b, 0x99, 0xac, 0xe4, 0x40, 0x97, 0x68, 0x7a, 0xe6, - 0x16, 0x0d, 0x3e, 0x9b, 0xbb, 0x3e, 0xe8, 0xfd, 0xf0, 0x62, - 0xcd, 0x21, 0x24, 0x57, 0xea, 0xcc, 0x1c, 0x22, 0x0f, 0x1d, - 0x0f, 0x77, 0x98, 0xf4, 0x8f, 0x3a, 0xe1, 0xbd, 0xfe, 0x75, - 0x4c, 0x6b, 0x83, 0x43, 0xae, 0x2f, 0xfb, 0xbc, 0x98, 0xe1, - 0xc5, 0x85, 0xa2, 0x87, 0x3a, 0x2d, 0x54, 0x5d, 0xf4, 0xf2, - 0xf9, 0x73, 0x22, 0xa2, 0x8e, 0xbe, 0xfc, 0x43, 0xb7, 0x1c, - 0x18, 0xee, 0x87, 0x49, 0xef, 0xfa, 0xa8, 0x83, 0x37, 0x19, - 0x2e, 0xf8, 0x54, 0x6c, 0xfe, 0x84, 0x15, 0x3f, 0x6d, 0x53, - 0xa8, 0xda, 0x66, 0x3f, 0xa5, 0xc2, 0xff, 0x69, 0xab, 0x73, - 0x8c, 0x85, 0x87, 0x3d, 0x5e, 0xe7, 0x98, 0x91, 0x8f, 0x75, - 0xf3, 0x54, 0x75, 0x36, 0xcb, 0x4b, 0xdd, 0x9a, 0x06, 0xcd, - 0x00, 0x95, 0x4e, 0x66, 0x31, 0x8a, 0x74, 0xde, 0xba, 0xb0, - 0xa8, 0x1e, 0x25, 0x1a, 0xda, 0x79, 0xfc, 0x69, 0xeb, 0x6d, - 0xe7, 0x58, 0xd5, 0x1c, 0xca, 0x70, 0x6a, 0x31, 0x3b, 0x0f, - 0xa7, 0x40, 0x3d, 0xf5, 0x8e, 0x3a, 0x9a, 0x09, 0x08, 0xcb, - 0x3a, 0x3e, 0xc3, 0x60, 0x6c, 0x7c, 0x1f, 0x1e, 0xda, 0x6a, - 0xb7, 0x07, 0x8f, 0x9d, 0x63, 0xc7, 0xe0, 0x22, 0x15, 0x1c, - 0xdc, 0xa3, 0xd3, 0x95, 0xf6, 0xf0, 0x3e, 0x99, 0xf6, 0xce, - 0xf1, 0xb9, 0x86, 0xa7, 0x7b, 0x94, 0xe3, 0x1b, 0x07, 0x73, - 0x81, 0xe2, 0xd6, 0x15, 0x0e, 0x50, 0x1e, 0x05, 0x23, 0x37, - 0x26, 0x55, 0x67, 0x43, 0x3a, 0xd5, 0xad, 0x5b, 0x23, 0x52, - 0x1d, 0x6c, 0x81, 0xf3, 0x7b, 0x04, 0xa4, 0xca, 0xdd, 0x78, - 0x30, 0xf0, 0x2d, 0x04, 0x84, 0x95, 0x35, 0x44, 0xaa, 0xfd, - 0x3a, 0x90, 0xb0, 0x87, 0x13, 0x13, 0x56, 0x38, 0x40, 0xcd, - 0x29, 0xd0, 0xba, 0x31, 0xa9, 0x3a, 0x1b, 0xd2, 0x17, 0xdd, - 0xba, 0x35, 0x22, 0xd5, 0xa1, 0x04, 0xe4, 0xdd, 0xf3, 0x08, - 0x01, 0xa9, 0x72, 0x07, 0x1e, 0x8e, 0x41, 0xdd, 0x0d, 0x87, - 0xaa, 0x6c, 0x34, 0x27, 0xaa, 0xad, 0x83, 0x2d, 0xd5, 0x94, - 0x5c, 0x7d, 0x9e, 0x5e, 0x1b, 0x51, 0x50, 0x55, 0x93, 0xf1, - 0xbf, 0xf8, 0x0d, 0xcf, 0xe8, 0x8a, 0xce, 0xc1, 0x4d, 0x2c, - 0xfd, 0xcd, 0x3e, 0x58, 0x8e, 0x41, 0xa1, 0xae, 0x09, 0x16, - 0x6c, 0xf0, 0xe2, 0x89, 0x72, 0x2b, 0x9b, 0x40, 0xef, 0x3f, - 0x5f, 0xbc, 0x79, 0xf5, 0x6a, 0xff, 0xad, 0xa6, 0x78, 0xd8, - 0x03, 0x4f, 0x44, 0x4e, 0x4a, 0xf9, 0x24, 0x32, 0x38, 0x95, - 0x82, 0xa0, 0xe1, 0x34, 0x2b, 0xdf, 0xd7, 0x1c, 0x91, 0xde, - 0x1f, 0xea, 0xd4, 0xbd, 0x5a, 0xb9, 0x2f, 0x40, 0x55, 0x95, - 0xba, 0xe2, 0x6c, 0x55, 0x57, 0xcd, 0x46, 0xc7, 0xbf, 0x9f, - 0x7d, 0x8c, 0x73, 0xa6, 0xa7, 0x3d, 0x10, 0x29, 0xb8, 0xcc, - 0x91, 0xaa, 0xa4, 0x33, 0x37, 0x62, 0x8d, 0x3e, 0xf0, 0x3c, - 0x9a, 0xc4, 0x36, 0x7b, 0x3a, 0x88, 0x53, 0x64, 0xa0, 0x69, - 0xaa, 0x1e, 0xe0, 0x69, 0x46, 0x5e, 0x04, 0x3c, 0xfb, 0x61, - 0x0f, 0x9e, 0x4d, 0xa9, 0xaf, 0xc6, 0x77, 0x9f, 0xe9, 0x4a, - 0x1c, 0x62, 0xee, 0xeb, 0xde, 0x3d, 0xd3, 0xbd, 0x4a, 0xe7, - 0x4a, 0xa2, 0x7b, 0x6c, 0x10, 0x09, 0x62, 0x0f, 0x6b, 0xda, - 0x50, 0xf8, 0x92, 0xb0, 0x05, 0x44, 0xe6, 0x49, 0x3b, 0x1a, - 0xbe, 0x79, 0xa2, 0xcb, 0x04, 0xac, 0x92, 0x72, 0x1b, 0x61, - 0x58, 0x47, 0x20, 0x1d, 0x8d, 0x10, 0xbd, 0xa3, 0x69, 0xe5, - 0xb6, 0x80, 0x1b, 0x0e, 0x5e, 0xe9, 0xa8, 0xf3, 0x01, 0x9b, - 0x76, 0x58, 0x2e, 0xf3, 0xa0, 0xfc, 0xd5, 0x33, 0x4c, 0x9b, - 0xe0, 0xe0, 0x01, 0xe5, 0xae, 0x9f, 0x95, 0x92, 0xac, 0x9c, - 0xe2, 0x3f, 0xae, 0x46, 0xc3, 0xa7, 0x9c, 0x61, 0xb5, 0x31, - 0x78, 0x04, 0xa9, 0xed, 0xf1, 0xe5, 0x1f, 0xec, 0x77, 0x91, - 0x66, 0x0b, 0xa7, 0xfb, 0x8f, 0x7c, 0x34, 0xec, 0xea, 0x16, - 0x6d, 0x66, 0xec, 0x63, 0xec, 0x8b, 0xc0, 0x41, 0xea, 0x16, - 0xe9, 0x9c, 0xce, 0x64, 0x42, 0x0d, 0xda, 0x50, 0x3a, 0x8d, - 0xc1, 0xfa, 0x96, 0x51, 0xa2, 0x06, 0x6d, 0x28, 0x2d, 0x1e, - 0x60, 0x41, 0x6b, 0x8d, 0x11, 0xbe, 0x03, 0xf9, 0xce, 0x68, - 0x7d, 0x8a, 0x17, 0xfb, 0xfc, 0x45, 0x54, 0x2f, 0xaf, 0x45, - 0xee, 0xcd, 0x6c, 0x82, 0x54, 0xaf, 0x24, 0xbf, 0xd7, 0x2f, - 0x1b, 0x12, 0xbd, 0x2f, 0x40, 0xa9, 0xc3, 0x5a, 0x70, 0x07, - 0xf3, 0xf3, 0xae, 0x89, 0xfb, 0xb2, 0xe1, 0x50, 0xab, 0x36, - 0x83, 0x79, 0x2f, 0x78, 0xd2, 0xfb, 0x28, 0x5d, 0xb2, 0x81, - 0xc4, 0x2b, 0x59, 0x00, 0xff, 0x95, 0x82, 0x1f, 0x82, 0x91, - 0xd4, 0x5b, 0x11, 0xa3, 0x0d, 0xc3, 0x89, 0x9a, 0xe5, 0x90, - 0xa2, 0x67, 0x99, 0xec, 0x58, 0x6c, 0x7f, 0xbb, 0xbc, 0x3c, - 0x77, 0xb0, 0x54, 0xcd, 0x9e, 0xca, 0x6a, 0x2e, 0xaf, 0x3e, - 0x3e, 0xad, 0xd9, 0x1c, 0x2f, 0xb5, 0x14, 0x62, 0xb7, 0x8e, - 0xa9, 0xe0, 0x44, 0xb1, 0x73, 0x7f, 0x19, 0x35, 0x6c, 0x72, - 0xee, 0xb7, 0x17, 0x49, 0xf3, 0xc1, 0x0e, 0x40, 0x97, 0x8d, - 0xbc, 0x74, 0x65, 0x08, 0x1a, 0x59, 0x21, 0x88, 0x52, 0x66, - 0x79, 0xf3, 0x3b, 0x0f, 0x6e, 0x44, 0xa6, 0x84, 0xd4, 0x90, - 0x3e, 0xb4, 0x57, 0xfb, 0x99, 0x14, 0x99, 0xa8, 0x25, 0x89, - 0x7d, 0xa3, 0x26, 0xf7, 0x1b, 0x07, 0x91, 0x42, 0xf4, 0xfa, - 0x4c, 0xe3, 0xa8, 0x33, 0xea, 0x30, 0xa2, 0x0a, 0x2e, 0x3a, - 0xbe, 0x2b, 0x92, 0x57, 0xeb, 0x50, 0x4e, 0xdd, 0xcd, 0xe8, - 0xac, 0xad, 0x23, 0x86, 0x94, 0x75, 0x64, 0x88, 0x4b, 0x7a, - 0x9d, 0x7c, 0xf8, 0xbe, 0x92, 0x14, 0xa0, 0x79, 0xa7, 0x54, - 0x4a, 0x8d, 0x89, 0x06, 0xf5, 0x51, 0x66, 0x9e, 0x08, 0x02, - 0x1e, 0x89, 0x78, 0x9e, 0x15, 0x2a, 0x65, 0x8f, 0x2d, 0x84, - 0x16, 0x4d, 0x51, 0xab, 0x7b, 0x2f, 0xa5, 0x11, 0x18, 0x4d, - 0x30, 0x66, 0x58, 0x84, 0x70, 0x4b, 0x1f, 0x0a, 0x85, 0x28, - 0x49, 0xbe, 0x3f, 0xad, 0xda, 0x64, 0xcf, 0x52, 0xa9, 0x0a, - 0xc9, 0x0f, 0x3c, 0x03, 0x92, 0x20, 0xa6, 0x71, 0x5a, 0x8f, - 0xe6, 0x0e, 0xb2, 0x1f, 0xda, 0x92, 0xa5, 0xeb, 0xdf, 0x6a, - 0x5d, 0xc1, 0x7c, 0x01, 0x4a, 0x12, 0x54, 0x5c, 0xa0, 0x15, - 0x71, 0xab, 0x21, 0xb7, 0xd8, 0x6a, 0xb4, 0x16, 0x26, 0x5d, - 0x43, 0xc0, 0x64, 0x79, 0x8d, 0x62, 0x1d, 0x56, 0x89, 0xa9, - 0x29, 0xd5, 0xdc, 0x3b, 0xbd, 0x82, 0x8f, 0x0b, 0xf7, 0x93, - 0x69, 0x03, 0x6e, 0xf7, 0xbb, 0xd5, 0x01, 0xb5, 0xe1, 0x0a, - 0x6a, 0x05, 0x08, 0x78, 0x9e, 0x0a, 0x97, 0x7b, 0xc1, 0xce, - 0xdf, 0x41, 0xcb, 0x97, 0x9b, 0xfd, 0xa7, 0xe6, 0x8a, 0xcd, - 0xb6, 0xfb, 0xea, 0x8a, 0xba, 0x2e, 0x93, 0xca, 0x0d, 0x4e, - 0x18, 0xb9, 0x19, 0x78, 0xb1, 0x16, 0x6b, 0x0e, 0x1a, 0x16, - 0x81, 0x4e, 0x97, 0x3a, 0x70, 0xfa, 0xd4, 0x5f, 0xf3, 0x59, - 0xef, 0x0f, 0x39, 0x91, 0x0e, 0x37, 0x08, 0x84, 0xba, 0x50, - 0x8d, 0xb5, 0x6d, 0xfc, 0xe9, 0xd9, 0xfb, 0xd3, 0x8b, 0x05, - 0x54, 0xfc, 0x99, 0x97, 0xb4, 0x21, 0x71, 0xbe, 0x88, 0x80, - 0x6c, 0xd5, 0xfd, 0xe3, 0xc9, 0xe9, 0x82, 0xfe, 0x50, 0xd3, - 0x86, 0xc0, 0xe5, 0x7c, 0x0c, 0xad, 0xd9, 0x47, 0x9e, 0x5d, - 0x2f, 0x20, 0x14, 0x42, 0x55, 0x1b, 0x4a, 0x7f, 0x87, 0x35, - 0xd7, 0x2d, 0xbf, 0x5f, 0x40, 0x65, 0x7a, 0xdb, 0x4a, 0xa0, - 0x9f, 0x2e, 0x17, 0xc9, 0x33, 0x5a, 0x94, 0x78, 0x59, 0xea, - 0x59, 0xd3, 0x89, 0xee, 0x38, 0x8d, 0xaf, 0x41, 0x8d, 0x9b, - 0x6a, 0x61, 0x74, 0xad, 0x92, 0x60, 0x3b, 0xe5, 0xfb, 0x3f, - 0x57, 0x57, 0x0b, 0x10, 0x29, 0xe2, 0x5d, 0xed, 0x1b, 0xda, - 0x88, 0xfa, 0xd3, 0xd5, 0xa2, 0xc9, 0xce, 0xa2, 0x3c, 0x59, - 0x4a, 0x69, 0xb5, 0x21, 0xda, 0xf6, 0x77, 0xda, 0xd8, 0x9c, - 0x68, 0x84, 0x5d, 0x6b, 0xed, 0xd8, 0xd5, 0xcd, 0x8f, 0x4b, - 0xa2, 0xae, 0xc0, 0xdc, 0x6a, 0x69, 0xb8, 0xdc, 0x48, 0x9b, - 0xb8, 0x96, 0x98, 0xa9, 0x73, 0x4d, 0xe8, 0x5a, 0x5b, 0xd1, - 0x69, 0x10, 0x0b, 0xf9, 0x5d, 0x20, 0xa2, 0x29, 0xe4, 0x8a, - 0x9d, 0x61, 0xbf, 0x60, 0x51, 0xde, 0xea, 0xee, 0x98, 0x3c, - 0xe7, 0x74, 0x32, 0xed, 0x6a, 0xda, 0x9f, 0xc8, 0xef, 0xe8, - 0x48, 0xe0, 0xa8, 0x59, 0xb2, 0xaa, 0xaa, 0x2f, 0x1b, 0xf1, - 0x85, 0x1b, 0x24, 0xf4, 0x00, 0xb8, 0xfb, 0xbb, 0x0b, 0xe1, - 0x82, 0xcc, 0x3c, 0x00, 0x85, 0xd4, 0x6d, 0xac, 0x8d, 0xe2, - 0x35, 0x81, 0x9a, 0x13, 0xb2, 0xd5, 0x60, 0x8b, 0xb3, 0xb4, - 0xf5, 0x01, 0x5f, 0xdc, 0xfa, 0x0e, 0xbc, 0x58, 0xda, 0x1e, - 0xed, 0x6f, 0xa2, 0x8b, 0x38, 0xd4, 0xfb, 0x4c, 0xdf, 0x0b, - 0xf5, 0xd0, 0x0d, 0x7b, 0xb8, 0x06, 0xee, 0x66, 0x60, 0x30, - 0x4f, 0xea, 0x24, 0xce, 0xe6, 0x4a, 0x91, 0xa2, 0x16, 0xfc, - 0xf6, 0x55, 0xec, 0xa3, 0x7b, 0x25, 0x8d, 0xff, 0x0e, 0xe3, - 0x04, 0x55, 0xf4, 0xf8, 0xf3, 0xbb, 0x77, 0x87, 0x3d, 0xfd, - 0xbc, 0xa2, 0xe5, 0x27, 0xab, 0xa1, 0x1a, 0x81, 0xc2, 0x51, - 0x1d, 0x50, 0xa5, 0x2b, 0x8e, 0xcc, 0x24, 0xa1, 0x15, 0x23, - 0x46, 0xcc, 0x57, 0x15, 0xd0, 0xb6, 0x17, 0x7d, 0xeb, 0xb2, - 0xee, 0x06, 0x30, 0x67, 0xa2, 0x57, 0x09, 0x85, 0x0b, 0xd3, - 0x3a, 0x65, 0x3e, 0xcb, 0x27, 0x12, 0x62, 0x67, 0x75, 0x0a, - 0xb1, 0x80, 0xee, 0xa3, 0xcd, 0xe2, 0x80, 0x32, 0xa0, 0xbb, - 0xbb, 0xbb, 0x1d, 0xeb, 0xff, 0x15, 0xa9, 0x5d, 0x23, 0x25, - 0x75, 0x06, 0xcd, 0x47, 0x41, 0xa6, 0x28, 0x5b, 0x05, 0xad, - 0x8a, 0x9e, 0x10, 0x76, 0x33, 0x42, 0x3f, 0x0a, 0x32, 0x84, - 0xf4, 0x2a, 0x60, 0x2c, 0x78, 0x42, 0xb8, 0xd5, 0x64, 0xe0, - 0x51, 0x50, 0x31, 0x7b, 0xa8, 0x62, 0xa5, 0x92, 0x47, 0x80, - 0x35, 0xc1, 0xb8, 0x62, 0x21, 0x0e, 0xcd, 0x2f, 0x47, 0xc6, - 0xac, 0xa1, 0x39, 0x52, 0xd0, 0xca, 0xf8, 0x9a, 0x5e, 0xc2, - 0x64, 0xa5, 0x8b, 0x1c, 0xc5, 0x86, 0xea, 0xa8, 0xad, 0xfc, - 0x04, 0x16, 0x13, 0x35, 0x93, 0x2f, 0x2b, 0x81, 0xd4, 0xc2, - 0x3a, 0x05, 0xaa, 0x5a, 0x59, 0x73, 0x16, 0x0d, 0x79, 0x18, - 0x2f, 0x51, 0x49, 0x4f, 0xca, 0xe7, 0x66, 0x1a, 0x80, 0xe3, - 0xb9, 0xb5, 0x07, 0xb3, 0xd2, 0x81, 0xd4, 0xf5, 0x03, 0x65, - 0x88, 0x50, 0xd9, 0xe5, 0xe5, 0xf9, 0xd9, 0xb3, 0x84, 0x5c, - 0xa4, 0x8e, 0xc4, 0x6b, 0x6a, 0x53, 0x16, 0xb7, 0x0f, 0x06, - 0x04, 0xf4, 0xd9, 0x83, 0x17, 0x72, 0x69, 0x86, 0x5c, 0x53, - 0xba, 0x7e, 0xc8, 0xbd, 0xfd, 0x9e, 0xa8, 0x87, 0x6e, 0xd8, - 0x4b, 0x43, 0x6e, 0x45, 0xdf, 0xa0, 0x0c, 0xc1, 0x13, 0xce, - 0xa2, 0x85, 0x63, 0xa9, 0x29, 0x75, 0xbe, 0xca, 0xdc, 0x5a, - 0x99, 0xcb, 0x50, 0x2c, 0xd4, 0xbf, 0x42, 0x58, 0xe6, 0xa4, - 0x81, 0x41, 0x62, 0x70, 0x83, 0xbb, 0x7c, 0x36, 0xd3, 0x9a, - 0x38, 0x3f, 0x3d, 0x57, 0x4e, 0x88, 0x00, 0x2e, 0x89, 0x7f, - 0x4d, 0x76, 0x76, 0x45, 0xfb, 0x69, 0xa7, 0xf1, 0x7c, 0x05, - 0xfb, 0x73, 0x82, 0x75, 0x79, 0xa4, 0xfc, 0x6b, 0xdd, 0x19, - 0xa9, 0x37, 0xb0, 0xe8, 0x30, 0x8b, 0xbe, 0x7d, 0x70, 0xd4, - 0x99, 0x8a, 0xfc, 0xea, 0xff, 0x4e, 0x63, 0x5f, 0xe0, 0x61, - 0x16, 0x73, 0x67, 0x1d, 0x6d, 0x40, 0x31, 0x0f, 0x68, 0xb8, - 0xd7, 0x4e, 0x0a, 0x0a, 0xf2, 0x28, 0xe0, 0x94, 0x97, 0x84, - 0xe9, 0x2d, 0xf6, 0x35, 0xf6, 0x77, 0xd7, 0xd7, 0x18, 0x58, - 0x36, 0x04, 0xb1, 0x73, 0x49, 0x63, 0x29, 0x8c, 0xb5, 0xa8, - 0xa1, 0xe6, 0xb6, 0xe2, 0xb4, 0xc8, 0x10, 0x15, 0x8f, 0xae, - 0xaa, 0x58, 0x99, 0x15, 0x4e, 0x26, 0x2d, 0xb3, 0xc2, 0x4b, - 0x14, 0x4e, 0xc3, 0xd9, 0xeb, 0x9f, 0x67, 0xb4, 0xf7, 0xd5, - 0x92, 0xd2, 0x49, 0x1e, 0x87, 0xd2, 0x7b, 0x60, 0x8e, 0xd9, - 0xb4, 0x65, 0xb7, 0x8c, 0xbb, 0xb9, 0xda, 0xc4, 0x7a, 0x4c, - 0xcc, 0x38, 0x0d, 0xf0, 0xe6, 0x24, 0x3b, 0xbf, 0x68, 0x6b, - 0x92, 0xcb, 0x6d, 0x50, 0x03, 0x6b, 0xa4, 0x9b, 0x56, 0x79, - 0xab, 0x14, 0x63, 0xb5, 0x25, 0x5c, 0xc4, 0x69, 0xfe, 0xa4, - 0x98, 0xd5, 0xf7, 0x66, 0x5c, 0xa8, 0x55, 0x4d, 0x1d, 0xf7, - 0x5d, 0x7b, 0x57, 0xec, 0x4a, 0x85, 0xea, 0x2b, 0xfc, 0x62, - 0x00, 0x6b, 0x9d, 0x92, 0x66, 0x22, 0x07, 0x03, 0xfa, 0x80, - 0xf6, 0xa6, 0x0f, 0x43, 0x2f, 0x45, 0x5e, 0xee, 0xd9, 0x42, - 0x4a, 0x9e, 0xd9, 0xf6, 0xa5, 0x1a, 0x65, 0x85, 0x1b, 0x6c, - 0x7f, 0xcc, 0x53, 0x9e, 0xa5, 0x2f, 0xda, 0xc0, 0x2d, 0x76, - 0x3c, 0x2e, 0xd2, 0x38, 0x8f, 0x3d, 0xdc, 0x44, 0xa7, 0x2d, - 0x8f, 0x9a, 0x06, 0x27, 0x50, 0xbb, 0x78, 0xd7, 0xc3, 0xe9, - 0x22, 0xce, 0x78, 0xce, 0x59, 0x52, 0x50, 0x5d, 0xe1, 0x22, - 0xb0, 0x21, 0xe5, 0xb3, 0xd0, 0x0b, 0xa1, 0xac, 0x72, 0x0f, - 0x11, 0xb9, 0xf8, 0x56, 0x56, 0xad, 0xf6, 0xbe, 0x9e, 0xda, - 0xa6, 0x0d, 0xe0, 0x5f, 0xf4, 0xde, 0xdc, 0x5a, 0xe6, 0x5c, - 0x95, 0x94, 0x22, 0xf1, 0x78, 0x6b, 0x36, 0x90, 0xce, 0x0b, - 0x3b, 0xb6, 0x4b, 0x9e, 0xc8, 0x82, 0x35, 0xd8, 0x27, 0x30, - 0x64, 0x03, 0xee, 0xc2, 0x32, 0xe1, 0x6a, 0x59, 0xc3, 0x78, - 0xd7, 0x01, 0xba, 0xf6, 0x56, 0xd6, 0x0a, 0x98, 0x48, 0xaf, - 0x0e, 0x93, 0xca, 0xd6, 0xf0, 0x7e, 0xcf, 0x96, 0x86, 0x16, - 0x72, 0x2b, 0x33, 0x67, 0xbb, 0x68, 0xfd, 0xb4, 0x39, 0xf9, - 0x1e, 0x50, 0x87, 0x0e, 0xac, 0xed, 0x73, 0x65, 0xeb, 0x64, - 0xb5, 0x5b, 0xb5, 0xc6, 0x91, 0x6d, 0x78, 0x89, 0x49, 0x7c, - 0x36, 0x96, 0x5a, 0xf0, 0xe8, 0x51, 0x26, 0x7c, 0x8e, 0xe7, - 0x4c, 0x37, 0xf8, 0x4e, 0x62, 0x98, 0x6d, 0xad, 0x96, 0x99, - 0xbe, 0xea, 0xef, 0x12, 0x51, 0x28, 0xa3, 0xa3, 0xce, 0xa0, - 0xdf, 0xaf, 0x99, 0xb4, 0xa6, 0xdf, 0x30, 0xec, 0xa2, 0x5c, - 0x07, 0x8f, 0x8b, 0x38, 0x08, 0x64, 0x34, 0x65, 0xd2, 0x00, - 0x92, 0x11, 0x0b, 0xf1, 0xc3, 0x47, 0xfa, 0x85, 0xc7, 0x01, - 0xbe, 0xf4, 0xa1, 0xbf, 0x9f, 0x94, 0x40, 0x5b, 0xf5, 0xe5, - 0xa4, 0xf0, 0xdf, 0x39, 0x7d, 0x8c, 0x2a, 0x02, 0x9f, 0x88, - 0x37, 0x53, 0xf1, 0x93, 0x3d, 0xea, 0x6d, 0x1b, 0x28, 0x0d, - 0x91, 0x1e, 0x5d, 0x53, 0xd5, 0xe7, 0x10, 0x6b, 0x28, 0xfc, - 0x7c, 0x1c, 0xc8, 0x6c, 0xc6, 0x4a, 0xf1, 0x3c, 0x85, 0x74, - 0x86, 0x35, 0x45, 0x52, 0x4c, 0x1a, 0xba, 0x64, 0x8a, 0xb5, - 0x64, 0xce, 0x27, 0xcc, 0xc0, 0x81, 0x11, 0xaa, 0xcc, 0x1e, - 0x3f, 0x48, 0x15, 0xc5, 0x39, 0xd3, 0xef, 0x70, 0x6c, 0x33, - 0x99, 0xe3, 0xab, 0xa1, 0x32, 0xd2, 0x5f, 0x94, 0x4a, 0x74, - 0x87, 0x42, 0x9a, 0xf1, 0x84, 0x3e, 0xfa, 0xa5, 0x02, 0x32, - 0xca, 0x36, 0x13, 0x20, 0x36, 0xbf, 0x22, 0xe0, 0xad, 0x6d, - 0x16, 0x43, 0xe7, 0xf4, 0x56, 0x66, 0xa2, 0x4e, 0x10, 0x17, - 0x66, 0xf8, 0x5d, 0x20, 0x7c, 0x69, 0xc3, 0x10, 0xc7, 0x72, - 0x4d, 0x10, 0x65, 0x5e, 0xfe, 0x66, 0xb7, 0xdc, 0xc0, 0x43, - 0xb0, 0xfe, 0xce, 0x03, 0x24, 0x5f, 0x0c, 0x75, 0xb5, 0xd8, - 0xab, 0x07, 0xcd, 0x46, 0x8c, 0x80, 0xf2, 0x73, 0xa4, 0xbe, - 0x01, 0x57, 0x97, 0x70, 0xa5, 0xca, 0xe8, 0x9f, 0xe6, 0x6b, - 0x24, 0x34, 0x31, 0xe0, 0x19, 0x7e, 0x19, 0xcd, 0x8c, 0x7e, - 0x53, 0xc9, 0xc4, 0x47, 0x09, 0x5e, 0xd4, 0x64, 0x8c, 0x1f, - 0x08, 0x04, 0x93, 0x96, 0xfe, 0x9c, 0x3e, 0xca, 0x45, 0xaa, - 0xc8, 0x3d, 0xa2, 0x88, 0x5f, 0xb1, 0x8a, 0x7c, 0x96, 0x97, - 0x47, 0xc7, 0x20, 0xff, 0x28, 0x8b, 0xd3, 0xad, 0x55, 0x92, - 0x31, 0xd7, 0x69, 0x40, 0x7f, 0x80, 0x9f, 0xba, 0x00, 0x67, - 0x9d, 0x8e, 0x01, 0x0c, 0xc2, 0x86, 0xcc, 0x22, 0x08, 0x06, - 0xc5, 0xdc, 0x3c, 0x87, 0xbe, 0x02, 0x6d, 0x60, 0x78, 0x26, - 0xc0, 0xc7, 0x38, 0x24, 0x5a, 0x56, 0x69, 0x89, 0x42, 0x81, - 0x0c, 0xe7, 0xa1, 0x02, 0xb8, 0x59, 0xaa, 0xdc, 0x96, 0x7a, - 0xdb, 0xe7, 0x3e, 0x03, 0x71, 0x80, 0xa6, 0xc8, 0xf2, 0xe3, - 0x73, 0xf6, 0x08, 0xd0, 0x76, 0xd5, 0x5c, 0x3c, 0x44, 0xae, - 0x6b, 0x28, 0xdc, 0x7f, 0x0b, 0x91, 0x80, 0x6d, 0xe0, 0x97, - 0xc6, 0x14, 0xd2, 0x67, 0xf1, 0x83, 0xd7, 0xc0, 0xe5, 0x04, - 0x99, 0xd0, 0x14, 0xd6, 0xa4, 0x57, 0xab, 0xd4, 0xf2, 0x3b, - 0x99, 0x80, 0x5e, 0xe9, 0x37, 0xa5, 0x10, 0x98, 0xfa, 0x90, - 0x61, 0xe1, 0xea, 0x6e, 0x25, 0xd8, 0xf3, 0x58, 0xa8, 0x2f, - 0xee, 0xf9, 0xa8, 0xb0, 0x68, 0xbb, 0xda, 0x33, 0xb0, 0x3c, - 0xe5, 0x93, 0x89, 0xf4, 0x3a, 0x8f, 0xba, 0x97, 0x68, 0x07, - 0xa1, 0xa5, 0x31, 0x68, 0xf0, 0xf0, 0x18, 0x34, 0x91, 0x22, - 0xf0, 0x61, 0x5d, 0xe1, 0xa0, 0x3a, 0x2c, 0xfa, 0x57, 0xdf, - 0xbd, 0x2f, 0x98, 0x99, 0x3b, 0xec, 0xbb, 0x22, 0x7c, 0x5b, - 0x65, 0x5c, 0xac, 0xa6, 0x03, 0x31, 0x15, 0x91, 0x6f, 0xbc, - 0xca, 0x61, 0x4f, 0xff, 0x2e, 0xaa, 0xf1, 0x2d, 0xfe, 0xe3, - 0x76, 0xde, 0xe4, 0x37, 0x41, 0xe7, 0xb0, 0x45, 0x9e, 0x02, - 0xe2, 0xfe, 0x3b, 0xe2, 0xb9, 0x58, 0xe4, 0x43, 0x52, 0xd3, - 0xe1, 0xd8, 0x74, 0x85, 0xec, 0x5c, 0x71, 0x7c, 0x08, 0xff, - 0x8b, 0x00, 0x68, 0x5c, 0x51, 0xc6, 0xd7, 0x12, 0x00, 0x78, - 0xe1, 0x04, 0x3b, 0x61, 0x9a, 0x58, 0x7c, 0x24, 0xb0, 0xdf, - 0x83, 0x59, 0xb8, 0x28, 0x8a, 0x1f, 0x83, 0xe8, 0x52, 0x24, - 0x3c, 0xa5, 0x2b, 0xe3, 0x8b, 0x00, 0xbd, 0x07, 0xf3, 0x0c, - 0xe8, 0x03, 0x87, 0xd2, 0xcb, 0x60, 0xda, 0x52, 0x09, 0xcb, - 0xa6, 0x4c, 0x77, 0x23, 0x53, 0xbe, 0x4d, 0xf1, 0xfd, 0x24, - 0xb4, 0xe2, 0x14, 0xd0, 0x41, 0x80, 0xd7, 0x4d, 0x71, 0x9b, - 0x80, 0x62, 0xb7, 0x5e, 0x4a, 0xce, 0x38, 0xbd, 0x30, 0x08, - 0x0a, 0xaf, 0x3e, 0xc4, 0xc8, 0x19, 0x2c, 0x85, 0x72, 0x7c, - 0xff, 0xa1, 0x4a, 0x53, 0xb3, 0x7a, 0xcc, 0xb0, 0x4e, 0x82, - 0x00, 0x2f, 0xf9, 0x64, 0xcd, 0x61, 0x1d, 0x43, 0x15, 0x79, - 0x9b, 0xc7, 0x31, 0xb8, 0xe0, 0xf9, 0xec, 0x24, 0xfb, 0x2d, - 0x8e, 0x1d, 0x53, 0x79, 0x8c, 0x95, 0x38, 0x73, 0x29, 0x54, - 0x3f, 0x8a, 0xcb, 0x97, 0xc4, 0xf6, 0x35, 0x16, 0x87, 0x2f, - 0x89, 0x72, 0x28, 0x8f, 0x21, 0x7e, 0x26, 0xf9, 0xd4, 0x41, - 0x1a, 0x8b, 0x6b, 0x74, 0x0f, 0x7b, 0xc6, 0xc4, 0x2b, 0xfe, - 0x67, 0x1d, 0x3f, 0x30, 0x68, 0xe9, 0x08, 0x5e, 0xad, 0xf4, - 0x03, 0xef, 0xf4, 0xed, 0xb5, 0x87, 0xba, 0x01, 0x94, 0xdb, - 0xe7, 0x79, 0x7e, 0x76, 0x79, 0xe2, 0xe5, 0xf4, 0x79, 0xd0, - 0x9a, 0x04, 0x10, 0xaa, 0x56, 0xfd, 0x2b, 0x93, 0x33, 0xa0, - 0x96, 0x9f, 0x5d, 0x0e, 0x5e, 0xeb, 0xd0, 0xc4, 0x36, 0xe9, - 0x53, 0x1d, 0x6c, 0x0f, 0x23, 0xc5, 0x16, 0x88, 0x0c, 0xab, - 0x1e, 0x3c, 0x15, 0x1a, 0xd0, 0x55, 0x0b, 0x40, 0xe7, 0xb5, - 0x08, 0xf1, 0x3b, 0xa5, 0x6a, 0xa9, 0xf0, 0x04, 0x74, 0xf4, - 0xd9, 0x8d, 0xe4, 0x2a, 0x9d, 0xe6, 0xce, 0xb8, 0x93, 0xaa, - 0x2f, 0x72, 0xfa, 0x3a, 0x2e, 0x43, 0xb4, 0x9c, 0xc6, 0x22, - 0x33, 0xdf, 0x43, 0x35, 0x69, 0x91, 0x79, 0x07, 0x73, 0xe7, - 0xc7, 0x1f, 0x4e, 0xf9, 0x9c, 0xe2, 0xd4, 0x01, 0x23, 0xc6, - 0x40, 0x4d, 0xed, 0x64, 0xd0, 0xb7, 0x54, 0x11, 0x2c, 0x58, - 0xab, 0x8f, 0x69, 0x26, 0xfe, 0xd6, 0x2f, 0x6c, 0x42, 0x78, - 0x0f, 0xc1, 0x15, 0xf0, 0x3c, 0x4e, 0xef, 0x91, 0x34, 0x08, - 0x0c, 0x63, 0x3a, 0x7d, 0x72, 0x96, 0xb2, 0x50, 0x85, 0x59, - 0x66, 0x25, 0x6c, 0xfc, 0x04, 0xab, 0x8c, 0xca, 0x1c, 0x95, - 0xe2, 0xd5, 0x0e, 0x84, 0xab, 0x66, 0xce, 0x8c, 0x5f, 0x55, - 0x55, 0xce, 0x84, 0x3e, 0x70, 0xac, 0x53, 0x68, 0xa0, 0x14, - 0x87, 0x21, 0x68, 0x83, 0x26, 0x66, 0x63, 0xed, 0x1c, 0x6b, - 0x8e, 0x24, 0x93, 0x76, 0x19, 0xc0, 0xa8, 0xb2, 0x9e, 0xdc, - 0xad, 0xed, 0xd1, 0xe3, 0xfb, 0xf5, 0x45, 0x8e, 0xe0, 0x9c, - 0x4a, 0x62, 0x58, 0xcf, 0x10, 0xaa, 0x75, 0xbd, 0xe3, 0x10, - 0xef, 0x6f, 0xaf, 0x54, 0x99, 0x55, 0x59, 0x4a, 0x9f, 0xa0, - 0xea, 0x6c, 0xc5, 0x02, 0x3d, 0xaa, 0x81, 0xc6, 0x6f, 0xad, - 0x39, 0xb1, 0x5e, 0xe8, 0xe9, 0x5e, 0x00, 0xb7, 0xac, 0xd6, - 0x2a, 0x48, 0xd7, 0x83, 0x0b, 0x25, 0x31, 0x9a, 0xa6, 0x0d, - 0x05, 0x57, 0x09, 0xb5, 0x06, 0xad, 0x3d, 0xc9, 0x43, 0xb7, - 0x11, 0x8f, 0x1d, 0x17, 0x97, 0x6b, 0x99, 0x0e, 0x8c, 0xe7, - 0xf7, 0xa7, 0xbc, 0xba, 0xac, 0x9d, 0xd2, 0xf7, 0xdc, 0xb6, - 0x55, 0x57, 0xaf, 0xcf, 0x44, 0x8e, 0xc7, 0x17, 0xc5, 0xce, - 0xad, 0xc7, 0xcb, 0x89, 0x51, 0x75, 0xca, 0xb0, 0x1f, 0xb0, - 0x5f, 0xbb, 0x64, 0x9f, 0x56, 0xfa, 0xec, 0xa8, 0x13, 0xc6, - 0x60, 0xd1, 0xe5, 0x65, 0xda, 0xf2, 0x66, 0x35, 0x96, 0x17, - 0x42, 0xaf, 0xdf, 0x75, 0xa9, 0x4a, 0x7e, 0xb0, 0xf2, 0xc2, - 0x7e, 0x19, 0x43, 0xda, 0xa5, 0x8d, 0xaf, 0xc8, 0x16, 0x9b, - 0x9c, 0xde, 0x21, 0x99, 0x4b, 0x91, 0x97, 0x67, 0x18, 0x3a, - 0x5c, 0x7c, 0xc2, 0x84, 0xa9, 0x72, 0xc1, 0xba, 0x12, 0x47, - 0x96, 0x99, 0x20, 0xd9, 0xdb, 0x5e, 0x7f, 0xa9, 0x6f, 0xd8, - 0x2f, 0xcc, 0xec, 0x06, 0x6f, 0xc2, 0x85, 0xf1, 0x0d, 0xf1, - 0x32, 0xc6, 0x55, 0x2b, 0xd4, 0x33, 0xf7, 0x89, 0x18, 0xe0, - 0xfa, 0x1e, 0xaa, 0x44, 0x48, 0x5b, 0x1f, 0xe0, 0x39, 0x69, - 0x29, 0xe5, 0x95, 0x50, 0x21, 0x83, 0xff, 0x58, 0xd4, 0xd7, - 0xcc, 0xca, 0xec, 0x47, 0x51, 0xf3, 0x33, 0xcc, 0xe7, 0xca, - 0xbb, 0x12, 0xcb, 0x86, 0x84, 0xae, 0x63, 0xb8, 0x5b, 0xf1, - 0x25, 0xc5, 0x0d, 0xc0, 0xe5, 0x43, 0x9b, 0x35, 0x07, 0x36, - 0xab, 0x0e, 0xeb, 0x7d, 0x3c, 0x37, 0x9e, 0x61, 0xe2, 0x1a, - 0x4c, 0x51, 0xbf, 0x76, 0xe4, 0x24, 0x6e, 0x7e, 0xbf, 0x1e, - 0x29, 0x21, 0x93, 0x9c, 0x43, 0xe4, 0xb9, 0x67, 0x0f, 0x24, - 0x38, 0x68, 0x12, 0xfc, 0x18, 0x3f, 0x86, 0xe0, 0xb0, 0x49, - 0xf0, 0x0a, 0x92, 0xfa, 0x47, 0x50, 0x1c, 0x35, 0x29, 0xfe, - 0x21, 0xfc, 0xe8, 0x51, 0x34, 0x77, 0x1d, 0x28, 0x67, 0xf3, - 0xf4, 0x31, 0x24, 0xf7, 0x9a, 0x24, 0xdf, 0xa5, 0xf2, 0x11, - 0x04, 0xf7, 0x1d, 0x73, 0x8d, 0x9b, 0x05, 0x4d, 0x92, 0xa5, - 0x47, 0x6b, 0x06, 0x9b, 0xf5, 0x9c, 0xcb, 0xeb, 0x15, 0xbe, - 0x65, 0x58, 0xf7, 0x2d, 0xa7, 0x33, 0x58, 0xbf, 0x78, 0x10, - 0x1f, 0x64, 0x96, 0xe3, 0x51, 0xae, 0x2e, 0xde, 0x68, 0xe7, - 0x5a, 0xfa, 0x3b, 0x7b, 0x64, 0x8f, 0x7b, 0x3b, 0x7d, 0xcb, - 0x0c, 0x87, 0x00, 0x4a, 0x24, 0x47, 0x3b, 0x83, 0xa5, 0xc6, - 0x18, 0xc4, 0xb7, 0xa7, 0x15, 0x53, 0x54, 0x05, 0x66, 0x17, - 0x87, 0xdf, 0xed, 0xe0, 0x67, 0xb7, 0x52, 0x5a, 0x90, 0x01, - 0x42, 0xfc, 0x28, 0x3a, 0xae, 0xcb, 0x42, 0xc1, 0xd1, 0x10, - 0xf1, 0x95, 0x5d, 0x56, 0x17, 0xe3, 0x33, 0xa2, 0x9d, 0x81, - 0x78, 0xab, 0x70, 0x75, 0x49, 0x4b, 0xbc, 0xea, 0x2b, 0x68, - 0x6b, 0xe2, 0x25, 0xb4, 0x90, 0x25, 0x59, 0x68, 0x47, 0x0a, - 0xed, 0x72, 0xb0, 0x97, 0x39, 0x4f, 0xf3, 0xcf, 0xd1, 0x45, - 0x7c, 0x5b, 0x1e, 0xc1, 0x38, 0x2a, 0xcc, 0xf9, 0x29, 0x16, - 0xea, 0x18, 0xcc, 0x5e, 0x32, 0xc8, 0x79, 0x13, 0xac, 0x67, - 0xe4, 0xf0, 0x54, 0xe5, 0xcb, 0x07, 0x21, 0xdf, 0xc7, 0x2f, - 0x26, 0x59, 0xd8, 0xf7, 0xda, 0x60, 0x8f, 0xe2, 0xcf, 0x93, - 0x8f, 0x32, 0x3a, 0x8d, 0xe7, 0x51, 0x5e, 0xc1, 0x5e, 0xad, - 0x68, 0x86, 0x21, 0xbd, 0xed, 0xe7, 0x61, 0x3d, 0xbe, 0xc2, - 0x23, 0x72, 0x0f, 0x52, 0x6b, 0x7f, 0x9e, 0xe2, 0xd2, 0xa1, - 0x16, 0x92, 0x64, 0xb4, 0xa3, 0x1b, 0x3e, 0x64, 0x5c, 0xc3, - 0x75, 0xc7, 0x04, 0xcd, 0x21, 0xcc, 0xfc, 0x26, 0xca, 0xb5, - 0x7d, 0xa3, 0xd8, 0x56, 0xa3, 0xa8, 0x18, 0x94, 0x17, 0x47, - 0x99, 0xf0, 0xe6, 0xb8, 0xc4, 0xb2, 0x87, 0x40, 0xdf, 0x11, - 0xcb, 0x29, 0x57, 0xa5, 0x2d, 0xe3, 0xe6, 0xd8, 0xc1, 0xa2, - 0x7d, 0x1c, 0x28, 0x69, 0x25, 0x76, 0xdc, 0xa9, 0xf4, 0xb1, - 0x46, 0xed, 0xf6, 0x3a, 0xbd, 0x07, 0x26, 0x37, 0xbb, 0xeb, - 0xfa, 0x9f, 0x93, 0x2c, 0x13, 0xe1, 0x38, 0xb8, 0xef, 0xb9, - 0xf2, 0x9b, 0xaa, 0x17, 0x62, 0x8e, 0x3b, 0x49, 0x4a, 0x6b, - 0x4f, 0xb2, 0x90, 0xba, 0x5b, 0x57, 0x65, 0xaa, 0x37, 0x18, - 0x37, 0x5c, 0x17, 0x48, 0xdb, 0xa5, 0xaf, 0x06, 0x60, 0x91, - 0xc0, 0x96, 0x05, 0xd6, 0xfd, 0x03, 0x6d, 0x3d, 0x90, 0x01, - 0x71, 0x5d, 0x5d, 0xac, 0x26, 0x3a, 0xc7, 0x0f, 0x67, 0x4e, - 0xd6, 0xa7, 0x33, 0x14, 0xcd, 0xbe, 0x9a, 0xaf, 0x28, 0xf3, - 0x84, 0xc5, 0xeb, 0x9c, 0x07, 0x15, 0x0d, 0x01, 0xe5, 0xa9, - 0x65, 0xd5, 0x1b, 0x66, 0xd2, 0x17, 0x4e, 0xb9, 0xc9, 0xb0, - 0xcb, 0x24, 0x5b, 0x37, 0x75, 0xa5, 0xd8, 0x43, 0x2b, 0x9f, - 0xbe, 0x6a, 0x6c, 0x84, 0x5b, 0xaf, 0x2b, 0x62, 0xe7, 0xaa, - 0x92, 0x8c, 0xde, 0xe0, 0x7d, 0x31, 0xeb, 0x1d, 0x38, 0xf5, - 0x65, 0xcd, 0xce, 0xb1, 0x23, 0x13, 0xbf, 0xba, 0x24, 0x7a, - 0x4f, 0xfa, 0x66, 0xdb, 0x86, 0xe3, 0x05, 0x22, 0x2b, 0x02, - 0xbb, 0xef, 0x81, 0x19, 0x5d, 0x5c, 0x88, 0x6e, 0xe1, 0x42, - 0xa1, 0x7a, 0xbf, 0xd9, 0x7f, 0x90, 0x3a, 0xd0, 0xbb, 0x81, - 0xc4, 0x4b, 0xad, 0x9f, 0x5c, 0x8b, 0x29, 0xfc, 0xe1, 0x38, - 0x93, 0xb0, 0x34, 0xc0, 0xbe, 0xc2, 0xbb, 0xe8, 0x96, 0x9f, - 0x7e, 0x1f, 0xe6, 0xf4, 0x5d, 0xf3, 0x76, 0xf1, 0xa9, 0x08, - 0x32, 0x89, 0xaf, 0xa2, 0x2e, 0xb8, 0x44, 0xfc, 0x8e, 0xcf, - 0x20, 0xfc, 0xc1, 0x24, 0xe7, 0xeb, 0x5e, 0x25, 0x2e, 0x1e, - 0x5d, 0x33, 0x52, 0x5b, 0x4e, 0xe3, 0xb7, 0x9d, 0xd5, 0xa6, - 0xc0, 0x3c, 0x9b, 0x7d, 0x06, 0x25, 0xba, 0xe0, 0x38, 0x43, - 0x30, 0xbb, 0x67, 0x54, 0x57, 0x08, 0xd1, 0xfa, 0x0c, 0xb4, - 0xa5, 0xab, 0x17, 0xba, 0x97, 0xf3, 0x85, 0x5a, 0x98, 0xd2, - 0x0b, 0x9b, 0x6a, 0x8b, 0x97, 0xb5, 0xd5, 0x54, 0xe9, 0x49, - 0xca, 0xf2, 0xae, 0x41, 0xe5, 0x9a, 0x4b, 0x58, 0xd9, 0x61, - 0x9b, 0xc3, 0x9e, 0x2a, 0x5b, 0x72, 0x40, 0x64, 0x51, 0xa5, - 0x83, 0x96, 0xee, 0xaa, 0xc1, 0x56, 0xb9, 0x50, 0x9f, 0x16, - 0x6c, 0xf2, 0xd9, 0xf1, 0xc9, 0xc5, 0x39, 0xbb, 0x8a, 0xaf, - 0x45, 0xf4, 0xe0, 0x6b, 0x1f, 0xc3, 0xea, 0x26, 0x4e, 0xbf, - 0x53, 0x17, 0x25, 0xb0, 0x20, 0x0e, 0x26, 0xf8, 0xb9, 0xaa, - 0xd6, 0xbc, 0xa7, 0xf2, 0xcc, 0x88, 0x91, 0xc7, 0x22, 0xc8, - 0x65, 0xdd, 0x3a, 0xb7, 0x6c, 0xc1, 0x42, 0x9f, 0x0f, 0xee, - 0xff, 0x13, 0xf7, 0x6c, 0xdb, 0x89, 0xe3, 0xca, 0x3e, 0xcf, - 0x5f, 0x78, 0xf5, 0xc3, 0xd9, 0x7b, 0xd6, 0xe4, 0x46, 0x2e, - 0xdd, 0x9d, 0xde, 0x33, 0x59, 0x8b, 0x00, 0x09, 0x24, 0xdc, - 0x06, 0x9b, 0x64, 0xf7, 0xbc, 0xb0, 0x04, 0x28, 0x58, 0xc1, - 0x48, 0xb4, 0x6c, 0x93, 0x26, 0xe7, 0xe7, 0x4f, 0x95, 0x64, - 0x1b, 0xb0, 0x2d, 0x62, 0x67, 0x32, 0xeb, 0x3c, 0x74, 0x3a, - 0x71, 0xa9, 0x54, 0xa5, 0x52, 0xa9, 0x2e, 0xba, 0xaa, 0xea, - 0x73, 0x58, 0xd5, 0xdf, 0xf7, 0xb1, 0x99, 0x7b, 0x82, 0x19, - 0x15, 0x2b, 0x67, 0xbc, 0xd1, 0x05, 0x61, 0x5e, 0xb9, 0xc1, - 0xd6, 0x58, 0xa8, 0xcd, 0xa4, 0xf9, 0x23, 0xad, 0x91, 0xd4, - 0xf7, 0x8e, 0x61, 0xa6, 0x98, 0xf9, 0xe0, 0x31, 0xb6, 0xb7, - 0x81, 0xef, 0x1e, 0x60, 0xa8, 0x2f, 0x1f, 0xdf, 0xf5, 0x4a, - 0x78, 0xdb, 0x5b, 0xac, 0x76, 0xbe, 0xfd, 0xb3, 0x5b, 0xac, - 0x4a, 0x72, 0xb9, 0xb5, 0xc7, 0x6a, 0xfb, 0x53, 0x71, 0x1e, - 0x9b, 0xc2, 0x0f, 0xfe, 0x21, 0x09, 0x62, 0xd5, 0x69, 0xe6, - 0xd4, 0xb7, 0x8f, 0xde, 0xa2, 0x6b, 0x9c, 0x13, 0x3f, 0x4d, - 0x09, 0x6b, 0x6b, 0x73, 0xdf, 0xce, 0xb7, 0x32, 0x5b, 0xd2, - 0x26, 0x6c, 0x89, 0xfb, 0x9d, 0xff, 0x21, 0x99, 0x25, 0xf5, - 0xa7, 0xf9, 0xdc, 0x00, 0xfe, 0xdf, 0x2d, 0xa3, 0xe2, 0x27, - 0x6d, 0x16, 0xb7, 0x3e, 0xee, 0x65, 0x30, 0xdf, 0x1c, 0x16, - 0x98, 0x6e, 0xa6, 0x10, 0xfb, 0xf3, 0x19, 0xdd, 0x4c, 0x39, - 0xa7, 0xb3, 0x23, 0x3c, 0x28, 0xb1, 0x3d, 0x0f, 0x1d, 0x23, - 0x98, 0x4c, 0x64, 0x91, 0x79, 0xe8, 0xdc, 0xd5, 0xcc, 0xbc, - 0x64, 0xad, 0x92, 0x66, 0xe7, 0x62, 0x3b, 0x59, 0x4b, 0x78, - 0xc9, 0x4c, 0x43, 0x6f, 0x72, 0x35, 0xb5, 0xd6, 0x57, 0x7e, - 0x15, 0xb3, 0xe3, 0xcf, 0xfa, 0x3d, 0x0c, 0x2a, 0xf3, 0x17, - 0x0b, 0x3f, 0xa9, 0x98, 0x4c, 0xbd, 0x94, 0x52, 0x30, 0x26, - 0xae, 0x44, 0x17, 0x31, 0xfa, 0xb3, 0x9a, 0xda, 0xb8, 0xb6, - 0x13, 0xb1, 0xed, 0xb6, 0xf1, 0x54, 0xb5, 0x31, 0x0a, 0x97, - 0x8f, 0x8e, 0x8e, 0xb6, 0xf6, 0x2c, 0xe0, 0x22, 0xdd, 0x4a, - 0x9d, 0x2f, 0x8e, 0x2c, 0x3e, 0x06, 0xca, 0xa5, 0xe7, 0xfa, - 0xa0, 0x71, 0x4a, 0xaf, 0xf6, 0xb5, 0x4f, 0x15, 0x78, 0x5f, - 0xe3, 0xe8, 0x96, 0x93, 0x2c, 0xd8, 0x32, 0x4d, 0x6d, 0x4f, - 0xab, 0xd2, 0xa9, 0x5f, 0x59, 0xbd, 0xa9, 0x14, 0xce, 0xf2, - 0x13, 0xd5, 0x81, 0xdc, 0x45, 0xed, 0xb4, 0xf0, 0x05, 0xf7, - 0xd3, 0xe9, 0x7d, 0x31, 0x21, 0xa3, 0x30, 0x06, 0xaa, 0x02, - 0x45, 0xf0, 0x66, 0xe7, 0x3a, 0x97, 0x44, 0xd4, 0x5b, 0x8b, - 0xce, 0x64, 0xb3, 0x7d, 0x4e, 0x4c, 0x26, 0x90, 0x0f, 0x4d, - 0x8f, 0xac, 0x0e, 0x59, 0x8f, 0xf5, 0xca, 0xb2, 0x5a, 0x1a, - 0xc2, 0xb5, 0xd8, 0xa9, 0x14, 0xcb, 0x25, 0x4e, 0x96, 0xe8, - 0x35, 0xc0, 0x27, 0x7d, 0xf3, 0xcb, 0x7b, 0xd4, 0x20, 0xc5, - 0xe1, 0x35, 0xbe, 0xf1, 0xb4, 0x9f, 0xc5, 0x68, 0xe7, 0xe2, - 0x4a, 0x2d, 0x0a, 0x8f, 0x75, 0x79, 0xeb, 0xdf, 0x9b, 0xe9, - 0x9f, 0x78, 0x26, 0x27, 0x9a, 0xd8, 0xd9, 0x3c, 0xaf, 0xaa, - 0xb9, 0xd7, 0xf7, 0x4d, 0xfe, 0x1a, 0xb3, 0x1e, 0x57, 0xf0, - 0x01, 0xbc, 0xc7, 0x6b, 0x76, 0x69, 0x45, 0xd6, 0x0a, 0x1e, - 0xf1, 0x8c, 0xab, 0xd8, 0x09, 0x87, 0x7f, 0x8f, 0xe8, 0x80, - 0xe2, 0xa6, 0x9a, 0x0c, 0x39, 0xf5, 0xf9, 0xa3, 0x68, 0xe0, - 0xb1, 0x86, 0x9c, 0xc5, 0x12, 0xf8, 0x1a, 0x75, 0xfa, 0xc1, - 0xbb, 0x57, 0xdb, 0xcf, 0xf6, 0xac, 0xb6, 0x47, 0x0b, 0x56, - 0x97, 0x97, 0x97, 0xb9, 0x4b, 0xd9, 0x9d, 0x1f, 0x41, 0x60, - 0x58, 0xc6, 0xd6, 0xa0, 0xad, 0x6d, 0x1d, 0x6a, 0x27, 0x28, - 0xee, 0xde, 0x50, 0x57, 0x98, 0x63, 0x4b, 0x33, 0x1b, 0x91, - 0x01, 0xe0, 0xe3, 0x50, 0x8b, 0x5d, 0xd1, 0xa7, 0xa2, 0x6b, - 0xf6, 0x7b, 0x04, 0xa7, 0x97, 0xff, 0xdf, 0x1e, 0x70, 0xd1, - 0x9e, 0x85, 0x78, 0x13, 0xae, 0xbe, 0xe8, 0x33, 0xd9, 0x29, - 0xa1, 0x38, 0x0d, 0x74, 0x2b, 0x92, 0xfd, 0x0d, 0x1f, 0x32, - 0xda, 0x70, 0x27, 0x8b, 0x81, 0x3b, 0xbd, 0xcb, 0x25, 0x97, - 0x4a, 0xd6, 0x08, 0xee, 0xbd, 0xd1, 0xe9, 0x2d, 0xdf, 0xff, - 0x04, 0x24, 0x4c, 0x6e, 0xff, 0xf4, 0x32, 0x71, 0xfb, 0xe8, - 0xf5, 0x6f, 0xa0, 0x68, 0xee, 0x92, 0x3f, 0xd6, 0xe1, 0x1b, - 0x4e, 0x0d, 0x99, 0x57, 0xe4, 0x75, 0xa3, 0xfa, 0x1e, 0xc8, - 0x02, 0xa7, 0x7c, 0xd4, 0x44, 0x0e, 0x1e, 0x9d, 0xc4, 0xda, - 0xbe, 0x99, 0x90, 0xb6, 0x26, 0x7c, 0xb0, 0x9c, 0xad, 0xe7, - 0x4d, 0xd5, 0x6d, 0x7f, 0x7f, 0x7c, 0xba, 0x88, 0x88, 0x25, - 0x07, 0xbc, 0xb7, 0x27, 0x6f, 0xb6, 0x23, 0xa6, 0x2d, 0x79, - 0xee, 0x48, 0xef, 0xa3, 0x6e, 0xc7, 0x44, 0xd6, 0xea, 0x40, - 0x3b, 0xd8, 0xdc, 0x82, 0xa9, 0xff, 0x54, 0x8d, 0xdb, 0xda, - 0x45, 0xa0, 0xbe, 0x69, 0x2e, 0xa1, 0xa3, 0x15, 0x30, 0x8e, - 0xf0, 0xde, 0x43, 0x16, 0x86, 0x39, 0x09, 0x6e, 0xec, 0x84, - 0xe8, 0x8d, 0xfa, 0x60, 0xe1, 0x97, 0x88, 0xe4, 0xe6, 0x4b, - 0x2a, 0x92, 0xfc, 0x9b, 0xdb, 0x16, 0xf6, 0x2a, 0x8e, 0xad, - 0xf6, 0x2e, 0xe7, 0x69, 0x0e, 0x4e, 0xda, 0x15, 0xd3, 0x9b, - 0xa8, 0x2b, 0x32, 0x67, 0xbf, 0x4a, 0x1d, 0xc7, 0x5b, 0xfb, - 0x03, 0x3a, 0x56, 0xdb, 0x08, 0x23, 0x01, 0xe9, 0x3f, 0xa3, - 0xcd, 0xd5, 0x89, 0x90, 0x52, 0x5f, 0x8f, 0xf3, 0xe8, 0x1a, - 0x13, 0x84, 0x4c, 0xc9, 0x0f, 0xe0, 0x9b, 0xac, 0x68, 0x2c, - 0xa6, 0x78, 0x02, 0x95, 0xac, 0xa8, 0x15, 0xdf, 0xe9, 0x1c, - 0xcf, 0xa3, 0xe2, 0x37, 0xf5, 0x0a, 0x36, 0x0d, 0x02, 0xc6, - 0x67, 0xbe, 0x3e, 0x47, 0x60, 0x60, 0x3d, 0x73, 0x08, 0x6e, - 0x73, 0x5c, 0xfc, 0x9f, 0x6f, 0x91, 0x5e, 0x68, 0x5c, 0x83, - 0x9f, 0x84, 0xff, 0xe8, 0x56, 0x77, 0xa8, 0xbf, 0xa3, 0x75, - 0xc8, 0xcd, 0xeb, 0x5d, 0x71, 0x83, 0xb6, 0x7a, 0x48, 0x05, - 0x7d, 0xfa, 0x81, 0x05, 0x06, 0x35, 0x87, 0x6a, 0xa3, 0x5d, - 0x74, 0xb9, 0xf6, 0xdf, 0x15, 0xc0, 0x87, 0x29, 0x9c, 0x44, - 0x36, 0x53, 0x3d, 0xb7, 0xcd, 0x7a, 0x7e, 0x7b, 0xe8, 0x4f, - 0x73, 0x7b, 0x8a, 0x28, 0xe3, 0x2f, 0x6f, 0xef, 0xf0, 0x32, - 0x5e, 0xc3, 0x95, 0xbe, 0x93, 0xfb, 0xcd, 0xeb, 0x2f, 0xf7, - 0xdc, 0xb2, 0x75, 0xb6, 0x73, 0x2b, 0x64, 0xfa, 0xaa, 0xcb, - 0xdc, 0x8c, 0x31, 0xe2, 0xe0, 0x63, 0x57, 0x4d, 0xf2, 0x6e, - 0x5c, 0x2b, 0x66, 0x6d, 0x4a, 0x5b, 0x60, 0x1c, 0xa9, 0x0f, - 0xb5, 0x40, 0x7a, 0x79, 0xc3, 0x55, 0x47, 0x9f, 0xf1, 0x13, - 0x2e, 0x19, 0x9d, 0x56, 0x65, 0xe2, 0xaf, 0x6a, 0x17, 0x6c, - 0xb4, 0x38, 0x17, 0x61, 0xe4, 0x9d, 0x0a, 0xda, 0x59, 0x0c, - 0xd1, 0x5e, 0x6d, 0xf7, 0xa2, 0xcc, 0xdd, 0xf8, 0x64, 0xcb, - 0x7b, 0x6e, 0x71, 0x89, 0x18, 0x49, 0xd7, 0xc7, 0xfb, 0x89, - 0xb0, 0x96, 0x5d, 0xfa, 0xd1, 0x6a, 0xdd, 0x31, 0x44, 0x6b, - 0x08, 0x05, 0x2e, 0xf1, 0xd7, 0x9a, 0x10, 0x9e, 0xfa, 0xf5, - 0xe9, 0xe9, 0x0f, 0x48, 0xf7, 0xe6, 0x9b, 0x2d, 0xad, 0x9f, - 0xd2, 0x47, 0xf4, 0x3b, 0x0a, 0xdf, 0x74, 0x80, 0xbf, 0xc7, - 0x8f, 0xa3, 0x6a, 0xf7, 0x94, 0x88, 0xa8, 0x19, 0x4b, 0x3c, - 0x3d, 0x1d, 0xef, 0x30, 0xf1, 0xc6, 0x7a, 0x4e, 0x01, 0x71, - 0xaa, 0xea, 0xfa, 0x49, 0x75, 0xbb, 0xf2, 0x2c, 0xb8, 0x79, - 0x74, 0x27, 0xc6, 0xbe, 0xd0, 0x77, 0x4e, 0x64, 0x37, 0x94, - 0xa6, 0x7a, 0x05, 0x09, 0x67, 0x36, 0x84, 0xee, 0x34, 0x0e, - 0x57, 0xd0, 0xb7, 0x7b, 0x1b, 0x93, 0x31, 0xe8, 0x86, 0xa3, - 0x52, 0x93, 0x44, 0x05, 0x6e, 0xc7, 0x1c, 0x66, 0x6e, 0xc5, - 0x37, 0x5e, 0x8e, 0x29, 0x4d, 0xb7, 0x63, 0xea, 0xa7, 0xcb, - 0x37, 0x21, 0x41, 0x7c, 0xe5, 0x7d, 0x6e, 0x48, 0x90, 0x25, - 0xf8, 0x8f, 0x85, 0x04, 0x3a, 0xd8, 0x3f, 0xc4, 0xeb, 0xc3, - 0x93, 0xc1, 0x1a, 0x3d, 0xb7, 0xa3, 0xbf, 0x45, 0x82, 0xdf, - 0xf9, 0x56, 0x2e, 0x20, 0xf8, 0x58, 0x4e, 0xd5, 0xad, 0xc7, - 0x69, 0x56, 0xa3, 0x8f, 0x7f, 0x83, 0xd7, 0xe2, 0x77, 0x35, - 0x56, 0xd3, 0x6f, 0x12, 0x94, 0xbe, 0x29, 0xf5, 0x3c, 0xa5, - 0x0b, 0xfa, 0xe9, 0x22, 0xb5, 0x8d, 0x5c, 0xdf, 0xd4, 0x3f, - 0xd9, 0x7b, 0x21, 0xb5, 0x7a, 0xf9, 0x60, 0xcf, 0x8d, 0xd4, - 0xbf, 0x2f, 0xf5, 0x8e, 0x0b, 0xa7, 0xd9, 0xb2, 0x2d, 0xbb, - 0x77, 0xe3, 0x3c, 0x56, 0x07, 0x0d, 0x0b, 0x7e, 0xef, 0x0f, - 0x7a, 0x0f, 0xad, 0x7a, 0xa3, 0x6e, 0x7d, 0xaa, 0xda, 0xf0, - 0xf7, 0x27, 0xab, 0xda, 0xad, 0xc3, 0xbf, 0xef, 0x56, 0xe3, - 0xbf, 0xfd, 0x41, 0xc3, 0xb6, 0x01, 0xd2, 0x1b, 0x20, 0x66, - 0xab, 0xd3, 0x6f, 0xb7, 0xe0, 0x2f, 0x40, 0x1c, 0x54, 0xbb, - 0x4e, 0xab, 0x61, 0x1f, 0x58, 0xad, 0x6e, 0xad, 0x3d, 0xac, - 0xb7, 0xba, 0xb7, 0x07, 0xd6, 0xf5, 0xd0, 0xb1, 0xba, 0x3d, - 0xc7, 0x6a, 0xb7, 0x3a, 0x2d, 0x07, 0x8a, 0x39, 0xbd, 0x03, - 0xcb, 0x69, 0x02, 0x89, 0x0c, 0x1a, 0x56, 0xd6, 0xbb, 0xb1, - 0x3a, 0x8d, 0x41, 0xad, 0x09, 0x5f, 0xaa, 0xd7, 0xad, 0x76, - 0xcb, 0xf9, 0xae, 0xe8, 0xde, 0xb4, 0x9c, 0x2e, 0xd0, 0xb4, - 0x6e, 0x7a, 0x03, 0xab, 0x6a, 0xf5, 0xab, 0x03, 0xa7, 0x55, - 0x1b, 0xb6, 0xab, 0x03, 0xab, 0x3f, 0x1c, 0xf4, 0x7b, 0x76, - 0xc3, 0x42, 0xa6, 0xeb, 0x2d, 0xbb, 0xd6, 0xae, 0xb6, 0x3a, - 0x8d, 0xfa, 0x91, 0xe2, 0xab, 0x0b, 0x74, 0xad, 0xc6, 0x43, - 0xa3, 0xeb, 0x58, 0x76, 0xb3, 0xda, 0x6e, 0x2b, 0xb2, 0x75, - 0xf8, 0xd0, 0xee, 0xf5, 0x1b, 0x03, 0x0b, 0xab, 0x82, 0xe6, - 0xd4, 0x7a, 0x5d, 0x67, 0xd0, 0x02, 0x2e, 0x7b, 0x03, 0xdb, - 0xba, 0x6e, 0x00, 0x9f, 0xd5, 0xeb, 0x76, 0x43, 0x53, 0x02, - 0x70, 0xbd, 0x35, 0x68, 0xd4, 0x9c, 0x03, 0x5d, 0x61, 0xf4, - 0x07, 0x36, 0x0f, 0x44, 0x03, 0x2c, 0xb6, 0x0f, 0x2c, 0xbb, - 0xdf, 0xa8, 0xb5, 0xf0, 0x97, 0xc6, 0x7f, 0x1b, 0xd0, 0xa4, - 0xea, 0xe0, 0xfb, 0x01, 0x56, 0x0d, 0xd5, 0xda, 0x8d, 0x3f, - 0x87, 0x50, 0x08, 0x80, 0x56, 0xbd, 0xda, 0xa9, 0xde, 0xea, - 0x16, 0xfe, 0xfb, 0x0d, 0xd9, 0x80, 0xdc, 0x6b, 0xc3, 0x41, - 0xa3, 0x83, 0x6c, 0x83, 0x34, 0xec, 0xe1, 0xb5, 0xed, 0xb4, - 0x9c, 0xa1, 0xd3, 0xb0, 0x6e, 0x7b, 0xbd, 0xba, 0x1d, 0x09, - 0xdd, 0x6e, 0x0c, 0x1e, 0x5a, 0xb5, 0x86, 0xfd, 0x1f, 0xab, - 0xdd, 0x03, 0xb9, 0x40, 0xc1, 0xa1, 0xdd, 0x38, 0x00, 0x3a, - 0x4e, 0x55, 0x91, 0x87, 0x5a, 0x40, 0x66, 0x00, 0x86, 0xdf, - 0xaf, 0x87, 0x76, 0x4b, 0x49, 0xaf, 0xd5, 0x75, 0x1a, 0x83, - 0xc1, 0xb0, 0xef, 0xb4, 0x7a, 0xdd, 0x5f, 0xb1, 0x96, 0x66, - 0xef, 0x11, 0xc4, 0x01, 0xcc, 0x56, 0x87, 0xd8, 0x9f, 0x28, - 0xe9, 0x5e, 0x57, 0x35, 0x1b, 0x44, 0xd5, 0x1b, 0x7c, 0xc7, - 0x7a, 0x51, 0x1e, 0xaa, 0x23, 0x0e, 0xac, 0xc7, 0x66, 0x03, - 0xbe, 0x0f, 0xa0, 0x1e, 0x2d, 0xb5, 0x6a, 0x24, 0x18, 0x1b, - 0x04, 0x58, 0x73, 0xb6, 0x4b, 0x02, 0x55, 0x90, 0xa7, 0x63, - 0x6d, 0x1a, 0x6b, 0x75, 0x1b, 0xb7, 0xed, 0xd6, 0x6d, 0xa3, - 0x5b, 0x6b, 0x20, 0xb4, 0x87, 0x15, 0x3d, 0xb6, 0xec, 0xc6, - 0xaf, 0xd0, 0x75, 0x2d, 0xe0, 0xef, 0x36, 0xea, 0x32, 0x24, - 0xfe, 0x58, 0x05, 0xca, 0x43, 0xd5, 0x7c, 0xec, 0x32, 0xe0, - 0x4d, 0xff, 0xba, 0xa5, 0xa1, 0x07, 0xaa, 0x63, 0xad, 0xd6, - 0x8d, 0x55, 0xad, 0x3f, 0xb4, 0x94, 0x32, 0xde, 0x68, 0x35, - 0x6e, 0x58, 0xa0, 0x10, 0x76, 0x2b, 0x52, 0x1e, 0x25, 0xc1, - 0x5a, 0x33, 0xea, 0x80, 0xa3, 0xe8, 0xea, 0x8a, 0x65, 0xa2, - 0xfa, 0xca, 0xa9, 0xe9, 0x63, 0xdf, 0x52, 0xcc, 0x60, 0xfc, - 0xa1, 0x5b, 0x78, 0x92, 0x14, 0x62, 0x0b, 0xf1, 0x14, 0xbc, - 0x10, 0x49, 0xbf, 0x59, 0x6b, 0x11, 0x5a, 0xb8, 0xe9, 0x42, - 0xd2, 0x29, 0xc3, 0x43, 0x66, 0x60, 0x6c, 0xd4, 0x09, 0x66, - 0xc2, 0xa7, 0xc7, 0x10, 0x77, 0x2c, 0xc4, 0x94, 0x3d, 0xad, - 0xb1, 0x1e, 0xf8, 0x16, 0xf2, 0x29, 0xd5, 0xc7, 0x4d, 0x21, - 0xa2, 0x5a, 0xf8, 0xf1, 0xc3, 0xb6, 0xb7, 0xdd, 0xa1, 0x75, - 0x4b, 0x21, 0x00, 0x24, 0x9e, 0x3e, 0xd9, 0x3b, 0xb1, 0xda, - 0x0c, 0xc2, 0x2e, 0xc8, 0xe5, 0xf1, 0x18, 0x9d, 0x3e, 0x4c, - 0x02, 0x39, 0xed, 0x58, 0xd5, 0x83, 0x18, 0x37, 0xc8, 0x83, - 0x1d, 0xf1, 0x60, 0xdd, 0xe0, 0x1b, 0x65, 0x6a, 0xcb, 0xcf, - 0x81, 0x45, 0x19, 0x1e, 0xb4, 0xb1, 0x56, 0xfa, 0x62, 0x78, - 0xeb, 0x2c, 0xa6, 0x11, 0x55, 0x78, 0x94, 0x6e, 0xa2, 0xea, - 0x21, 0x4a, 0xdf, 0xe2, 0xe3, 0x49, 0x35, 0x45, 0xd2, 0xe8, - 0x5e, 0x6c, 0xff, 0x48, 0x67, 0xb9, 0xdf, 0xa1, 0xf1, 0xbe, - 0x2b, 0x42, 0x6f, 0x6a, 0xb9, 0x18, 0x72, 0x25, 0x47, 0x63, - 0x08, 0x18, 0x9e, 0xe5, 0xfa, 0xed, 0x06, 0xaa, 0x17, 0xc4, - 0x3c, 0x01, 0xf1, 0xf9, 0xe6, 0xfc, 0x4b, 0x24, 0xeb, 0x23, - 0x0b, 0x4f, 0xef, 0x70, 0x11, 0x1c, 0x40, 0x24, 0x47, 0x2d, - 0x37, 0x08, 0x96, 0xdf, 0x8e, 0x8f, 0x5f, 0x5e, 0x5e, 0x8e, - 0x66, 0x3c, 0x3c, 0x12, 0x72, 0x76, 0xec, 0xe9, 0x3a, 0xfc, - 0xe3, 0x74, 0xab, 0xf0, 0xbf, 0x1a, 0xd0, 0x57, 0x2f, 0x87, - 0x59, 0xff, 0xae, 0xfd, 0x6a, 0x9d, 0x9e, 0x9c, 0x56, 0x0e, - 0xe1, 0xc7, 0xb9, 0xd5, 0x06, 0xfb, 0xca, 0xbe, 0x9e, 0x5b, - 0xaa, 0x42, 0x1f, 0x6a, 0x9c, 0x01, 0xe1, 0x70, 0x7c, 0x34, - 0x11, 0x8b, 0xe3, 0x08, 0x76, 0xfc, 0x30, 0x05, 0xd3, 0x39, - 0xda, 0xdc, 0xe5, 0x1f, 0x57, 0xff, 0xcb, 0x4e, 0xfd, 0x5c, - 0xf7, 0x36, 0x48, 0xe6, 0x9b, 0x65, 0x87, 0xf2, 0xe9, 0x96, - 0xc8, 0x19, 0xe1, 0x62, 0x87, 0x97, 0x7d, 0xae, 0x60, 0xdb, - 0x13, 0x2c, 0x5f, 0xa6, 0xea, 0x19, 0xdf, 0xc4, 0x0e, 0xab, - 0x07, 0x7c, 0xe3, 0xd7, 0xa5, 0xb6, 0x1c, 0xc1, 0xce, 0xc3, - 0xbe, 0x91, 0x91, 0xf6, 0x97, 0xa0, 0x7f, 0x71, 0x32, 0x81, - 0x8b, 0xd2, 0x9f, 0xae, 0xfe, 0x07, 0x67, 0xd9, 0xfc, 0xff, - 0x40, 0x8c, 0x06, 0xb0, 0x58, 0x2c, 0xd1, 0xfc, 0xd0, 0xe6, - 0x56, 0x55, 0x3c, 0xfa, 0xb8, 0xb9, 0xb4, 0x62, 0xb9, 0xe5, - 0x1d, 0x62, 0xa7, 0x6b, 0xbc, 0x12, 0x04, 0x9f, 0xce, 0xc5, - 0xba, 0xff, 0xf8, 0x57, 0xe5, 0xe4, 0x5f, 0xef, 0xbf, 0xd6, - 0x2c, 0x5a, 0xe8, 0xd0, 0x0b, 0x6c, 0x48, 0xaa, 0xa5, 0xc3, - 0x3c, 0x3d, 0x87, 0x97, 0xf9, 0xfc, 0x21, 0x77, 0xdd, 0xbe, - 0xc9, 0x7a, 0xf1, 0xdb, 0x39, 0x76, 0xd8, 0xef, 0xbf, 0x4c, - 0x73, 0xb8, 0x4f, 0xbe, 0x16, 0xe2, 0x1d, 0x83, 0x1b, 0x55, - 0x20, 0x8a, 0x9e, 0xdf, 0x19, 0xe0, 0x68, 0xd2, 0xbd, 0x79, - 0x12, 0xdc, 0x88, 0xf9, 0x26, 0xee, 0xd5, 0x5a, 0xa0, 0xb2, - 0x3a, 0xad, 0x06, 0x7c, 0xfb, 0x1e, 0xe1, 0x6d, 0xea, 0xbf, - 0xfc, 0xf2, 0x1e, 0xb2, 0x35, 0x7c, 0x96, 0xd2, 0x4b, 0x48, - 0x4f, 0xa2, 0x3f, 0xf3, 0xc8, 0x6f, 0x24, 0x5d, 0xe8, 0xd8, - 0x0f, 0x86, 0x5b, 0x9b, 0xb1, 0x93, 0xfc, 0x8a, 0x7f, 0xe8, - 0x27, 0x96, 0xe2, 0x5b, 0x95, 0xd4, 0x4f, 0xdc, 0x38, 0x1b, - 0x58, 0xcf, 0xbe, 0xe0, 0xce, 0x5f, 0xd6, 0x1f, 0xca, 0xd2, - 0xfd, 0xaf, 0x0e, 0xe0, 0x3e, 0x55, 0x9f, 0x24, 0x9b, 0x90, - 0xe3, 0xea, 0x98, 0x4d, 0x9f, 0x09, 0xff, 0xf4, 0xed, 0xd3, - 0x6d, 0xc7, 0x39, 0xf9, 0x74, 0x90, 0x82, 0x4e, 0x26, 0x92, - 0x98, 0x60, 0x53, 0xb0, 0xf6, 0xa3, 0xea, 0x98, 0x8c, 0xb1, - 0x44, 0xa3, 0xea, 0x1c, 0x9e, 0x65, 0x8a, 0x78, 0x33, 0x06, - 0x56, 0x18, 0xc0, 0xb5, 0x86, 0x73, 0x58, 0xc9, 0x80, 0xfd, - 0x05, 0x91, 0x46, 0xe4, 0x6b, 0xb2, 0x20, 0x73, 0x61, 0x20, - 0x7e, 0x4d, 0xf8, 0x2c, 0x64, 0x00, 0x7c, 0xac, 0xe6, 0x54, - 0x0c, 0xd0, 0xe7, 0xd0, 0x33, 0xa1, 0x32, 0xdf, 0x27, 0xa1, - 0x09, 0xe8, 0x11, 0x1e, 0xac, 0x25, 0x45, 0x96, 0xa1, 0xe6, - 0xd3, 0x0c, 0x5c, 0x92, 0xd7, 0x57, 0xb2, 0x62, 0x60, 0x12, - 0x8d, 0xc4, 0xc3, 0x67, 0xc8, 0xdd, 0x42, 0xd5, 0xb0, 0xdc, - 0x3a, 0x6a, 0x84, 0x49, 0x6c, 0x57, 0xa3, 0x91, 0x0b, 0xc4, - 0x57, 0x8c, 0x41, 0x5f, 0x10, 0xfd, 0xf7, 0xdf, 0x4e, 0x2a, - 0x57, 0x59, 0x0a, 0x35, 0x1a, 0x06, 0x24, 0x16, 0x2a, 0xc4, - 0x38, 0xce, 0x41, 0xe7, 0xec, 0xe8, 0xe2, 0xe8, 0xe4, 0xa0, - 0x53, 0x39, 0xc1, 0xff, 0x8f, 0x33, 0xb2, 0x04, 0x4b, 0x4d, - 0xe6, 0x72, 0x6d, 0x68, 0x74, 0x9d, 0xcc, 0x89, 0x34, 0xc2, - 0xe4, 0x88, 0xfa, 0x23, 0x9b, 0x78, 0x84, 0x2c, 0x4c, 0x5d, - 0x55, 0x7f, 0x66, 0x18, 0x45, 0x33, 0x23, 0x5c, 0x40, 0xa6, - 0x4e, 0x4c, 0x02, 0x6b, 0x78, 0xa3, 0x2a, 0x61, 0x21, 0x37, - 0x37, 0x18, 0x7d, 0x7d, 0x20, 0x5e, 0x4c, 0x5a, 0x7a, 0x0b, - 0x31, 0xbc, 0xc4, 0x2b, 0xec, 0x0d, 0x02, 0x6f, 0x82, 0x96, - 0x99, 0xbb, 0xf4, 0x4e, 0xb8, 0x84, 0x73, 0xea, 0x43, 0x97, - 0xcd, 0xa0, 0x8c, 0x5d, 0xb5, 0xf3, 0x0a, 0x85, 0x63, 0x63, - 0x7f, 0xde, 0x93, 0xc5, 0x52, 0x37, 0x2f, 0xb7, 0xf1, 0xf7, - 0x2e, 0x91, 0x81, 0x08, 0x17, 0x46, 0x74, 0x36, 0x23, 0x1e, - 0x33, 0x43, 0xb9, 0xef, 0x82, 0x4e, 0x98, 0x84, 0xd7, 0x26, - 0x33, 0xe1, 0x1b, 0x81, 0x6c, 0x2c, 0xe9, 0x5e, 0x65, 0x6d, - 0xe3, 0x13, 0x69, 0xf9, 0x52, 0x6d, 0x87, 0x78, 0x16, 0xd8, - 0x88, 0x18, 0x8e, 0x41, 0xcb, 0x89, 0xef, 0x1a, 0x39, 0x6f, - 0x87, 0x3e, 0xe8, 0x95, 0x09, 0xda, 0x01, 0x89, 0x8d, 0x85, - 0xa9, 0xf6, 0x0e, 0x59, 0xe2, 0x7b, 0x20, 0x46, 0x5c, 0x30, - 0xd9, 0xa1, 0xb1, 0xaf, 0x3a, 0x68, 0x92, 0x94, 0x36, 0x18, - 0xe0, 0x62, 0x46, 0xc0, 0x74, 0xb9, 0xa1, 0xa9, 0xc7, 0x3a, - 0x82, 0x4b, 0xb1, 0x62, 0x26, 0xc3, 0xd7, 0xc5, 0xf1, 0x3b, - 0x36, 0x2a, 0x7b, 0x17, 0xec, 0xe9, 0x82, 0x72, 0xa3, 0xe4, - 0xba, 0x0c, 0xc0, 0x6b, 0x23, 0x14, 0x86, 0xca, 0x7c, 0xe2, - 0x8a, 0x20, 0x30, 0x50, 0xef, 0x85, 0x04, 0xd8, 0x17, 0xe1, - 0x4c, 0x98, 0x6c, 0x18, 0xee, 0x93, 0x12, 0x87, 0x5d, 0xb1, - 0x32, 0x8a, 0xd7, 0x26, 0x62, 0xe4, 0x98, 0x7b, 0xde, 0x01, - 0x3f, 0x22, 0x94, 0x4a, 0xe6, 0x9a, 0x28, 0x27, 0xe4, 0xcc, - 0x68, 0xd3, 0x1f, 0x19, 0x9f, 0xba, 0x82, 0xce, 0xb3, 0x7d, - 0xb7, 0xa0, 0x91, 0xdb, 0x20, 0x08, 0x6c, 0xda, 0x4e, 0xe5, - 0xa4, 0x59, 0x57, 0xa6, 0xeb, 0x54, 0x99, 0xae, 0xca, 0x51, - 0xe5, 0xe8, 0x24, 0x5b, 0x9c, 0x83, 0x30, 0x24, 0x99, 0x21, - 0xaf, 0xd5, 0x7b, 0xdb, 0xb9, 0xac, 0xde, 0x17, 0x41, 0x02, - 0xe7, 0xe0, 0xa9, 0x21, 0x09, 0x1a, 0x70, 0x9e, 0x03, 0x0f, - 0xd8, 0x2c, 0x34, 0x83, 0x81, 0x5e, 0x48, 0x98, 0xea, 0xc2, - 0xdf, 0x0f, 0x4f, 0xce, 0xae, 0xce, 0x72, 0x8a, 0xcc, 0x30, - 0x50, 0xe6, 0x68, 0xee, 0x29, 0x17, 0xe0, 0x07, 0x19, 0xbe, - 0x8d, 0x56, 0xa0, 0x7c, 0x8d, 0x04, 0xe0, 0xd8, 0xe4, 0xa4, - 0x50, 0xe5, 0x35, 0x08, 0x0c, 0xc4, 0xb8, 0x50, 0xd1, 0x3b, - 0x70, 0x3b, 0xeb, 0x22, 0x05, 0xdb, 0x64, 0x34, 0x60, 0xe2, - 0xb9, 0x50, 0xa5, 0x1d, 0xca, 0xa7, 0xe2, 0xb5, 0x50, 0x51, - 0xa8, 0x73, 0x74, 0x4b, 0xc0, 0xd4, 0x68, 0x7b, 0xf4, 0x66, - 0x79, 0xf0, 0x28, 0x01, 0x29, 0x56, 0x90, 0x8f, 0xee, 0x42, - 0x15, 0xa2, 0x14, 0x2a, 0xdb, 0x0e, 0x59, 0x21, 0x06, 0x9c, - 0x70, 0x12, 0x2e, 0x8a, 0x55, 0x3b, 0x04, 0x63, 0x41, 0xd8, - 0x5e, 0x6e, 0xb5, 0x7f, 0xc8, 0x57, 0x27, 0x3f, 0xe4, 0x13, - 0x9c, 0x76, 0x55, 0xe8, 0xe7, 0x57, 0xe7, 0xaa, 0x12, 0xe5, - 0xac, 0x41, 0x79, 0x8f, 0x4f, 0x50, 0x9b, 0xcf, 0xf1, 0x97, - 0x2c, 0x66, 0xc0, 0xe6, 0x62, 0xae, 0x78, 0x04, 0x2f, 0x7f, - 0x91, 0x81, 0x5f, 0x13, 0x77, 0x1f, 0x57, 0x0a, 0x3c, 0x82, - 0x60, 0x08, 0x52, 0x6e, 0xa2, 0x46, 0xac, 0xed, 0x7c, 0xae, - 0xe1, 0xf0, 0x39, 0x47, 0xca, 0x71, 0xb8, 0x90, 0x83, 0x27, - 0xc7, 0x60, 0x62, 0x7c, 0x53, 0x83, 0xae, 0xa9, 0x47, 0x17, - 0x7b, 0xc8, 0x52, 0x8f, 0xbd, 0xd2, 0x88, 0x5c, 0x16, 0x8a, - 0xc1, 0xcd, 0xa1, 0x0d, 0x41, 0x8e, 0x92, 0x48, 0x3e, 0x01, - 0x41, 0x46, 0x0f, 0xcc, 0x8f, 0xf5, 0x03, 0x44, 0x96, 0x53, - 0x64, 0x26, 0x62, 0xf8, 0xc5, 0x55, 0x8e, 0x68, 0x04, 0xf3, - 0x91, 0x87, 0x8e, 0xed, 0x7c, 0xe9, 0xbc, 0x6d, 0x31, 0x6a, - 0x64, 0x31, 0x96, 0x6c, 0x3a, 0xa3, 0x20, 0xae, 0x75, 0x29, - 0xb4, 0x25, 0xa8, 0xbd, 0x44, 0x11, 0x9b, 0x79, 0xc5, 0x6c, - 0x20, 0x34, 0x76, 0x62, 0x0d, 0x4f, 0x9e, 0x12, 0x7f, 0x1f, - 0xfa, 0x9a, 0x72, 0x4e, 0xcd, 0x02, 0x87, 0x02, 0x0b, 0xb3, - 0x92, 0xd4, 0x5c, 0xf8, 0x39, 0x13, 0xdb, 0xdd, 0xff, 0x46, - 0xa3, 0x5c, 0x06, 0xea, 0xee, 0x2a, 0xfb, 0x98, 0xc8, 0x61, - 0xbf, 0xc6, 0xd4, 0x04, 0x74, 0x16, 0x98, 0x15, 0x65, 0xd5, - 0x72, 0xbb, 0xbd, 0x26, 0x71, 0x31, 0x96, 0x47, 0x55, 0x66, - 0xc1, 0x21, 0x23, 0xe3, 0x3d, 0xdd, 0x5d, 0x0b, 0x51, 0x48, - 0xc2, 0xa4, 0x30, 0x75, 0xc2, 0xc1, 0xa6, 0xce, 0x21, 0x52, - 0x5a, 0x65, 0x83, 0xc4, 0xa4, 0xcc, 0x8b, 0x6f, 0x66, 0x40, - 0x43, 0x47, 0xc0, 0xa6, 0xf2, 0x5d, 0xf9, 0x65, 0x28, 0xc7, - 0x13, 0x2d, 0x85, 0xb5, 0xa3, 0x4e, 0x03, 0x29, 0x58, 0x10, - 0x75, 0x4c, 0xa3, 0x00, 0x02, 0x5e, 0x9a, 0xa8, 0x85, 0x98, - 0xdb, 0xcc, 0xc6, 0x74, 0x21, 0xf8, 0x46, 0x8a, 0x05, 0x58, - 0x68, 0x30, 0x19, 0x72, 0xba, 0xa4, 0xe6, 0x81, 0x02, 0xd1, - 0x37, 0x98, 0xe2, 0x15, 0x8c, 0x77, 0x69, 0xea, 0xbb, 0x1b, - 0x08, 0x28, 0x46, 0x5d, 0xea, 0xed, 0x11, 0x1f, 0x16, 0x21, - 0x1e, 0xdd, 0xe7, 0x2a, 0x6e, 0xf1, 0x56, 0xd6, 0x68, 0x78, - 0x61, 0xeb, 0xaa, 0x6f, 0x73, 0x7f, 0x2b, 0xa6, 0x81, 0x4b, - 0xc6, 0x49, 0x9d, 0xf0, 0xf3, 0xf4, 0x2a, 0x4a, 0x76, 0x8e, - 0x0f, 0x4f, 0x93, 0x7c, 0x67, 0x3b, 0x0c, 0x49, 0x50, 0x85, - 0x5f, 0x96, 0x1a, 0x0e, 0xe3, 0x91, 0x13, 0xca, 0x79, 0xf1, - 0x1e, 0xbb, 0x95, 0x10, 0xe9, 0x4d, 0x8d, 0x1d, 0x76, 0x1b, - 0x92, 0x29, 0xf5, 0x44, 0xa8, 0x3a, 0xc0, 0x54, 0x22, 0xa0, - 0x0b, 0x9d, 0x3e, 0xe4, 0x0a, 0x1f, 0x0a, 0xac, 0xc9, 0x0f, - 0x08, 0x67, 0xcc, 0x5d, 0x78, 0x1b, 0xae, 0x09, 0xdf, 0x33, - 0x78, 0x9a, 0x90, 0x5f, 0x3c, 0x91, 0x9f, 0xc5, 0x25, 0xd1, - 0x24, 0x2b, 0x5d, 0x21, 0x70, 0x74, 0xb1, 0xb1, 0x18, 0xc7, - 0x09, 0xc6, 0x71, 0x56, 0xe0, 0x4d, 0x2a, 0x17, 0xc2, 0x87, - 0xa8, 0x4b, 0x98, 0x74, 0xa4, 0xc5, 0xa7, 0x0c, 0xaa, 0x8d, - 0xff, 0xc7, 0x10, 0xd3, 0x2f, 0x2e, 0xe9, 0x18, 0xfb, 0x9e, - 0x8b, 0x9f, 0xc5, 0x6d, 0x59, 0x8c, 0xd5, 0x81, 0x04, 0x90, - 0x2b, 0x23, 0x58, 0x92, 0x5c, 0x1f, 0xf7, 0x0e, 0xc7, 0xb9, - 0x61, 0x49, 0x5c, 0x87, 0x7a, 0xde, 0xa8, 0xc6, 0x82, 0x75, - 0x79, 0x7e, 0x1f, 0xe8, 0x4a, 0xa9, 0x6e, 0x49, 0x8a, 0x0f, - 0x8c, 0x4f, 0xd0, 0x57, 0xbc, 0x43, 0xae, 0x10, 0xb8, 0x43, - 0x5c, 0x3a, 0x29, 0x83, 0x18, 0xae, 0xd8, 0xbc, 0xb8, 0x29, - 0x6a, 0xfd, 0x20, 0x5e, 0x58, 0xc6, 0x1a, 0xde, 0x01, 0x3f, - 0xda, 0x18, 0xe6, 0xfa, 0xb5, 0x3b, 0x30, 0x6c, 0x6a, 0x1e, - 0xa7, 0x70, 0x5a, 0x70, 0x0f, 0xe1, 0x5c, 0x38, 0x99, 0xaf, - 0x21, 0xeb, 0x85, 0x18, 0x31, 0xce, 0x8b, 0x0b, 0x72, 0x93, - 0x20, 0x43, 0x76, 0x18, 0x30, 0x7c, 0x91, 0xb4, 0x84, 0x36, - 0xdd, 0x4b, 0x30, 0x8e, 0x20, 0xe8, 0xe7, 0xb9, 0xc9, 0x0e, - 0x40, 0x54, 0xde, 0x27, 0xaf, 0xe6, 0x31, 0xdc, 0x66, 0x8b, - 0x3d, 0xd1, 0x4e, 0x1b, 0x33, 0x10, 0x3e, 0x83, 0xb8, 0x0c, - 0x7b, 0xbe, 0x6f, 0x3b, 0x5f, 0xfb, 0x6f, 0x33, 0xd5, 0xc6, - 0xeb, 0x0d, 0x46, 0x7d, 0x89, 0x3a, 0x63, 0x8c, 0xf5, 0x3a, - 0x60, 0xb4, 0x99, 0x30, 0x5b, 0xf5, 0x0e, 0xe8, 0x8e, 0x4e, - 0xa5, 0x72, 0xad, 0x17, 0x82, 0xc3, 0x3d, 0xb1, 0x0d, 0x8c, - 0x4b, 0x06, 0x81, 0x9c, 0x99, 0xba, 0x84, 0x00, 0x9c, 0xfd, - 0x08, 0xa9, 0xb9, 0x04, 0xa4, 0x53, 0x42, 0x0a, 0xbf, 0xf8, - 0x18, 0xeb, 0x90, 0x57, 0x12, 0x78, 0x84, 0x17, 0x0f, 0x6f, - 0x20, 0x0d, 0x42, 0xcf, 0x4c, 0x69, 0x09, 0x22, 0x14, 0x2f, - 0x4d, 0x29, 0x1e, 0x73, 0x77, 0x28, 0xb0, 0x34, 0x47, 0xbe, - 0xca, 0x68, 0x74, 0x87, 0xfe, 0x64, 0x13, 0x91, 0xb1, 0x31, - 0x6f, 0x90, 0x42, 0x79, 0x7a, 0x82, 0x67, 0xdd, 0xea, 0x5e, - 0x52, 0x82, 0x4f, 0x82, 0x24, 0x64, 0x2f, 0xe0, 0x44, 0x70, - 0x9c, 0x50, 0x29, 0x69, 0x19, 0xce, 0x10, 0x65, 0xc5, 0xa6, - 0x74, 0x9f, 0xc2, 0xe1, 0xa2, 0x13, 0x25, 0x5e, 0xf1, 0xc1, - 0x87, 0x18, 0x3e, 0x70, 0x42, 0x8c, 0x6a, 0xd6, 0x25, 0xd1, - 0x94, 0x70, 0xc1, 0x1a, 0xbb, 0xf4, 0x65, 0xf4, 0x5d, 0x94, - 0x89, 0x13, 0xba, 0x6c, 0x09, 0x7a, 0xce, 0x4b, 0x20, 0xe8, - 0xe9, 0x99, 0xc2, 0x9a, 0xd0, 0xc5, 0x19, 0x50, 0x37, 0x32, - 0x11, 0xa7, 0x57, 0xa7, 0x79, 0x05, 0x02, 0x77, 0x54, 0x27, - 0x73, 0x48, 0x9b, 0x20, 0x45, 0x0b, 0x3d, 0xe2, 0x16, 0xd7, - 0xe6, 0x1d, 0xe4, 0x9a, 0xde, 0x0d, 0xf7, 0x3e, 0x64, 0x14, - 0x1d, 0xc4, 0x9b, 0x2a, 0x7f, 0x2c, 0x8a, 0x1f, 0x86, 0xf3, - 0xf7, 0x84, 0x80, 0xbd, 0x67, 0x70, 0x69, 0x33, 0x52, 0xdc, - 0x43, 0xf5, 0x09, 0xba, 0x40, 0x93, 0xbf, 0x01, 0xe8, 0x8c, - 0x33, 0x19, 0x84, 0xbc, 0x44, 0x28, 0xa0, 0x8e, 0x2c, 0x81, - 0x8d, 0x1b, 0xef, 0xd1, 0xe8, 0xbe, 0x2b, 0x28, 0x67, 0x3f, - 0x4d, 0x61, 0x13, 0x4e, 0xe7, 0x1d, 0x92, 0xf0, 0x50, 0x1b, - 0xea, 0x12, 0xa4, 0x31, 0x6a, 0x17, 0x4f, 0x23, 0x7b, 0x49, - 0x98, 0x31, 0xd3, 0x56, 0x73, 0x85, 0xa3, 0x07, 0xea, 0xb9, - 0xc2, 0x6c, 0xa4, 0xfb, 0x21, 0xc5, 0x52, 0x90, 0xde, 0x19, - 0x13, 0xb0, 0x7e, 0xc8, 0x21, 0x01, 0xac, 0x62, 0x34, 0xbc, - 0x67, 0xf2, 0x65, 0x00, 0x9c, 0xac, 0xa1, 0x9e, 0x55, 0x19, - 0xf5, 0x19, 0x10, 0x3e, 0x67, 0x7c, 0xd4, 0xe2, 0x1e, 0x0d, - 0x4a, 0x60, 0xd1, 0x09, 0x7b, 0xda, 0x93, 0x33, 0x0f, 0xe8, - 0x8c, 0x71, 0xa3, 0xdb, 0x1a, 0x50, 0x7d, 0x23, 0x66, 0x09, - 0x7a, 0x4c, 0x8c, 0xae, 0x21, 0x81, 0x98, 0x08, 0xb3, 0x97, - 0xb6, 0x09, 0x08, 0x49, 0xee, 0x9b, 0x3a, 0xc1, 0x12, 0x4c, - 0x27, 0xeb, 0x3b, 0x53, 0x45, 0x97, 0x40, 0xf3, 0xf3, 0xf1, - 0xe9, 0xb9, 0x36, 0xa0, 0xf8, 0x5b, 0x2e, 0xaa, 0x18, 0xa9, - 0x0c, 0x72, 0x66, 0xec, 0x26, 0x9c, 0xf8, 0xed, 0x93, 0xd0, - 0xdb, 0xa3, 0x8d, 0xf6, 0x44, 0x40, 0xaa, 0x3e, 0x5e, 0xfb, - 0x21, 0x9f, 0xea, 0x52, 0x95, 0xab, 0xca, 0xef, 0xbf, 0x9d, - 0x9c, 0x24, 0xa3, 0x6e, 0xb3, 0xce, 0x94, 0x1d, 0x73, 0x36, - 0x0b, 0xe6, 0xa5, 0x3c, 0x98, 0x1d, 0x40, 0x92, 0x06, 0xf6, - 0x01, 0xa7, 0x94, 0xd6, 0x46, 0xb6, 0x83, 0xd1, 0x9d, 0x70, - 0x39, 0x6a, 0x56, 0xd7, 0x76, 0xce, 0xbe, 0x9d, 0x9d, 0x74, - 0x0b, 0xd5, 0x7c, 0xcf, 0x82, 0xc0, 0xdf, 0x53, 0x69, 0x3b, - 0x9c, 0x30, 0xb2, 0x07, 0xee, 0xb8, 0x62, 0x41, 0xf6, 0x55, - 0xa0, 0xe3, 0x6d, 0xa3, 0x5f, 0xb1, 0x5f, 0xd8, 0x53, 0x30, - 0xaa, 0xe9, 0xeb, 0xb0, 0x4c, 0xba, 0xe6, 0xd0, 0x19, 0xb0, - 0x31, 0x23, 0xde, 0xd2, 0xa8, 0x8e, 0x8e, 0x1b, 0x7a, 0xb4, - 0xb8, 0xe7, 0x85, 0xe2, 0x38, 0xe5, 0x17, 0x65, 0xbf, 0x05, - 0xcd, 0x85, 0xc3, 0x9e, 0x43, 0x9d, 0xf4, 0x15, 0x0c, 0x1f, - 0x1d, 0xf4, 0x38, 0x41, 0x89, 0x20, 0xd8, 0x41, 0x5b, 0x63, - 0x9e, 0x94, 0x7f, 0xc0, 0xc1, 0x13, 0x6a, 0xd3, 0x50, 0x90, - 0x85, 0x47, 0x97, 0x05, 0xd4, 0x15, 0x32, 0x99, 0xe9, 0xcb, - 0x96, 0x60, 0x9c, 0xb3, 0x25, 0x9d, 0x15, 0x1f, 0xc8, 0xdf, - 0xc9, 0x3c, 0x0c, 0x74, 0xa8, 0x50, 0x54, 0x87, 0xbf, 0x63, - 0x32, 0xf0, 0x32, 0xe7, 0xda, 0xe0, 0xbc, 0xe5, 0x6c, 0xd0, - 0x06, 0x4c, 0x82, 0x68, 0xad, 0x57, 0x45, 0x47, 0xbf, 0xff, - 0x56, 0xc1, 0x55, 0xcf, 0x4a, 0x5e, 0x99, 0x3a, 0x59, 0xe9, - 0xe9, 0xec, 0xdf, 0x4e, 0xbe, 0x5c, 0x1d, 0x7e, 0xc9, 0x2d, - 0x12, 0xe2, 0xac, 0x50, 0x7d, 0x28, 0xe3, 0x8c, 0x06, 0xea, - 0x3b, 0x81, 0xfa, 0x72, 0x69, 0x42, 0x3c, 0xff, 0x23, 0x04, - 0x87, 0xa4, 0xd4, 0x09, 0x3a, 0x0e, 0x8a, 0x55, 0x55, 0xdf, - 0xe9, 0xd9, 0xe8, 0x28, 0x42, 0xdb, 0x5e, 0x41, 0xde, 0xc6, - 0x8d, 0x66, 0xd0, 0x80, 0x99, 0x8b, 0xab, 0xc3, 0x8b, 0xdc, - 0x32, 0x93, 0x4e, 0x28, 0xa7, 0xa8, 0x15, 0xdd, 0xbf, 0xb0, - 0xf6, 0xd3, 0xee, 0x5f, 0x58, 0xfb, 0xa5, 0x5e, 0x9f, 0xde, - 0x53, 0x79, 0x9f, 0x78, 0x0b, 0xd5, 0xf7, 0x69, 0xbb, 0xb4, - 0x29, 0x32, 0x50, 0xef, 0x63, 0x90, 0xbd, 0x65, 0xec, 0xb5, - 0x78, 0x89, 0x96, 0xce, 0xcf, 0xae, 0x0e, 0x73, 0x8b, 0x38, - 0xea, 0x96, 0x25, 0x55, 0xe4, 0xe4, 0xea, 0x04, 0x7e, 0x9e, - 0x5e, 0x61, 0x20, 0xa1, 0x8d, 0x5b, 0x25, 0x6f, 0x11, 0x7d, - 0x83, 0xfb, 0x20, 0xfc, 0x40, 0xcc, 0x35, 0xf2, 0xe7, 0xab, - 0xc3, 0xad, 0xa1, 0xaa, 0x0a, 0x40, 0x4e, 0xc5, 0x67, 0x6b, - 0x4a, 0xe4, 0x78, 0x4d, 0x79, 0xc1, 0x15, 0x7a, 0x9f, 0xe1, - 0xa2, 0x18, 0xe5, 0x79, 0x4c, 0x2b, 0x98, 0xb7, 0x20, 0xc1, - 0x3a, 0x8f, 0xa4, 0x82, 0x2e, 0xa2, 0xa9, 0x5f, 0x5c, 0xa9, - 0x6b, 0x28, 0x4a, 0xa7, 0x40, 0xe1, 0x5c, 0x39, 0x0b, 0x45, - 0xec, 0x62, 0xdb, 0x4c, 0x2b, 0x14, 0x4e, 0xa6, 0x6b, 0xa9, - 0xf5, 0x04, 0x9a, 0x5e, 0x39, 0x4d, 0x81, 0x7f, 0x04, 0x2a, - 0x16, 0xce, 0x74, 0x72, 0x04, 0x14, 0x63, 0x6a, 0x84, 0xfa, - 0xee, 0x8c, 0x8c, 0xd5, 0xe0, 0xc9, 0x87, 0x07, 0x6b, 0x69, - 0xae, 0xfb, 0x9a, 0xcc, 0xdc, 0x29, 0x99, 0x9a, 0xe4, 0x70, - 0x4d, 0x5c, 0xa9, 0x23, 0x19, 0x03, 0x78, 0x1e, 0xd5, 0x7c, - 0x7e, 0x75, 0x78, 0x9e, 0x86, 0xf1, 0xd9, 0x3c, 0xee, 0xb6, - 0xdd, 0x61, 0xa4, 0xc1, 0x12, 0xb2, 0x54, 0xcf, 0x08, 0xa6, - 0x4c, 0x86, 0xc1, 0xae, 0x8c, 0xd3, 0x9e, 0xf0, 0x24, 0x85, - 0xc2, 0x7c, 0x77, 0x4e, 0xe7, 0xa6, 0x4e, 0xbb, 0xc6, 0x49, - 0x59, 0xa6, 0xa1, 0x5f, 0xaf, 0x0e, 0xbf, 0xee, 0x42, 0x6b, - 0x60, 0xd5, 0x22, 0x15, 0xbe, 0xbc, 0x3a, 0xbc, 0x4c, 0x03, - 0x05, 0x1b, 0x13, 0xcf, 0x27, 0xdc, 0x88, 0x2e, 0x3c, 0xb1, - 0xd0, 0xf1, 0x26, 0x48, 0xf9, 0x0c, 0x2c, 0xc1, 0x05, 0x38, - 0xcc, 0xdd, 0x32, 0x75, 0x08, 0x4a, 0xfd, 0x89, 0x4a, 0xcc, - 0x53, 0x8d, 0xba, 0x48, 0x1a, 0x75, 0x91, 0x6e, 0x54, 0xdd, - 0xd5, 0xeb, 0xf9, 0xb9, 0x4d, 0xaa, 0x33, 0x8f, 0x99, 0x78, - 0xae, 0x87, 0x63, 0xc2, 0x4c, 0x7d, 0x53, 0x0f, 0x7d, 0x97, - 0x70, 0xb3, 0x4e, 0xdd, 0x00, 0xab, 0xb3, 0x50, 0xaf, 0x05, - 0x65, 0x3a, 0xe0, 0x2c, 0xe9, 0x80, 0x54, 0xad, 0xb7, 0xe4, - 0x35, 0x83, 0x70, 0x0e, 0xa3, 0xe2, 0xfc, 0xab, 0x69, 0x54, - 0x34, 0xe9, 0x58, 0x0a, 0x5e, 0x12, 0x07, 0x52, 0x6f, 0x97, - 0x8d, 0x3a, 0x8c, 0xbb, 0x26, 0xe5, 0x69, 0x82, 0x41, 0x18, - 0xdd, 0x0b, 0x95, 0x33, 0x34, 0xef, 0x9d, 0x74, 0x67, 0x35, - 0xc5, 0x6a, 0x6a, 0x42, 0x6d, 0x49, 0xf0, 0x44, 0xfe, 0xdc, - 0xd4, 0xcf, 0x77, 0xb8, 0x6b, 0x47, 0x89, 0xe5, 0xb1, 0x75, - 0x9d, 0xc6, 0xbd, 0x23, 0x6b, 0xb2, 0xd4, 0x7b, 0x90, 0x1e, - 0x5b, 0x4e, 0xba, 0x43, 0xee, 0xa8, 0x0c, 0xfd, 0x28, 0x09, - 0x6b, 0xe1, 0x16, 0x89, 0x56, 0x3d, 0x69, 0xed, 0xe9, 0xe7, - 0x6c, 0x7a, 0x8e, 0x38, 0xf7, 0x64, 0x1c, 0x0f, 0x91, 0x73, - 0x54, 0xaa, 0xf3, 0x8c, 0x52, 0xdd, 0x93, 0xc5, 0xc4, 0x25, - 0x41, 0xa4, 0x23, 0x79, 0xa6, 0xe5, 0x1e, 0x97, 0xba, 0xd4, - 0x8e, 0x91, 0x3e, 0x88, 0xe2, 0x22, 0x0d, 0x0c, 0x5c, 0xbc, - 0x7e, 0x3e, 0xb6, 0x0f, 0xe7, 0xa8, 0x0b, 0xdf, 0xce, 0xd3, - 0xa5, 0x40, 0x59, 0xa6, 0xeb, 0x99, 0x71, 0x7c, 0xdc, 0x0b, - 0x6f, 0x4e, 0x94, 0x54, 0xb0, 0x61, 0x59, 0xcd, 0xbf, 0x97, - 0xc4, 0xe7, 0x62, 0x4d, 0xa4, 0x6f, 0x34, 0x07, 0xf7, 0xb8, - 0x59, 0x09, 0x62, 0xc3, 0x05, 0x08, 0xd0, 0x24, 0xfc, 0xfb, - 0x70, 0x82, 0x6f, 0xe4, 0x98, 0xc1, 0xf8, 0xb2, 0x8e, 0xc9, - 0x54, 0x81, 0x0f, 0x56, 0x56, 0x10, 0x22, 0x92, 0x34, 0x62, - 0x07, 0x37, 0x77, 0x44, 0x63, 0x3b, 0x1d, 0x14, 0x68, 0xf8, - 0x1c, 0xe7, 0x2a, 0xa4, 0xee, 0xd7, 0x6a, 0x16, 0x9d, 0x33, - 0x2f, 0x8a, 0xe1, 0x32, 0xb0, 0xd0, 0x9f, 0xc4, 0xa6, 0x39, - 0x3b, 0x0c, 0xbb, 0x90, 0xdc, 0xf9, 0xac, 0xdc, 0x20, 0xc3, - 0x2d, 0x26, 0xf3, 0xf0, 0x95, 0xd3, 0xc0, 0x2c, 0x4c, 0x2c, - 0xe3, 0xb3, 0x31, 0xdb, 0x23, 0xef, 0xde, 0xc2, 0x37, 0x5a, - 0xca, 0x9e, 0x24, 0x9e, 0xc9, 0x32, 0xf4, 0x5d, 0x2e, 0x16, - 0xa3, 0x3e, 0x35, 0x0f, 0xbe, 0x3e, 0x4e, 0xd5, 0x42, 0x50, - 0x3b, 0xcf, 0x1f, 0x24, 0xfd, 0x35, 0x7a, 0x6b, 0xa2, 0xba, - 0x11, 0x62, 0xbd, 0xb4, 0x2a, 0xfd, 0x09, 0x7a, 0x24, 0x4d, - 0x7d, 0xf8, 0xe7, 0xfa, 0x75, 0xed, 0x09, 0x39, 0x25, 0x26, - 0xee, 0x06, 0x6c, 0x4d, 0xa6, 0xae, 0x09, 0xdd, 0x26, 0x73, - 0x97, 0x78, 0xcc, 0xdc, 0xd1, 0x36, 0x4e, 0x1b, 0xcc, 0x09, - 0x9f, 0x9a, 0xea, 0xb7, 0xa9, 0x50, 0xe3, 0x31, 0x87, 0x71, - 0x1b, 0x1f, 0x5c, 0x70, 0x95, 0xc9, 0xcd, 0x51, 0x31, 0x1b, - 0xf4, 0x96, 0x2c, 0x85, 0xa4, 0x26, 0xe5, 0xb5, 0x25, 0x5e, - 0x4b, 0x3d, 0x17, 0xde, 0x3a, 0xee, 0x98, 0x3c, 0x06, 0x1d, - 0x02, 0x71, 0xb5, 0x81, 0x84, 0x43, 0xd0, 0xfd, 0x71, 0x63, - 0x1c, 0xe0, 0x8c, 0xc1, 0x5b, 0xf8, 0x46, 0x97, 0xe0, 0x50, - 0xf0, 0xf4, 0xb1, 0xa3, 0x47, 0x5b, 0x83, 0x19, 0x5f, 0x64, - 0x77, 0x0e, 0xee, 0xbe, 0x5c, 0x62, 0x6c, 0x73, 0x77, 0xfa, - 0xf9, 0x6c, 0x27, 0x0d, 0x56, 0x88, 0x2e, 0x5b, 0x2c, 0xdd, - 0xd0, 0xa4, 0x4c, 0x8e, 0x98, 0xaf, 0xd1, 0x2f, 0xde, 0x65, - 0x45, 0xe6, 0x88, 0x85, 0x59, 0x41, 0x87, 0x1e, 0x01, 0x0f, - 0x45, 0x36, 0xea, 0x90, 0x95, 0xd9, 0x50, 0x86, 0x8b, 0x1f, - 0xcc, 0x44, 0x78, 0xe8, 0x07, 0x87, 0xdd, 0x28, 0x72, 0xcd, - 0xc4, 0xe6, 0x58, 0xe0, 0x01, 0xaf, 0x8b, 0x62, 0x7a, 0xd3, - 0x5a, 0x2e, 0x0b, 0x0f, 0x1e, 0x99, 0xb2, 0xd5, 0x26, 0xf8, - 0xcc, 0xab, 0x44, 0x65, 0x2e, 0x71, 0x2b, 0xb2, 0x96, 0xf1, - 0x3b, 0x28, 0x45, 0x1c, 0xbd, 0x7f, 0x46, 0xa9, 0x7e, 0xce, - 0x18, 0xc7, 0xef, 0x14, 0x6c, 0x27, 0xe4, 0x34, 0x3c, 0x5a, - 0xef, 0xca, 0xed, 0xbc, 0xef, 0x54, 0xd2, 0x55, 0xdc, 0x3d, - 0xbb, 0x9d, 0x87, 0xb3, 0xea, 0x18, 0x05, 0x57, 0x5f, 0x45, - 0xb2, 0x1b, 0xaa, 0xd0, 0xec, 0x41, 0x8c, 0x78, 0x4d, 0xe5, - 0x22, 0x4c, 0x96, 0x53, 0xf7, 0xa5, 0xba, 0x31, 0x46, 0x0d, - 0x86, 0xb7, 0xda, 0xd8, 0xfa, 0xd8, 0x70, 0x4e, 0x1e, 0xb7, - 0xac, 0x56, 0x25, 0xeb, 0xc6, 0x36, 0x38, 0x4b, 0x3a, 0x7a, - 0xa0, 0x32, 0xde, 0xb3, 0x01, 0x2c, 0x66, 0x0b, 0xdd, 0x10, - 0x29, 0x68, 0xb9, 0x7a, 0x3b, 0x64, 0x0a, 0xa1, 0x22, 0x29, - 0x87, 0x34, 0xa0, 0xeb, 0xf9, 0x33, 0xd1, 0x2b, 0x69, 0xbb, - 0xfb, 0x16, 0xe2, 0x12, 0xb6, 0x08, 0x03, 0x77, 0x74, 0x4b, - 0x85, 0x9c, 0xb1, 0xbc, 0x09, 0xde, 0xa4, 0x5c, 0x30, 0x6a, - 0x52, 0x4f, 0xef, 0x3c, 0x34, 0xd4, 0x14, 0x10, 0xee, 0xd1, - 0xbc, 0x5d, 0x62, 0x10, 0x60, 0x81, 0xa5, 0xd5, 0x99, 0x88, - 0x47, 0x98, 0x92, 0x4c, 0x15, 0x47, 0xf6, 0x25, 0x28, 0x49, - 0xb5, 0xb6, 0x37, 0x41, 0x4c, 0x70, 0xaf, 0x25, 0xf3, 0xa3, - 0x9d, 0x97, 0x51, 0x6a, 0x99, 0x5b, 0x08, 0x2f, 0x8d, 0x1c, - 0x35, 0x99, 0xca, 0xc1, 0x4a, 0xd3, 0xc0, 0xc9, 0x94, 0x12, - 0xc9, 0x6b, 0x82, 0x57, 0x27, 0xf2, 0x45, 0x4f, 0x83, 0xc6, - 0x14, 0x73, 0x0a, 0x35, 0xc2, 0x89, 0x17, 0x19, 0xf4, 0xaf, - 0x18, 0x7e, 0x7c, 0xdd, 0x09, 0x3f, 0x92, 0x62, 0x4d, 0x31, - 0x86, 0xc8, 0xab, 0x3c, 0x0f, 0x6d, 0xc6, 0xa7, 0x54, 0xa7, - 0x6b, 0x66, 0xf9, 0xb4, 0xc1, 0xa9, 0x8c, 0x9a, 0xe2, 0x25, - 0x4e, 0xe4, 0xcf, 0xd4, 0x48, 0x57, 0x06, 0x50, 0x9b, 0xe1, - 0x14, 0xa5, 0x9c, 0x2a, 0x3a, 0xd4, 0x1b, 0x8b, 0x50, 0xf2, - 0x77, 0x88, 0xa9, 0x4f, 0x65, 0x80, 0x4e, 0xab, 0xfa, 0xb8, - 0x6b, 0xd5, 0x93, 0x02, 0xf6, 0x1a, 0x7c, 0xc3, 0xba, 0x68, - 0xc5, 0x8d, 0x60, 0x72, 0x0c, 0xaa, 0x98, 0x56, 0xc8, 0xe8, - 0xf3, 0x6f, 0x27, 0x26, 0x40, 0x25, 0x3b, 0x30, 0x13, 0xd0, - 0x89, 0x82, 0x81, 0x01, 0xac, 0xe4, 0xe0, 0x69, 0x44, 0x10, - 0x54, 0x25, 0x07, 0xf3, 0x54, 0x03, 0x4f, 0xaf, 0xb6, 0xe2, - 0xd2, 0x18, 0x78, 0x9a, 0x1d, 0x58, 0x31, 0xe8, 0x2c, 0x3b, - 0x5e, 0x62, 0xd0, 0x79, 0x76, 0xd2, 0x3c, 0x06, 0x5d, 0x64, - 0xe7, 0x81, 0x63, 0xd0, 0x67, 0x0d, 0xfa, 0x7c, 0xf5, 0x39, - 0x03, 0xfa, 0xa2, 0x41, 0x5f, 0xae, 0xbe, 0x64, 0x40, 0x5f, - 0x35, 0xe8, 0xeb, 0xd5, 0xd7, 0x0c, 0xe8, 0x52, 0x83, 0x2e, - 0xaf, 0x2e, 0xd3, 0xa0, 0x43, 0x93, 0x88, 0x0f, 0x2b, 0x39, - 0xdb, 0xed, 0x13, 0xd8, 0x49, 0x9e, 0x93, 0x49, 0xa0, 0x95, - 0xbc, 0xa0, 0x20, 0x81, 0x9e, 0xe6, 0x85, 0xff, 0x09, 0xf4, - 0x4c, 0x43, 0x21, 0x22, 0xaa, 0x9c, 0x65, 0xa1, 0xe7, 0x1a, - 0x0a, 0x5e, 0xa5, 0x92, 0x91, 0xe8, 0xa1, 0xae, 0x58, 0xcd, - 0xd6, 0x64, 0x60, 0x67, 0x39, 0x81, 0x56, 0x0c, 0x3b, 0xcf, - 0x71, 0x55, 0x31, 0xec, 0x22, 0xc7, 0xcb, 0xc5, 0xb0, 0xcf, - 0x39, 0xee, 0x3c, 0x86, 0x7d, 0xc9, 0x71, 0xd4, 0x31, 0xec, - 0x6b, 0x4e, 0x90, 0x10, 0xc3, 0x2e, 0x73, 0xbc, 0x73, 0x04, - 0xcb, 0xef, 0x29, 0x49, 0x29, 0x7f, 0x61, 0x13, 0x37, 0x0f, - 0x38, 0xac, 0xe1, 0xc8, 0x1a, 0x3a, 0xb5, 0xd4, 0x67, 0xa7, - 0x96, 0xfb, 0x99, 0xe3, 0xba, 0x8b, 0xaf, 0xe2, 0xe9, 0x0c, - 0xf0, 0xaf, 0xd0, 0x0b, 0x33, 0xdf, 0x43, 0x29, 0x96, 0xf4, - 0xb8, 0xba, 0xf0, 0x21, 0x26, 0x98, 0xaa, 0xd3, 0x1f, 0x05, - 0xe6, 0xb3, 0x62, 0x2c, 0x3e, 0x15, 0x52, 0x92, 0x72, 0x38, - 0x68, 0x64, 0x20, 0x2e, 0xce, 0x8b, 0x2d, 0xe2, 0x22, 0x81, - 0x4b, 0xb9, 0x5f, 0x34, 0x4b, 0x89, 0x90, 0xae, 0xa9, 0x37, - 0x93, 0x44, 0xf9, 0xb4, 0xe2, 0xcc, 0x40, 0x28, 0xa2, 0xe3, - 0xf3, 0x12, 0x28, 0x78, 0xe9, 0xbc, 0xef, 0x91, 0x15, 0x29, - 0x89, 0x16, 0xfa, 0x3e, 0xf5, 0xfc, 0x72, 0x48, 0x90, 0x80, - 0x12, 0xdc, 0x53, 0x59, 0x56, 0x16, 0x10, 0x5e, 0x2d, 0x35, - 0x5a, 0x19, 0x62, 0x3e, 0x24, 0x0d, 0xb4, 0x9c, 0x34, 0x6a, - 0x2e, 0x84, 0xf8, 0x5c, 0x2f, 0xab, 0xa7, 0x18, 0xdc, 0x83, - 0x04, 0x3f, 0xb8, 0x4b, 0xca, 0xd2, 0xaa, 0xe3, 0x89, 0x5a, - 0x1e, 0x25, 0xfd, 0x15, 0x1c, 0x28, 0x71, 0xd9, 0x24, 0x02, - 0x4b, 0xa3, 0xdc, 0xe2, 0x1b, 0x01, 0x9e, 0x0e, 0xe9, 0x8b, - 0x13, 0xba, 0x0d, 0xa9, 0xe4, 0x7a, 0xd6, 0x1e, 0xa9, 0x5c, - 0xef, 0x0b, 0xf1, 0x22, 0x94, 0x26, 0x5e, 0x17, 0xcf, 0xe7, - 0xac, 0x64, 0x47, 0xb5, 0x7c, 0x8f, 0xe2, 0xf2, 0x6d, 0x27, - 0x39, 0x9c, 0x57, 0x84, 0x58, 0xcb, 0x87, 0x10, 0x2f, 0x99, - 0xa8, 0xd9, 0x35, 0x87, 0xba, 0xc4, 0x1d, 0xd8, 0x80, 0x52, - 0xfc, 0xdf, 0x63, 0x9e, 0x0a, 0xdd, 0x2f, 0xd5, 0xd4, 0xec, - 0xee, 0x89, 0x90, 0xb8, 0x08, 0xa3, 0xab, 0x92, 0xcd, 0xbb, - 0x67, 0x52, 0xac, 0xcc, 0x5c, 0xb6, 0x21, 0x92, 0x54, 0xc9, - 0xca, 0xdb, 0x91, 0x74, 0x8c, 0xf1, 0x0c, 0x3a, 0xf0, 0x1c, - 0x6d, 0x5b, 0x2c, 0xdc, 0x9f, 0x6d, 0x01, 0x76, 0xaa, 0x8c, - 0x80, 0xdb, 0xe1, 0x4f, 0xba, 0xc0, 0xe8, 0x6a, 0x56, 0x8a, - 0x0e, 0xa4, 0x06, 0x92, 0x4d, 0x4b, 0xa2, 0x78, 0x01, 0x29, - 0x89, 0x01, 0xa1, 0xb1, 0x4b, 0x16, 0xbc, 0x64, 0x5f, 0x74, - 0x18, 0x8f, 0xd3, 0xc6, 0xbc, 0xbe, 0xe8, 0x08, 0x4e, 0xd4, - 0xb2, 0x76, 0x09, 0x4e, 0x84, 0x3f, 0x11, 0x2f, 0x6a, 0x31, - 0xec, 0x3e, 0x5b, 0x61, 0xcf, 0xf7, 0xca, 0x55, 0xd7, 0x87, - 0x86, 0x95, 0x33, 0x8f, 0x7d, 0x31, 0x9d, 0x09, 0x19, 0xed, - 0x47, 0x2f, 0x8e, 0x85, 0x07, 0x7f, 0xca, 0xb9, 0x89, 0x01, - 0x9b, 0x91, 0x92, 0xe2, 0x1e, 0xe8, 0xad, 0x3d, 0xc5, 0x69, - 0xa8, 0xb9, 0x20, 0x62, 0x76, 0x8a, 0x78, 0xea, 0x05, 0xfb, - 0x9e, 0x8b, 0x92, 0xd5, 0x4a, 0xf2, 0x4c, 0x57, 0xe5, 0x91, - 0x82, 0x78, 0xe4, 0xe6, 0x32, 0xc3, 0x16, 0x4f, 0x14, 0x7e, - 0x13, 0x9e, 0xa9, 0xfb, 0xed, 0xb9, 0x58, 0x3e, 0x97, 0x94, - 0x80, 0x78, 0x62, 0x65, 0xc5, 0x6c, 0x07, 0x62, 0x32, 0x77, - 0x85, 0x57, 0x2e, 0x6e, 0x71, 0x88, 0x07, 0xe6, 0xae, 0xec, - 0x08, 0x72, 0x20, 0xed, 0xe7, 0xe5, 0x9a, 0x34, 0xf4, 0xd6, - 0x84, 0x8b, 0x55, 0x3c, 0xf0, 0xf2, 0x44, 0x39, 0x7c, 0x75, - 0x41, 0x89, 0xc5, 0xb4, 0x24, 0x33, 0x0f, 0x64, 0x1a, 0xbe, - 0x96, 0xe2, 0xe5, 0x81, 0xe0, 0xe2, 0x66, 0x39, 0x97, 0x8b, - 0x53, 0x56, 0x25, 0x8d, 0xed, 0x03, 0xf3, 0x38, 0x0b, 0xcb, - 0x46, 0x6f, 0x0f, 0xc2, 0x9b, 0x89, 0xc8, 0xfb, 0x18, 0x2c, - 0xd4, 0x23, 0x81, 0xb8, 0xf6, 0xa5, 0x14, 0x2f, 0x7f, 0x91, - 0x99, 0xa4, 0xe3, 0x92, 0x28, 0x4b, 0xe8, 0x8d, 0x57, 0x77, - 0x4d, 0x4b, 0xb6, 0xe0, 0xaf, 0x50, 0xea, 0x08, 0xbe, 0x00, - 0x2d, 0xbd, 0x1d, 0x1b, 0x4f, 0x28, 0x82, 0x2b, 0xe3, 0x30, - 0xa8, 0xd5, 0xf8, 0xdc, 0x3d, 0x68, 0x1a, 0x95, 0xa9, 0xb9, - 0xd1, 0xd9, 0xdf, 0x74, 0x92, 0x92, 0xc0, 0xf1, 0x35, 0x3b, - 0xbd, 0x81, 0x25, 0x9d, 0xab, 0xc4, 0x45, 0xc4, 0x24, 0xa9, - 0x21, 0x33, 0x25, 0x98, 0x94, 0xc1, 0xfd, 0xb5, 0x26, 0x26, - 0xee, 0xa9, 0x04, 0x93, 0xe9, 0xd1, 0xbc, 0x6d, 0x01, 0xff, - 0x57, 0xde, 0xb7, 0x36, 0xb7, 0x71, 0xe4, 0x8a, 0x7e, 0xd6, - 0xbf, 0x18, 0x73, 0xef, 0x2e, 0xc9, 0x15, 0x45, 0x89, 0x94, - 0x1c, 0xc7, 0x66, 0xe8, 0x94, 0x23, 0xd9, 0x1b, 0x9d, 0xc4, - 0x96, 0xca, 0x52, 0xe2, 0xad, 0xf8, 0xe8, 0xb8, 0x46, 0x9c, - 0xa1, 0x38, 0x11, 0x39, 0xc3, 0xe5, 0x0c, 0xf5, 0x48, 0xa2, - 0xff, 0x7e, 0x1b, 0xfd, 0x44, 0xbf, 0xe6, 0x21, 0xc9, 0xf6, - 0xa9, 0x7b, 0x53, 0x29, 0x4b, 0x9a, 0x06, 0xd0, 0x2f, 0x34, - 0x1a, 0x8d, 0x46, 0x03, 0x1c, 0xe4, 0x6d, 0x38, 0x8b, 0x1d, - 0x4c, 0x2e, 0x4b, 0xe7, 0x51, 0x72, 0x15, 0xe7, 0x65, 0xf8, - 0x64, 0xfc, 0x0a, 0xc6, 0x38, 0x5e, 0x22, 0xb7, 0x59, 0x41, - 0xdd, 0xb5, 0x9c, 0x8d, 0x7c, 0x1f, 0xaf, 0xd3, 0x24, 0x73, - 0x1d, 0x2b, 0x8e, 0xc3, 0x49, 0x32, 0x05, 0x8b, 0xe5, 0x32, - 0x09, 0x5d, 0x27, 0x53, 0x59, 0xbe, 0x9e, 0x5c, 0xce, 0x99, - 0x35, 0xbe, 0x8e, 0x5f, 0x83, 0x40, 0xfb, 0x21, 0x5b, 0x5f, - 0x84, 0x49, 0x8a, 0x1c, 0x33, 0xf4, 0x43, 0xb3, 0x80, 0x23, - 0x53, 0x59, 0xcc, 0xe8, 0x09, 0x0b, 0x4e, 0xce, 0x60, 0x7a, - 0x1a, 0x0c, 0x5f, 0xec, 0x3d, 0x85, 0xe6, 0x90, 0x3f, 0x78, - 0x35, 0xdb, 0xf0, 0x49, 0xd6, 0x85, 0x4d, 0x53, 0x8a, 0x0c, - 0x77, 0x95, 0x34, 0x8f, 0xee, 0x02, 0xe0, 0x75, 0x98, 0x17, - 0xc2, 0xc9, 0xe2, 0x9b, 0x97, 0xdf, 0x50, 0xfb, 0x84, 0xf4, - 0x2e, 0x1b, 0x4a, 0xef, 0xb2, 0xa1, 0x8d, 0x38, 0x0d, 0x8b, - 0xd2, 0x1e, 0xbc, 0x06, 0x8f, 0xa3, 0xf3, 0xf5, 0xea, 0xb6, - 0x6c, 0x14, 0xdf, 0x84, 0x97, 0x61, 0x36, 0xcd, 0x4a, 0x41, - 0x92, 0xdf, 0x13, 0x64, 0x40, 0xa0, 0x70, 0xd4, 0xfa, 0xcb, - 0xac, 0xc0, 0xe4, 0xc7, 0xee, 0xf6, 0xf3, 0xe7, 0x36, 0xda, - 0x3a, 0x0d, 0xa7, 0x2c, 0x02, 0x81, 0x65, 0x7b, 0x10, 0x30, - 0xff, 0x0a, 0xe7, 0xe1, 0x32, 0x94, 0xcf, 0x53, 0xb1, 0xf9, - 0x45, 0x81, 0x2c, 0xce, 0x13, 0x31, 0x40, 0xd8, 0x9c, 0x22, - 0x01, 0xd6, 0x61, 0x14, 0xce, 0x89, 0xac, 0xe4, 0xd7, 0x52, - 0x9e, 0xd1, 0x20, 0x60, 0x74, 0xdb, 0x99, 0xe9, 0x56, 0x3e, - 0x51, 0xfc, 0x63, 0x96, 0x66, 0x73, 0x76, 0xe2, 0xa6, 0xef, - 0xa0, 0x2d, 0x00, 0xa2, 0x1d, 0x13, 0x8e, 0x5f, 0x84, 0xa2, - 0x43, 0xba, 0x41, 0x44, 0x42, 0x65, 0xf9, 0x2a, 0x2c, 0x9d, - 0x95, 0x9f, 0xae, 0xc3, 0xdf, 0xc3, 0x79, 0x2c, 0xee, 0x99, - 0xdc, 0xe3, 0xf2, 0x36, 0xfc, 0x7d, 0xbd, 0xca, 0xca, 0x21, - 0x56, 0xff, 0x59, 0xc7, 0xb9, 0x70, 0xed, 0x7c, 0x4e, 0x44, - 0x85, 0x66, 0x41, 0x95, 0x70, 0x49, 0x74, 0x4d, 0x7d, 0xce, - 0x4e, 0x48, 0xaf, 0xec, 0xd6, 0xbc, 0x23, 0x0b, 0x79, 0x5d, - 0x56, 0xcf, 0xbb, 0x64, 0x1d, 0x3b, 0x0c, 0x78, 0xb2, 0x38, - 0x5b, 0x4d, 0xb3, 0x39, 0xbe, 0x92, 0xa2, 0x94, 0xfc, 0xe6, - 0x47, 0x85, 0xb8, 0x5e, 0xc4, 0x61, 0xd9, 0x40, 0x1d, 0x13, - 0xbe, 0xf8, 0x74, 0xcc, 0x3c, 0x2f, 0xdd, 0x8d, 0x3f, 0x26, - 0xdc, 0xb3, 0x76, 0x58, 0x6f, 0x64, 0x79, 0x52, 0x4c, 0xc2, - 0x64, 0x95, 0xda, 0x56, 0x3a, 0x09, 0x91, 0xcd, 0xd2, 0x25, - 0x77, 0xfb, 0xf0, 0x35, 0x03, 0x7c, 0x76, 0xdf, 0x32, 0x07, - 0xcc, 0xb2, 0x75, 0xfc, 0x3e, 0x5c, 0x65, 0x45, 0x96, 0xb2, - 0x6b, 0x70, 0xc3, 0x16, 0x2a, 0x60, 0x4e, 0xc2, 0x64, 0xc9, - 0xf6, 0x74, 0x0f, 0x17, 0x9e, 0x86, 0xb3, 0x84, 0x31, 0x98, - 0x87, 0xc2, 0x29, 0xd1, 0xf5, 0xae, 0xc3, 0xb2, 0x09, 0x3b, - 0x85, 0x36, 0x14, 0xe1, 0x72, 0x5d, 0xb6, 0xa4, 0x3f, 0x84, - 0x97, 0x71, 0x19, 0x91, 0x0f, 0xa0, 0x72, 0xe5, 0x18, 0x82, - 0x01, 0xdc, 0x8d, 0x68, 0xac, 0x40, 0x08, 0x5a, 0x73, 0x15, - 0xae, 0x68, 0x7c, 0xf1, 0x60, 0xba, 0x4e, 0x69, 0x84, 0xf7, - 0x4e, 0x3c, 0x4f, 0xa2, 0x6e, 0xf0, 0x27, 0x0f, 0x9d, 0x09, - 0xe5, 0xab, 0xb8, 0x20, 0x00, 0x51, 0x36, 0x59, 0x43, 0x9a, - 0xe5, 0xfe, 0x45, 0x5c, 0xbc, 0x9e, 0xd3, 0x8c, 0xcb, 0x3f, - 0xdc, 0x1e, 0x46, 0x0c, 0x7e, 0x64, 0x07, 0x2f, 0x84, 0xff, - 0x92, 0x69, 0xe7, 0x09, 0xc1, 0xee, 0xfe, 0xe9, 0x2e, 0x86, - 0xff, 0x20, 0x90, 0x4e, 0x36, 0x8f, 0xfb, 0xf3, 0xec, 0xa2, - 0xd3, 0x7e, 0x97, 0x05, 0x31, 0x23, 0x1d, 0x4c, 0x21, 0xee, - 0x18, 0x0b, 0xdc, 0x45, 0xda, 0xd7, 0x0e, 0x36, 0x83, 0xb2, - 0x8a, 0xee, 0xdc, 0x9f, 0x49, 0xdd, 0xeb, 0x15, 0x84, 0x4f, - 0x2b, 0x1c, 0x78, 0x77, 0x23, 0x1c, 0xd0, 0x07, 0x3a, 0xfa, - 0x81, 0x8c, 0xda, 0xf1, 0x75, 0xf4, 0x63, 0x98, 0xef, 0xc3, - 0x45, 0x6f, 0x1c, 0x8d, 0xa7, 0xe1, 0x3c, 0x8f, 0x47, 0xa2, - 0x1c, 0xe2, 0x3e, 0x95, 0x95, 0x9f, 0xc3, 0x0d, 0x4c, 0x29, - 0xc4, 0xe9, 0x61, 0x74, 0xe3, 0x2d, 0xa4, 0x49, 0x17, 0x20, - 0x5f, 0x6e, 0x5e, 0x02, 0xc2, 0xd2, 0x64, 0x7b, 0x01, 0x62, - 0x9e, 0xfd, 0xc8, 0x5d, 0x9a, 0xcf, 0xb2, 0xeb, 0x57, 0x73, - 0x08, 0xdb, 0x9b, 0x8f, 0xaf, 0x13, 0x72, 0x40, 0xbf, 0x26, - 0xe3, 0x3e, 0xa1, 0xd1, 0xdd, 0xfa, 0xb3, 0x55, 0x3c, 0xed, - 0xe7, 0x90, 0xee, 0x31, 0xff, 0x40, 0x46, 0xbd, 0xd3, 0x86, - 0x28, 0xe7, 0xed, 0xae, 0xc4, 0x25, 0xd3, 0x7e, 0x52, 0x84, - 0xc5, 0x3a, 0x3f, 0x84, 0x47, 0x0a, 0x57, 0xe1, 0x5c, 0x96, - 0x44, 0x84, 0x51, 0x4f, 0x65, 0xfe, 0xc0, 0xfc, 0xf0, 0x60, - 0x9c, 0xae, 0xe7, 0xac, 0x98, 0x85, 0x49, 0x7a, 0x07, 0x99, - 0x55, 0xc3, 0x1b, 0x5e, 0x4e, 0x78, 0x69, 0x77, 0x4f, 0x35, - 0xa9, 0x58, 0x1c, 0xa6, 0x09, 0x30, 0xd8, 0x0e, 0xc2, 0x80, - 0x40, 0xc3, 0xfb, 0x3f, 0x25, 0xfb, 0xd9, 0x7c, 0x1c, 0x0c, - 0x86, 0xb8, 0x0d, 0x6f, 0x4e, 0x44, 0xfd, 0x87, 0x07, 0x04, - 0x49, 0xd6, 0x04, 0xc5, 0xf3, 0x2c, 0x5b, 0xfe, 0x0b, 0x40, - 0xf6, 0xd3, 0x62, 0xbc, 0x23, 0x3f, 0xd3, 0xf0, 0xb8, 0xd0, - 0xc0, 0xfc, 0xf5, 0x0d, 0xd1, 0xdb, 0xa0, 0x01, 0xfa, 0xb0, - 0x50, 0x00, 0xc8, 0x86, 0xe0, 0x29, 0x9f, 0xa9, 0xc0, 0xbb, - 0x66, 0x95, 0x61, 0x7a, 0x4b, 0x23, 0x22, 0xf3, 0xe2, 0xd7, - 0x29, 0x84, 0x93, 0xb2, 0x86, 0xbd, 0x58, 0xfc, 0x9c, 0x85, - 0x91, 0xf5, 0x3d, 0xa4, 0xd9, 0x2e, 0x4e, 0xe2, 0x82, 0x05, - 0x55, 0x3e, 0x48, 0xf2, 0xe5, 0x3c, 0xbc, 0x25, 0x55, 0xb4, - 0x52, 0x08, 0xba, 0x23, 0xe1, 0x56, 0x31, 0xcf, 0xc0, 0x00, - 0xc9, 0x24, 0x0c, 0x1a, 0x6c, 0x1a, 0x0f, 0x17, 0xe1, 0x45, - 0x7c, 0x74, 0xfe, 0x3b, 0x81, 0x81, 0xe6, 0x7f, 0x84, 0x36, - 0xf6, 0xee, 0xf7, 0xcf, 0xd9, 0x88, 0x87, 0x06, 0x63, 0x33, - 0x51, 0x84, 0xe7, 0x94, 0xf8, 0xc9, 0x6a, 0x02, 0x84, 0x5b, - 0xad, 0x5e, 0xeb, 0x3a, 0x5c, 0x81, 0xd9, 0xea, 0xd3, 0x2d, - 0xf5, 0xce, 0xed, 0x2f, 0xd3, 0x0b, 0xf4, 0x11, 0xd2, 0xa0, - 0xc0, 0x17, 0x20, 0x03, 0x6d, 0xdc, 0xde, 0x0e, 0xc8, 0x94, - 0xf0, 0x94, 0x28, 0x64, 0x87, 0x57, 0x9c, 0x4c, 0xfe, 0x20, - 0x14, 0x93, 0xa8, 0xa3, 0x02, 0xd4, 0x31, 0x6e, 0x43, 0x28, - 0x34, 0xfc, 0xdc, 0x4b, 0x29, 0x14, 0x88, 0x2a, 0x07, 0x29, - 0x64, 0xb2, 0x1c, 0x52, 0xa1, 0x9a, 0x14, 0x69, 0xa4, 0x3a, - 0xa7, 0x9c, 0xca, 0x7f, 0xb8, 0xa5, 0x89, 0xe3, 0xde, 0x85, - 0x8b, 0xb8, 0xc3, 0xa3, 0xd8, 0x75, 0x3f, 0xee, 0xd0, 0x9e, - 0xf2, 0xe5, 0xbf, 0xfd, 0xcf, 0xe0, 0x34, 0xbb, 0xb8, 0x98, - 0xc7, 0xc1, 0x79, 0x5c, 0x5c, 0xc7, 0x71, 0x1a, 0x84, 0x11, - 0x0d, 0xed, 0x1d, 0xd2, 0xbc, 0x32, 0x64, 0xdd, 0xc1, 0x1f, - 0x50, 0x27, 0x04, 0x0b, 0x5f, 0x92, 0xa1, 0xa1, 0x89, 0x78, - 0x68, 0x7c, 0x32, 0x48, 0x8a, 0x51, 0x64, 0xcb, 0x77, 0xe1, - 0x55, 0x70, 0x3d, 0x23, 0x98, 0x00, 0x45, 0x63, 0x9f, 0x4d, - 0xe6, 0xc9, 0xe4, 0x32, 0x0f, 0x32, 0xf6, 0x29, 0x21, 0x03, - 0x1a, 0xfc, 0x73, 0x1b, 0x6a, 0x13, 0xc2, 0x36, 0x00, 0x5a, - 0x0c, 0xb5, 0x23, 0x64, 0x2e, 0x74, 0xe5, 0x86, 0x0f, 0xcc, - 0xe2, 0x96, 0x15, 0xf2, 0x81, 0xd9, 0x48, 0xa6, 0x41, 0xe7, - 0xa6, 0x3f, 0x11, 0x7d, 0x09, 0xc6, 0x63, 0xc2, 0x2b, 0x02, - 0x44, 0xc8, 0x6c, 0x0c, 0xb0, 0x49, 0xca, 0x03, 0xd4, 0x60, - 0x46, 0xe6, 0x8e, 0x0c, 0x68, 0x1e, 0xbb, 0xe0, 0x15, 0x39, - 0x0e, 0x09, 0xff, 0xde, 0x89, 0x9c, 0x02, 0xb2, 0xd9, 0x20, - 0x47, 0x20, 0x74, 0x25, 0x11, 0x24, 0x1d, 0xa2, 0xf8, 0xc5, - 0x80, 0xdb, 0xe5, 0x31, 0xd0, 0x08, 0xd6, 0x9c, 0xcc, 0x1e, - 0x05, 0x09, 0xcf, 0x09, 0x45, 0x09, 0x31, 0x1e, 0xb7, 0x7e, - 0x04, 0x0b, 0x4d, 0x37, 0xf8, 0xeb, 0x2f, 0xed, 0x2b, 0x0b, - 0x55, 0x6b, 0x7d, 0x66, 0xe2, 0x86, 0x7d, 0x47, 0x92, 0x8b, - 0xb5, 0x8c, 0x8b, 0x76, 0x5e, 0x8d, 0xbf, 0x99, 0x1c, 0xe9, - 0x5d, 0x76, 0x1d, 0x74, 0x8c, 0x26, 0x12, 0xd6, 0xfe, 0x39, - 0x49, 0x2f, 0xf3, 0x3a, 0x4c, 0xc3, 0x61, 0xc5, 0x44, 0x40, - 0xc8, 0xca, 0x4e, 0x42, 0x85, 0x56, 0x90, 0x04, 0xdf, 0x49, - 0x52, 0x7d, 0x16, 0xd1, 0x8f, 0x7c, 0xdc, 0xdc, 0x94, 0x13, - 0x02, 0xb3, 0xd6, 0xc1, 0x43, 0x26, 0xa0, 0x3f, 0x26, 0x67, - 0x7d, 0x88, 0x8f, 0xd7, 0xed, 0x76, 0x19, 0xa4, 0xd8, 0x75, - 0x31, 0x00, 0x8d, 0xc9, 0xdb, 0x8f, 0x94, 0x6c, 0xa0, 0x69, - 0x78, 0xf8, 0xfc, 0x88, 0xa9, 0x6c, 0x80, 0xae, 0x44, 0x0b, - 0x1f, 0x32, 0xdf, 0x24, 0xc3, 0x85, 0x01, 0x51, 0xdc, 0x62, - 0x39, 0x25, 0xbd, 0x78, 0xbe, 0x48, 0x8b, 0xde, 0x24, 0x9b, - 0x67, 0x2b, 0xd1, 0x39, 0x18, 0xc7, 0xa4, 0x17, 0xa8, 0xf0, - 0xc2, 0x3d, 0x39, 0x16, 0x23, 0xb6, 0xbb, 0xc2, 0x06, 0x33, - 0x3f, 0x29, 0x68, 0xa8, 0xa1, 0x3e, 0x90, 0x3a, 0x8c, 0xc6, - 0x94, 0x50, 0x3f, 0x89, 0x46, 0x6a, 0x2e, 0xc8, 0xd0, 0xfc, - 0xb2, 0xa2, 0xe2, 0x35, 0xbe, 0x0e, 0x7e, 0x79, 0xff, 0x73, - 0x87, 0xc1, 0xc0, 0xae, 0xc4, 0xc7, 0xdc, 0x22, 0x44, 0xe0, - 0xc7, 0x1c, 0xaf, 0x3f, 0x0b, 0xf3, 0x19, 0x03, 0x53, 0x4d, - 0xa9, 0x39, 0xaf, 0x22, 0x2e, 0xb2, 0x7f, 0x6a, 0x39, 0x84, - 0x73, 0x72, 0x55, 0x71, 0xd5, 0x68, 0xdf, 0x89, 0xe6, 0x7d, - 0x11, 0xa6, 0xb3, 0x79, 0xe0, 0x3c, 0x9c, 0x5c, 0x42, 0xbe, - 0xad, 0x34, 0x02, 0x47, 0xe6, 0x15, 0xb4, 0x4e, 0x6b, 0x19, - 0xb0, 0xa9, 0x73, 0x61, 0x13, 0x29, 0x53, 0xac, 0xd6, 0xb1, - 0xe2, 0xe7, 0x48, 0x95, 0x55, 0xb0, 0x27, 0x9b, 0x44, 0x5f, - 0xfd, 0x94, 0x93, 0x4c, 0x41, 0x83, 0x95, 0x32, 0xc9, 0x8b, - 0x9f, 0x12, 0x9a, 0x72, 0x80, 0x9c, 0xf8, 0xf3, 0x0e, 0x04, - 0x5d, 0xec, 0x05, 0x97, 0xf1, 0x2d, 0x5d, 0x3a, 0xbc, 0x51, - 0x5c, 0x1c, 0xb0, 0x2d, 0xb0, 0x4f, 0x0a, 0x19, 0x1c, 0x69, - 0x1f, 0x91, 0x38, 0x1d, 0xf2, 0x77, 0x30, 0x7e, 0x29, 0xda, - 0xcf, 0x61, 0x21, 0xec, 0x64, 0x36, 0xa5, 0x31, 0x1c, 0x3f, - 0x12, 0x80, 0x33, 0x2a, 0x4d, 0xdb, 0x19, 0xa5, 0xd0, 0x0e, - 0xbe, 0xe7, 0x6b, 0xca, 0xac, 0x99, 0x82, 0xca, 0xea, 0x7b, - 0x2c, 0x10, 0x65, 0x37, 0x78, 0x11, 0xd0, 0x3a, 0x08, 0x05, - 0x5e, 0xc2, 0xbb, 0xc5, 0xa6, 0xce, 0x2d, 0x9a, 0x3e, 0xcd, - 0x92, 0x28, 0xfe, 0x44, 0x06, 0x61, 0xbd, 0x48, 0x3b, 0x34, - 0x0e, 0xe5, 0x61, 0x04, 0xab, 0xeb, 0x53, 0x9a, 0xf5, 0x08, - 0x73, 0x7c, 0x02, 0x18, 0xde, 0x3f, 0xb2, 0x1d, 0xb3, 0x65, - 0x72, 0xce, 0xf7, 0x4c, 0x0e, 0xce, 0xc8, 0x43, 0x29, 0x63, - 0x0e, 0xa2, 0xf5, 0x24, 0xdf, 0x11, 0xa0, 0xfe, 0x2a, 0xbb, - 0x96, 0x7c, 0xa1, 0xd8, 0x02, 0x00, 0xe5, 0x72, 0x83, 0x97, - 0xf6, 0x84, 0x98, 0x80, 0x06, 0x46, 0x81, 0x4f, 0xf9, 0x47, - 0xd6, 0x04, 0xb1, 0x3b, 0x02, 0x5b, 0xf0, 0xc6, 0x08, 0x46, - 0x10, 0x62, 0x86, 0x13, 0x61, 0xfb, 0xc7, 0xcf, 0x44, 0x75, - 0xea, 0xd3, 0x9d, 0x32, 0xee, 0xb4, 0xa1, 0x67, 0x5c, 0x77, - 0x04, 0x26, 0x60, 0xb1, 0x78, 0xdd, 0x28, 0x64, 0x9f, 0xd5, - 0xe0, 0x49, 0x13, 0x03, 0x2c, 0x91, 0xb4, 0x61, 0x23, 0x7c, - 0x06, 0x1d, 0xff, 0x14, 0x53, 0x3d, 0xeb, 0x13, 0x4f, 0x46, - 0x31, 0xbd, 0x80, 0x26, 0x1e, 0xb0, 0x32, 0xc1, 0x11, 0xb0, - 0x7f, 0xb2, 0xc4, 0x08, 0x3c, 0xd9, 0x58, 0xb7, 0xcf, 0xb1, - 0xa3, 0xb1, 0x04, 0x1e, 0x49, 0x50, 0x77, 0xa2, 0xb9, 0xc1, - 0xbd, 0xb0, 0x86, 0x15, 0x58, 0x56, 0xee, 0xf5, 0x3a, 0xe0, - 0x32, 0x2d, 0xbc, 0x17, 0xf8, 0x8e, 0x0d, 0x16, 0x57, 0xec, - 0xe1, 0xd1, 0x72, 0x3e, 0x9b, 0xd0, 0x73, 0x00, 0x3e, 0xdf, - 0x91, 0xf1, 0x61, 0xac, 0x1d, 0x6c, 0x6f, 0x4f, 0xb2, 0x28, - 0xe6, 0xa9, 0x3f, 0xe0, 0xac, 0x66, 0x1d, 0x09, 0x08, 0x01, - 0x31, 0x9c, 0x01, 0x01, 0xa7, 0xba, 0x30, 0xf9, 0x46, 0xc8, - 0xb9, 0x40, 0xfb, 0xf9, 0xfa, 0x1c, 0xa2, 0x54, 0xa7, 0x17, - 0x9d, 0x41, 0x77, 0x44, 0xe0, 0x8f, 0xd7, 0x44, 0x1b, 0xa5, - 0x08, 0x49, 0x4a, 0x16, 0xca, 0x2a, 0x81, 0xa6, 0xf6, 0x94, - 0x4a, 0xc5, 0xb5, 0xb8, 0xbf, 0x05, 0x70, 0xe3, 0x4e, 0x94, - 0x61, 0x16, 0x0c, 0x99, 0x56, 0x85, 0x8e, 0x85, 0x01, 0x61, - 0x0f, 0xa0, 0xc1, 0xba, 0x42, 0xce, 0xaa, 0xed, 0x4d, 0x57, - 0xed, 0x9b, 0xed, 0x17, 0x41, 0x7b, 0x93, 0x36, 0x79, 0x54, - 0x46, 0x86, 0xa0, 0xbb, 0x76, 0x12, 0x86, 0xee, 0x1c, 0x01, - 0x41, 0x0e, 0x56, 0x82, 0x0b, 0xf5, 0x09, 0x3d, 0xef, 0x68, - 0xdb, 0xbd, 0x1b, 0xac, 0x6c, 0x7c, 0x19, 0x9e, 0x0b, 0x82, - 0x68, 0x42, 0x7f, 0x9b, 0x31, 0xbd, 0x09, 0xb8, 0x81, 0xe7, - 0xda, 0x39, 0x22, 0xbb, 0x33, 0x61, 0x05, 0xaa, 0x62, 0x76, - 0xc4, 0x4a, 0xdb, 0xc0, 0x7a, 0x9d, 0x9f, 0x62, 0x1f, 0xdc, - 0xe5, 0x6e, 0x8e, 0xa6, 0x9d, 0xf6, 0xdf, 0xda, 0xdd, 0xe0, - 0x09, 0x11, 0x5a, 0x5b, 0x03, 0xd5, 0x0e, 0x25, 0x21, 0xa0, - 0x8e, 0xc3, 0xa8, 0xce, 0x6c, 0x6f, 0xb6, 0x01, 0xb6, 0x3d, - 0x92, 0x24, 0x40, 0x44, 0x49, 0x0a, 0x56, 0x33, 0x41, 0xc7, - 0xd7, 0xa7, 0x86, 0x57, 0x45, 0xa6, 0x00, 0xd5, 0xac, 0xe0, - 0xf9, 0xce, 0x20, 0x7e, 0x7a, 0xa6, 0x36, 0x25, 0x4a, 0x1e, - 0xe2, 0x92, 0x7b, 0x4d, 0x33, 0x17, 0x3e, 0x52, 0xb3, 0x2a, - 0x1f, 0x72, 0xbe, 0x78, 0xee, 0x5c, 0xcb, 0x6f, 0x4e, 0x8e, - 0x7c, 0x64, 0xec, 0xc2, 0xfc, 0x36, 0x9d, 0x68, 0xcb, 0x8f, - 0xa2, 0x84, 0xf0, 0x8e, 0x21, 0x38, 0x4a, 0xa9, 0x14, 0xe8, - 0x18, 0xdb, 0x84, 0x8e, 0xa3, 0xa0, 0x38, 0xae, 0xeb, 0x3c, - 0xb9, 0xe1, 0x13, 0x8d, 0x1d, 0x2a, 0xb2, 0xb9, 0x06, 0x91, - 0x10, 0x6d, 0xf8, 0x37, 0x10, 0xbb, 0x62, 0x2e, 0x58, 0x33, - 0xe0, 0x6c, 0x4f, 0x93, 0x68, 0xb1, 0x94, 0x26, 0xa2, 0x70, - 0x11, 0x5e, 0xb2, 0x73, 0x33, 0x95, 0x6e, 0x9d, 0x1d, 0xf4, - 0x79, 0x5f, 0x13, 0x7c, 0x18, 0xc1, 0x4e, 0x10, 0xd4, 0xd1, - 0xf1, 0x80, 0xa2, 0xf6, 0x5d, 0xb6, 0xe1, 0x57, 0x21, 0x17, - 0x89, 0xda, 0xef, 0x69, 0x20, 0xe4, 0x93, 0xf0, 0x14, 0x1d, - 0xdc, 0xa6, 0xce, 0xd2, 0x77, 0x71, 0xe1, 0xfb, 0xae, 0x77, - 0x57, 0x96, 0x1c, 0xaf, 0x32, 0x5f, 0x11, 0x24, 0x06, 0x74, - 0x97, 0xd0, 0x81, 0xf2, 0x94, 0xc9, 0x31, 0x29, 0x2d, 0x84, - 0x01, 0xd3, 0x61, 0xd4, 0x3f, 0x12, 0xfa, 0xcd, 0xc9, 0x41, - 0xb2, 0x12, 0xe5, 0x96, 0x4d, 0x46, 0xad, 0xd5, 0x1c, 0x7a, - 0xcd, 0x3e, 0x76, 0xd4, 0x40, 0x51, 0xe0, 0x5e, 0x30, 0xdc, - 0xd9, 0xd9, 0x91, 0x24, 0x20, 0x74, 0x7e, 0x11, 0x1f, 0xa5, - 0xfb, 0x78, 0x8d, 0xea, 0x47, 0xa7, 0x0e, 0x3a, 0x7f, 0x3a, - 0xf4, 0x79, 0x5d, 0x00, 0x02, 0x10, 0x59, 0x35, 0x0e, 0xb8, - 0xae, 0x00, 0x94, 0x7a, 0xa4, 0x0b, 0xc8, 0x58, 0x60, 0x1b, - 0x35, 0x96, 0x61, 0xbd, 0xc5, 0x7a, 0xc7, 0xc6, 0xd2, 0xb1, - 0xc0, 0x60, 0xa9, 0x9e, 0x14, 0x8b, 0x83, 0xb0, 0x08, 0x8d, - 0x05, 0x0a, 0x53, 0x4e, 0xcd, 0x72, 0xfe, 0x49, 0x97, 0x66, - 0x2f, 0x37, 0x4b, 0x34, 0x67, 0x67, 0x07, 0xb7, 0x20, 0xcd, - 0xd8, 0x68, 0x3a, 0xcd, 0x5b, 0xf9, 0x73, 0x76, 0x91, 0x28, - 0xd1, 0x02, 0xe2, 0x7b, 0x0e, 0x5f, 0x08, 0x37, 0xfc, 0x79, - 0x27, 0x0e, 0x4f, 0xe4, 0xef, 0x3e, 0xb5, 0x4a, 0x30, 0xd3, - 0x82, 0x19, 0xfe, 0xbe, 0xdb, 0xa7, 0x9a, 0x2c, 0x86, 0x5e, - 0x5e, 0x47, 0x1a, 0xb0, 0x8c, 0x36, 0xaf, 0xc1, 0xae, 0x62, - 0x38, 0xcb, 0xb0, 0xc6, 0x2f, 0xb3, 0xbc, 0xf8, 0x2f, 0xa2, - 0x24, 0x77, 0x5a, 0xe1, 0xba, 0x98, 0xb5, 0x7a, 0xff, 0x75, - 0x72, 0xf4, 0xae, 0xcf, 0x36, 0x89, 0x64, 0x7a, 0xdb, 0xa1, - 0x64, 0xbb, 0x82, 0xc3, 0xae, 0x93, 0x62, 0x32, 0x0b, 0x3a, - 0x04, 0xbf, 0x0f, 0xd0, 0x72, 0x03, 0x9a, 0x40, 0x08, 0xf7, - 0x1d, 0xa2, 0x51, 0x87, 0xf3, 0x78, 0x55, 0x04, 0x9d, 0x96, - 0xcc, 0x12, 0xa0, 0xe5, 0x14, 0x08, 0xae, 0x57, 0xf0, 0xf8, - 0x8f, 0x28, 0x1a, 0xe7, 0xab, 0x38, 0xbc, 0x1c, 0x21, 0xe4, - 0x81, 0x13, 0xd9, 0x0f, 0x3f, 0x44, 0xf0, 0xc7, 0xd5, 0xe4, - 0x77, 0x09, 0xf8, 0x9f, 0x1b, 0x72, 0x2b, 0xc3, 0x46, 0xd5, - 0x00, 0x84, 0xed, 0xc8, 0x55, 0x84, 0x56, 0x11, 0xfc, 0xe7, - 0x37, 0xfd, 0x69, 0xe7, 0x27, 0xb6, 0x4a, 0xda, 0x06, 0x74, - 0xdb, 0x38, 0x76, 0x8d, 0x2d, 0x24, 0xdc, 0x66, 0xb9, 0xa5, - 0x99, 0x67, 0x2c, 0x75, 0x18, 0x89, 0x0b, 0xd2, 0x4a, 0x3a, - 0xb7, 0x39, 0x57, 0x28, 0xa3, 0xa0, 0xc3, 0x4f, 0x36, 0xca, - 0x2a, 0x45, 0xa3, 0xf5, 0x6b, 0x07, 0xd7, 0xff, 0xac, 0xe3, - 0xd5, 0x2d, 0xcb, 0xed, 0x99, 0xad, 0x08, 0x89, 0xce, 0xc7, - 0x36, 0x05, 0x6a, 0xf7, 0xda, 0x2c, 0x7f, 0x57, 0xfb, 0x4c, - 0x48, 0x0e, 0x8a, 0xdb, 0x27, 0xa7, 0x94, 0xd7, 0xe1, 0x64, - 0x46, 0x0e, 0xf7, 0xea, 0x3c, 0x46, 0x0e, 0x25, 0xf1, 0x5c, - 0xe9, 0xb4, 0x88, 0xb5, 0xd4, 0xe9, 0x49, 0x6b, 0x2e, 0x19, - 0x84, 0x04, 0x32, 0x27, 0x1d, 0x1e, 0x93, 0xb3, 0x03, 0x61, - 0x9f, 0xbc, 0x43, 0xa9, 0x9f, 0xc6, 0x37, 0x85, 0xd6, 0xdc, - 0x25, 0xcb, 0xb3, 0x49, 0x1a, 0xbc, 0xfd, 0x3f, 0x9d, 0xe1, - 0xd3, 0x8f, 0x3b, 0x5b, 0x4f, 0xcf, 0xfe, 0x1a, 0x92, 0x1f, - 0x7b, 0x67, 0xe4, 0x9f, 0xe7, 0x67, 0x7f, 0x7d, 0xdc, 0x19, - 0x9c, 0x7d, 0x4f, 0x7f, 0xa5, 0xff, 0x7c, 0xdf, 0xfd, 0xef, - 0xfe, 0xd7, 0x81, 0xfb, 0x3f, 0xdb, 0x4a, 0xbe, 0xca, 0xbe, - 0xb0, 0x45, 0xd6, 0x27, 0x3d, 0x20, 0x03, 0x26, 0x3a, 0xd3, - 0x55, 0xfa, 0xb8, 0x9c, 0x05, 0x28, 0x19, 0xf4, 0x21, 0x27, - 0xc6, 0x80, 0xfc, 0x3e, 0x51, 0xc2, 0x46, 0x5e, 0x80, 0x28, - 0xae, 0xd4, 0x4c, 0x7f, 0x01, 0xe3, 0xfa, 0x4e, 0x0b, 0x52, - 0xad, 0xd0, 0x1c, 0x2b, 0x34, 0x00, 0x11, 0xa4, 0x58, 0x49, - 0xc9, 0x6c, 0x5f, 0xc1, 0x38, 0x07, 0x87, 0xc7, 0x01, 0x1f, - 0xe6, 0x27, 0x2d, 0x49, 0xb7, 0x41, 0xdd, 0x48, 0x45, 0xf1, - 0x18, 0x9a, 0xa8, 0x08, 0x3b, 0x9c, 0x82, 0xb4, 0x64, 0x06, - 0xf8, 0x0e, 0x3b, 0xf1, 0x80, 0x24, 0x11, 0xdd, 0xa5, 0xc7, - 0x5b, 0x10, 0x6c, 0xe4, 0xa8, 0x4a, 0x0e, 0xb9, 0xf0, 0xe3, - 0x3b, 0x05, 0x25, 0x2d, 0x20, 0xe4, 0x33, 0x3d, 0xec, 0x06, - 0x4a, 0x15, 0x6f, 0x13, 0x31, 0xbb, 0x1c, 0xb4, 0xd9, 0x11, - 0x44, 0x20, 0x7c, 0x24, 0x80, 0x67, 0x5d, 0x7b, 0x78, 0x14, - 0xc6, 0xb0, 0x26, 0xc6, 0xdd, 0x06, 0xb6, 0x3f, 0xa8, 0xce, - 0x9a, 0x4c, 0xcb, 0x3b, 0xa9, 0x6e, 0x19, 0x1e, 0xb9, 0x93, - 0xa7, 0xe1, 0x8a, 0x6c, 0x1d, 0xcd, 0xba, 0x49, 0x73, 0x24, - 0x3f, 0x46, 0x3f, 0xb5, 0x9e, 0x2a, 0x25, 0x90, 0x69, 0x79, - 0x76, 0x3f, 0xd9, 0xcd, 0xc2, 0x95, 0x82, 0x61, 0xdb, 0x4c, - 0x1b, 0x7d, 0x11, 0xc6, 0x03, 0xf4, 0x89, 0x9c, 0x5a, 0x88, - 0xaa, 0xf2, 0xe3, 0xe9, 0xdb, 0x9f, 0xc7, 0xc2, 0x70, 0x35, - 0xa7, 0xc9, 0x38, 0xc1, 0x7e, 0x02, 0x89, 0x85, 0x09, 0x95, - 0xc1, 0x00, 0xa1, 0xa1, 0x2b, 0x9f, 0x71, 0x29, 0x8f, 0xa9, - 0xc5, 0x67, 0xe1, 0x19, 0xa6, 0x2f, 0x55, 0xd9, 0xe6, 0x78, - 0x88, 0x8d, 0x67, 0xf6, 0x15, 0x52, 0xe9, 0x84, 0x1b, 0x35, - 0x2a, 0xa0, 0xda, 0x15, 0xd6, 0xe2, 0x95, 0xcd, 0x81, 0xc5, - 0x2d, 0xfc, 0x56, 0x87, 0x9c, 0xb1, 0xde, 0x93, 0xd3, 0xd2, - 0x38, 0xd0, 0x07, 0x98, 0x6c, 0x96, 0x05, 0xf9, 0x2e, 0x55, - 0x7d, 0x55, 0x0d, 0xb2, 0x3b, 0xaa, 0x36, 0xe9, 0x26, 0xc7, - 0x0d, 0x61, 0x51, 0x62, 0xc4, 0x39, 0xb9, 0x7d, 0xf2, 0x51, - 0xed, 0x7c, 0xd4, 0x16, 0x9e, 0x8c, 0xc7, 0x43, 0x66, 0xed, - 0x27, 0xbf, 0xed, 0x76, 0xd1, 0xd1, 0x93, 0xda, 0x86, 0xd8, - 0xde, 0x46, 0x93, 0xd0, 0x11, 0x6a, 0xed, 0xe1, 0xce, 0xf2, - 0x46, 0x9e, 0x2c, 0xef, 0x10, 0x1d, 0x82, 0xbc, 0x57, 0x81, - 0x3b, 0xd8, 0x75, 0x20, 0xdf, 0x99, 0xc3, 0x08, 0x43, 0x38, - 0x18, 0xf9, 0x46, 0x50, 0x0c, 0x20, 0x43, 0x36, 0xac, 0x67, - 0x78, 0xf8, 0xa8, 0x15, 0x0d, 0x96, 0x0f, 0xb7, 0xa3, 0xed, - 0x09, 0x13, 0x1a, 0xe0, 0xc0, 0x8e, 0xa7, 0xc4, 0xe6, 0x84, - 0xec, 0xcf, 0x45, 0xcc, 0x8d, 0xbe, 0x9d, 0x76, 0xb2, 0xb8, - 0x40, 0xd6, 0x32, 0xd0, 0xdd, 0x5f, 0x15, 0x3c, 0xdd, 0x57, - 0xa7, 0x0d, 0xca, 0x4b, 0xbb, 0x17, 0xb4, 0xc5, 0x4d, 0xdf, - 0x05, 0x5c, 0x86, 0x93, 0x6a, 0xbc, 0x08, 0x49, 0xd4, 0x08, - 0x9c, 0x0e, 0x19, 0xd9, 0xb1, 0x79, 0x4e, 0x68, 0x18, 0xb1, - 0x11, 0x6e, 0x8d, 0x76, 0x3b, 0x44, 0xd3, 0xb6, 0x92, 0xee, - 0xc2, 0xac, 0x12, 0xda, 0xa0, 0xdc, 0xca, 0xdb, 0x04, 0x69, - 0xdc, 0x0b, 0x97, 0x44, 0xf9, 0x8e, 0xf6, 0x67, 0xc9, 0x1c, - 0xdc, 0x03, 0xba, 0x23, 0x6c, 0xd6, 0x2d, 0x1d, 0x87, 0x28, - 0xb9, 0xaa, 0x55, 0xb3, 0x56, 0x6d, 0xac, 0x57, 0x68, 0xd0, - 0x86, 0x9d, 0xf4, 0x5d, 0x16, 0x91, 0x7e, 0xb6, 0x85, 0xe6, - 0xb9, 0x61, 0xdf, 0x99, 0xc2, 0xb4, 0x6d, 0x0d, 0xce, 0x48, - 0x3d, 0xf1, 0xbc, 0xba, 0x37, 0x3a, 0x40, 0x05, 0x17, 0x3c, - 0x3d, 0x1b, 0xd5, 0xe8, 0x39, 0x53, 0x9b, 0xbc, 0x73, 0x04, - 0xb6, 0x6a, 0x98, 0x54, 0x96, 0xbc, 0xb4, 0x9a, 0x57, 0x72, - 0xae, 0x2a, 0x1e, 0xd7, 0xe3, 0x95, 0xda, 0xe0, 0xb0, 0xe8, - 0x01, 0x61, 0xd7, 0xdf, 0x04, 0x99, 0xd6, 0xaa, 0x1d, 0x54, - 0x00, 0x26, 0x29, 0x05, 0xd9, 0x29, 0xa5, 0x45, 0x41, 0x06, - 0x3b, 0x25, 0x40, 0x06, 0xff, 0x0e, 0x9e, 0x92, 0x15, 0xef, - 0x05, 0x26, 0xa3, 0x1e, 0x65, 0xe9, 0xfc, 0x96, 0xc0, 0x83, - 0x9c, 0x6d, 0xeb, 0xcc, 0x59, 0xc1, 0xc1, 0x35, 0x67, 0xfc, - 0x9b, 0xc7, 0x9c, 0x71, 0x96, 0x07, 0xab, 0xfe, 0x8c, 0xff, - 0x40, 0xe1, 0xb7, 0x60, 0x22, 0xf5, 0x4d, 0x9d, 0xb0, 0x77, - 0x3f, 0x89, 0x6e, 0x6a, 0x72, 0x02, 0x22, 0xd3, 0x40, 0x76, - 0x80, 0xa8, 0x1e, 0xb1, 0xec, 0xa1, 0xbb, 0x64, 0x1a, 0x46, - 0x57, 0x09, 0x44, 0xa8, 0x98, 0x27, 0xc5, 0xed, 0x8b, 0x59, - 0x12, 0x45, 0x71, 0x3a, 0xf2, 0x77, 0x84, 0x6a, 0xbb, 0xd0, - 0x04, 0x72, 0xcc, 0xf1, 0x43, 0x41, 0x4a, 0x30, 0x72, 0xa2, - 0xa7, 0x07, 0x0c, 0xd6, 0x52, 0x6a, 0x67, 0xec, 0x2a, 0xc2, - 0x15, 0x73, 0x58, 0x36, 0x71, 0x3b, 0x67, 0x4a, 0xc7, 0x20, - 0x33, 0x47, 0x4a, 0x4c, 0x9a, 0xfe, 0x6b, 0x0b, 0xbe, 0x9f, - 0x54, 0x6d, 0x0f, 0x3b, 0x26, 0x93, 0xd4, 0x21, 0xed, 0xa7, - 0x42, 0x7e, 0x01, 0xdd, 0x5b, 0x5d, 0x78, 0xb6, 0xdf, 0x65, - 0xed, 0x2a, 0xa4, 0x81, 0x8d, 0x04, 0x4c, 0x54, 0x85, 0x36, - 0xb4, 0xd0, 0xfe, 0x5e, 0x89, 0xb3, 0x6b, 0xe1, 0x2c, 0x5e, - 0x55, 0x22, 0xed, 0x59, 0x48, 0x54, 0xde, 0x57, 0xe2, 0x3d, - 0xd5, 0xa7, 0xaf, 0xcd, 0x54, 0xe2, 0xa0, 0xba, 0x95, 0xcf, - 0x0c, 0xc4, 0xb7, 0x70, 0x35, 0x51, 0x89, 0xf5, 0xad, 0x81, - 0x05, 0x16, 0xa7, 0x60, 0x3f, 0x5b, 0xa7, 0x45, 0x25, 0xea, - 0x73, 0x03, 0x75, 0x1f, 0x5c, 0x52, 0x6a, 0xe2, 0x0e, 0x0c, - 0x2e, 0x6d, 0x1f, 0x10, 0x91, 0xa6, 0xe1, 0x72, 0xad, 0xf8, - 0x30, 0xba, 0x19, 0x0b, 0x7d, 0xb8, 0x8e, 0x6e, 0xeb, 0xaf, - 0x92, 0x11, 0xdb, 0xdc, 0x34, 0xc7, 0x97, 0x1e, 0xac, 0x46, - 0x0f, 0xc0, 0x1e, 0xb6, 0xcd, 0x0b, 0xe8, 0x0a, 0x75, 0xb8, - 0x71, 0x2d, 0xe2, 0x5c, 0x54, 0xb3, 0x95, 0x26, 0x36, 0x3b, - 0x21, 0x69, 0xf7, 0xf7, 0x75, 0x16, 0xb7, 0xd8, 0xf3, 0xeb, - 0x6f, 0x00, 0x5e, 0xf9, 0x4f, 0x8f, 0x11, 0xe7, 0xd9, 0x8d, - 0x17, 0x50, 0x6c, 0x00, 0x96, 0x8d, 0xc8, 0x03, 0xcf, 0xe4, - 0x7c, 0x5d, 0x68, 0x25, 0x6f, 0x29, 0x06, 0x69, 0xbf, 0xc4, - 0xe9, 0x28, 0xa1, 0x1b, 0xcf, 0x0d, 0x83, 0x94, 0xdb, 0xbc, - 0x35, 0x0a, 0x74, 0x91, 0xe7, 0x94, 0xd0, 0x6e, 0x43, 0x73, - 0x4e, 0xad, 0xa8, 0x07, 0x34, 0x41, 0x6c, 0x1c, 0x99, 0x37, - 0x6e, 0x51, 0xa7, 0xc5, 0x00, 0xb6, 0x22, 0x0e, 0x01, 0xa6, - 0x5f, 0x18, 0xb9, 0x38, 0x1a, 0x97, 0x11, 0x22, 0xfc, 0xd5, - 0x02, 0x06, 0x6b, 0x75, 0x5d, 0x9e, 0x51, 0xe5, 0x74, 0xd9, - 0x19, 0x78, 0x03, 0xf1, 0x06, 0x98, 0xfb, 0x4e, 0x34, 0xfa, - 0x9d, 0x52, 0x12, 0x3e, 0xe7, 0x00, 0xe3, 0xde, 0x05, 0xdc, - 0x27, 0xb9, 0x91, 0x59, 0x3f, 0x41, 0x17, 0x12, 0x86, 0x1f, - 0xa0, 0xd5, 0x07, 0x32, 0x33, 0x62, 0x2c, 0xaf, 0xc9, 0xf8, - 0xc6, 0x41, 0x47, 0x95, 0x61, 0xe7, 0x80, 0x97, 0x3b, 0xea, - 0x68, 0xb8, 0x81, 0x40, 0xa2, 0x98, 0x48, 0x91, 0x18, 0x1f, - 0x05, 0x8d, 0xf3, 0x12, 0x3f, 0x72, 0xa2, 0xb6, 0xd5, 0x38, - 0x6c, 0xa2, 0x0a, 0x1c, 0x67, 0x4d, 0xff, 0x89, 0x73, 0xb7, - 0xf9, 0x41, 0x93, 0x32, 0x98, 0xb6, 0x98, 0xb7, 0xb6, 0xda, - 0x23, 0xfd, 0xf4, 0x48, 0x0e, 0xa1, 0xec, 0xd0, 0xe8, 0xd4, - 0x69, 0x98, 0x1e, 0xf3, 0x0d, 0x3f, 0x0e, 0x6d, 0x78, 0xce, - 0x8e, 0xe2, 0x08, 0xce, 0xce, 0x8f, 0xfa, 0x70, 0xf0, 0xd1, - 0x30, 0x46, 0xbe, 0x8e, 0xc6, 0x61, 0xa2, 0xd4, 0xd9, 0xf0, - 0xbd, 0x38, 0xa5, 0xfb, 0x3d, 0xbf, 0xad, 0x69, 0xe5, 0xb7, - 0x70, 0x59, 0xb8, 0xb5, 0xff, 0x86, 0xb0, 0x27, 0xb3, 0xdd, - 0xc6, 0xd1, 0x21, 0x5c, 0x13, 0x8f, 0xc7, 0x3b, 0xdc, 0xe1, - 0xc3, 0x5b, 0x81, 0xad, 0x19, 0xec, 0xb7, 0x85, 0x60, 0x10, - 0xae, 0x1f, 0x0d, 0x90, 0xdf, 0xa0, 0xa6, 0xa1, 0x01, 0x7d, - 0x39, 0x18, 0x6a, 0x63, 0xc9, 0x24, 0x0e, 0xd3, 0x3c, 0xc7, - 0xad, 0x3d, 0x38, 0xb7, 0xb6, 0x4a, 0x16, 0x94, 0x79, 0x63, - 0xa9, 0xad, 0x24, 0xdd, 0x8f, 0x83, 0xaf, 0x26, 0xfd, 0x23, - 0xf0, 0x00, 0xbf, 0xee, 0x75, 0xd9, 0x5e, 0x06, 0xbb, 0x95, - 0xdc, 0xaf, 0xd3, 0xab, 0x6b, 0x6d, 0x79, 0xda, 0x98, 0xf7, - 0x4b, 0xec, 0x1b, 0xa4, 0x95, 0xba, 0x39, 0xc3, 0x68, 0x53, - 0x6d, 0x8d, 0xd8, 0xd0, 0x73, 0x2b, 0xc8, 0x0c, 0xea, 0x5b, - 0x42, 0xea, 0x9d, 0x8a, 0x80, 0x63, 0xaa, 0xcf, 0x44, 0xd0, - 0x2a, 0xca, 0xea, 0xb5, 0x0e, 0xc1, 0x75, 0xa1, 0x75, 0xf9, - 0xf0, 0xcc, 0x34, 0x97, 0x94, 0x9d, 0x86, 0x07, 0x3b, 0x75, - 0x8f, 0x29, 0xf5, 0xc7, 0x76, 0xf8, 0x98, 0xa7, 0x4d, 0x53, - 0xdb, 0x28, 0x1f, 0xdb, 0x57, 0x74, 0x97, 0xaf, 0x3f, 0xba, - 0x4e, 0xf8, 0x47, 0x1b, 0x88, 0xdd, 0xaf, 0x61, 0x68, 0x81, - 0x36, 0xc1, 0xa3, 0x8e, 0xc1, 0x56, 0xfd, 0x61, 0xa8, 0x07, - 0xaf, 0xb3, 0x19, 0x3d, 0x4e, 0x97, 0xdb, 0x52, 0x7a, 0x55, - 0x96, 0x94, 0x5e, 0x7b, 0x77, 0xaf, 0xf4, 0x64, 0x4d, 0x5d, - 0x67, 0xf8, 0x11, 0x5c, 0x7f, 0xa9, 0xd2, 0xe9, 0x3e, 0x3e, - 0xe3, 0xee, 0x7d, 0xcd, 0xf9, 0x1a, 0x36, 0x9c, 0xaf, 0xe1, - 0xff, 0xa3, 0xf3, 0xc5, 0x76, 0x09, 0xd7, 0x4c, 0xd5, 0x51, - 0x39, 0x4a, 0xf1, 0x4a, 0xd5, 0x8e, 0x52, 0x4c, 0x5b, 0x25, - 0xe0, 0x92, 0xa3, 0x06, 0xae, 0x6d, 0x71, 0xa0, 0xcb, 0xad, - 0x0e, 0xea, 0x9e, 0x13, 0x95, 0x9f, 0x51, 0xbd, 0x4a, 0x05, - 0x72, 0x67, 0x32, 0x55, 0x0a, 0x59, 0xa4, 0x14, 0x8a, 0x53, - 0xa6, 0xcc, 0xd4, 0xd1, 0x28, 0xf4, 0x57, 0x53, 0x35, 0xb4, - 0x6b, 0x5c, 0xe3, 0x17, 0xd4, 0x2e, 0x6c, 0x0d, 0x58, 0x6b, - 0xb5, 0xa5, 0x6f, 0xa8, 0x36, 0x3e, 0x40, 0xdb, 0xf0, 0x13, - 0xf9, 0x7a, 0xba, 0xc6, 0x69, 0x23, 0x5d, 0xe3, 0xb4, 0xb9, - 0xae, 0xf1, 0xed, 0x97, 0xd0, 0x35, 0xfc, 0x23, 0xfb, 0xf5, - 0x34, 0x8d, 0xd3, 0x86, 0x9a, 0xc6, 0xe9, 0xc3, 0x35, 0x0d, - 0xff, 0x30, 0x3c, 0xaa, 0x9e, 0x51, 0x9f, 0xb9, 0x8e, 0xa6, - 0xd3, 0x1c, 0x2e, 0xf8, 0xeb, 0x0e, 0x41, 0x3d, 0x78, 0x71, - 0xa1, 0xf3, 0xb4, 0x2e, 0x5b, 0x3d, 0x6d, 0xd7, 0x64, 0xd6, - 0x3d, 0x8d, 0x59, 0x1f, 0x69, 0xec, 0xf7, 0xbe, 0xce, 0xd8, - 0x1f, 0x1e, 0xd4, 0x1f, 0xf7, 0x6a, 0x58, 0x7d, 0x9c, 0x06, - 0x4f, 0xcb, 0x57, 0x35, 0xde, 0xe7, 0xc1, 0x7f, 0x97, 0x49, - 0xd6, 0xc3, 0x03, 0xe6, 0x76, 0x55, 0x5f, 0x31, 0xfb, 0x92, - 0x97, 0x51, 0x30, 0x0e, 0x3f, 0x14, 0x69, 0xfd, 0x41, 0xab, - 0x01, 0xac, 0x8f, 0xda, 0xb0, 0x7c, 0xd0, 0xf8, 0x65, 0x52, - 0xfb, 0xa6, 0xc6, 0x4d, 0x52, 0xd0, 0x66, 0xc6, 0xae, 0xc3, - 0x03, 0x7a, 0x95, 0xd4, 0x4f, 0xa2, 0xc7, 0x19, 0x53, 0xee, - 0x01, 0x57, 0x6b, 0xb0, 0xc8, 0x64, 0xd6, 0x1f, 0xac, 0x1a, - 0xc0, 0x8d, 0x06, 0x0b, 0x73, 0xd8, 0x24, 0x5b, 0xde, 0x1e, - 0x1e, 0xbc, 0x59, 0x65, 0x0b, 0xce, 0x5f, 0x0d, 0x87, 0xe4, - 0x4e, 0xd9, 0x70, 0xed, 0x85, 0x5c, 0x53, 0xa5, 0xf4, 0x61, - 0x55, 0x29, 0x94, 0x3e, 0xbc, 0x6a, 0x75, 0xd2, 0x87, 0x69, - 0x2b, 0x93, 0x5c, 0xaa, 0x56, 0x62, 0xda, 0xba, 0x24, 0x91, - 0x0b, 0x25, 0x8a, 0xa4, 0xed, 0x35, 0x1f, 0x74, 0x5c, 0xee, - 0x52, 0x1a, 0x84, 0x61, 0xa6, 0xc2, 0x65, 0x0f, 0xb7, 0x56, - 0xd9, 0xf5, 0xd5, 0xd5, 0x29, 0x07, 0x9f, 0xd7, 0x64, 0xe5, - 0x68, 0x58, 0x6d, 0x45, 0xd2, 0x73, 0x8f, 0x5f, 0x4a, 0xec, - 0x2b, 0x1a, 0x58, 0xf6, 0x9b, 0x5a, 0x58, 0xf6, 0x9b, 0x2a, - 0x3e, 0xf7, 0x19, 0x90, 0x7a, 0x0a, 0x50, 0x03, 0xf1, 0x47, - 0x9a, 0x0d, 0x91, 0x04, 0x9a, 0x74, 0xb3, 0x0e, 0xbc, 0x2e, - 0x04, 0x9f, 0x97, 0x0b, 0xc1, 0x22, 0x29, 0x28, 0x30, 0x13, - 0x7b, 0x10, 0xfc, 0x80, 0x86, 0x7b, 0x08, 0xa1, 0xa2, 0x38, - 0x92, 0x78, 0xc0, 0xea, 0xd9, 0x92, 0x2e, 0x5b, 0xf6, 0x54, - 0xf9, 0x88, 0xfe, 0xd1, 0x69, 0xff, 0x48, 0x3a, 0xbf, 0xbd, - 0x9f, 0x65, 0x73, 0xd2, 0xc6, 0x1d, 0x54, 0x0b, 0x03, 0x06, - 0x96, 0x24, 0x08, 0xec, 0x0f, 0x5e, 0xe8, 0x25, 0x43, 0x28, - 0x0c, 0x1c, 0x14, 0x06, 0xf5, 0x28, 0xf0, 0x36, 0x0c, 0x1d, - 0x14, 0x86, 0x16, 0x85, 0x5a, 0x2e, 0x5b, 0xcd, 0xb8, 0x63, - 0xef, 0xf1, 0xb9, 0x03, 0x1e, 0x32, 0x37, 0xb0, 0xd7, 0xd4, - 0x83, 0x77, 0x5f, 0xf3, 0x94, 0x0c, 0x2c, 0x3c, 0xe5, 0xae, - 0x3d, 0xb9, 0x54, 0x24, 0xc2, 0x05, 0x3c, 0x96, 0x93, 0x09, - 0xf9, 0x33, 0x48, 0x40, 0xa2, 0x69, 0xe2, 0x91, 0x5e, 0xc1, - 0x3c, 0x19, 0xaf, 0xe4, 0x6b, 0x5f, 0x5f, 0x13, 0x92, 0x5e, - 0x90, 0xa8, 0x37, 0x04, 0xa8, 0x7e, 0x52, 0x93, 0xd5, 0x02, - 0xb8, 0xbe, 0xbc, 0xd9, 0xdc, 0x74, 0xfa, 0x3e, 0x96, 0xe9, - 0x00, 0xe0, 0x58, 0xb3, 0x2f, 0x46, 0x51, 0x39, 0xd7, 0x28, - 0xff, 0xbd, 0xf2, 0x85, 0x33, 0x27, 0x58, 0x01, 0xf4, 0x16, - 0x30, 0x19, 0xbf, 0x20, 0xec, 0xcf, 0xc0, 0x6f, 0x4f, 0x1f, - 0x9f, 0xdf, 0xb8, 0x5f, 0x74, 0x6d, 0x7e, 0xab, 0x05, 0x5f, - 0xc6, 0x6f, 0x55, 0x83, 0x4a, 0xd5, 0xd9, 0x20, 0xcf, 0xd6, - 0xab, 0x49, 0x5c, 0xce, 0xa4, 0x8b, 0xff, 0x14, 0xc5, 0xc3, - 0x24, 0x10, 0x33, 0x97, 0x3d, 0x48, 0x04, 0x31, 0xb3, 0x59, - 0x5d, 0x19, 0xe4, 0x24, 0x01, 0x4f, 0xed, 0x09, 0x85, 0x5d, - 0x07, 0x85, 0xdd, 0x2f, 0x21, 0xc5, 0xbe, 0x79, 0x7c, 0xae, - 0x12, 0x1e, 0xfa, 0xb5, 0xd9, 0xaa, 0x1e, 0xc2, 0x43, 0xf8, - 0xaa, 0x60, 0x1e, 0x52, 0x5f, 0x86, 0xb1, 0xf8, 0x94, 0xd6, - 0xe3, 0xab, 0xcf, 0x30, 0xa5, 0xcf, 0xbe, 0xd6, 0x7d, 0xc3, - 0xfe, 0xbf, 0x97, 0x0d, 0x66, 0xbd, 0x1a, 0x58, 0x9f, 0xf1, - 0x0a, 0xf3, 0x41, 0xe5, 0x4d, 0x83, 0x60, 0x89, 0xd7, 0xf0, - 0xf4, 0x27, 0x38, 0x87, 0x27, 0x76, 0x9d, 0x9b, 0x65, 0xb7, - 0x1f, 0xfc, 0xb4, 0x1c, 0x0f, 0x76, 0x76, 0xb6, 0x6f, 0x96, - 0x75, 0x4f, 0xc3, 0xf7, 0x99, 0x94, 0x6f, 0xbf, 0xda, 0xa4, - 0xc0, 0x49, 0xae, 0xc1, 0xb4, 0xd4, 0x01, 0x6f, 0x34, 0x31, - 0xfa, 0xb8, 0x67, 0xec, 0x5c, 0xf9, 0x19, 0x47, 0xfa, 0xf9, - 0x57, 0x1b, 0xe9, 0xd3, 0xa4, 0x89, 0xd0, 0x4b, 0xbe, 0x26, - 0xfb, 0x27, 0xe4, 0xdf, 0x8b, 0x55, 0x38, 0x0f, 0x8a, 0x64, - 0x11, 0xc3, 0xc3, 0xa8, 0x1c, 0x42, 0xaf, 0x45, 0xf9, 0xe7, - 0x9c, 0x98, 0xc1, 0xce, 0xd7, 0x9b, 0x99, 0x26, 0x2b, 0xe0, - 0x34, 0xff, 0x0c, 0x33, 0x33, 0xa8, 0x3b, 0x33, 0x79, 0xb8, - 0x58, 0xce, 0x69, 0x0c, 0xb6, 0x2f, 0x38, 0x33, 0x83, 0xc7, - 0xd7, 0x02, 0x4e, 0x26, 0x33, 0x82, 0xd6, 0xe4, 0x34, 0x53, - 0x13, 0xa3, 0xec, 0xb4, 0xeb, 0xdc, 0x8f, 0x23, 0x88, 0x53, - 0x94, 0x4c, 0x82, 0xcb, 0xe4, 0x61, 0xfb, 0x3a, 0xb8, 0x37, - 0x0a, 0x32, 0xf5, 0x36, 0xf7, 0x72, 0xaf, 0xfe, 0x7d, 0xd5, - 0x69, 0xd3, 0xb7, 0xbf, 0x8a, 0x47, 0x28, 0x12, 0x3d, 0x7d, - 0x88, 0xf3, 0xfb, 0x24, 0x9c, 0x4f, 0xd6, 0x73, 0x1a, 0xe5, - 0xe3, 0xb3, 0x72, 0xca, 0xf0, 0x4b, 0xae, 0xe1, 0xbc, 0x88, - 0x97, 0xd4, 0x89, 0x37, 0xbd, 0xad, 0xc9, 0x75, 0x3f, 0x35, - 0x11, 0xc1, 0x3f, 0x25, 0x8f, 0xeb, 0x02, 0x55, 0x57, 0x04, - 0xd3, 0x63, 0x14, 0xe1, 0x23, 0x31, 0x81, 0x90, 0x71, 0xa5, - 0x50, 0x22, 0xf9, 0x4b, 0x4f, 0xe9, 0x57, 0xf3, 0x27, 0xda, - 0x3f, 0xf9, 0xad, 0x89, 0x78, 0xf8, 0xed, 0xcb, 0x6e, 0x98, - 0xcc, 0x33, 0xe5, 0xf9, 0xf3, 0xea, 0xf9, 0x64, 0xb6, 0xc8, - 0xe0, 0x8f, 0x2c, 0x8d, 0x83, 0x0e, 0x8d, 0xba, 0x19, 0x75, - 0x89, 0xa2, 0x43, 0x63, 0x3e, 0xd1, 0x09, 0x08, 0x3a, 0x3b, - 0x5b, 0xcf, 0x9f, 0xff, 0xbd, 0xdb, 0x6c, 0x1a, 0xbf, 0xf8, - 0x74, 0xbc, 0x6e, 0x32, 0x1d, 0xaf, 0x7f, 0xfb, 0xb2, 0xbb, - 0x24, 0x9b, 0x8e, 0xd2, 0x07, 0x72, 0xce, 0xf9, 0x80, 0xe8, - 0x8e, 0xf6, 0x7c, 0x0c, 0xb6, 0x08, 0xa5, 0x7a, 0x13, 0x72, - 0xaf, 0x35, 0xb5, 0xf7, 0x15, 0x6d, 0xe9, 0x1f, 0xe8, 0xab, - 0xcf, 0x06, 0x53, 0x59, 0x0f, 0xc1, 0x61, 0x39, 0x63, 0x88, - 0xcd, 0x1e, 0xa6, 0xdd, 0xe1, 0xa7, 0x3b, 0x3c, 0x78, 0xb1, - 0xf7, 0xaa, 0x03, 0xbf, 0x5a, 0x81, 0x27, 0x2f, 0xe5, 0x6f, - 0xc0, 0x9a, 0xe3, 0x9b, 0xcf, 0xc1, 0x1a, 0x53, 0xd0, 0x2e, - 0xd8, 0xea, 0xd0, 0xb0, 0x29, 0x50, 0x0b, 0x7f, 0xc3, 0x46, - 0x00, 0xa3, 0xd3, 0xf7, 0x62, 0x6e, 0x23, 0xfe, 0x03, 0x9a, - 0x03, 0xc6, 0xd0, 0x07, 0xb6, 0xc6, 0x65, 0x19, 0x7d, 0x40, - 0x8b, 0xf0, 0xd3, 0xa4, 0xfb, 0x36, 0x09, 0xdb, 0x15, 0x1f, - 0xb1, 0x69, 0xda, 0x9b, 0xab, 0xfb, 0xb6, 0x4d, 0xb3, 0x4d, - 0x3d, 0x62, 0xe3, 0xfe, 0xbd, 0xbc, 0x6f, 0xc3, 0x4a, 0x2c, - 0x24, 0x0f, 0x68, 0x0f, 0xbb, 0x51, 0xee, 0x10, 0xa1, 0xfb, - 0xa0, 0x66, 0x65, 0xf8, 0x62, 0xfa, 0x7e, 0xb3, 0x96, 0x74, - 0xf2, 0x07, 0x36, 0xc2, 0x7b, 0x7c, 0x7e, 0x48, 0xb3, 0xf2, - 0x07, 0x37, 0xcb, 0x7b, 0x76, 0x7c, 0x40, 0xb3, 0xd8, 0x01, - 0xe5, 0x81, 0xed, 0x2a, 0x3f, 0xaf, 0x3c, 0xa0, 0x75, 0xe4, - 0x30, 0x76, 0xcf, 0x96, 0xdd, 0x43, 0x09, 0x7f, 0x88, 0x94, - 0x57, 0x2a, 0xc9, 0x7d, 0x1b, 0x8c, 0xb5, 0x1a, 0x53, 0xb9, - 0x24, 0xab, 0x33, 0x68, 0xb4, 0xb0, 0xac, 0x06, 0x72, 0x1d, - 0xe0, 0x21, 0x6d, 0x23, 0x9a, 0x0d, 0x0f, 0xca, 0x17, 0x10, - 0x45, 0x21, 0x02, 0x46, 0x6c, 0x97, 0x44, 0x05, 0xa6, 0x69, - 0xbc, 0x57, 0x87, 0xc7, 0x5a, 0x38, 0x37, 0x11, 0x10, 0x7e, - 0xb9, 0xca, 0x0a, 0xa2, 0x9b, 0x6c, 0x31, 0x20, 0xf1, 0x6a, - 0x11, 0x20, 0xa2, 0xe4, 0x6a, 0x30, 0x66, 0xb1, 0xda, 0xae, - 0xb6, 0x74, 0xb0, 0x5d, 0x0c, 0xc7, 0x8c, 0x15, 0x06, 0x39, - 0xc8, 0xe0, 0x00, 0x41, 0x0f, 0xcd, 0xb7, 0x5f, 0xea, 0x1d, - 0x96, 0x40, 0x1b, 0x8f, 0x83, 0x1d, 0x14, 0x69, 0xbe, 0x34, - 0xba, 0x38, 0x34, 0xc9, 0x8e, 0x0d, 0x0c, 0x51, 0xad, 0x97, - 0xd3, 0x55, 0xb8, 0xf0, 0x3c, 0xba, 0xbc, 0xa9, 0x08, 0x29, - 0x6d, 0x50, 0x85, 0xc7, 0xf2, 0x0e, 0x92, 0x32, 0x78, 0xae, - 0x3e, 0x14, 0x10, 0xcf, 0x57, 0x7f, 0xa9, 0x6a, 0x54, 0x37, - 0xf2, 0x20, 0x0e, 0xef, 0x8d, 0x78, 0xef, 0x2a, 0x77, 0xeb, - 0x21, 0x32, 0x4d, 0xdc, 0x0c, 0x37, 0x05, 0x9c, 0xf4, 0x36, - 0x49, 0x8f, 0x21, 0x7d, 0x6b, 0x3e, 0xd3, 0x78, 0x89, 0xfb, - 0x0d, 0xb5, 0x8a, 0xd5, 0xd6, 0x82, 0x42, 0x9c, 0x26, 0x6a, - 0xe0, 0xc4, 0x73, 0x40, 0xd1, 0x94, 0xe5, 0xfa, 0xfc, 0x28, - 0x65, 0x8f, 0x0a, 0xd0, 0xbb, 0x55, 0x31, 0x57, 0xb1, 0x3d, - 0x57, 0xce, 0x14, 0x03, 0x71, 0x79, 0x60, 0xf4, 0x0d, 0xff, - 0x6a, 0x80, 0x94, 0x2c, 0xce, 0x95, 0x90, 0xc6, 0xb4, 0x7d, - 0xd7, 0xa4, 0x1c, 0xb3, 0x37, 0xea, 0xdc, 0x2a, 0xcf, 0x13, - 0x2f, 0xe7, 0x73, 0xf4, 0xd7, 0xc5, 0xec, 0x03, 0xa5, 0x50, - 0x83, 0xef, 0x07, 0x75, 0xf9, 0xbe, 0xa2, 0xb7, 0x8d, 0xb8, - 0xbd, 0x64, 0x84, 0x7d, 0xd3, 0x7e, 0xf0, 0xe3, 0xfe, 0x31, - 0x6f, 0x77, 0xc9, 0xc0, 0x9d, 0x46, 0xb3, 0xc9, 0x12, 0xcf, - 0xfa, 0x3d, 0x7a, 0xda, 0xa8, 0x2b, 0x2a, 0xf8, 0x9b, 0xd6, - 0xda, 0x93, 0xdb, 0x7c, 0x9e, 0x5d, 0x80, 0xb8, 0xf3, 0x36, - 0x35, 0xa7, 0x20, 0x5b, 0x34, 0xe4, 0x79, 0xd5, 0x84, 0x72, - 0x58, 0x56, 0xf4, 0xa8, 0xe2, 0xec, 0x9e, 0x9d, 0xd5, 0x3a, - 0x8c, 0xe3, 0xef, 0xa2, 0xa9, 0x29, 0xfe, 0x38, 0x58, 0x65, - 0xcb, 0x83, 0xec, 0x3a, 0xe5, 0x2e, 0x7d, 0xbc, 0x33, 0xc5, - 0x1f, 0x6d, 0xd4, 0xdd, 0x44, 0x9c, 0x0a, 0xa9, 0x2f, 0x09, - 0x73, 0xd7, 0xbb, 0x01, 0x6d, 0x06, 0x2e, 0x56, 0x4f, 0x7f, - 0x53, 0x91, 0xff, 0x25, 0x35, 0xe5, 0x1f, 0x72, 0xa6, 0xdb, - 0x6c, 0x6f, 0x7a, 0x01, 0xf9, 0x9f, 0x3e, 0x60, 0xe7, 0x3f, - 0xc4, 0x21, 0x35, 0x11, 0x1e, 0x23, 0x4e, 0xf6, 0x82, 0x98, - 0xa6, 0xbf, 0xed, 0x43, 0x34, 0xa5, 0xe6, 0xcd, 0x2f, 0xfe, - 0x00, 0x17, 0x40, 0xd5, 0x36, 0x1c, 0x6e, 0x94, 0x16, 0x03, - 0x5d, 0x02, 0xc2, 0x7a, 0xf3, 0xb1, 0xf8, 0xe3, 0x4c, 0x0a, - 0x46, 0x45, 0x10, 0x60, 0xda, 0x5d, 0x63, 0x93, 0x66, 0x9f, - 0xb5, 0xb4, 0x20, 0x1d, 0xf6, 0x4d, 0xc4, 0x7d, 0x75, 0xac, - 0x12, 0xe3, 0x9d, 0x3e, 0x8b, 0x9a, 0x1c, 0xe1, 0x6e, 0x5d, - 0x15, 0xb0, 0x9f, 0x42, 0x4c, 0xaa, 0x5f, 0xed, 0xb8, 0x74, - 0xc0, 0x44, 0x12, 0xe7, 0xaa, 0xd0, 0x6c, 0x02, 0x01, 0x3c, - 0xf9, 0x27, 0xcc, 0xd1, 0xea, 0x05, 0xad, 0x8b, 0x55, 0x12, - 0x6d, 0xb1, 0x80, 0x69, 0xc1, 0x0b, 0x96, 0xa2, 0x66, 0x6f, - 0xd4, 0xea, 0x1a, 0xaf, 0xa3, 0x9b, 0x11, 0xd8, 0x95, 0x04, - 0xac, 0x2c, 0x02, 0x5a, 0x08, 0xbd, 0xde, 0x6e, 0x2f, 0x10, - 0x6d, 0xac, 0x05, 0xff, 0xac, 0x21, 0xfc, 0xb7, 0x0d, 0xe1, - 0x9f, 0x37, 0x84, 0x1f, 0xec, 0x18, 0x08, 0x36, 0x3f, 0x1a, - 0xc1, 0x8b, 0x51, 0xec, 0x7f, 0x4b, 0xc2, 0xf3, 0x4b, 0x06, - 0x2d, 0x16, 0x3e, 0x5f, 0x32, 0x6a, 0xa7, 0x31, 0xd5, 0x07, - 0x4e, 0x85, 0x09, 0xcb, 0x2a, 0x12, 0x54, 0xf2, 0xda, 0x58, - 0x9a, 0x0c, 0xf2, 0xd5, 0x60, 0x0a, 0xae, 0x8a, 0xaa, 0x94, - 0xd8, 0xf4, 0x29, 0x3c, 0x48, 0xa7, 0xf3, 0xd3, 0x0a, 0x0c, - 0x95, 0xd3, 0x24, 0xe6, 0xc8, 0x54, 0x50, 0xd2, 0x30, 0x13, - 0x5a, 0xd2, 0x2b, 0xc9, 0x65, 0x50, 0x49, 0x4e, 0xc0, 0x7a, - 0x89, 0xc9, 0xf4, 0x0e, 0x95, 0xa4, 0x18, 0xa4, 0x83, 0x50, - 0x4e, 0xe3, 0x31, 0xff, 0x9c, 0x5d, 0x54, 0x0c, 0xbc, 0x00, - 0xab, 0x4d, 0xc2, 0x0c, 0xfe, 0x8e, 0x52, 0x04, 0x4c, 0x20, - 0xbe, 0xf3, 0x6a, 0xd1, 0x69, 0xbf, 0x5a, 0xc5, 0xc1, 0x6d, - 0xb6, 0x0e, 0xf2, 0x35, 0xff, 0xe5, 0x1a, 0x4e, 0x5c, 0x45, - 0x06, 0x61, 0x79, 0x03, 0xc6, 0x16, 0xe4, 0xd7, 0xd5, 0x15, - 0x39, 0x30, 0x7e, 0xdf, 0x46, 0xc1, 0x12, 0x55, 0xc8, 0x65, - 0x56, 0x31, 0xc4, 0x7a, 0x97, 0xde, 0x81, 0xaa, 0x70, 0x7f, - 0x41, 0x84, 0xd8, 0x9f, 0xad, 0x90, 0xb6, 0xa0, 0xf5, 0x02, - 0x02, 0x3d, 0x10, 0xe0, 0x93, 0xf0, 0x2a, 0x6e, 0xdd, 0xb5, - 0x0d, 0xff, 0x6b, 0xd5, 0x9d, 0x69, 0x08, 0x21, 0x7d, 0x6f, - 0xdf, 0xc7, 0x39, 0xf9, 0x11, 0x97, 0x0f, 0x8b, 0x0e, 0xeb, - 0x18, 0x9b, 0x55, 0x9c, 0x8b, 0x58, 0xeb, 0xe5, 0x94, 0x10, - 0xa0, 0x6b, 0x88, 0x6f, 0xf3, 0xf7, 0xf1, 0x79, 0x56, 0xc1, - 0xd2, 0x84, 0x08, 0xc0, 0xb8, 0xf0, 0x43, 0x9a, 0xa7, 0xad, - 0xb2, 0x15, 0x0a, 0xce, 0x41, 0x64, 0xbd, 0x84, 0xd0, 0xc3, - 0x5b, 0x1f, 0x4e, 0x77, 0x87, 0xe5, 0x54, 0x18, 0x20, 0xc0, - 0xf9, 0xa9, 0x9c, 0x9c, 0xbe, 0xad, 0x47, 0x86, 0x02, 0x1a, - 0x74, 0x4c, 0x09, 0xc2, 0xb3, 0x17, 0x32, 0x72, 0x76, 0xda, - 0x0f, 0x4e, 0xcf, 0xce, 0x71, 0x88, 0x62, 0xbc, 0xba, 0x09, - 0xf3, 0xb4, 0x87, 0x15, 0x84, 0xed, 0xe4, 0x88, 0x7e, 0xc2, - 0x42, 0x46, 0x55, 0x53, 0x75, 0xa5, 0x54, 0xf4, 0xd3, 0x2d, - 0x64, 0x38, 0xf6, 0x13, 0xc8, 0xba, 0x5d, 0x3e, 0xcb, 0x04, - 0x82, 0xbf, 0xc6, 0xcd, 0x7d, 0x23, 0x4b, 0x03, 0x96, 0x6f, - 0xb1, 0x57, 0x4f, 0xe5, 0xd4, 0xa2, 0x8c, 0xc7, 0x60, 0x77, - 0x13, 0x82, 0x5c, 0x8a, 0x07, 0xf4, 0x95, 0x51, 0xc5, 0x52, - 0x92, 0x70, 0x5e, 0x4a, 0x34, 0x0c, 0xf4, 0x9b, 0x93, 0x0a, - 0x3a, 0x1c, 0xca, 0x4d, 0x85, 0xe8, 0x17, 0x57, 0x10, 0xec, - 0x65, 0x9e, 0x5d, 0xef, 0xbb, 0xc7, 0x3f, 0x90, 0x94, 0x9c, - 0x49, 0x29, 0xd1, 0x0c, 0x18, 0x24, 0x67, 0xc9, 0xc5, 0xec, - 0xb1, 0x69, 0xd2, 0x0d, 0xe5, 0x28, 0x3d, 0xce, 0xae, 0xc1, - 0xe4, 0xf1, 0xa8, 0xa4, 0x53, 0x78, 0xad, 0x9c, 0xa4, 0x34, - 0x7a, 0xda, 0x23, 0x93, 0x5e, 0x84, 0x37, 0x64, 0x13, 0x7c, - 0x1f, 0x2f, 0xf3, 0xc7, 0x26, 0xcc, 0x73, 0x80, 0x56, 0x93, - 0xb5, 0x72, 0x85, 0x96, 0xcc, 0xdb, 0x63, 0x91, 0x44, 0x79, - 0xa8, 0x9e, 0x69, 0x6e, 0xee, 0xe2, 0x0d, 0x37, 0x4d, 0xdb, - 0xc9, 0x2a, 0x8d, 0x5a, 0xc1, 0x66, 0x90, 0x88, 0x93, 0x07, - 0x69, 0x0b, 0x2b, 0xaf, 0x68, 0x44, 0x79, 0x2b, 0xb4, 0xa7, - 0x44, 0xb4, 0x7f, 0xbf, 0xee, 0x17, 0x2b, 0x9e, 0x57, 0xe3, - 0x47, 0x95, 0xc8, 0xb3, 0xaa, 0xab, 0xb0, 0xd6, 0x10, 0xe6, - 0x71, 0xb8, 0xba, 0x3c, 0xce, 0xf2, 0x84, 0x6e, 0xa2, 0x28, - 0x03, 0x93, 0x01, 0xa6, 0x57, 0xa0, 0x29, 0x7e, 0x4f, 0xc6, - 0xbb, 0xd6, 0x13, 0x39, 0xda, 0x3e, 0xb7, 0xa9, 0xc5, 0xb5, - 0xb8, 0x03, 0xa4, 0x00, 0x62, 0xe3, 0x8e, 0x83, 0xae, 0x2b, - 0xea, 0x98, 0x53, 0xce, 0xe2, 0xe9, 0xd1, 0x63, 0xa3, 0xf1, - 0xc3, 0x9c, 0x41, 0x47, 0x7b, 0x09, 0xc3, 0x95, 0x73, 0x02, - 0xa9, 0xa3, 0x0a, 0x43, 0xd1, 0x08, 0x29, 0xac, 0xee, 0xf3, - 0x96, 0x20, 0xe6, 0x0f, 0xd1, 0x06, 0x31, 0x79, 0x19, 0xb0, - 0xec, 0x26, 0xfd, 0xb9, 0xbd, 0x1d, 0x7c, 0xf0, 0x64, 0xdb, - 0xe4, 0x59, 0x43, 0x3b, 0x37, 0xdd, 0x1e, 0xcb, 0x16, 0xaa, - 0x27, 0x0b, 0xdd, 0x80, 0xe2, 0xb2, 0x01, 0x0e, 0x18, 0x6c, - 0x8d, 0x6c, 0x7e, 0x72, 0xb4, 0x59, 0x86, 0x8c, 0xa3, 0x4b, - 0xe7, 0xcc, 0xa9, 0xa7, 0x7c, 0x1b, 0x38, 0x5d, 0xc7, 0x48, - 0x2c, 0xaa, 0xca, 0xba, 0x46, 0x46, 0x3d, 0xfb, 0x61, 0x3a, - 0x89, 0xe7, 0x55, 0x75, 0xd5, 0x26, 0xac, 0x69, 0x48, 0x88, - 0x9b, 0x1f, 0x51, 0x95, 0x85, 0xe4, 0x02, 0xe2, 0xee, 0x80, - 0xe8, 0x78, 0x45, 0x92, 0x5e, 0xe4, 0x3e, 0x75, 0x56, 0x4f, - 0x88, 0x53, 0x4f, 0xab, 0xbd, 0x82, 0x56, 0x1b, 0x4a, 0x2d, - 0x6d, 0x9b, 0x9e, 0x3b, 0xd7, 0x08, 0x27, 0x59, 0x46, 0x11, - 0x1c, 0xde, 0xdf, 0x0b, 0x64, 0x4c, 0x75, 0xc3, 0x97, 0x8e, - 0xd7, 0x8a, 0x30, 0xae, 0xa6, 0x6d, 0x91, 0x83, 0x7a, 0xbe, - 0x75, 0xbc, 0xce, 0x67, 0x47, 0x44, 0x91, 0x27, 0xd2, 0x24, - 0x5c, 0x90, 0xd1, 0x0d, 0xa3, 0xe8, 0xf5, 0x55, 0x9c, 0x16, - 0x60, 0x11, 0x82, 0xa3, 0x2c, 0x24, 0xa7, 0x25, 0xa3, 0x4d, - 0xce, 0xfd, 0x64, 0x16, 0x59, 0x82, 0x8c, 0x80, 0xe6, 0xec, - 0x63, 0x5a, 0x13, 0xc6, 0x26, 0x2a, 0xc2, 0xea, 0x80, 0x32, - 0x03, 0x08, 0x1a, 0x10, 0x08, 0x30, 0xdb, 0x52, 0x16, 0x74, - 0x51, 0x8e, 0x3a, 0x58, 0x01, 0x5b, 0x7e, 0xe4, 0xc7, 0x6a, - 0x04, 0xad, 0xc7, 0xd5, 0x80, 0x82, 0x1c, 0x0c, 0x64, 0xfd, - 0x8d, 0x2a, 0x04, 0x4c, 0x31, 0x66, 0x2e, 0xca, 0x7c, 0x58, - 0x59, 0xd2, 0xeb, 0x7b, 0x8d, 0xa9, 0x42, 0x6d, 0x3a, 0xa0, - 0x1e, 0xcc, 0x47, 0xa9, 0xde, 0x3b, 0x94, 0x64, 0x9f, 0x78, - 0xcd, 0x33, 0x7c, 0xbb, 0xeb, 0x62, 0xdb, 0x87, 0x5d, 0x99, - 0x99, 0x17, 0x1c, 0x6d, 0xdb, 0x5d, 0x4b, 0x89, 0x26, 0xd3, - 0x45, 0xe1, 0x1b, 0xcf, 0x15, 0x6d, 0x9b, 0xd6, 0x6e, 0x4b, - 0xe5, 0x87, 0x2b, 0xd8, 0xa3, 0x75, 0x71, 0x7a, 0xc2, 0xee, - 0xed, 0x6a, 0xf6, 0x62, 0xc3, 0x71, 0x35, 0x61, 0x53, 0x32, - 0xaf, 0x27, 0x36, 0x44, 0x52, 0x9f, 0xfd, 0x70, 0x4d, 0x65, - 0xe3, 0x8b, 0xe0, 0x70, 0xca, 0xdc, 0x08, 0xb8, 0x27, 0x2b, - 0xf9, 0x4d, 0xc4, 0x35, 0x8d, 0x02, 0x22, 0x08, 0xe0, 0xef, - 0xf3, 0x3c, 0x9b, 0xaf, 0x8b, 0x78, 0x7e, 0x1b, 0x2c, 0xc2, - 0x94, 0x1c, 0xbe, 0xc8, 0xd1, 0x16, 0x44, 0x18, 0x39, 0x29, - 0x80, 0x54, 0xa3, 0x29, 0xa8, 0x61, 0x3b, 0x61, 0xb1, 0x61, - 0x01, 0x83, 0xc8, 0x83, 0x98, 0x34, 0x80, 0x65, 0xab, 0x4f, - 0xd8, 0x8e, 0x44, 0x6f, 0x9a, 0xe9, 0x95, 0x54, 0x3f, 0xe0, - 0xfb, 0x74, 0x40, 0xb3, 0x80, 0xd0, 0x0d, 0x98, 0xe6, 0xdc, - 0xa1, 0x27, 0xfa, 0x3c, 0x89, 0x28, 0x8d, 0x34, 0x2b, 0x68, - 0x9a, 0xef, 0xc5, 0x22, 0x26, 0xca, 0x02, 0x4f, 0x7c, 0x8f, - 0x5a, 0xda, 0x32, 0x4e, 0xea, 0xe5, 0x09, 0xe3, 0xf4, 0x75, - 0x83, 0x2c, 0xb5, 0xf0, 0xfd, 0x68, 0x2c, 0x92, 0x42, 0xb1, - 0x3f, 0xc1, 0x1f, 0xe9, 0x94, 0x9c, 0xb2, 0xb8, 0xf5, 0x16, - 0x78, 0x4c, 0xe0, 0xbe, 0x3a, 0x3e, 0xa4, 0x25, 0x7a, 0xc6, - 0x27, 0x8e, 0x06, 0x9b, 0xae, 0x07, 0xef, 0x17, 0x51, 0xe4, - 0x44, 0x14, 0xd7, 0xa3, 0x06, 0xd2, 0x29, 0x7c, 0xd6, 0x11, - 0xcc, 0xac, 0x52, 0x8c, 0x80, 0x95, 0x57, 0x8a, 0x7d, 0xee, - 0x6a, 0x36, 0x42, 0xc7, 0x88, 0x70, 0xee, 0xd4, 0x87, 0x83, - 0x7e, 0x44, 0x89, 0xb2, 0xe4, 0xb7, 0x3e, 0x8b, 0x61, 0xcb, - 0xdb, 0xf9, 0x36, 0x67, 0x0b, 0x0f, 0xc4, 0x8d, 0xc9, 0x6f, - 0xc1, 0xf7, 0x34, 0xe3, 0xd4, 0x8e, 0x49, 0x00, 0x65, 0xdb, - 0x12, 0xeb, 0x16, 0x06, 0x46, 0xef, 0xe2, 0xf6, 0x36, 0x35, - 0x25, 0x1b, 0xcb, 0x53, 0xec, 0x53, 0x06, 0x45, 0x95, 0x91, - 0x4b, 0x17, 0x04, 0xc6, 0x18, 0x33, 0xe0, 0x19, 0x19, 0x36, - 0x03, 0xfa, 0x47, 0xf2, 0xc9, 0x07, 0xbe, 0xcc, 0x56, 0x26, - 0xf8, 0x31, 0xf9, 0xe4, 0x03, 0x27, 0xcc, 0x9a, 0x2c, 0x13, - 0x66, 0x80, 0xc7, 0x38, 0xef, 0xc5, 0x77, 0x1f, 0xa2, 0x31, - 0xfb, 0xf4, 0x63, 0xcd, 0xa9, 0xa7, 0xb0, 0xce, 0xd9, 0xa7, - 0x25, 0x5d, 0xb7, 0x91, 0xd8, 0x11, 0x1c, 0x8d, 0x0b, 0x08, - 0xfd, 0xb3, 0x92, 0x89, 0xf6, 0xc5, 0x8d, 0x23, 0xf8, 0xb1, - 0x62, 0x23, 0x11, 0x10, 0x18, 0x7a, 0x64, 0x04, 0x3e, 0x46, - 0x4c, 0xa2, 0xee, 0x0d, 0x3a, 0x33, 0x75, 0x4a, 0x10, 0x91, - 0x8c, 0xff, 0xf1, 0x8f, 0x40, 0xff, 0xbc, 0xc3, 0xbe, 0x85, - 0xe9, 0x2d, 0xa5, 0xc4, 0xbf, 0xbf, 0x16, 0x57, 0x0e, 0x50, - 0x26, 0xc4, 0x9d, 0x50, 0xc5, 0x84, 0xb4, 0xfb, 0x1b, 0x07, - 0xde, 0x86, 0xd3, 0x88, 0xd4, 0xba, 0xb8, 0x90, 0x01, 0xa3, - 0x22, 0x91, 0x66, 0x44, 0xb4, 0xad, 0x89, 0x72, 0x18, 0x50, - 0xe2, 0xe4, 0xaf, 0xdb, 0x20, 0xca, 0xe2, 0x3c, 0x6d, 0x17, - 0xc1, 0x75, 0xb6, 0xba, 0x0c, 0x88, 0x8c, 0x5d, 0xc6, 0x2b, - 0x30, 0xd0, 0x8a, 0xcb, 0xaf, 0xa6, 0x89, 0x7b, 0xb4, 0xa0, - 0x15, 0xd3, 0x8b, 0xd2, 0xb8, 0xaa, 0x75, 0xee, 0x02, 0xbe, - 0xe9, 0x05, 0x5a, 0xd4, 0x64, 0xed, 0x45, 0xb5, 0x19, 0x89, - 0x1b, 0x67, 0x3e, 0xfe, 0x53, 0x7b, 0x90, 0xed, 0x0a, 0xdb, - 0x9d, 0xb8, 0xc3, 0x92, 0xa0, 0x73, 0x0e, 0x9b, 0xd5, 0xb1, - 0x68, 0x3c, 0xf7, 0x6e, 0xdc, 0x84, 0x74, 0x0a, 0xf2, 0xa8, - 0xa3, 0x92, 0x1a, 0xa2, 0x74, 0x1a, 0x9b, 0x49, 0xb7, 0x0f, - 0x29, 0x27, 0x8e, 0xd2, 0xf9, 0xed, 0xf8, 0x89, 0x98, 0x31, - 0x98, 0x3d, 0x46, 0xb2, 0x8b, 0xf2, 0x31, 0xd9, 0x85, 0x22, - 0x2e, 0x33, 0xa6, 0x29, 0x12, 0x33, 0x00, 0x65, 0xa6, 0xda, - 0xab, 0x24, 0x0b, 0xe3, 0x16, 0xfd, 0x9d, 0x2c, 0x25, 0x2b, - 0xf1, 0x72, 0x7d, 0x12, 0x2c, 0x51, 0x43, 0xf9, 0x3d, 0xa6, - 0x6d, 0xe8, 0x57, 0xa9, 0x1f, 0x6b, 0x1c, 0x06, 0x00, 0x0f, - 0x3c, 0x88, 0x92, 0xf3, 0x55, 0xc8, 0x52, 0xcd, 0x4f, 0xb9, - 0xcf, 0x0e, 0x3e, 0x11, 0xb8, 0xd5, 0x7c, 0x6a, 0xa6, 0xe8, - 0x31, 0xd3, 0x7f, 0xeb, 0x05, 0xcc, 0x81, 0xba, 0x54, 0x58, - 0xd0, 0x52, 0x75, 0x87, 0x42, 0xc5, 0xc9, 0x66, 0xfb, 0x4e, - 0x4b, 0xd1, 0xe0, 0xeb, 0x8d, 0xba, 0x67, 0x68, 0xd4, 0x97, - 0x98, 0x33, 0x39, 0xfc, 0x11, 0x72, 0x12, 0x20, 0xb6, 0xa8, - 0xa5, 0xa0, 0xba, 0x3f, 0xf2, 0x26, 0xe4, 0x73, 0x74, 0x49, - 0xdc, 0x77, 0x34, 0xe9, 0x50, 0x44, 0x71, 0x38, 0x81, 0xea, - 0xf6, 0xe3, 0x1b, 0x18, 0x47, 0xa3, 0x9c, 0xda, 0x09, 0x36, - 0x72, 0xa2, 0xfb, 0xd6, 0xe9, 0x09, 0xbe, 0xcf, 0x07, 0xa0, - 0x13, 0xde, 0x6b, 0x25, 0x3a, 0x39, 0x4c, 0x5f, 0xcb, 0x4d, - 0x58, 0xbb, 0x67, 0x50, 0x25, 0xd5, 0xce, 0x80, 0x78, 0xd0, - 0xde, 0xd4, 0xa8, 0x6d, 0xb6, 0x7d, 0xe7, 0x51, 0xb3, 0xd3, - 0x53, 0x6e, 0xc9, 0xed, 0xd1, 0x46, 0x92, 0x0f, 0x16, 0x25, - 0x7c, 0x5c, 0x34, 0x73, 0xb6, 0x6e, 0xdc, 0x39, 0x26, 0xce, - 0x1c, 0x21, 0x69, 0xbe, 0x0d, 0x9a, 0xcc, 0x1d, 0xcf, 0x77, - 0x28, 0x7b, 0x98, 0xd3, 0x1c, 0xa3, 0x7a, 0xb7, 0x5c, 0x1d, - 0x9a, 0xcc, 0xe3, 0x70, 0xf5, 0xe6, 0x04, 0xb7, 0x7a, 0x15, - 0x43, 0x4e, 0xd4, 0x83, 0x6c, 0xd2, 0x69, 0xcd, 0x8a, 0x62, - 0xf9, 0x62, 0x9b, 0xa5, 0xa0, 0xee, 0x0d, 0x9e, 0xee, 0xec, - 0xec, 0xf4, 0x50, 0x4a, 0x61, 0x0f, 0x03, 0x8a, 0x9b, 0xd9, - 0x37, 0xa4, 0x1d, 0xd4, 0x51, 0x8b, 0xcc, 0x9d, 0xf8, 0x15, - 0x4f, 0x3a, 0x63, 0xec, 0x1f, 0xb2, 0x1b, 0xef, 0xb4, 0x53, - 0xd6, 0x20, 0x5f, 0x89, 0xc0, 0x7e, 0x03, 0xfa, 0xf4, 0x58, - 0x80, 0x89, 0x0f, 0xad, 0xae, 0x62, 0x0f, 0x51, 0x05, 0xdf, - 0x00, 0x20, 0x76, 0x79, 0x80, 0x4c, 0xeb, 0x02, 0xc5, 0x4c, - 0x9f, 0xc9, 0x4c, 0x22, 0x81, 0xc3, 0xcf, 0xa3, 0x0c, 0x8b, - 0x3b, 0x7c, 0x70, 0x29, 0xcd, 0xc3, 0xec, 0xcb, 0x0e, 0x09, - 0xe7, 0x0b, 0xde, 0x94, 0xe0, 0x25, 0xf5, 0x34, 0x09, 0x8c, - 0xff, 0xf8, 0x70, 0x2b, 0x2c, 0xee, 0x25, 0x27, 0xdf, 0xe3, - 0xdd, 0x21, 0x30, 0xd5, 0x3d, 0x91, 0x47, 0xb3, 0x93, 0x90, - 0x09, 0xc6, 0x87, 0x24, 0x3a, 0x5c, 0x69, 0x7c, 0x7d, 0xe4, - 0x0a, 0x1f, 0x42, 0x60, 0xfb, 0x53, 0x70, 0xee, 0xef, 0xa9, - 0x5f, 0xe5, 0x8c, 0xab, 0x26, 0x80, 0x4b, 0x9d, 0x24, 0xd1, - 0x5b, 0x93, 0xf3, 0xc8, 0x34, 0x49, 0x95, 0xad, 0xee, 0xae, - 0x7c, 0xe6, 0xf5, 0x7b, 0x95, 0x46, 0xb2, 0x94, 0x60, 0xd2, - 0x00, 0xef, 0xc0, 0x39, 0x50, 0x98, 0x33, 0x2a, 0x95, 0x52, - 0x88, 0x56, 0xa9, 0x32, 0xf1, 0x22, 0x3e, 0x26, 0xe2, 0x19, - 0xbc, 0xdb, 0xb2, 0x75, 0xd1, 0xb1, 0x4d, 0x9e, 0x1b, 0x8e, - 0x04, 0xbe, 0x22, 0xcc, 0x7f, 0xef, 0xa9, 0x4a, 0x91, 0xec, - 0x74, 0x85, 0x91, 0x17, 0x3e, 0x9c, 0x9a, 0xc7, 0xd8, 0x86, - 0x9c, 0x82, 0xec, 0xa1, 0x92, 0x8b, 0x2c, 0xe8, 0x2c, 0xc3, - 0x62, 0xd6, 0xe3, 0x27, 0xda, 0x1e, 0x5d, 0x8f, 0xcc, 0xb0, - 0xd4, 0x5b, 0xc5, 0x90, 0xea, 0x5b, 0x33, 0x5b, 0x51, 0x1d, - 0x92, 0xc1, 0x88, 0x73, 0x02, 0xd1, 0x19, 0xac, 0x5c, 0xd0, - 0xdd, 0x80, 0xc2, 0xc8, 0x2c, 0xd0, 0x36, 0x00, 0x4f, 0x1c, - 0x2e, 0x5e, 0xe1, 0x9c, 0x67, 0xd1, 0x2d, 0xef, 0xc1, 0x64, - 0xbd, 0x22, 0x43, 0x02, 0x2e, 0xac, 0x20, 0x05, 0xdb, 0xe8, - 0x0e, 0x75, 0x49, 0x03, 0x6b, 0x51, 0x1b, 0x85, 0xe6, 0x82, - 0x29, 0x0b, 0x90, 0x35, 0xa1, 0x7c, 0xf4, 0x65, 0xf6, 0x75, - 0x42, 0x27, 0xb9, 0x48, 0xe9, 0x10, 0x18, 0xa6, 0x3b, 0xda, - 0x75, 0xde, 0x47, 0x69, 0xb2, 0x93, 0x78, 0x6c, 0xf8, 0x78, - 0x7e, 0xf3, 0x0d, 0xf5, 0x40, 0x4c, 0x26, 0x09, 0x2c, 0xef, - 0x19, 0x4f, 0x14, 0xad, 0x92, 0x42, 0x78, 0xba, 0x27, 0xfc, - 0x56, 0x8d, 0x1e, 0x12, 0x1e, 0xe1, 0xf3, 0xe5, 0x4b, 0xe3, - 0x61, 0xde, 0x8b, 0x37, 0x59, 0x0b, 0x2b, 0x86, 0x14, 0x50, - 0xc8, 0x8b, 0x35, 0xd7, 0x93, 0x40, 0xc6, 0x33, 0xa2, 0x6e, - 0x23, 0xaa, 0x6b, 0x71, 0x70, 0x4a, 0x44, 0x07, 0x47, 0xeb, - 0xc2, 0x27, 0xde, 0xf7, 0xea, 0x49, 0x77, 0xed, 0x9e, 0xbe, - 0x61, 0xb7, 0xe8, 0x0b, 0xa7, 0xaa, 0x4e, 0xc5, 0x37, 0x93, - 0x78, 0x09, 0x82, 0xac, 0xa0, 0xc7, 0x91, 0x1a, 0x7d, 0xa4, - 0x4f, 0xaf, 0x1e, 0xb3, 0x87, 0xcc, 0x89, 0xa0, 0x59, 0xe7, - 0x00, 0xa7, 0x46, 0x63, 0xa9, 0x0f, 0xc3, 0x43, 0x9a, 0xea, - 0xd2, 0x19, 0xb0, 0xd7, 0x42, 0x23, 0xa9, 0xcb, 0x4d, 0xf3, - 0x68, 0x46, 0x70, 0x0f, 0x80, 0xc8, 0x93, 0x8e, 0x52, 0x86, - 0xde, 0xd1, 0x81, 0xee, 0x74, 0xbb, 0x22, 0x47, 0xec, 0xc8, - 0x0d, 0x07, 0xae, 0x47, 0x4e, 0x40, 0x05, 0xf2, 0x36, 0x26, - 0xca, 0x2f, 0x39, 0x79, 0xaf, 0xb0, 0x8d, 0x5f, 0xf3, 0x6a, - 0x21, 0x9b, 0x81, 0xee, 0x88, 0x61, 0xdf, 0x12, 0x4c, 0x4b, - 0xca, 0xec, 0x1b, 0x84, 0xed, 0x6d, 0x05, 0x44, 0x33, 0xec, - 0x40, 0xe1, 0xa0, 0x37, 0x18, 0x94, 0x03, 0x0c, 0x7b, 0xc3, - 0xdd, 0x52, 0x88, 0xe1, 0x5e, 0x6f, 0x77, 0x4f, 0x40, 0x18, - 0xc4, 0x55, 0x41, 0x89, 0x53, 0x0e, 0x4c, 0x9e, 0xc6, 0xbf, - 0xb6, 0x9f, 0x06, 0xbe, 0x68, 0xb0, 0x9d, 0x2d, 0x70, 0xa9, - 0xcb, 0x69, 0x02, 0x97, 0xdf, 0x6f, 0x6d, 0x18, 0xfc, 0x66, - 0x4f, 0x11, 0x56, 0xeb, 0x68, 0x36, 0x19, 0x64, 0x56, 0x63, - 0x1f, 0xfa, 0xfb, 0x6f, 0xb8, 0x9e, 0xe7, 0x4d, 0x37, 0xa3, - 0x81, 0xd3, 0xd0, 0x02, 0x59, 0x3a, 0x46, 0x18, 0x27, 0xec, - 0xd3, 0x3b, 0xaa, 0xf8, 0x95, 0x19, 0x8c, 0x08, 0x3c, 0xe3, - 0x6a, 0xcb, 0x60, 0xc4, 0x28, 0x75, 0xcb, 0x4d, 0xa8, 0x98, - 0xd7, 0x51, 0x52, 0xf1, 0x94, 0x7e, 0x42, 0x1d, 0x63, 0x1f, - 0xfa, 0x31, 0x73, 0x33, 0x6c, 0xe0, 0x5d, 0xce, 0x11, 0xc1, - 0x47, 0x50, 0xc7, 0x72, 0x79, 0x0d, 0x6a, 0x28, 0x09, 0x41, - 0xc0, 0xfe, 0x39, 0xc9, 0x52, 0x1f, 0x09, 0x0e, 0xb6, 0x08, - 0xf3, 0x4b, 0x9d, 0x32, 0x7c, 0x71, 0x82, 0x5e, 0x5c, 0xeb, - 0x14, 0x2f, 0xae, 0x9d, 0x60, 0x51, 0x9a, 0x1b, 0x4d, 0x4d, - 0x73, 0x27, 0x20, 0xd9, 0xd0, 0x23, 0x1d, 0x12, 0xc6, 0xe1, - 0xe4, 0xe4, 0xf0, 0x40, 0x07, 0x07, 0xa1, 0x61, 0x33, 0xba, - 0x71, 0x49, 0xc7, 0x69, 0x2a, 0xdb, 0xa7, 0xe5, 0xef, 0x84, - 0x28, 0xca, 0x5b, 0x02, 0x37, 0xd0, 0x93, 0xb1, 0x5d, 0x36, - 0x14, 0x85, 0xf6, 0xbd, 0x01, 0x9d, 0xd2, 0x25, 0x51, 0x04, - 0xc8, 0x2e, 0x14, 0x51, 0x0b, 0x19, 0xb5, 0xa1, 0x4d, 0xb2, - 0xc5, 0x32, 0x24, 0x62, 0xf4, 0x49, 0x70, 0x4c, 0x34, 0x2c, - 0x72, 0x58, 0x58, 0xc5, 0x5b, 0xf0, 0x28, 0xb9, 0x85, 0x8e, - 0x4f, 0xcc, 0x0d, 0x59, 0xf3, 0xad, 0xc6, 0x9e, 0x09, 0xbc, - 0x53, 0x60, 0x22, 0xe6, 0x09, 0x6e, 0x0d, 0x87, 0x2b, 0x9b, - 0xc1, 0xa1, 0x67, 0xf6, 0xba, 0x77, 0x0f, 0xd6, 0x9a, 0xc1, - 0xd9, 0x64, 0x2b, 0x07, 0xcc, 0x00, 0xd2, 0x06, 0x8c, 0x97, - 0x95, 0x0c, 0x18, 0x40, 0x7c, 0xd6, 0x01, 0x03, 0x95, 0xeb, - 0x84, 0x5d, 0x9d, 0xe8, 0xcf, 0x19, 0xe4, 0x77, 0x27, 0x43, - 0x52, 0xe7, 0x73, 0x04, 0x5e, 0xfc, 0xe1, 0x01, 0xe3, 0x4e, - 0xe8, 0xca, 0xd1, 0xdd, 0x89, 0xd4, 0xd5, 0xb9, 0x9d, 0xfa, - 0x68, 0xfe, 0x1c, 0x5f, 0xc5, 0xf3, 0x71, 0xb3, 0xa7, 0x08, - 0x1a, 0x81, 0xc3, 0xa5, 0x03, 0xdb, 0xb3, 0xb6, 0x59, 0x29, - 0xd8, 0xe7, 0x1d, 0x38, 0x4b, 0xcb, 0x6c, 0x5f, 0xba, 0x99, - 0x94, 0xee, 0x25, 0xa6, 0x54, 0x85, 0x9a, 0xdc, 0x52, 0x95, - 0xb5, 0x4c, 0xe4, 0x58, 0x96, 0x7e, 0xf8, 0x72, 0x37, 0x29, - 0x13, 0xb4, 0x52, 0x59, 0x40, 0x5b, 0xc8, 0x92, 0x7d, 0x43, - 0xa2, 0x96, 0x7f, 0xe9, 0xc3, 0xcf, 0xc6, 0x0f, 0xd8, 0xea, - 0x40, 0x8f, 0xc7, 0xea, 0xe5, 0x8b, 0xa8, 0x2c, 0x59, 0x1a, - 0x55, 0x1d, 0x1a, 0x33, 0xa2, 0x9a, 0xa5, 0x2e, 0x50, 0xa4, - 0x7f, 0xa3, 0x35, 0x13, 0x8a, 0x2e, 0x3f, 0x84, 0x99, 0xd4, - 0xf9, 0x67, 0x5f, 0x1d, 0xfc, 0x2a, 0xd1, 0xa8, 0x86, 0x7d, - 0xf5, 0xe3, 0xbc, 0x4d, 0xd2, 0x83, 0x98, 0x9d, 0x48, 0x8d, - 0xc7, 0x5d, 0xa2, 0xc4, 0x83, 0x8b, 0xae, 0xb0, 0x04, 0x92, - 0x7d, 0x85, 0x85, 0x6b, 0x3a, 0x89, 0xc9, 0x42, 0x87, 0x17, - 0x8f, 0x56, 0x4d, 0xa2, 0xc4, 0x77, 0x6f, 0x86, 0xa9, 0xbc, - 0x9a, 0xcf, 0xa9, 0x02, 0x65, 0x53, 0x11, 0x25, 0x75, 0xa8, - 0x1c, 0x93, 0x03, 0xe5, 0xab, 0xfc, 0x7d, 0x66, 0x71, 0x8b, - 0x56, 0x56, 0x87, 0xd2, 0x2f, 0x4b, 0x90, 0x2f, 0x36, 0x15, - 0xf6, 0xbd, 0x0e, 0x85, 0x83, 0x24, 0xbc, 0xb0, 0xf1, 0xe1, - 0x6b, 0x1d, 0x6c, 0xe1, 0x17, 0x66, 0x53, 0xb0, 0x1f, 0xe7, - 0xf9, 0xa9, 0xbc, 0x07, 0x8f, 0xaa, 0x54, 0x38, 0x76, 0x61, - 0x2a, 0xa2, 0xa4, 0xd6, 0xa8, 0xce, 0x09, 0x28, 0x64, 0x55, - 0x77, 0x0c, 0xaa, 0x28, 0xaa, 0xa4, 0x73, 0x19, 0xc7, 0xcb, - 0x57, 0xf3, 0xe4, 0x2a, 0x76, 0x8c, 0xab, 0x56, 0xe6, 0xe1, - 0x34, 0x70, 0xce, 0x39, 0x3d, 0x12, 0x57, 0xff, 0x3a, 0xbe, - 0xd7, 0x2f, 0xc0, 0xd3, 0x16, 0x46, 0xeb, 0xa0, 0x8c, 0xd6, - 0x41, 0x33, 0x5a, 0x4e, 0x1a, 0xd4, 0x5d, 0xa0, 0xac, 0x3b, - 0xd9, 0x71, 0x96, 0x3b, 0x31, 0x91, 0xdf, 0x21, 0x42, 0x56, - 0x39, 0x73, 0x5d, 0xea, 0xbe, 0xa1, 0x16, 0xc8, 0xf9, 0xbb, - 0x36, 0x67, 0xdf, 0xaf, 0x10, 0x38, 0x20, 0x98, 0x36, 0x80, - 0x0a, 0x4a, 0x54, 0x01, 0xf6, 0xa8, 0xe4, 0xf3, 0x28, 0x03, - 0x15, 0x07, 0x1c, 0x73, 0xd3, 0xa2, 0x0d, 0x76, 0xef, 0x5a, - 0x7c, 0x60, 0x4a, 0xb7, 0x2d, 0xcf, 0xa6, 0xa5, 0x1f, 0x5f, - 0xd1, 0xce, 0xc5, 0xbc, 0x92, 0xd0, 0xc6, 0x45, 0x83, 0xef, - 0x93, 0xae, 0x52, 0x83, 0xac, 0xf8, 0xc8, 0x3e, 0xf4, 0xe9, - 0x0d, 0xca, 0x1b, 0xe4, 0x70, 0x09, 0xae, 0x06, 0x70, 0xd0, - 0x79, 0x4f, 0xcb, 0x7f, 0x55, 0xc5, 0x3e, 0xe6, 0xc3, 0x84, - 0x7e, 0x00, 0x73, 0x63, 0x09, 0x25, 0x5e, 0x5e, 0x41, 0x8a, - 0xcc, 0x12, 0xbb, 0xd2, 0xf1, 0xd2, 0x91, 0x6f, 0x6e, 0xca, - 0xc8, 0x30, 0x63, 0x8f, 0x83, 0xc4, 0x7b, 0x28, 0xa8, 0x40, - 0x8e, 0xf2, 0xc1, 0xb7, 0xfe, 0x61, 0x39, 0x38, 0x11, 0xa5, - 0x15, 0x64, 0xd8, 0xb2, 0xf3, 0x13, 0xc2, 0xe5, 0x15, 0xa4, - 0xe8, 0x22, 0x65, 0x2b, 0xd2, 0x45, 0x09, 0x9c, 0x01, 0xeb, - 0x53, 0x70, 0xc8, 0x3d, 0xbe, 0xda, 0x21, 0xf9, 0xb5, 0xbe, - 0x22, 0x81, 0x7d, 0x8e, 0x8f, 0x10, 0xeb, 0x80, 0xcf, 0x8e, - 0xe1, 0x9c, 0x72, 0x7c, 0x54, 0xed, 0x99, 0x72, 0x0f, 0x57, - 0x9f, 0x7b, 0xb9, 0xf9, 0x34, 0x72, 0xf1, 0x81, 0xce, 0x99, - 0x3e, 0x38, 0x0f, 0xf2, 0xbf, 0x69, 0xe0, 0x7b, 0x53, 0xdb, - 0xa9, 0xa6, 0x81, 0x43, 0x4d, 0x03, 0x67, 0x9a, 0x7b, 0x39, - 0xd2, 0x34, 0x72, 0xa2, 0x61, 0x92, 0xa8, 0x2f, 0x65, 0x0f, - 0xfb, 0x45, 0x2b, 0xa3, 0x8c, 0x75, 0x7c, 0xa4, 0x7d, 0x13, - 0xf3, 0x41, 0x7f, 0xba, 0x45, 0x2a, 0x81, 0xf4, 0x48, 0x54, - 0x46, 0xe3, 0x7e, 0xe7, 0x00, 0x64, 0xd3, 0x63, 0xf2, 0x74, - 0x7b, 0x1b, 0x1b, 0xcd, 0x66, 0xeb, 0xf4, 0x52, 0x81, 0x0c, - 0x7a, 0xdf, 0x22, 0x63, 0x55, 0x19, 0xe4, 0xd3, 0xde, 0xb7, - 0xd5, 0x40, 0x83, 0xde, 0x60, 0xd8, 0x63, 0x77, 0x2e, 0x8a, - 0x6a, 0x39, 0x34, 0xc0, 0xf5, 0xea, 0xf5, 0xcc, 0x40, 0x9f, - 0xc0, 0x9f, 0xd4, 0x7f, 0xa2, 0x47, 0x7f, 0x7d, 0x9d, 0x46, - 0x3d, 0xba, 0xa7, 0xc0, 0x53, 0x10, 0x7e, 0xf3, 0x43, 0x0d, - 0x6c, 0xec, 0x86, 0xea, 0x34, 0xba, 0x61, 0x1f, 0xef, 0x93, - 0xb5, 0x58, 0x3d, 0x68, 0xa6, 0x9f, 0x0f, 0x8b, 0x78, 0xc1, - 0x8d, 0x73, 0x1f, 0xcf, 0x46, 0x56, 0x86, 0x18, 0xc8, 0xc0, - 0x25, 0x1b, 0xc7, 0x92, 0xc5, 0x88, 0x16, 0xe2, 0x14, 0x84, - 0xca, 0x37, 0x86, 0x52, 0xa5, 0x52, 0x34, 0x97, 0x8e, 0x85, - 0x1b, 0xe8, 0x23, 0xd9, 0x4d, 0xb4, 0x14, 0x2c, 0x5a, 0x91, - 0x34, 0x7d, 0xa8, 0xec, 0xbb, 0x9b, 0x10, 0x6c, 0x8d, 0x33, - 0x71, 0x60, 0xa3, 0x60, 0xa9, 0xa0, 0x39, 0xe3, 0x50, 0x34, - 0x21, 0x11, 0x0c, 0xf5, 0x0c, 0x54, 0x1a, 0xdd, 0xd9, 0x4b, - 0xe9, 0x2b, 0x98, 0x78, 0x01, 0xb1, 0xef, 0x15, 0x69, 0x9e, - 0xa8, 0x15, 0xb7, 0xc8, 0x83, 0x34, 0xd4, 0x91, 0x86, 0x2e, - 0xa4, 0x3b, 0xfc, 0x14, 0x55, 0xcc, 0x42, 0x1f, 0xfc, 0xa2, - 0x3b, 0x88, 0x9c, 0x15, 0x0e, 0x4e, 0xba, 0x50, 0x8d, 0xb1, - 0x3a, 0xc1, 0xbf, 0x82, 0x73, 0x88, 0xf6, 0x9d, 0xbe, 0x25, - 0x92, 0x5f, 0x70, 0xd4, 0x1a, 0x00, 0x25, 0x22, 0x6c, 0xbd, - 0x3a, 0x9a, 0x32, 0x34, 0xea, 0xb8, 0xa5, 0xde, 0xfe, 0xb4, - 0x2d, 0xb1, 0x1c, 0x31, 0xb8, 0x1d, 0x7e, 0x29, 0xaa, 0x52, - 0xfd, 0x40, 0x16, 0x21, 0x78, 0xde, 0x13, 0x98, 0xef, 0x7b, - 0xe0, 0x16, 0xff, 0x1d, 0x0d, 0xad, 0xd8, 0x91, 0xd4, 0x23, - 0xea, 0x67, 0xa4, 0xfb, 0x6e, 0x6d, 0x30, 0xd2, 0x7f, 0x8d, - 0x6f, 0xbe, 0xfb, 0x2e, 0xc1, 0x1d, 0x96, 0x9d, 0x65, 0xea, - 0x4c, 0x3e, 0xd6, 0x47, 0x4b, 0x1d, 0xe7, 0xd5, 0x62, 0x31, - 0x34, 0x5d, 0xdc, 0xdb, 0x28, 0xbc, 0x15, 0x9d, 0x65, 0x15, - 0x22, 0x76, 0x70, 0x3c, 0x22, 0x32, 0x2e, 0x1a, 0x31, 0xa5, - 0xc9, 0xed, 0x64, 0x4e, 0x5a, 0x23, 0x3b, 0x25, 0xb0, 0xdb, - 0x2e, 0xbe, 0xa0, 0xed, 0xa7, 0xee, 0x4d, 0x63, 0x44, 0x43, - 0xe7, 0x02, 0xd6, 0x04, 0xc7, 0xbb, 0x2f, 0xf3, 0x85, 0x82, - 0xd0, 0xc6, 0xf1, 0x83, 0x3d, 0x5a, 0xe5, 0x77, 0x3b, 0xfd, - 0xa7, 0xdd, 0xc0, 0x59, 0x34, 0x26, 0x45, 0xa3, 0x2a, 0xfc, - 0x97, 0x5e, 0x6c, 0x37, 0xae, 0x78, 0xd9, 0xe7, 0xaa, 0x5c, - 0x2b, 0xf3, 0xd6, 0xae, 0x41, 0xbd, 0xf4, 0xe3, 0x4b, 0x6c, - 0xf9, 0xde, 0x8b, 0x8c, 0x53, 0x1f, 0x9a, 0x38, 0x7e, 0x4b, - 0x8e, 0xed, 0xfd, 0x55, 0xb6, 0x4e, 0x23, 0x77, 0xa7, 0xfe, - 0x39, 0x90, 0x8e, 0x13, 0x1c, 0x8d, 0x92, 0x76, 0xe2, 0x69, - 0x95, 0xda, 0x88, 0x39, 0x7a, 0x75, 0x38, 0x96, 0x48, 0xc6, - 0x5b, 0x44, 0x6d, 0xf2, 0x19, 0x1e, 0x7e, 0x52, 0xa8, 0xf0, - 0x8c, 0x87, 0x86, 0x0e, 0x3c, 0xf5, 0x5e, 0x70, 0xac, 0x06, - 0x46, 0x7b, 0x44, 0xe8, 0xe1, 0x34, 0xb6, 0xe4, 0xe9, 0xbf, - 0xae, 0x27, 0x70, 0x7c, 0xb1, 0xa0, 0x9d, 0xc4, 0x60, 0x31, - 0xe6, 0x09, 0xbd, 0x58, 0x12, 0xb9, 0xa5, 0x04, 0x38, 0xff, - 0x00, 0x61, 0x29, 0x64, 0x0e, 0x1b, 0x55, 0xa5, 0x00, 0xe7, - 0x3f, 0xf1, 0x0a, 0x36, 0x15, 0x05, 0x86, 0xe4, 0xd1, 0x15, - 0x24, 0xc5, 0x6e, 0x6d, 0xdd, 0x00, 0xdd, 0xe9, 0xf1, 0x0e, - 0xe0, 0x0b, 0x39, 0xbc, 0xcd, 0x2a, 0xc8, 0x41, 0x4f, 0xdc, - 0xde, 0x55, 0xc3, 0xee, 0xf5, 0xbe, 0xa9, 0x0d, 0xfb, 0xac, - 0xf7, 0xbc, 0x36, 0xec, 0x60, 0x87, 0x68, 0x0c, 0x5d, 0x53, - 0x99, 0xf2, 0xb5, 0x57, 0x80, 0xd6, 0x55, 0x29, 0x14, 0xae, - 0x43, 0xb3, 0xf0, 0x28, 0x0d, 0x0d, 0x52, 0xc9, 0xfd, 0x2f, - 0x56, 0x21, 0x2c, 0x7d, 0x60, 0xbf, 0x8e, 0x42, 0xa0, 0x51, - 0x80, 0xe8, 0xa0, 0x1a, 0x01, 0x1a, 0x7a, 0xd4, 0xde, 0xc0, - 0x31, 0x12, 0x0f, 0xe8, 0x86, 0xb0, 0x78, 0xa4, 0xb8, 0xda, - 0xd5, 0xd2, 0x70, 0xa0, 0x08, 0x9f, 0x25, 0xad, 0x2a, 0xaf, - 0xf5, 0xea, 0x84, 0x45, 0xc3, 0x44, 0x68, 0x2c, 0x0c, 0x68, - 0x39, 0x5a, 0x61, 0xa3, 0xf1, 0x10, 0x9d, 0xe5, 0x78, 0x37, - 0x4b, 0x8c, 0xf2, 0xef, 0x65, 0x05, 0x38, 0x0b, 0x41, 0x89, - 0x51, 0x68, 0xd2, 0x8c, 0x8a, 0xb6, 0x25, 0x5a, 0xb3, 0x92, - 0x2a, 0xf0, 0x5c, 0x03, 0x77, 0x50, 0x0f, 0x34, 0x78, 0x1e, - 0x62, 0x11, 0xe1, 0x88, 0x70, 0xfa, 0xe5, 0xf5, 0x5c, 0x6a, - 0xcd, 0xfa, 0xa9, 0xaa, 0x59, 0x74, 0xb3, 0x78, 0xf5, 0x9b, - 0x56, 0xcf, 0x6f, 0x15, 0x38, 0x71, 0x1a, 0xe9, 0x18, 0xaf, - 0xbd, 0x18, 0xcd, 0xd5, 0x45, 0x29, 0x10, 0x34, 0xed, 0x10, - 0xde, 0x17, 0x51, 0x0b, 0x0e, 0x5e, 0x69, 0xf8, 0x63, 0x1f, - 0xbd, 0x41, 0xa0, 0xda, 0x8e, 0xfb, 0x6d, 0x73, 0xdb, 0x79, - 0xcd, 0x82, 0x70, 0x41, 0x04, 0x78, 0xc8, 0x3a, 0x2a, 0x5d, - 0xa2, 0xc7, 0xd5, 0x66, 0xad, 0xf8, 0xe1, 0xb5, 0xae, 0x6d, - 0x99, 0x3d, 0xed, 0x33, 0x9a, 0x63, 0x4c, 0xda, 0x03, 0x59, - 0xa2, 0x5c, 0x7a, 0xf6, 0x2f, 0xd2, 0x9e, 0xf2, 0x3d, 0x4c, - 0x12, 0xc7, 0x5b, 0x99, 0x57, 0x76, 0x4b, 0xf7, 0x90, 0x3a, - 0xe2, 0x9a, 0x02, 0x97, 0xe7, 0x91, 0x47, 0x4f, 0x9a, 0x08, - 0xec, 0x63, 0xcb, 0x67, 0x20, 0x6a, 0x8a, 0x67, 0xf5, 0xcd, - 0x38, 0xc5, 0x9d, 0xfa, 0x4e, 0x71, 0x08, 0x43, 0x78, 0x07, - 0x88, 0x84, 0xc9, 0xe5, 0xd0, 0xa6, 0x88, 0x3f, 0xad, 0x23, - 0xe1, 0xa9, 0xdb, 0x30, 0xc2, 0xe1, 0x89, 0x5b, 0x51, 0x4d, - 0xfd, 0x55, 0xbc, 0x9c, 0x87, 0x93, 0xb8, 0xb3, 0x1d, 0x6c, - 0x5f, 0xf4, 0x82, 0x96, 0xb4, 0x3f, 0x4f, 0x03, 0x78, 0x4f, - 0xad, 0x8a, 0x7b, 0x50, 0xdc, 0xee, 0xb7, 0x55, 0xf9, 0x38, - 0x20, 0x2c, 0x9b, 0xc7, 0x6f, 0xe6, 0x59, 0x58, 0x74, 0xa6, - 0xdd, 0x7e, 0x91, 0xbd, 0x49, 0x6e, 0xe2, 0xa8, 0x33, 0xe8, - 0x5a, 0x8d, 0x97, 0x42, 0x51, 0xc3, 0x40, 0x83, 0x68, 0xac, - 0x6d, 0x85, 0x6a, 0x2d, 0xed, 0x82, 0x33, 0x0d, 0x7a, 0xbf, - 0xc7, 0x3e, 0x50, 0x7d, 0x2c, 0x1f, 0x6b, 0xd4, 0x0c, 0x08, - 0x35, 0xe1, 0x63, 0x34, 0xf7, 0x0e, 0x18, 0xc2, 0x04, 0x63, - 0xf1, 0x8b, 0xef, 0x25, 0x16, 0x81, 0xf7, 0x2c, 0x06, 0x41, - 0xab, 0x42, 0x9f, 0xdb, 0x30, 0xa2, 0x16, 0x05, 0x7f, 0x6e, - 0x60, 0xd7, 0x21, 0xf6, 0x59, 0xf7, 0x1e, 0x62, 0xdf, 0x1e, - 0x70, 0xd7, 0x6e, 0xd2, 0xa8, 0x75, 0xdd, 0x6e, 0x22, 0xd5, - 0xbe, 0x71, 0x77, 0x78, 0x23, 0x31, 0x42, 0x2e, 0x6f, 0x24, - 0x56, 0xd2, 0xad, 0xba, 0x70, 0xd8, 0x5f, 0x44, 0x41, 0x67, - 0xb2, 0x90, 0x02, 0xc2, 0xac, 0x83, 0x14, 0xb5, 0x7a, 0x50, - 0x5e, 0x3a, 0xf6, 0xe2, 0x15, 0x10, 0x0d, 0xb6, 0xc1, 0x9e, - 0x02, 0x75, 0xb1, 0xc0, 0x61, 0xd1, 0x6e, 0xb8, 0x53, 0x8a, - 0x82, 0xa1, 0xab, 0x7c, 0x64, 0xc1, 0x1d, 0x46, 0x1a, 0x50, - 0x12, 0x19, 0xba, 0xe2, 0x3b, 0xd0, 0xdc, 0x14, 0xc9, 0x7e, - 0x3e, 0x4f, 0xc8, 0x92, 0x42, 0x1f, 0x12, 0x98, 0xa1, 0xa3, - 0x69, 0xa7, 0xb5, 0xd5, 0xea, 0x6e, 0x0e, 0x4c, 0x55, 0xf3, - 0x7d, 0x76, 0x3d, 0x16, 0x15, 0x69, 0xb8, 0xe4, 0x4f, 0x27, - 0xa6, 0x7c, 0x76, 0xb6, 0x16, 0x02, 0x03, 0x3d, 0xc6, 0x12, - 0x24, 0x2d, 0xb7, 0x1a, 0x76, 0x85, 0x85, 0x23, 0x61, 0x90, - 0xd3, 0x12, 0xe9, 0x15, 0x7b, 0x1d, 0xa7, 0xf8, 0x70, 0x03, - 0x7f, 0x67, 0xbb, 0x88, 0x78, 0x50, 0xf6, 0x2e, 0xf3, 0x80, - 0xac, 0x39, 0x88, 0xdc, 0xd1, 0x2d, 0xd6, 0x88, 0x0b, 0xf6, - 0xf4, 0xc7, 0xe2, 0x0c, 0x44, 0xa9, 0x5b, 0xe1, 0x74, 0x6f, - 0xa7, 0xcd, 0x01, 0x7d, 0x52, 0x9b, 0x58, 0x50, 0x38, 0xc5, - 0x74, 0x41, 0xa1, 0x36, 0x59, 0x50, 0x48, 0xe7, 0x8a, 0x41, - 0xf1, 0xb1, 0xe6, 0x7f, 0x78, 0xe7, 0x48, 0x39, 0xba, 0xb7, - 0xa9, 0xa3, 0x7b, 0x5b, 0x0d, 0xa9, 0xac, 0x85, 0x9d, 0xe9, - 0xd1, 0x43, 0x0c, 0x84, 0x94, 0xaa, 0xb8, 0xcf, 0x77, 0xfc, - 0x91, 0x83, 0xa6, 0x73, 0xb1, 0x56, 0x99, 0x61, 0x70, 0x71, - 0xf8, 0xdb, 0x3b, 0x36, 0x10, 0xce, 0xc1, 0x90, 0x09, 0x4c, - 0xff, 0x57, 0x0d, 0xc5, 0xcb, 0xc6, 0x23, 0xc1, 0x55, 0xfc, - 0xea, 0xc1, 0xd8, 0xb0, 0xd4, 0xfb, 0x26, 0x38, 0xa0, 0xdf, - 0x37, 0x81, 0x67, 0xca, 0x7d, 0xa3, 0x56, 0x25, 0x0d, 0xe1, - 0x1b, 0xd2, 0x97, 0xaa, 0x7d, 0x13, 0xa4, 0x9f, 0x1a, 0x36, - 0x0a, 0xf4, 0xfa, 0x26, 0xf0, 0xaf, 0x1b, 0xc2, 0x8b, 0x73, - 0x64, 0x1d, 0x1c, 0xc2, 0x5c, 0xa2, 0x60, 0xcc, 0xd9, 0xae, - 0x6b, 0xca, 0x02, 0xef, 0xe8, 0x58, 0x7a, 0xaa, 0xb5, 0x80, - 0x50, 0x1e, 0x13, 0xb4, 0x84, 0xf4, 0xf0, 0x27, 0xf8, 0xd1, - 0xb4, 0x46, 0x84, 0xea, 0x65, 0xb2, 0x15, 0x54, 0x31, 0x52, - 0x57, 0xe4, 0x97, 0x09, 0xf5, 0xe3, 0x9d, 0xe4, 0xf8, 0xda, - 0x1e, 0x19, 0x98, 0x07, 0x23, 0x2b, 0x4d, 0x32, 0xdd, 0x13, - 0x26, 0x8c, 0xdc, 0xd8, 0xee, 0x54, 0x82, 0x9f, 0xd2, 0x0a, - 0x38, 0xc3, 0xbd, 0x6b, 0xd0, 0x45, 0x15, 0x9b, 0x81, 0xab, - 0xc4, 0x4d, 0x95, 0x84, 0xa8, 0xd2, 0xe3, 0xe5, 0x7b, 0x9a, - 0x8e, 0xbe, 0x21, 0x5f, 0xc4, 0xdc, 0x2f, 0xfa, 0xe0, 0x36, - 0x3d, 0x4c, 0xa7, 0x59, 0x47, 0xb3, 0xfa, 0x5c, 0x88, 0xa7, - 0xe1, 0x02, 0xd7, 0x28, 0xa4, 0xca, 0xbe, 0x56, 0x66, 0x4b, - 0x7b, 0x36, 0xb4, 0xe2, 0xdc, 0x91, 0xd2, 0x1e, 0x06, 0xfc, - 0x20, 0x02, 0x7b, 0x4a, 0xf7, 0x9e, 0x97, 0x44, 0x0f, 0x34, - 0x10, 0x19, 0x67, 0x0c, 0x76, 0x94, 0x80, 0x69, 0x34, 0x8e, - 0x14, 0x7a, 0xe5, 0x56, 0x92, 0xa0, 0x9d, 0x33, 0xce, 0xf3, - 0xe7, 0xe1, 0xe4, 0xf2, 0x82, 0x1a, 0x6d, 0xf7, 0xb3, 0x39, - 0x7d, 0xb3, 0x23, 0x62, 0x5f, 0x6f, 0x38, 0xdb, 0x71, 0x1f, - 0x4a, 0xf8, 0xda, 0x01, 0x86, 0x4e, 0xbe, 0xac, 0x93, 0x0f, - 0x96, 0xe0, 0xa9, 0x5c, 0x2f, 0xa0, 0x72, 0xbf, 0x6b, 0x84, - 0x32, 0x83, 0x69, 0xa2, 0x23, 0x03, 0xaf, 0xe9, 0x72, 0xfa, - 0xc7, 0x3f, 0x82, 0x9d, 0x9b, 0x67, 0x53, 0xc4, 0x8a, 0x1d, - 0x09, 0xf8, 0x64, 0xfc, 0x94, 0xbd, 0xdb, 0x47, 0x5f, 0xbe, - 0x41, 0x2f, 0x33, 0x5d, 0xc3, 0x42, 0x29, 0x43, 0x76, 0xef, - 0x1a, 0x3d, 0xba, 0x58, 0xc5, 0xf2, 0xdd, 0x76, 0xe9, 0x08, - 0xdd, 0x9b, 0xa8, 0x3b, 0xf6, 0x88, 0x16, 0xdd, 0x1a, 0xb3, - 0x1a, 0xe6, 0x48, 0xed, 0x4c, 0x5b, 0x2b, 0x80, 0x00, 0x1d, - 0x3c, 0xcf, 0xc3, 0xfe, 0xe0, 0x89, 0x78, 0xc6, 0x4f, 0xe7, - 0x8c, 0x7d, 0x24, 0xdb, 0x71, 0xf0, 0xd7, 0x5f, 0xfc, 0x1d, - 0xfd, 0xe1, 0x14, 0x16, 0xd2, 0xeb, 0x9b, 0x24, 0x2f, 0x72, - 0xdc, 0x8e, 0x27, 0xec, 0xd0, 0x4f, 0x57, 0x19, 0x2b, 0xd5, - 0x90, 0xc0, 0xf9, 0xc2, 0x8b, 0xa4, 0x0a, 0xd5, 0xac, 0x2d, - 0xc2, 0xcb, 0x18, 0xf5, 0x19, 0x63, 0x61, 0x06, 0x63, 0xfd, - 0xa6, 0x93, 0x0e, 0x06, 0xac, 0x8f, 0xad, 0xad, 0xad, 0xad, - 0x56, 0xaf, 0x95, 0x44, 0x10, 0xe4, 0xb9, 0x05, 0xb9, 0xb8, - 0x72, 0xf2, 0x93, 0x86, 0xfd, 0x81, 0x5f, 0xa6, 0xcc, 0x1f, - 0xa5, 0xd7, 0x22, 0xe7, 0xb0, 0x34, 0xbb, 0x4e, 0xc9, 0x6f, - 0x69, 0x16, 0x70, 0x2d, 0xb1, 0x35, 0x5d, 0xcf, 0xe7, 0x01, - 0xe0, 0x00, 0x8a, 0x58, 0xff, 0xe4, 0xf7, 0x73, 0xee, 0xdc, - 0x73, 0x86, 0xcc, 0x01, 0x10, 0x50, 0x6f, 0x71, 0x41, 0x83, - 0x4c, 0xa0, 0xc0, 0xe9, 0x54, 0xbc, 0x7c, 0x08, 0x57, 0x29, - 0x24, 0x45, 0x19, 0x07, 0x5a, 0xb6, 0xa9, 0xda, 0xab, 0xc0, - 0x8e, 0xa3, 0x00, 0xa5, 0x9b, 0x03, 0x77, 0x34, 0x05, 0xb1, - 0x4c, 0x08, 0xdf, 0x89, 0x47, 0x96, 0xf9, 0x75, 0x52, 0x4c, - 0x66, 0x01, 0x7b, 0x97, 0xca, 0xc3, 0x54, 0xbc, 0xe2, 0x91, - 0x0f, 0xe4, 0xa2, 0x00, 0x07, 0xb1, 0x9d, 0x17, 0xf8, 0xaf, - 0xa1, 0xf6, 0xd7, 0xde, 0x8b, 0x00, 0xff, 0xf9, 0x8d, 0x28, - 0x94, 0xcf, 0x05, 0x6b, 0x34, 0xd3, 0xc9, 0xfd, 0x63, 0xc2, - 0xfb, 0xe1, 0xad, 0x5c, 0x4f, 0xf5, 0xe9, 0x4c, 0x18, 0xf6, - 0xf5, 0x8c, 0xf4, 0x4b, 0xa1, 0x9f, 0xaf, 0xe2, 0xf0, 0xd2, - 0x08, 0x13, 0xc6, 0x9a, 0x3c, 0xd0, 0xfa, 0xf3, 0x54, 0xf6, - 0xe7, 0x11, 0x7a, 0x70, 0x1b, 0x83, 0x29, 0xfb, 0xfe, 0x7d, - 0x38, 0x07, 0x97, 0xc5, 0x1a, 0x5d, 0xd8, 0x7d, 0x11, 0x3c, - 0xca, 0x78, 0x63, 0x01, 0xf6, 0xf9, 0x06, 0xfc, 0xd9, 0xa3, - 0xb4, 0x76, 0x45, 0x56, 0xda, 0xe7, 0x6c, 0xab, 0x88, 0x73, - 0x58, 0x49, 0x7b, 0xe0, 0x5c, 0x67, 0xf4, 0xb8, 0xbe, 0x51, - 0x8f, 0xc2, 0xd0, 0x49, 0x81, 0x9c, 0x50, 0x51, 0xe6, 0x3a, - 0x90, 0x22, 0x60, 0xf8, 0x60, 0x17, 0x1f, 0xe4, 0xaf, 0xd6, - 0x66, 0x87, 0x93, 0xe9, 0xca, 0x67, 0xd3, 0x20, 0xb3, 0xdb, - 0xd7, 0x3c, 0x6d, 0x5e, 0x92, 0x06, 0xec, 0x75, 0xba, 0x76, - 0x95, 0x0d, 0x94, 0x19, 0xc4, 0x98, 0xb9, 0xdb, 0x8b, 0x5b, - 0x5e, 0x51, 0x4b, 0x3f, 0x5f, 0x4d, 0xc6, 0xbc, 0x9a, 0x4f, - 0x20, 0xe5, 0xfa, 0xcb, 0xf4, 0xa2, 0x35, 0x92, 0x6f, 0x7b, - 0xd9, 0xf3, 0x7c, 0x17, 0x30, 0x15, 0x9f, 0x1a, 0x74, 0x09, - 0x30, 0x2c, 0x6e, 0x06, 0x8b, 0xbc, 0x5e, 0xa1, 0x71, 0xa0, - 0x1d, 0xc3, 0x19, 0x4d, 0x43, 0x3a, 0x9f, 0x87, 0xe4, 0xfc, - 0x86, 0xc0, 0xab, 0x86, 0x74, 0xd7, 0x39, 0xa4, 0x8b, 0x38, - 0x4c, 0xf7, 0xd7, 0x2b, 0x54, 0x65, 0x1b, 0x85, 0x41, 0x71, - 0x0c, 0x99, 0x18, 0xed, 0xf0, 0x22, 0x3e, 0x3a, 0xff, 0x9d, - 0x08, 0x7a, 0x5e, 0x11, 0xa9, 0x06, 0xd2, 0x07, 0xbe, 0xcb, - 0xa2, 0x98, 0x32, 0x57, 0x4a, 0x7e, 0xa1, 0xc7, 0xc4, 0x71, - 0x0b, 0x11, 0x94, 0xfb, 0x36, 0x1b, 0x86, 0xfb, 0xd2, 0x24, - 0xad, 0x67, 0x3b, 0xd7, 0x47, 0xa5, 0xe8, 0x9c, 0x69, 0x29, - 0x39, 0x35, 0x49, 0x4e, 0xcb, 0x0d, 0x09, 0xbe, 0x17, 0x68, - 0x42, 0xee, 0x79, 0xd0, 0x60, 0x09, 0xee, 0x3d, 0xce, 0x12, - 0xdc, 0x2b, 0x5f, 0x82, 0xda, 0x9e, 0x38, 0x1e, 0x96, 0x8b, - 0x11, 0xfe, 0x74, 0x1c, 0xf7, 0x42, 0xf2, 0xcf, 0x64, 0x85, - 0x4e, 0xf8, 0x0f, 0xea, 0x9e, 0x29, 0xbd, 0x1b, 0x77, 0x51, - 0x17, 0xdf, 0x46, 0x17, 0x07, 0xb2, 0x40, 0x8f, 0x78, 0xf1, - 0xa0, 0x26, 0xeb, 0x5b, 0xe6, 0x43, 0xe7, 0xe4, 0xae, 0x42, - 0x3e, 0x2a, 0x06, 0xac, 0xaa, 0xe8, 0x99, 0x7b, 0x39, 0x66, - 0x57, 0xe2, 0x8a, 0xa8, 0x92, 0xc2, 0xb7, 0x4e, 0x0a, 0xd9, - 0xa4, 0x26, 0xfa, 0x73, 0x27, 0xfa, 0xa4, 0x2e, 0xfa, 0xc0, - 0xad, 0x4c, 0x45, 0x13, 0x74, 0xdb, 0x41, 0xc6, 0x10, 0x7c, - 0x32, 0x06, 0x03, 0x7c, 0x10, 0x36, 0x94, 0x5d, 0xb7, 0x7b, - 0x11, 0x90, 0x02, 0xcb, 0xfd, 0xa0, 0x5b, 0x7f, 0x55, 0xb2, - 0xda, 0x9c, 0xad, 0xa2, 0xa4, 0x46, 0xd6, 0xc2, 0xa0, 0x9f, - 0x49, 0x03, 0x84, 0x76, 0xdb, 0x0d, 0xea, 0xd6, 0x51, 0xb6, - 0xfc, 0x19, 0xef, 0x3e, 0x90, 0x92, 0xce, 0xb6, 0x0c, 0x58, - 0x24, 0xc2, 0x51, 0x6c, 0xd8, 0xa0, 0x26, 0x3b, 0x25, 0x2a, - 0x3d, 0x70, 0xba, 0x06, 0x7d, 0xf8, 0x78, 0x83, 0x3e, 0x74, - 0x0f, 0xfa, 0xf0, 0xff, 0xef, 0x41, 0x37, 0xbc, 0xee, 0x8c, - 0xa3, 0x9c, 0x73, 0x45, 0xb4, 0x0b, 0x6e, 0x40, 0x95, 0x3b, - 0x72, 0xb3, 0x19, 0xb2, 0x5b, 0xc2, 0x26, 0x83, 0x51, 0x1d, - 0x3d, 0x6a, 0xd7, 0x78, 0x83, 0x99, 0x91, 0xd8, 0xd6, 0x20, - 0x1e, 0xc4, 0x53, 0xbf, 0x62, 0x8f, 0x33, 0x5c, 0x11, 0x7b, - 0x30, 0x81, 0xaa, 0x7b, 0x14, 0xae, 0x12, 0x15, 0xd1, 0x81, - 0x79, 0x54, 0xf6, 0xba, 0x07, 0x37, 0x95, 0xf1, 0x12, 0x0e, - 0x79, 0x01, 0xe6, 0x0b, 0x23, 0xea, 0x63, 0x5b, 0xf9, 0xbb, - 0x22, 0xbe, 0xd2, 0xef, 0xa2, 0x94, 0xf2, 0xcc, 0x6f, 0x48, - 0xd8, 0x88, 0x53, 0x06, 0x39, 0x96, 0x9a, 0xf7, 0x9d, 0x1e, - 0x01, 0x18, 0x32, 0x97, 0xe9, 0x67, 0x77, 0x9a, 0xbf, 0x4c, - 0x85, 0x7b, 0x07, 0xbd, 0xbc, 0x2c, 0xa8, 0x1f, 0x5b, 0xb8, - 0xd5, 0xf0, 0x22, 0x8e, 0xe0, 0xc8, 0x08, 0x27, 0xcf, 0xe1, - 0x89, 0x4a, 0x5c, 0x84, 0xe7, 0x54, 0x85, 0x3c, 0x59, 0x4d, - 0x3e, 0x6a, 0x6d, 0x3a, 0x2b, 0xb1, 0x0e, 0xed, 0xeb, 0xb6, - 0xc8, 0x8e, 0x34, 0x52, 0xd9, 0x36, 0xa2, 0x06, 0x66, 0x4b, - 0x8f, 0x23, 0x33, 0xb8, 0x39, 0x60, 0xfa, 0xcc, 0x25, 0x17, - 0xbb, 0x40, 0xdf, 0xd7, 0xd5, 0x99, 0x43, 0xbb, 0xa8, 0x2b, - 0x97, 0xe3, 0xe0, 0x1f, 0x41, 0x67, 0xf0, 0xdd, 0x77, 0x9a, - 0x5d, 0x9a, 0x23, 0x8e, 0xd9, 0x9c, 0x39, 0xfc, 0xa3, 0xb9, - 0x39, 0x5c, 0x4e, 0x93, 0x0b, 0x84, 0x1a, 0xae, 0x03, 0x33, - 0xe5, 0x42, 0x0d, 0xbb, 0xab, 0xcf, 0xcd, 0xde, 0x1a, 0x28, - 0xb6, 0x40, 0xc0, 0x92, 0xba, 0x45, 0x16, 0x85, 0xba, 0xf8, - 0xdd, 0x28, 0xf5, 0xb9, 0x2f, 0xa7, 0xc2, 0x96, 0x88, 0x41, - 0xc7, 0x76, 0xb0, 0xaf, 0xa0, 0x42, 0x1d, 0xf4, 0x1d, 0x44, - 0x86, 0x4d, 0x89, 0x0c, 0xf1, 0xf9, 0x85, 0x0f, 0x23, 0x61, - 0x50, 0x11, 0x8e, 0x11, 0x02, 0x3f, 0x41, 0x50, 0x3a, 0x83, - 0x43, 0x9d, 0x17, 0x1d, 0x35, 0xf0, 0xd0, 0xe3, 0xc0, 0x57, - 0xf9, 0xe2, 0x44, 0x44, 0x5a, 0xe3, 0x8e, 0xbe, 0xee, 0x50, - 0x8f, 0xac, 0x81, 0x18, 0xdc, 0x88, 0x28, 0x27, 0xd2, 0x01, - 0x96, 0x44, 0x7c, 0x6b, 0xbd, 0x9a, 0xcf, 0x5b, 0xbd, 0xe1, - 0xd3, 0xa7, 0x2e, 0x6a, 0x25, 0x61, 0xde, 0x9a, 0xb1, 0xd5, - 0xd4, 0xe8, 0xae, 0x73, 0xe6, 0xbb, 0x75, 0x22, 0xd4, 0x55, - 0xb1, 0x61, 0x0f, 0xe6, 0x58, 0xc8, 0xf4, 0xba, 0x9d, 0xb1, - 0x63, 0x2e, 0xba, 0xe4, 0x12, 0x7d, 0x4c, 0xc0, 0x6c, 0xb8, - 0x13, 0xfe, 0x17, 0x9e, 0x3a, 0xaf, 0xe7, 0xff, 0x18, 0x43, - 0x73, 0x21, 0xc0, 0x5e, 0x0b, 0xa0, 0x3c, 0x65, 0x96, 0x8b, - 0xbd, 0x86, 0xa4, 0xfc, 0xdb, 0xb7, 0x07, 0x3b, 0x06, 0x96, - 0xee, 0x19, 0xef, 0x40, 0xa3, 0x00, 0x36, 0x9e, 0xcb, 0x4f, - 0xdd, 0x85, 0x8e, 0xbd, 0xdc, 0x0d, 0x12, 0x2e, 0x97, 0x75, - 0x17, 0x09, 0x0c, 0x67, 0x90, 0xb0, 0xdd, 0xd7, 0x5d, 0x04, - 0x14, 0x54, 0x9d, 0xad, 0x43, 0xbb, 0x95, 0xea, 0x98, 0xd7, - 0x1c, 0x78, 0xce, 0xdc, 0xb1, 0x93, 0xf1, 0x8d, 0xe3, 0x03, - 0x2f, 0xbc, 0x20, 0x7d, 0x4b, 0x4d, 0x0f, 0xc9, 0xb1, 0xab, - 0xa1, 0xdc, 0x63, 0xd1, 0xf6, 0x8e, 0x34, 0x3c, 0x29, 0x9b, - 0xa0, 0x9a, 0x6d, 0x72, 0xf9, 0x4f, 0x96, 0x36, 0x06, 0x3b, - 0x63, 0xaa, 0xe9, 0xfc, 0x3c, 0xa9, 0x70, 0x1a, 0xdf, 0x18, - 0x96, 0x5e, 0xf7, 0x59, 0x86, 0x50, 0x67, 0x37, 0x2b, 0x37, - 0xb7, 0xfd, 0xaa, 0xdd, 0xcd, 0x4f, 0xcd, 0xb9, 0xc9, 0xd9, - 0xfe, 0xe4, 0x35, 0x89, 0x01, 0x9a, 0x49, 0xcb, 0xe9, 0x65, - 0x5e, 0x8b, 0x1c, 0x33, 0xfb, 0x99, 0xf4, 0x2c, 0xaf, 0xf3, - 0x7a, 0xc4, 0xc0, 0x48, 0x6a, 0x92, 0xb2, 0x3c, 0xd1, 0xeb, - 0x91, 0xe2, 0x3e, 0xed, 0x26, 0x35, 0xdb, 0x41, 0xbd, 0x1e, - 0xb9, 0xc2, 0x4d, 0x4e, 0x77, 0x5e, 0xaf, 0x47, 0xea, 0x66, - 0x69, 0x52, 0x31, 0xfd, 0xd9, 0xeb, 0xd1, 0x61, 0x2e, 0xa0, - 0x56, 0x07, 0x93, 0x7b, 0x74, 0x2e, 0xb1, 0xa8, 0xdc, 0xa3, - 0x3d, 0x45, 0x6e, 0x52, 0x71, 0xf8, 0xc4, 0xd7, 0xa2, 0xc4, - 0xbc, 0xeb, 0x4d, 0x6a, 0xba, 0xb7, 0x7c, 0x2d, 0x42, 0x97, - 0x56, 0xc7, 0x74, 0xf7, 0xf9, 0x7a, 0xad, 0x61, 0x4e, 0xf8, - 0x26, 0xa5, 0xd7, 0xcd, 0x29, 0x51, 0xd7, 0x7c, 0xe5, 0xcf, - 0xa7, 0xbc, 0xc9, 0x5c, 0xeb, 0x46, 0x8b, 0xe1, 0x5e, 0x57, - 0x46, 0xd0, 0xbb, 0x0f, 0xcf, 0x06, 0x65, 0x78, 0xa6, 0x78, - 0xd2, 0x48, 0x2b, 0xa7, 0x70, 0xe6, 0x75, 0x6b, 0x1f, 0xa1, - 0x0a, 0xd3, 0x6f, 0x5c, 0x7d, 0xd0, 0x3d, 0x3e, 0x68, 0xda, - 0x44, 0x7a, 0x86, 0x13, 0xa1, 0x8e, 0x45, 0x16, 0x75, 0xab, - 0x00, 0x05, 0x5b, 0x96, 0xb5, 0x3a, 0x82, 0x2d, 0xdb, 0x88, - 0xee, 0x90, 0xcb, 0x8e, 0x88, 0xcb, 0xd5, 0xa8, 0x5a, 0x82, - 0x74, 0x57, 0x4b, 0x9e, 0x8c, 0x55, 0x4f, 0xb1, 0xdb, 0xc0, - 0x16, 0x32, 0x70, 0xc2, 0xc5, 0xbd, 0x1a, 0x43, 0x8b, 0x84, - 0xae, 0x38, 0x6e, 0xa8, 0x62, 0xf3, 0x66, 0x3c, 0xd0, 0xae, - 0xc6, 0xf5, 0x00, 0xcf, 0xbc, 0x2a, 0xa3, 0x31, 0x0d, 0xee, - 0xef, 0x5c, 0xf6, 0x42, 0xcd, 0x98, 0x57, 0x41, 0x7a, 0x58, - 0xc7, 0x8c, 0x77, 0x6f, 0x1a, 0x9a, 0x85, 0xa5, 0x9a, 0x8a, - 0xc7, 0x68, 0x59, 0x2f, 0xaa, 0x34, 0x57, 0x01, 0x31, 0xd7, - 0x8b, 0x97, 0x11, 0x4e, 0xdb, 0x41, 0xdd, 0x37, 0x13, 0x6e, - 0x0d, 0xe4, 0x1d, 0xa8, 0xb4, 0xe1, 0x0d, 0x0f, 0x0c, 0x8d, - 0x1f, 0x45, 0xa8, 0x2b, 0x07, 0xdf, 0x73, 0x07, 0x26, 0x83, - 0x65, 0xcb, 0xfc, 0x8a, 0xc6, 0xa9, 0x5f, 0xcf, 0xb0, 0xb0, - 0x5d, 0x8a, 0x85, 0xe3, 0x49, 0x83, 0x07, 0xdb, 0xb5, 0x01, - 0x19, 0xcf, 0x2e, 0x3c, 0x98, 0x49, 0x54, 0x31, 0x2b, 0x69, - 0x44, 0x08, 0xc1, 0xdb, 0x7a, 0x94, 0x0f, 0x65, 0x45, 0xad, - 0x5c, 0x58, 0xcf, 0xa6, 0xb6, 0x8f, 0xb0, 0x08, 0xb5, 0x68, - 0xdb, 0xca, 0x9c, 0x62, 0x96, 0xb8, 0xdd, 0x4f, 0x74, 0x13, - 0x2d, 0xa9, 0x92, 0xac, 0x04, 0xee, 0x52, 0x82, 0xcc, 0x9d, - 0xbc, 0x72, 0x94, 0x10, 0x52, 0xb8, 0xf6, 0x99, 0xf7, 0x47, - 0x5d, 0x97, 0xf7, 0x1f, 0x43, 0x2f, 0x75, 0xbc, 0x13, 0x6c, - 0x78, 0x78, 0x10, 0x68, 0xa1, 0x41, 0x57, 0x71, 0xbe, 0x9e, - 0x17, 0xa8, 0xe6, 0xa6, 0xbc, 0xa5, 0xae, 0x72, 0x4e, 0x69, - 0x92, 0x4c, 0x73, 0xa6, 0xb4, 0x60, 0x06, 0x07, 0x22, 0x22, - 0x53, 0xab, 0xa5, 0x0f, 0xcc, 0x13, 0x35, 0x29, 0x1c, 0x06, - 0x19, 0x21, 0x37, 0xe0, 0xa3, 0xd7, 0xd9, 0x4b, 0xbb, 0x4f, - 0xe5, 0xdd, 0xd1, 0xd2, 0xdb, 0x05, 0x5c, 0x54, 0x97, 0x52, - 0x69, 0x39, 0x5e, 0x21, 0xf3, 0xe1, 0x65, 0x34, 0x47, 0x7e, - 0x66, 0x82, 0x31, 0x65, 0x23, 0xa3, 0xf8, 0xa3, 0xf1, 0x12, - 0xc5, 0x6e, 0xfc, 0x70, 0xea, 0x78, 0x3d, 0x8f, 0x21, 0x0a, - 0xf8, 0xb8, 0x64, 0x3c, 0x35, 0x40, 0xe1, 0xb2, 0x3e, 0x56, - 0x2d, 0xb1, 0xc3, 0x98, 0x18, 0x7c, 0x83, 0x42, 0x55, 0xd9, - 0x3d, 0x63, 0x99, 0x27, 0xa0, 0x6f, 0xe8, 0xcd, 0x45, 0x60, - 0x3f, 0xba, 0x80, 0x16, 0x22, 0x08, 0xdd, 0x8d, 0x4b, 0x3d, - 0x85, 0x20, 0x0c, 0xcf, 0x9d, 0xd2, 0x9f, 0xe9, 0xdb, 0x38, - 0x78, 0x2c, 0xa4, 0xcb, 0xb5, 0xd6, 0xd3, 0x60, 0x53, 0x60, - 0x73, 0x58, 0x09, 0xc5, 0xbb, 0xd9, 0x12, 0xde, 0x12, 0x20, - 0x62, 0x45, 0x8f, 0x99, 0x61, 0xc5, 0xef, 0x80, 0x9a, 0x2d, - 0x6f, 0x0f, 0x0f, 0xde, 0xac, 0x32, 0x6e, 0x81, 0xe1, 0x3e, - 0x8d, 0xf4, 0x77, 0xbd, 0x63, 0x6c, 0x60, 0x45, 0xc7, 0x38, - 0x84, 0xdd, 0x31, 0x06, 0xf6, 0xb8, 0x1d, 0xcb, 0x51, 0x4a, - 0x8e, 0x51, 0xd3, 0x1e, 0xba, 0x40, 0x3f, 0x17, 0x3f, 0x12, - 0xfa, 0x1a, 0x43, 0x6a, 0x99, 0x24, 0x04, 0x4f, 0x36, 0xcf, - 0x26, 0x21, 0x30, 0x5d, 0x19, 0x25, 0x54, 0x93, 0x32, 0x87, - 0x19, 0xae, 0x1d, 0x6c, 0xb1, 0x3e, 0x6f, 0xb5, 0x7b, 0xc1, - 0x8e, 0xca, 0xa5, 0xe0, 0x68, 0xcf, 0xc7, 0x9d, 0x33, 0x82, - 0xcb, 0xfe, 0x40, 0x77, 0xd1, 0x89, 0x74, 0x2f, 0xa8, 0x16, - 0xee, 0x96, 0x06, 0x65, 0x0a, 0x33, 0x22, 0xcb, 0x84, 0x9c, - 0x47, 0x92, 0x2c, 0xf3, 0x65, 0xb8, 0x48, 0xa2, 0x9e, 0x70, - 0x35, 0x54, 0x39, 0x3b, 0xdd, 0x8d, 0x4f, 0xac, 0xc6, 0x93, - 0x6a, 0xad, 0x3b, 0x48, 0x7d, 0xa7, 0x30, 0xf6, 0x80, 0x4e, - 0xf9, 0x6b, 0x2b, 0xe9, 0x0c, 0xce, 0x3c, 0xc1, 0xb5, 0xb5, - 0x01, 0x43, 0xa3, 0x0a, 0xc7, 0xd2, 0x05, 0x5c, 0xbe, 0x18, - 0x4b, 0xc8, 0x67, 0x9c, 0xfd, 0x46, 0x47, 0xc0, 0x76, 0x7d, - 0x80, 0xfe, 0x50, 0xec, 0x0e, 0xb7, 0x7e, 0x8d, 0x57, 0x39, - 0xb3, 0xcb, 0xe8, 0xea, 0x96, 0x8e, 0xfa, 0xb1, 0x75, 0x4d, - 0x80, 0xaf, 0x38, 0xec, 0x99, 0xd2, 0x0c, 0xe8, 0xf7, 0xad, - 0xfd, 0x59, 0xb2, 0x7c, 0x9b, 0x45, 0x34, 0xc3, 0x6c, 0x35, - 0x19, 0x05, 0xed, 0x24, 0xb4, 0x9f, 0xad, 0x68, 0x1e, 0xb4, - 0x7a, 0x84, 0x18, 0xb4, 0x93, 0x50, 0x93, 0xae, 0x09, 0x52, - 0xef, 0xe3, 0x2b, 0x9b, 0xd8, 0xc9, 0x65, 0x5c, 0x4c, 0x66, - 0xb5, 0xe8, 0x70, 0xd0, 0xb3, 0xcd, 0x56, 0x70, 0x7e, 0x5b, - 0x90, 0x96, 0x89, 0x37, 0xe6, 0x92, 0xd8, 0x9b, 0x79, 0x98, - 0xcf, 0x7e, 0xc9, 0x69, 0xf4, 0xb8, 0x6a, 0x7a, 0x0a, 0x1a, - 0x48, 0xfe, 0xbd, 0xe5, 0xea, 0x27, 0x39, 0xfc, 0x4c, 0x2e, - 0x6b, 0xf7, 0x92, 0x41, 0x9b, 0x0d, 0x14, 0x3c, 0x71, 0x72, - 0xfa, 0xb6, 0x01, 0x53, 0xe4, 0xc5, 0xc2, 0xcd, 0x15, 0x92, - 0x12, 0xd4, 0x78, 0x18, 0xd5, 0x23, 0xc4, 0x61, 0xcf, 0x6a, - 0xc4, 0x92, 0xb7, 0x9f, 0x4c, 0x78, 0x16, 0x0a, 0x2f, 0x77, - 0xac, 0x95, 0xe8, 0x36, 0xf5, 0x2f, 0x17, 0x8e, 0xa6, 0xad, - 0x18, 0x72, 0x88, 0xe4, 0x01, 0x46, 0x7d, 0x7d, 0xe1, 0x58, - 0x1f, 0x25, 0xa8, 0xee, 0xf4, 0xe6, 0xac, 0x82, 0xf4, 0x3d, - 0x2d, 0x96, 0x3c, 0x42, 0xdd, 0x19, 0x3e, 0x12, 0xb3, 0xfc, - 0xad, 0x70, 0x3f, 0x70, 0xc0, 0xa2, 0xe0, 0x52, 0x05, 0x0a, - 0x14, 0x26, 0x7e, 0xb0, 0x7d, 0x01, 0x47, 0xe2, 0x91, 0xba, - 0xd6, 0x87, 0xdc, 0xe0, 0xfa, 0x85, 0xe7, 0x9b, 0x24, 0x9e, - 0x47, 0x27, 0x71, 0x31, 0xc0, 0xd8, 0xb3, 0x38, 0xb9, 0x98, - 0x15, 0x2f, 0x76, 0xe3, 0xc5, 0xc8, 0xf0, 0x76, 0xd0, 0xbc, - 0xba, 0x2a, 0x6b, 0xa7, 0xa7, 0xea, 0x7b, 0x57, 0x3f, 0x78, - 0x66, 0xd7, 0x0f, 0x55, 0xae, 0x97, 0x75, 0x07, 0x99, 0x43, - 0x62, 0xb6, 0x9b, 0xc5, 0xe1, 0xb2, 0x0e, 0x2a, 0x85, 0xc3, - 0x88, 0x8b, 0x24, 0xdd, 0xaa, 0x8b, 0x4c, 0x60, 0x2d, 0xfc, - 0x55, 0x9e, 0x27, 0x75, 0x70, 0xaf, 0x93, 0x69, 0x42, 0x61, - 0xcf, 0x90, 0x2e, 0xf9, 0x29, 0xa1, 0xd6, 0x9f, 0x30, 0x49, - 0x73, 0x9b, 0x3f, 0x7a, 0x41, 0x8b, 0x05, 0x2f, 0x95, 0x0f, - 0x77, 0x5a, 0xba, 0x8f, 0x00, 0xbc, 0x2c, 0xde, 0x62, 0x20, - 0xad, 0x6e, 0xa9, 0xe5, 0xc3, 0x80, 0xde, 0x62, 0xb7, 0xf0, - 0x7a, 0xb3, 0xc7, 0x8e, 0x46, 0x9b, 0xf5, 0x9f, 0x05, 0xdf, - 0x07, 0x2d, 0xf5, 0x67, 0xf0, 0x22, 0x68, 0xbd, 0xa3, 0x61, - 0x5a, 0xc5, 0x17, 0xe1, 0x98, 0xa1, 0x79, 0xdc, 0x89, 0xca, - 0x81, 0xdd, 0x6b, 0x57, 0x8d, 0xd7, 0x06, 0xa9, 0xd5, 0x03, - 0xf1, 0x3e, 0x26, 0xea, 0x01, 0x30, 0x5c, 0x75, 0xd3, 0xc4, - 0x17, 0x7e, 0xdd, 0x47, 0x9a, 0xba, 0x21, 0xbd, 0x33, 0x80, - 0x81, 0x17, 0x49, 0x3e, 0x61, 0xc6, 0xa4, 0x1f, 0xf7, 0x8d, - 0xe6, 0x95, 0x5e, 0x57, 0x08, 0x05, 0xc1, 0xcd, 0x6c, 0x12, - 0xf0, 0xec, 0x4c, 0x8f, 0x9c, 0x1b, 0xe1, 0x1a, 0x7f, 0xde, - 0xaf, 0x1e, 0x10, 0xb2, 0x1d, 0xb0, 0x0c, 0x8a, 0x92, 0x83, - 0xf8, 0xed, 0xe8, 0x49, 0x41, 0x44, 0x69, 0xe2, 0x1e, 0x44, - 0x56, 0x24, 0x31, 0xf8, 0x05, 0xcc, 0xa7, 0x98, 0x9a, 0x0f, - 0x3f, 0xa9, 0x20, 0x83, 0x1d, 0x45, 0xe7, 0xc9, 0x78, 0xc8, - 0xde, 0xb9, 0x3c, 0x21, 0xd8, 0x90, 0x55, 0x09, 0x5c, 0x53, - 0x10, 0xcf, 0x62, 0x48, 0x4e, 0x5f, 0x71, 0x25, 0xff, 0x30, - 0x56, 0x40, 0xd8, 0x30, 0x25, 0x4a, 0xc7, 0x63, 0xec, 0xc9, - 0x86, 0x52, 0x3f, 0x99, 0x89, 0xe3, 0x91, 0xa3, 0x29, 0x13, - 0xe3, 0x90, 0x8c, 0x84, 0x10, 0x26, 0x82, 0x29, 0x54, 0xa9, - 0xde, 0x69, 0xb5, 0xac, 0xa5, 0xfa, 0x61, 0x5e, 0x4b, 0xcd, - 0x65, 0x7a, 0x83, 0x52, 0x9d, 0x51, 0x75, 0x51, 0x5b, 0x58, - 0x3c, 0x7f, 0xd3, 0x96, 0xcc, 0x6d, 0x5f, 0x9e, 0xc1, 0xca, - 0x74, 0x8b, 0xad, 0x20, 0xe1, 0xcd, 0x12, 0x85, 0x1a, 0x66, - 0xa9, 0x8e, 0x66, 0xb6, 0x41, 0x47, 0x42, 0x32, 0x7f, 0xce, - 0xc0, 0xb2, 0x7d, 0xd4, 0x48, 0xc9, 0xa2, 0x6d, 0xa3, 0x10, - 0x41, 0xc2, 0xde, 0x3f, 0x79, 0x40, 0x07, 0x7b, 0xfb, 0x84, - 0xc8, 0x04, 0x86, 0xa6, 0xe9, 0xce, 0xdc, 0xa2, 0x44, 0x24, - 0x29, 0xff, 0xd8, 0x22, 0x00, 0x86, 0x0a, 0xe1, 0x49, 0xdf, - 0x32, 0xc6, 0x58, 0x3c, 0xe3, 0x8b, 0xa5, 0x7d, 0xf0, 0xcf, - 0xce, 0x05, 0xe5, 0x42, 0xac, 0x52, 0x37, 0xde, 0xc5, 0x85, - 0x47, 0xd1, 0x20, 0x25, 0xe6, 0xf0, 0x10, 0x39, 0xe7, 0xd2, - 0x2d, 0x08, 0xa4, 0x36, 0x32, 0x20, 0x0e, 0x55, 0xca, 0x17, - 0x7b, 0xf3, 0x20, 0xf0, 0x1f, 0x5b, 0x3c, 0x51, 0x0c, 0x13, - 0x6d, 0xf4, 0x37, 0x90, 0x61, 0x04, 0x0d, 0x6b, 0x6e, 0x40, - 0x89, 0xa7, 0x81, 0xf1, 0x90, 0xa1, 0xa5, 0x94, 0xc6, 0x51, - 0x4a, 0x29, 0x1c, 0x4d, 0xa7, 0x26, 0x85, 0xa4, 0x04, 0x3f, - 0xd1, 0x37, 0x3c, 0x00, 0x7f, 0xfb, 0x6a, 0xdf, 0x0f, 0xbf, - 0x08, 0x27, 0x16, 0x02, 0x4f, 0x27, 0xe3, 0xc5, 0x20, 0xa5, - 0x26, 0x0a, 0x4d, 0x2c, 0xe3, 0x41, 0x20, 0x65, 0x26, 0x38, - 0xcb, 0x2f, 0xe3, 0x1b, 0x82, 0x34, 0x6f, 0x30, 0xdb, 0xde, - 0x15, 0x21, 0xcb, 0x1c, 0xb3, 0xee, 0x5e, 0x14, 0x12, 0xc3, - 0x9c, 0xfd, 0x92, 0x9c, 0x3f, 0xaa, 0xe1, 0x0c, 0x15, 0x31, - 0xc2, 0xc8, 0xa2, 0xe1, 0xca, 0x00, 0x64, 0x13, 0x60, 0x2c, - 0x60, 0x63, 0xab, 0x18, 0x26, 0x36, 0x4e, 0xe2, 0xc4, 0xc0, - 0x79, 0x81, 0x6c, 0x1c, 0xd7, 0x44, 0xea, 0x49, 0x82, 0x6c, - 0x1c, 0x7b, 0x2e, 0x8d, 0x74, 0x41, 0x8e, 0xee, 0xa4, 0xb9, - 0x0b, 0xc7, 0x4c, 0x1c, 0x64, 0x23, 0x42, 0xb2, 0x21, 0x17, - 0xa6, 0x99, 0x45, 0xc7, 0xc6, 0x14, 0xd9, 0x77, 0x5c, 0xd8, - 0x76, 0x42, 0x19, 0x1b, 0x5f, 0x25, 0xa3, 0x71, 0x51, 0x50, - 0xe9, 0x62, 0x1c, 0x98, 0x7f, 0xb8, 0x31, 0x20, 0xe5, 0x8c, - 0x8f, 0xe3, 0x15, 0x2e, 0x85, 0x72, 0xe0, 0x97, 0x46, 0xc1, - 0x19, 0x6b, 0x64, 0x70, 0x20, 0x1d, 0x2f, 0x21, 0xc5, 0x49, - 0x4e, 0xe4, 0xc3, 0xa5, 0x17, 0x13, 0x07, 0xc4, 0x71, 0xe2, - 0x42, 0x20, 0x1d, 0x61, 0x57, 0x9a, 0x65, 0xd7, 0x30, 0xcb, - 0x72, 0xb3, 0x83, 0x0f, 0x07, 0x3f, 0xee, 0x1f, 0x77, 0x9c, - 0x0c, 0x8f, 0xa1, 0x4e, 0x58, 0x3b, 0x8e, 0x3b, 0x9a, 0x93, - 0xa5, 0x6f, 0x92, 0xe1, 0xe6, 0x0c, 0x19, 0xcb, 0x0d, 0xa7, - 0xdd, 0x03, 0x67, 0xd2, 0x4e, 0x7e, 0x61, 0x62, 0x3b, 0xf8, - 0x96, 0x6a, 0xe6, 0xd0, 0x36, 0xc8, 0x54, 0x12, 0x9e, 0xe7, - 0x9a, 0xf2, 0x82, 0xbe, 0xbf, 0xcb, 0xae, 0x3b, 0x86, 0xa6, - 0xc1, 0x4e, 0xa5, 0x17, 0xe4, 0xec, 0xc2, 0xec, 0xbc, 0xa6, - 0xfe, 0x6f, 0x36, 0xad, 0x4a, 0xea, 0xd1, 0xac, 0x3a, 0x3e, - 0xb1, 0xa7, 0x0a, 0x4d, 0xb9, 0x87, 0xb2, 0x25, 0x18, 0x82, - 0x4f, 0xe1, 0x68, 0x92, 0xaf, 0x2a, 0xad, 0x0e, 0x67, 0x61, - 0x85, 0xfd, 0x91, 0xa2, 0x68, 0x1c, 0x6c, 0x67, 0xd7, 0x71, - 0x60, 0x19, 0xd2, 0xcb, 0x95, 0x65, 0xc7, 0x55, 0x17, 0x14, - 0x3b, 0xeb, 0x32, 0x72, 0xed, 0xb8, 0x6a, 0x14, 0x20, 0xce, - 0x7a, 0xf5, 0xb4, 0x3b, 0xae, 0xaa, 0x39, 0x84, 0x0b, 0xdb, - 0x91, 0x7c, 0xc7, 0x4d, 0x41, 0x42, 0xb9, 0xa8, 0xe0, 0xa0, - 0xf6, 0x0e, 0x74, 0x60, 0x7e, 0x5f, 0xed, 0x8e, 0x84, 0x3c, - 0xce, 0xfa, 0x25, 0x9c, 0x87, 0x8e, 0x23, 0x25, 0x8f, 0x93, - 0x8e, 0x84, 0xf3, 0xd0, 0x71, 0xa6, 0xe4, 0x71, 0x52, 0x42, - 0x90, 0x1e, 0x5a, 0x56, 0x62, 0x1e, 0x27, 0x9d, 0x5f, 0x6c, - 0x93, 0x83, 0x3f, 0x39, 0x8f, 0x93, 0x02, 0x85, 0xf1, 0xe0, - 0x3b, 0x52, 0xf3, 0x38, 0x69, 0x48, 0x38, 0x45, 0x27, 0xa8, - 0x4c, 0xab, 0xe3, 0x1e, 0x17, 0x09, 0xe8, 0x23, 0xe5, 0x48, - 0xf4, 0xe3, 0xa4, 0x24, 0xe1, 0x5c, 0x7d, 0x73, 0x26, 0xe8, - 0x71, 0xd0, 0xd1, 0xe1, 0x5c, 0x94, 0xbc, 0xa9, 0x7a, 0xc6, - 0x26, 0x2d, 0x3d, 0xe1, 0x4f, 0x19, 0xb1, 0x83, 0xba, 0xc4, - 0x0e, 0x6a, 0x10, 0xd3, 0x92, 0xf6, 0x78, 0xe8, 0x94, 0xe1, - 0x9b, 0xa9, 0x7b, 0xdc, 0x24, 0x20, 0xf3, 0x0f, 0xa5, 0xa2, - 0x76, 0x36, 0x96, 0x3d, 0x07, 0xed, 0x6c, 0xf0, 0x91, 0x48, - 0x02, 0x2e, 0x73, 0x3a, 0x96, 0xb7, 0x84, 0x2d, 0xfe, 0x21, - 0x3b, 0x89, 0x4f, 0xfa, 0xcb, 0x32, 0x53, 0xf8, 0xab, 0xbc, - 0x0e, 0x86, 0xec, 0x97, 0x18, 0x48, 0xf4, 0x07, 0xb5, 0x92, - 0xd5, 0x8c, 0xf5, 0x1a, 0xfb, 0x76, 0xe2, 0x9b, 0x51, 0x29, - 0x41, 0x3b, 0x67, 0x4d, 0x19, 0x45, 0x0e, 0x5d, 0x4e, 0xd2, - 0x4a, 0x5f, 0xe3, 0xa1, 0x28, 0x13, 0xe1, 0x78, 0xc9, 0x99, - 0xa9, 0x6c, 0x3c, 0x84, 0x68, 0x2a, 0x1c, 0xc4, 0x26, 0x75, - 0x72, 0xd0, 0x78, 0x48, 0x61, 0x68, 0x1f, 0x45, 0x67, 0x7a, - 0x1c, 0x0f, 0x3d, 0x95, 0x68, 0xc7, 0xdb, 0x49, 0x23, 0xb5, - 0x8d, 0x87, 0x10, 0xca, 0x6e, 0xe3, 0x92, 0x3e, 0x8e, 0xf4, - 0x36, 0x35, 0x28, 0xc1, 0x0f, 0xbd, 0x97, 0x9e, 0x4c, 0x37, - 0x26, 0x29, 0x99, 0x23, 0x07, 0x61, 0x97, 0xa4, 0xbb, 0x71, - 0xe2, 0xf3, 0x64, 0x39, 0x6e, 0x0a, 0x56, 0xf2, 0x1b, 0x17, - 0x09, 0x99, 0x3c, 0xc7, 0x4d, 0x43, 0x4b, 0xd9, 0xe2, 0xc2, - 0xa7, 0x79, 0x5e, 0x46, 0xa6, 0xdd, 0xb5, 0x34, 0x19, 0x8e, - 0x49, 0x05, 0x27, 0xd3, 0xd1, 0x5b, 0x61, 0x65, 0xc5, 0xf1, - 0xe0, 0x42, 0x27, 0x1c, 0x98, 0x28, 0x4b, 0x8e, 0x07, 0x71, - 0x79, 0x1d, 0x39, 0xf0, 0x70, 0xce, 0x1c, 0x0f, 0x22, 0x64, - 0xda, 0x71, 0xd5, 0x68, 0x2b, 0x7a, 0x56, 0x95, 0xea, 0x5c, - 0x51, 0x9a, 0x4c, 0xc7, 0x83, 0x2e, 0x93, 0xf1, 0x38, 0x68, - 0x94, 0x4f, 0x16, 0xca, 0xcb, 0x23, 0x05, 0xb9, 0xcf, 0x6b, - 0xa4, 0x44, 0x67, 0x97, 0xde, 0xa3, 0x6e, 0xb9, 0x8d, 0x8b, - 0x4d, 0xd1, 0xad, 0x45, 0xda, 0x37, 0xa4, 0x37, 0xc6, 0xeb, - 0x3a, 0x9e, 0xe2, 0xd9, 0x40, 0x55, 0xb7, 0xda, 0xf4, 0x11, - 0x87, 0x7f, 0x7f, 0x51, 0xa5, 0xd6, 0x0e, 0x03, 0x45, 0x9e, - 0x3d, 0x46, 0x61, 0x75, 0x1d, 0xef, 0x72, 0x4c, 0x90, 0x92, - 0x70, 0xa9, 0x78, 0x24, 0x69, 0x5c, 0xe6, 0xca, 0x01, 0x55, - 0x50, 0x9e, 0x71, 0x55, 0x11, 0xa0, 0x7d, 0x63, 0xab, 0x48, - 0x74, 0xfd, 0x4f, 0x56, 0xbc, 0x28, 0xa3, 0x5a, 0x9c, 0x61, - 0x44, 0x9c, 0x33, 0x3b, 0xc2, 0x8a, 0xdd, 0x3d, 0x70, 0xb7, - 0x9b, 0x61, 0xc8, 0x4d, 0xdd, 0x88, 0xe1, 0x65, 0x01, 0x72, - 0x67, 0x66, 0xa1, 0x95, 0xb8, 0x23, 0xd1, 0x95, 0x23, 0x55, - 0x2d, 0x01, 0x16, 0x1b, 0xdb, 0x37, 0x61, 0xa8, 0xd4, 0xec, - 0x26, 0x0e, 0x4c, 0xdc, 0xb5, 0x1d, 0x0f, 0x4d, 0xf6, 0x47, - 0xde, 0xbf, 0x26, 0xc8, 0xe8, 0x7e, 0x9e, 0x1e, 0x86, 0xed, - 0x5e, 0x77, 0xc6, 0x9e, 0x25, 0xf9, 0x81, 0xe9, 0x0b, 0xe3, - 0xec, 0x01, 0x2b, 0x4c, 0x22, 0xdc, 0x07, 0x27, 0xb6, 0xdf, - 0x81, 0x92, 0x47, 0xee, 0xb5, 0x30, 0x46, 0x6a, 0x92, 0x2d, - 0x3f, 0xa8, 0xa0, 0xfe, 0xe4, 0x78, 0x99, 0x10, 0x95, 0x3a, - 0xbb, 0xe6, 0x9c, 0x16, 0xc1, 0x81, 0xba, 0x57, 0xbb, 0x55, - 0x8e, 0xa2, 0x31, 0x3a, 0x9a, 0xb6, 0x5e, 0x12, 0xf8, 0xf8, - 0xc3, 0xe9, 0xee, 0x50, 0x36, 0xcb, 0xca, 0x72, 0xcf, 0x60, - 0x5a, 0xbd, 0xc1, 0xce, 0x0e, 0x4f, 0xf4, 0x85, 0xbd, 0xf6, - 0x36, 0xca, 0x49, 0x53, 0xff, 0x07, 0x3f, 0xed, 0xbc, 0x58, - 0xd4, 0x20, 0xef, 0x1e, 0xd3, 0x37, 0x27, 0x07, 0xc9, 0xca, - 0x08, 0x22, 0x09, 0xd3, 0xd7, 0xe7, 0x41, 0x9f, 0x3b, 0xed, - 0x3f, 0x5b, 0x21, 0x85, 0x6e, 0xbd, 0x68, 0x51, 0xf8, 0xd6, - 0x1d, 0x8e, 0x92, 0x47, 0x3f, 0x09, 0x63, 0x06, 0x61, 0x2a, - 0x1a, 0xed, 0x4d, 0xf9, 0x93, 0x66, 0xd9, 0xf2, 0x5f, 0x00, - 0xb1, 0x9f, 0x16, 0xe2, 0xc9, 0xe8, 0x86, 0x81, 0x42, 0xf8, - 0x25, 0x87, 0x0b, 0x11, 0xf6, 0xb7, 0xff, 0xc6, 0x0e, 0xd3, - 0x52, 0x6e, 0x52, 0x34, 0xd4, 0x7a, 0x4e, 0xfa, 0x30, 0x0e, - 0x50, 0xe3, 0xe5, 0xcc, 0x4f, 0xf3, 0x28, 0x51, 0xf7, 0x61, - 0x2c, 0xae, 0x1f, 0x05, 0x67, 0x37, 0x92, 0x98, 0xe6, 0xcb, - 0xf1, 0xee, 0x0e, 0xf6, 0xf1, 0x02, 0x58, 0x0e, 0x7a, 0x11, - 0xa7, 0x31, 0x58, 0x21, 0xde, 0x10, 0x4d, 0x95, 0xde, 0xb8, - 0x89, 0x12, 0x19, 0x19, 0x6a, 0x63, 0x32, 0x8f, 0xc3, 0x95, - 0xec, 0x84, 0xd1, 0x45, 0x75, 0xb1, 0x68, 0xf7, 0x5d, 0x45, - 0xc7, 0xf3, 0x8d, 0x97, 0xbc, 0x66, 0x84, 0xd9, 0xdd, 0xa9, - 0x23, 0xc8, 0x64, 0x7c, 0x67, 0x78, 0x2a, 0x45, 0x73, 0xb9, - 0xc1, 0x6a, 0xec, 0x9a, 0x2b, 0x26, 0x10, 0x63, 0xd6, 0xe1, - 0x3f, 0xa6, 0xe0, 0x70, 0xd4, 0x69, 0x33, 0xae, 0x62, 0xb1, - 0x5a, 0x7b, 0x14, 0x87, 0x61, 0x06, 0xb3, 0x38, 0x8c, 0xe2, - 0x55, 0x2e, 0x23, 0x0f, 0xb5, 0xb9, 0x9d, 0x78, 0xeb, 0xf4, - 0x76, 0x19, 0xb7, 0x5f, 0x04, 0x6d, 0xa2, 0xb5, 0xce, 0x93, - 0x09, 0xbd, 0x0c, 0xdb, 0xfe, 0x9d, 0x34, 0xa0, 0x2d, 0x5a, - 0xce, 0x03, 0x16, 0xc6, 0xc5, 0x2c, 0x8b, 0x08, 0xdc, 0xf1, - 0xd1, 0xc9, 0x69, 0x9b, 0x7f, 0x3c, 0xcf, 0xa2, 0xdb, 0x17, - 0x81, 0x68, 0x24, 0x8f, 0x39, 0x40, 0x7f, 0xf4, 0x8b, 0x59, - 0x9c, 0x76, 0x56, 0x10, 0xb5, 0xf0, 0x25, 0xaf, 0x32, 0x08, - 0x94, 0x37, 0x6f, 0x1f, 0x6a, 0x60, 0xc1, 0x5d, 0x25, 0x06, - 0xa9, 0x9b, 0xf4, 0x20, 0x5e, 0xad, 0x30, 0x0a, 0xf4, 0x38, - 0x9b, 0xc7, 0xfd, 0x79, 0x76, 0xd1, 0x69, 0xbf, 0x5e, 0xad, - 0xb2, 0x15, 0x69, 0x42, 0xaf, 0x0d, 0xdd, 0x23, 0xbf, 0xd0, - 0x6e, 0x6e, 0xb6, 0xc9, 0x2f, 0x04, 0x0d, 0x53, 0x0b, 0x82, - 0x2e, 0xff, 0xc9, 0xeb, 0x8c, 0x78, 0xfb, 0xbc, 0x82, 0x40, - 0xb0, 0xdd, 0xdc, 0x8c, 0xf9, 0x5c, 0x77, 0xb4, 0xbf, 0x44, - 0xbf, 0x83, 0x07, 0x76, 0x9c, 0xea, 0x3c, 0xdf, 0x6d, 0xe7, - 0x93, 0x55, 0xb2, 0x2c, 0x5e, 0xc2, 0x5f, 0xdf, 0x6d, 0xc3, - 0x1c, 0xbe, 0x84, 0x5f, 0x66, 0xc5, 0x62, 0x4e, 0xbf, 0xfd, - 0x5f, 0xb7, 0x30, 0x60, 0x83, 0x78, 0xf0, 0x01, 0x00 + 0x00, 0xcc, 0x3d, 0xed, 0x72, 0xe3, 0x38, 0x72, 0xbf, 0x75, + 0x55, 0xf7, 0x0e, 0x88, 0xa6, 0x36, 0x63, 0x6f, 0x59, 0xd6, + 0x97, 0x65, 0x7b, 0x3c, 0xb6, 0xef, 0xbc, 0x9e, 0x99, 0x1b, + 0x27, 0xf3, 0xe1, 0xac, 0xbd, 0xbb, 0x75, 0xd9, 0xda, 0x4a, + 0x41, 0x22, 0x28, 0xf1, 0x4c, 0x91, 0x0c, 0x49, 0xc9, 0xf6, + 0x4c, 0x6d, 0xd5, 0xbd, 0x40, 0x2a, 0xbf, 0xef, 0x57, 0x7e, + 0xe6, 0x15, 0xf2, 0x3c, 0xf7, 0x02, 0xc9, 0x23, 0xa4, 0xbb, + 0x01, 0x90, 0x20, 0x09, 0x4a, 0xd4, 0xd8, 0xde, 0xdd, 0x71, + 0x8d, 0x2d, 0x01, 0x8d, 0xfe, 0x42, 0x77, 0xa3, 0xd1, 0x00, + 0xa5, 0xe3, 0x7f, 0x78, 0xf5, 0xf1, 0xfc, 0xfa, 0xcf, 0x97, + 0xaf, 0xd9, 0x2c, 0x9d, 0xfb, 0xa7, 0xbf, 0xff, 0xdd, 0x31, + 0xfe, 0x65, 0x3e, 0x0f, 0xa6, 0x27, 0x6d, 0x11, 0xb4, 0xa9, + 0x45, 0x70, 0x07, 0xff, 0xfa, 0x5e, 0x70, 0xc3, 0x62, 0xe1, + 0x9f, 0xb4, 0xbd, 0x49, 0x18, 0xb4, 0xd9, 0x2c, 0x16, 0xee, + 0x49, 0xdb, 0xe1, 0x29, 0x3f, 0xda, 0x69, 0xd7, 0x03, 0xec, + 0xee, 0x76, 0x5d, 0xbe, 0xc4, 0x96, 0x5d, 0xf8, 0x45, 0x80, + 0x73, 0x91, 0x72, 0x36, 0x99, 0xf1, 0x38, 0x11, 0xe9, 0x49, + 0x7b, 0x91, 0xba, 0x9d, 0xc3, 0xbc, 0x3d, 0xe0, 0x73, 0x71, + 0xd2, 0x5e, 0x7a, 0xe2, 0x36, 0x0a, 0xe3, 0xb4, 0xcd, 0x60, + 0x60, 0x2a, 0x02, 0x80, 0xbb, 0xf5, 0x9c, 0x74, 0x76, 0xe2, + 0x08, 0xc0, 0x25, 0x3a, 0xf4, 0x66, 0x87, 0x79, 0x81, 0x97, + 0x7a, 0xdc, 0xef, 0x24, 0x13, 0xee, 0x8b, 0x93, 0x3e, 0x62, + 0x01, 0x3c, 0x49, 0x7a, 0xef, 0x0b, 0x78, 0xd9, 0x1a, 0x87, + 0xce, 0x3d, 0xfb, 0x0c, 0x2f, 0x18, 0x73, 0x01, 0x4d, 0xc7, + 0xe5, 0x73, 0xcf, 0xbf, 0x3f, 0x62, 0x09, 0x0f, 0x92, 0x4e, + 0x22, 0x62, 0xcf, 0x7d, 0x49, 0x9d, 0x73, 0x1e, 0x4f, 0xbd, + 0xe0, 0xa8, 0x87, 0xef, 0x7e, 0x86, 0xff, 0xdd, 0xaf, 0xd9, + 0x99, 0xe3, 0x30, 0xce, 0xc6, 0x3e, 0x9f, 0xdc, 0xb0, 0x31, + 0xfc, 0x9a, 0xc6, 0xe1, 0x22, 0x70, 0x80, 0x1b, 0x3f, 0x8c, + 0x59, 0x1a, 0xb2, 0x74, 0x26, 0xe0, 0x4f, 0x04, 0xec, 0x2e, + 0xbd, 0x29, 0x4f, 0xbd, 0x30, 0x60, 0x5f, 0x77, 0x61, 0xe8, + 0x2e, 0x34, 0x7e, 0xe0, 0x4b, 0xa2, 0xda, 0xca, 0x07, 0x76, + 0x68, 0xe0, 0x11, 0x7b, 0x36, 0x1c, 0x0e, 0x91, 0x4a, 0x2b, + 0x5c, 0x8a, 0xd8, 0xf5, 0xc3, 0xdb, 0x23, 0x36, 0xf3, 0x1c, + 0x47, 0x04, 0x8a, 0xb4, 0x24, 0x7e, 0x85, 0x02, 0x10, 0x09, + 0xd4, 0x69, 0x02, 0x62, 0x26, 0x9e, 0x23, 0x1b, 0x0c, 0x7a, + 0x63, 0x1e, 0x17, 0x69, 0x72, 0x49, 0x15, 0xd0, 0xf2, 0xf4, + 0x88, 0xf9, 0xc2, 0x4d, 0x89, 0x94, 0xe3, 0x25, 0x91, 0xcf, + 0x41, 0xec, 0xb1, 0x1f, 0x4e, 0x6e, 0xa8, 0x49, 0x73, 0xe3, + 0x0e, 0xf0, 0x87, 0x9a, 0x52, 0x71, 0x97, 0x76, 0xb8, 0xef, + 0x4d, 0x83, 0x23, 0x36, 0x01, 0x85, 0x8b, 0x98, 0x9a, 0x23, + 0xee, 0x38, 0x5e, 0x30, 0x3d, 0x62, 0xfd, 0xbd, 0xe8, 0x8e, + 0xf5, 0xf7, 0xa3, 0xbb, 0x1c, 0xda, 0x11, 0x93, 0x30, 0x26, + 0x5e, 0x8e, 0x58, 0x10, 0x06, 0x82, 0x7a, 0x48, 0xd1, 0x89, + 0xf7, 0x49, 0xc0, 0x90, 0x03, 0x09, 0x9d, 0xc9, 0x75, 0x3e, + 0x03, 0xc3, 0x92, 0x72, 0x48, 0x45, 0x86, 0xae, 0x92, 0x10, + 0xc4, 0x99, 0xa1, 0x4a, 0x4a, 0x02, 0x1d, 0xc9, 0xc6, 0x3a, + 0x65, 0x3a, 0x8e, 0x63, 0x8a, 0x43, 0xb3, 0x55, 0x20, 0xf8, + 0x56, 0xab, 0x8d, 0x6c, 0x33, 0x9d, 0xf1, 0x94, 0x25, 0xb3, + 0x70, 0xe1, 0x3b, 0x2c, 0x8c, 0x44, 0xc0, 0x38, 0xce, 0xa8, + 0x1f, 0x26, 0x42, 0x4f, 0x27, 0x12, 0x05, 0x56, 0x92, 0x39, + 0xf7, 0x7d, 0x96, 0x4c, 0x62, 0x21, 0x82, 0xa4, 0xc8, 0x12, + 0x1a, 0x71, 0x20, 0x19, 0xca, 0xf4, 0xaa, 0x65, 0xcf, 0xc8, + 0xfe, 0x30, 0x03, 0xe4, 0x88, 0x52, 0xa2, 0x60, 0x5e, 0x02, + 0xb3, 0x91, 0x24, 0xc8, 0x40, 0xc0, 0xf6, 0x7b, 0x3d, 0x16, + 0x79, 0x77, 0xc2, 0x4f, 0x18, 0x58, 0xb1, 0xd8, 0x41, 0x03, + 0x10, 0x0c, 0x09, 0x92, 0x2a, 0x76, 0x98, 0xb8, 0x9b, 0x88, + 0x28, 0x05, 0x8b, 0x8d, 0x09, 0x87, 0xeb, 0xc5, 0x49, 0x0a, + 0x5c, 0x09, 0xb6, 0xd5, 0x7e, 0x1b, 0xce, 0x45, 0x7b, 0x7b, + 0x97, 0x5d, 0xcd, 0xc2, 0xdb, 0x92, 0x5c, 0xe8, 0x27, 0x1c, + 0x0c, 0x65, 0xbd, 0x80, 0x5b, 0x24, 0xc3, 0xb6, 0x94, 0xeb, + 0x8f, 0x73, 0xe1, 0x78, 0x5c, 0x33, 0x8a, 0xf0, 0x5b, 0x73, + 0x7e, 0x27, 0xfd, 0xeb, 0x08, 0x79, 0x8d, 0xee, 0xb6, 0x95, + 0x0b, 0xe5, 0xb3, 0x12, 0x84, 0xe9, 0xd6, 0x11, 0xf1, 0xd5, + 0x99, 0xcc, 0x3c, 0xdf, 0x01, 0x88, 0xa2, 0x32, 0x7e, 0x2e, + 0x0e, 0x30, 0x94, 0xa6, 0x8c, 0x33, 0xf6, 0xa6, 0xb3, 0x3a, + 0xeb, 0x64, 0xec, 0x67, 0x53, 0x99, 0xd7, 0xc0, 0x79, 0x3b, + 0x16, 0x49, 0x14, 0x82, 0x17, 0x2c, 0x05, 0x44, 0x04, 0x9f, + 0x83, 0x2e, 0x41, 0xa7, 0x60, 0x9a, 0xc2, 0x31, 0x9c, 0x11, + 0x69, 0xdd, 0x7a, 0xe9, 0x8c, 0xfd, 0x13, 0x5f, 0xf2, 0xab, + 0x49, 0xec, 0x81, 0x16, 0x6f, 0xf5, 0x54, 0x2c, 0xc0, 0xdf, + 0x61, 0xa8, 0x37, 0x91, 0xd6, 0x86, 0x4d, 0x14, 0x94, 0x00, + 0x3f, 0xa0, 0x92, 0x38, 0xe7, 0xfc, 0x46, 0x24, 0x26, 0x36, + 0x3f, 0x0c, 0x6f, 0xd8, 0x34, 0x0c, 0x9d, 0xaa, 0x55, 0x6c, + 0x29, 0xc6, 0x0d, 0x37, 0x05, 0x53, 0x4d, 0x3d, 0x88, 0x44, + 0xfe, 0x3d, 0x7a, 0x6c, 0x0a, 0x71, 0x13, 0x0d, 0x7c, 0x16, + 0xc6, 0xde, 0x27, 0x9c, 0x1c, 0x68, 0xff, 0x62, 0xa5, 0xef, + 0xe6, 0x0a, 0x60, 0x9f, 0xa3, 0x30, 0xf1, 0xa4, 0xd7, 0x41, + 0xb4, 0x05, 0xff, 0x5b, 0x96, 0x14, 0x6e, 0x02, 0x9b, 0xba, + 0xcf, 0xc7, 0xf1, 0x71, 0x12, 0xfa, 0x8b, 0x54, 0x7a, 0x2c, + 0xcd, 0xc5, 0x11, 0xeb, 0x49, 0xc7, 0x0e, 0x23, 0xf5, 0x52, + 0x4e, 0x83, 0x1d, 0x69, 0x61, 0x2e, 0x33, 0xd7, 0xb7, 0x04, + 0x1a, 0x33, 0xaa, 0xe8, 0x80, 0x94, 0xcd, 0x6f, 0xab, 0x1c, + 0xed, 0x52, 0x3e, 0xd6, 0xf1, 0x9e, 0x6d, 0xa1, 0x5a, 0x60, + 0x86, 0xd9, 0x4c, 0x10, 0x7f, 0xfd, 0x5e, 0xef, 0x2b, 0xf2, + 0x09, 0x77, 0x01, 0xb3, 0x10, 0xf1, 0xa9, 0xd0, 0xa0, 0xdb, + 0xda, 0x43, 0xf9, 0xf8, 0x5c, 0x0d, 0x96, 0xba, 0x53, 0x61, + 0xe1, 0x76, 0xe6, 0x49, 0x49, 0x19, 0xab, 0xb8, 0x2c, 0x63, + 0x79, 0x80, 0x03, 0xad, 0xb3, 0x41, 0x4f, 0x86, 0x2c, 0x66, + 0x92, 0x7d, 0x69, 0x63, 0x17, 0x58, 0x95, 0xb3, 0x9e, 0x11, + 0x7f, 0x87, 0xbe, 0x28, 0x29, 0x5b, 0x62, 0xd5, 0x68, 0x34, + 0x7a, 0x59, 0xc3, 0x55, 0x29, 0x60, 0xc3, 0xf0, 0x30, 0x76, + 0x44, 0x6c, 0x72, 0x19, 0x2e, 0x52, 0xa0, 0x26, 0xcc, 0xa6, + 0xc9, 0x22, 0x4e, 0x10, 0x51, 0x14, 0x7a, 0x3a, 0x5a, 0x9b, + 0xd2, 0x98, 0xe1, 0x5a, 0x2d, 0x7f, 0xc5, 0xa8, 0xcc, 0x98, + 0xb2, 0xb7, 0xfe, 0xe0, 0xab, 0x3c, 0x7a, 0x69, 0x41, 0x8c, + 0xc8, 0x6b, 0x15, 0xe7, 0xe0, 0xe0, 0xe0, 0x21, 0x83, 0x5a, + 0x6a, 0x94, 0x1b, 0xc3, 0x72, 0xaf, 0x07, 0x28, 0xa9, 0x49, + 0x33, 0x6c, 0x00, 0xfc, 0x83, 0x91, 0x7a, 0x4e, 0x49, 0xb0, + 0x91, 0xe6, 0x5e, 0x82, 0x77, 0x62, 0xee, 0x78, 0x8b, 0xc4, + 0x68, 0xb7, 0x2f, 0x64, 0x06, 0x4d, 0xaf, 0x4a, 0xb4, 0x43, + 0x66, 0x2f, 0x09, 0xf7, 0xd7, 0x11, 0xae, 0x27, 0x80, 0xd8, + 0xa3, 0x27, 0xc3, 0x8e, 0x04, 0xc0, 0x01, 0xe6, 0x1d, 0x2f, + 0x88, 0x16, 0x29, 0x79, 0xa0, 0x9e, 0xc1, 0x5e, 0x2f, 0x5b, + 0x69, 0x4d, 0x98, 0xbe, 0x09, 0x34, 0xac, 0x01, 0x1a, 0xd4, + 0x02, 0xe5, 0x30, 0x43, 0x13, 0x66, 0xa4, 0x40, 0x5a, 0x32, + 0x6d, 0xea, 0xa0, 0xdd, 0x66, 0x02, 0x10, 0xf2, 0xb8, 0x30, + 0xb3, 0xad, 0x15, 0x13, 0xdb, 0x2a, 0x2b, 0xa0, 0x65, 0x9f, + 0xd6, 0xd6, 0x0a, 0xa5, 0x67, 0xd4, 0x06, 0x4f, 0x4d, 0xae, + 0x35, 0x8d, 0x3d, 0xb2, 0xe6, 0xc5, 0x3c, 0x60, 0x90, 0x46, + 0x46, 0xb0, 0x9c, 0x0f, 0xcc, 0xe9, 0xc9, 0x58, 0x19, 0xfe, + 0x1a, 0xac, 0x0c, 0x0d, 0x8f, 0xcc, 0x38, 0xd9, 0xfb, 0x35, + 0x38, 0xd9, 0x33, 0x95, 0x42, 0x23, 0xae, 0x21, 0x38, 0x0b, + 0xdf, 0x3f, 0xa7, 0x61, 0xe4, 0x1c, 0x2a, 0xea, 0x95, 0x26, + 0xd3, 0x04, 0x7e, 0x07, 0x86, 0x65, 0x82, 0xea, 0x00, 0xa9, + 0x44, 0x34, 0x41, 0xaf, 0x52, 0x9e, 0x0a, 0x3b, 0x5a, 0xed, + 0x63, 0xd2, 0x0b, 0xfb, 0x3d, 0x33, 0x27, 0x2d, 0xe0, 0xb8, + 0x98, 0x4f, 0x2b, 0x68, 0xb2, 0x98, 0x6c, 0xea, 0x08, 0xd5, + 0x97, 0xe3, 0x00, 0x45, 0xfb, 0x02, 0x3d, 0xff, 0x1a, 0x5f, + 0xb0, 0xdc, 0x53, 0x18, 0x39, 0xe6, 0x57, 0xb5, 0x90, 0xa9, + 0xa3, 0x96, 0x65, 0xc5, 0x5f, 0xc1, 0x8f, 0x5a, 0x6a, 0xfd, + 0x19, 0xf4, 0xeb, 0x69, 0xf5, 0xab, 0xc4, 0x72, 0xb5, 0x97, + 0x41, 0x37, 0xa2, 0x56, 0x37, 0xd5, 0x9a, 0xd4, 0xc0, 0x0c, + 0x13, 0x36, 0x62, 0xb3, 0x47, 0x24, 0xd6, 0xdf, 0x5b, 0x45, + 0xec, 0x3c, 0xf5, 0xad, 0x3a, 0x67, 0xac, 0xd5, 0x22, 0x9c, + 0x1d, 0x30, 0xf8, 0x79, 0x52, 0xc0, 0x5c, 0x43, 0x50, 0x82, + 0xab, 0xac, 0xa2, 0x64, 0x99, 0x56, 0xba, 0x9b, 0xe9, 0xf4, + 0xc9, 0xb9, 0x99, 0xfd, 0xa6, 0xb8, 0x89, 0x57, 0x6f, 0xde, + 0x70, 0xeb, 0xe8, 0xeb, 0x59, 0xb5, 0x0e, 0x37, 0x36, 0x18, + 0xab, 0x51, 0x4d, 0x63, 0x7e, 0x6f, 0xf8, 0x34, 0xed, 0xa7, + 0x6a, 0x77, 0x68, 0x14, 0x92, 0x12, 0xdc, 0x3f, 0x7d, 0x6e, + 0x90, 0xb3, 0x56, 0x77, 0xc2, 0x95, 0xe5, 0x0e, 0xf1, 0x01, + 0x23, 0x3e, 0x8f, 0x12, 0x45, 0x76, 0xe9, 0x25, 0xde, 0xd8, + 0xf3, 0xbd, 0xf4, 0x1e, 0xc5, 0x94, 0x3d, 0x39, 0x75, 0x06, + 0x29, 0xf5, 0x78, 0x91, 0xa6, 0x61, 0x40, 0x9b, 0x0e, 0x53, + 0xb4, 0x2c, 0xc8, 0xf4, 0x76, 0xf7, 0xc5, 0x3c, 0xdf, 0x4e, + 0xdf, 0xca, 0xb9, 0x83, 0x74, 0xc2, 0x97, 0x11, 0xdb, 0x92, + 0x5b, 0xb9, 0xae, 0x6b, 0xee, 0x85, 0xa7, 0xb8, 0xb5, 0x30, + 0x38, 0x34, 0x28, 0xaa, 0xe4, 0xbd, 0x29, 0xe2, 0x83, 0x17, + 0xdf, 0xbc, 0x18, 0x8e, 0x8a, 0x65, 0x03, 0x45, 0x4b, 0xd5, + 0x4d, 0x74, 0x3c, 0xb4, 0xf1, 0x5f, 0xb3, 0x94, 0xa8, 0x7c, + 0xb6, 0x43, 0xa5, 0x9a, 0x23, 0x4c, 0x6f, 0x13, 0x91, 0x16, + 0x7a, 0x54, 0xb2, 0x91, 0xce, 0x3c, 0x14, 0x43, 0x2f, 0x0f, + 0xa6, 0xe2, 0x60, 0xea, 0xd0, 0x5a, 0x9c, 0x2f, 0x90, 0xa7, + 0xd7, 0x2b, 0xc8, 0x33, 0xe9, 0xe1, 0x8f, 0x5d, 0x5b, 0xfd, + 0x5f, 0x7e, 0x82, 0xfa, 0xbf, 0x85, 0x19, 0xaa, 0x6c, 0xd4, + 0x1f, 0x61, 0xca, 0xfa, 0x4f, 0x35, 0x67, 0xad, 0x9c, 0xd0, + 0x2b, 0x8f, 0xfb, 0xe1, 0xf4, 0xfc, 0x11, 0x5d, 0x2b, 0xdb, + 0xa9, 0x65, 0xb4, 0x87, 0xa3, 0x91, 0x3b, 0x7e, 0x51, 0x99, + 0x3c, 0x83, 0xf4, 0x86, 0xf2, 0xe5, 0x08, 0x1f, 0x61, 0x06, + 0xf5, 0x1e, 0xb6, 0xf9, 0x14, 0x16, 0xa7, 0xca, 0xd4, 0xe0, + 0x97, 0xcd, 0x97, 0x0e, 0xc8, 0xf5, 0x0e, 0x16, 0x0b, 0xe7, + 0x9b, 0x5f, 0x6a, 0xba, 0x80, 0xd6, 0x1a, 0xca, 0x9b, 0x49, + 0xa7, 0xf0, 0x3d, 0x9d, 0xaf, 0x65, 0x1b, 0x1b, 0x9b, 0x92, + 0x9e, 0x66, 0x46, 0x90, 0x9c, 0x93, 0x53, 0x29, 0x6e, 0x09, + 0x15, 0xf3, 0xba, 0x64, 0xdd, 0x81, 0x65, 0x8d, 0x2f, 0xd2, + 0xd0, 0x5e, 0xe0, 0x69, 0x99, 0xbb, 0x0d, 0x1f, 0x19, 0x43, + 0xda, 0x94, 0x36, 0x67, 0x3b, 0x0e, 0x92, 0x6e, 0x32, 0x13, + 0x93, 0x9b, 0x71, 0x78, 0x87, 0x8c, 0x46, 0x85, 0xdd, 0x6c, + 0x5f, 0x11, 0x94, 0x29, 0x0b, 0xa6, 0x74, 0x83, 0x8d, 0x58, + 0xb0, 0x52, 0x60, 0x45, 0x1a, 0x5a, 0xa8, 0x86, 0x83, 0x7d, + 0x3e, 0x16, 0xbe, 0x15, 0x81, 0x7d, 0x6f, 0x52, 0x18, 0x5d, + 0xd8, 0x86, 0xf7, 0xf7, 0x9f, 0x42, 0xba, 0x7e, 0x49, 0xbc, + 0xfd, 0x8d, 0xc4, 0xeb, 0x5b, 0xe4, 0xdb, 0x6f, 0x2e, 0x5f, + 0xa1, 0x82, 0xd0, 0x1f, 0x3d, 0x85, 0x7c, 0x83, 0x92, 0x7c, + 0xa3, 0x8d, 0xe4, 0x1b, 0x58, 0xe4, 0x1b, 0xad, 0x92, 0x4f, + 0x95, 0x9d, 0xdf, 0x87, 0x0e, 0xf7, 0xd9, 0x56, 0xee, 0x4e, + 0xba, 0xd4, 0x38, 0xa7, 0x8e, 0xcf, 0x96, 0x9a, 0x22, 0x93, + 0xa7, 0x0e, 0x8e, 0x08, 0xd8, 0xf8, 0x9e, 0x39, 0xc2, 0xe5, + 0x0b, 0x3f, 0x95, 0xa3, 0x18, 0xcb, 0x0b, 0xb0, 0xae, 0x77, + 0x07, 0x51, 0x84, 0x51, 0x39, 0x91, 0x63, 0xb9, 0x98, 0x01, + 0x8e, 0x89, 0xd0, 0x80, 0x9f, 0x3a, 0x5e, 0xe0, 0x88, 0x3b, + 0x60, 0x53, 0xc2, 0x78, 0x29, 0xd5, 0xac, 0xc3, 0x28, 0xc3, + 0x54, 0xdc, 0xd3, 0x62, 0xc4, 0x47, 0xc0, 0x77, 0xe1, 0x44, + 0x9e, 0x0d, 0x85, 0x2e, 0x15, 0x54, 0x41, 0x01, 0x7a, 0x84, + 0x4c, 0x5b, 0x55, 0x65, 0xd7, 0xac, 0xf2, 0xe6, 0x35, 0xa4, + 0xaf, 0x10, 0xc7, 0x1b, 0x2c, 0xaf, 0xca, 0xbd, 0x94, 0x1a, + 0xa9, 0x76, 0x0e, 0x45, 0x08, 0x35, 0xbb, 0x0a, 0x24, 0x3f, + 0xcd, 0xa2, 0x79, 0x45, 0x56, 0x5e, 0x07, 0xb4, 0xc9, 0x4d, + 0x26, 0x31, 0x64, 0xc0, 0xcc, 0x73, 0x59, 0x20, 0x04, 0x96, + 0xeb, 0xd5, 0x08, 0x4b, 0x58, 0x9d, 0x8e, 0xb7, 0x7a, 0x3b, + 0xf0, 0xb3, 0x4d, 0xe3, 0xdf, 0x70, 0xdf, 0x47, 0x20, 0x75, + 0x52, 0xb4, 0x6a, 0x18, 0x97, 0xe3, 0x76, 0x7a, 0xbb, 0x7b, + 0x72, 0xec, 0x37, 0x74, 0x6c, 0x77, 0xdb, 0x65, 0x61, 0xc4, + 0x27, 0x90, 0x86, 0xcb, 0xd1, 0xd9, 0xd4, 0xca, 0x69, 0xd5, + 0xb5, 0x62, 0x63, 0x46, 0xf5, 0xfe, 0xa6, 0xbe, 0x82, 0xe9, + 0x0a, 0xfc, 0x29, 0x9c, 0x1a, 0x66, 0xa6, 0x6c, 0x54, 0xf3, + 0xf2, 0x32, 0xb2, 0x8e, 0x84, 0x59, 0xdd, 0x8f, 0x3d, 0x3b, + 0x3c, 0x3c, 0x2c, 0x68, 0x7e, 0xaf, 0xd7, 0x2b, 0x9d, 0x93, + 0xa1, 0xed, 0x9d, 0xd3, 0xb1, 0x8d, 0x8c, 0xff, 0x8a, 0x47, + 0x79, 0x92, 0x53, 0xa8, 0x6d, 0x3f, 0xe3, 0xf4, 0xaf, 0x50, + 0x47, 0xce, 0xd6, 0xfb, 0x42, 0xd9, 0x77, 0x70, 0x58, 0xa8, + 0x05, 0x97, 0xd7, 0x0c, 0xed, 0xd7, 0x48, 0x42, 0x2e, 0xc4, + 0x3b, 0xf9, 0x7b, 0x37, 0x9c, 0x2c, 0x92, 0x12, 0xe1, 0x5e, + 0xaf, 0x67, 0x14, 0x2c, 0x6d, 0x47, 0x81, 0xd6, 0x12, 0x75, + 0xbe, 0x07, 0x52, 0x07, 0x56, 0xb8, 0xe2, 0x33, 0x56, 0xd8, + 0x8a, 0x61, 0x41, 0xe9, 0xa5, 0x6c, 0xa3, 0xda, 0xd2, 0x94, + 0x47, 0x72, 0x55, 0x35, 0xda, 0x60, 0xdf, 0x0a, 0xc0, 0xa9, + 0x50, 0x85, 0xa7, 0x04, 0x97, 0xe5, 0x48, 0xf0, 0x74, 0x0b, + 0x67, 0xa3, 0xe3, 0x7a, 0xe9, 0x0e, 0x9b, 0x7b, 0xc1, 0x9c, + 0xdf, 0x6d, 0x0d, 0x0e, 0x61, 0xed, 0xd9, 0x61, 0x7d, 0x37, + 0xde, 0x06, 0xeb, 0xa8, 0x22, 0x88, 0xc3, 0x5b, 0x18, 0x0d, + 0xb3, 0x99, 0x84, 0x41, 0x7c, 0x6f, 0x26, 0x94, 0x19, 0x87, + 0xfd, 0xa7, 0x62, 0x71, 0x88, 0xb5, 0xd4, 0xed, 0x97, 0x5f, + 0xc4, 0xd4, 0xe0, 0x89, 0xf5, 0x46, 0xa5, 0xe0, 0x87, 0xe9, + 0x6d, 0xf8, 0xd4, 0x53, 0x6b, 0xb2, 0xd8, 0x94, 0x43, 0x64, + 0xd1, 0xf1, 0x96, 0x3f, 0xea, 0x44, 0xea, 0x27, 0x78, 0xaf, + 0x8e, 0xc7, 0xc8, 0x4a, 0x3b, 0x62, 0x09, 0x21, 0x20, 0xd1, + 0xf1, 0x1c, 0xff, 0xd1, 0xe2, 0x25, 0x43, 0x09, 0x66, 0x73, + 0x7b, 0xb9, 0xc3, 0xc8, 0x9c, 0x49, 0xb9, 0x46, 0xee, 0xed, + 0xbd, 0xdd, 0xfe, 0x60, 0x14, 0x8b, 0xb9, 0x72, 0xf9, 0x25, + 0x8f, 0xb7, 0x3a, 0x1d, 0x95, 0xfc, 0x91, 0x03, 0x6d, 0xbf, + 0x2c, 0x8c, 0xa8, 0xe4, 0xee, 0xb2, 0xeb, 0xae, 0x93, 0xcc, + 0xb8, 0x03, 0x61, 0x55, 0xb5, 0xe0, 0xbf, 0x1e, 0xe4, 0x47, + 0x78, 0xb4, 0x83, 0x09, 0x55, 0xe7, 0x00, 0x7e, 0xa1, 0x27, + 0x0e, 0x77, 0x0a, 0x10, 0x03, 0x3c, 0xfc, 0x19, 0x1e, 0xe2, + 0x2f, 0x05, 0x00, 0xff, 0x06, 0x7b, 0x45, 0xa0, 0x17, 0xd0, + 0xb5, 0xb7, 0x0f, 0xbf, 0x0e, 0x73, 0x98, 0xbe, 0xab, 0x89, + 0x9b, 0x07, 0x46, 0xb1, 0x5c, 0x2a, 0xa5, 0x22, 0xd4, 0x24, + 0x4b, 0xc1, 0x8f, 0x8e, 0x30, 0x46, 0x3a, 0x31, 0x2c, 0x4c, + 0x99, 0x0a, 0xb2, 0xa0, 0xa9, 0x62, 0xf3, 0x70, 0x1f, 0xec, + 0x7c, 0xb0, 0x03, 0xa2, 0xed, 0x80, 0x5e, 0x46, 0xb9, 0xe4, + 0x6a, 0x24, 0xcc, 0xa8, 0x9f, 0x0a, 0x3a, 0xbe, 0x5f, 0xc4, + 0x5b, 0xbd, 0x5d, 0x52, 0xdc, 0x76, 0x21, 0x1e, 0x26, 0xa0, + 0x44, 0x3c, 0xbd, 0x55, 0x6b, 0x3a, 0x84, 0x43, 0xe4, 0xe4, + 0xc7, 0xf4, 0x3e, 0x12, 0x27, 0x6d, 0xdd, 0xda, 0xfe, 0x89, + 0x78, 0xe8, 0x74, 0x92, 0xa3, 0xfe, 0xa1, 0x5a, 0x0f, 0xb9, + 0xf3, 0x97, 0x45, 0x92, 0xe2, 0x8e, 0x34, 0xc1, 0x73, 0x62, + 0x34, 0x4c, 0x58, 0x8e, 0xe4, 0xd1, 0x3c, 0xc8, 0x46, 0x61, + 0xd5, 0x72, 0x9a, 0xca, 0xa8, 0x7c, 0x48, 0x8b, 0xe4, 0xee, + 0x50, 0x0a, 0xaf, 0x16, 0x41, 0x39, 0x93, 0x09, 0xb1, 0xc7, + 0x93, 0x48, 0x4c, 0xd2, 0x0e, 0x85, 0xbd, 0xa3, 0x41, 0xb7, + 0x8f, 0x6d, 0x7a, 0x05, 0x98, 0x70, 0x7f, 0xb2, 0xa5, 0x81, + 0xbb, 0x52, 0xe8, 0xe2, 0x54, 0x9b, 0x98, 0x0c, 0x9d, 0xd1, + 0x81, 0x2c, 0x47, 0xed, 0x76, 0xa6, 0xf8, 0x17, 0x4c, 0x71, + 0xcb, 0xe5, 0x31, 0x70, 0x9c, 0xe0, 0x7c, 0x38, 0x62, 0xe7, + 0x99, 0xcb, 0xf1, 0x87, 0x1d, 0x8e, 0xbe, 0xda, 0xc1, 0x69, + 0x1b, 0xd1, 0xef, 0xde, 0x36, 0xad, 0xf0, 0x5d, 0x8d, 0x96, + 0x56, 0x6b, 0x30, 0xe1, 0x8e, 0xf4, 0x1d, 0x9c, 0x7a, 0xd0, + 0x24, 0xee, 0xfe, 0x78, 0x9c, 0x63, 0x7e, 0xd1, 0x73, 0xc4, + 0x74, 0xe7, 0xd9, 0xa0, 0x37, 0xde, 0x3f, 0x74, 0xd9, 0xa8, + 0x07, 0x18, 0x5f, 0x0c, 0xf1, 0x87, 0x01, 0x3e, 0x5a, 0x47, + 0xba, 0x03, 0xc4, 0x43, 0xc8, 0xd4, 0xe2, 0x08, 0x76, 0x7c, + 0xf7, 0x92, 0x34, 0xd7, 0xaa, 0x41, 0x27, 0xeb, 0x11, 0x9b, + 0xa0, 0xc3, 0x12, 0x60, 0xcc, 0x03, 0x35, 0x11, 0x60, 0x25, + 0x09, 0x36, 0xc1, 0x22, 0x35, 0xbe, 0xf1, 0x20, 0xbf, 0x8b, + 0x40, 0x04, 0xe8, 0x9e, 0x88, 0x23, 0xbd, 0xb6, 0x74, 0xe6, + 0xe1, 0x27, 0x5b, 0xbb, 0xa5, 0x49, 0x2d, 0x42, 0xc5, 0x35, + 0xc8, 0x66, 0x3e, 0x47, 0xf4, 0x52, 0xed, 0xac, 0x8c, 0xb5, + 0x3f, 0x33, 0x10, 0x92, 0x60, 0xa7, 0x98, 0x29, 0x2a, 0x2c, + 0xb8, 0x08, 0xb6, 0x7f, 0xda, 0x51, 0xef, 0x82, 0xc5, 0x7c, + 0x2c, 0xe2, 0xfc, 0x7d, 0x04, 0x5b, 0xaa, 0x5b, 0x98, 0x7d, + 0xd3, 0x44, 0x47, 0x1b, 0x98, 0x68, 0xf7, 0xeb, 0x87, 0x9a, + 0x1f, 0xa1, 0x29, 0x1a, 0x20, 0xf9, 0x48, 0xd5, 0xf8, 0xb2, + 0xed, 0xf3, 0xd3, 0x6a, 0x3f, 0x11, 0x3e, 0x70, 0xaf, 0x15, + 0x24, 0x0b, 0x0f, 0x4a, 0x3d, 0x16, 0x3e, 0xb3, 0x61, 0xd9, + 0x8d, 0x2e, 0x83, 0xeb, 0x62, 0xf9, 0xf7, 0x19, 0xde, 0x91, + 0x61, 0x9f, 0x6b, 0xb6, 0xc0, 0x18, 0xbd, 0x9e, 0xe1, 0x29, + 0x0f, 0xe6, 0x33, 0xab, 0x60, 0x3e, 0x88, 0x14, 0x66, 0xec, + 0x66, 0x35, 0x10, 0xa4, 0x90, 0xae, 0x37, 0x5d, 0x0b, 0x43, + 0x13, 0xba, 0x12, 0xe8, 0xbb, 0xc8, 0x81, 0x05, 0x6b, 0x35, + 0xcc, 0xd9, 0x38, 0x5c, 0xa4, 0xab, 0x40, 0xa8, 0xb0, 0x1d, + 0x79, 0x41, 0x90, 0x15, 0x51, 0xec, 0xf7, 0x3d, 0x54, 0x01, + 0x5b, 0x9e, 0x4c, 0xc9, 0x28, 0xa7, 0xdf, 0xe4, 0x97, 0x1e, + 0x54, 0x65, 0x42, 0xa6, 0xa8, 0xf9, 0x7b, 0x7d, 0x53, 0x0e, + 0x96, 0x8c, 0x6c, 0x07, 0x97, 0x19, 0x4a, 0xe0, 0xcd, 0x55, + 0x0a, 0x18, 0x87, 0xa9, 0xdc, 0x87, 0xec, 0xee, 0xe3, 0xed, + 0x35, 0x17, 0xef, 0xe9, 0xd1, 0x2d, 0x19, 0x30, 0x0f, 0x39, + 0x86, 0x2c, 0x68, 0x93, 0x01, 0xe1, 0x46, 0xe0, 0x9b, 0xc0, + 0x2a, 0x73, 0x23, 0xb5, 0xd0, 0x25, 0x10, 0xb9, 0x68, 0xab, + 0x8d, 0x45, 0xff, 0x60, 0x6f, 0x67, 0x30, 0x7c, 0xb1, 0xb3, + 0xdb, 0x97, 0x51, 0x3c, 0xb3, 0x4e, 0xa5, 0xa9, 0xa6, 0xf0, + 0xe3, 0x10, 0x4c, 0x7c, 0xbe, 0xc1, 0x00, 0x9c, 0x98, 0x15, + 0xd0, 0x87, 0xdb, 0x96, 0x8a, 0xd2, 0xa0, 0x70, 0xde, 0xf8, + 0x47, 0x3d, 0x33, 0x37, 0xe2, 0x9e, 0xce, 0x82, 0x93, 0x5c, + 0x19, 0xb2, 0x7a, 0x14, 0x87, 0x73, 0xf6, 0x59, 0x43, 0x51, + 0x04, 0xc6, 0x33, 0x7f, 0xa5, 0x33, 0xb1, 0x85, 0xe1, 0x7c, + 0x9b, 0xac, 0x0f, 0xcc, 0x64, 0x15, 0xe0, 0x70, 0xf4, 0x22, + 0x03, 0xfd, 0x99, 0x28, 0xe3, 0xfc, 0xae, 0x21, 0x8b, 0x20, + 0xeb, 0x69, 0xda, 0xa1, 0xaa, 0x04, 0xc3, 0x75, 0xe4, 0xc2, + 0x06, 0xc4, 0xc2, 0x26, 0xa4, 0x56, 0xd3, 0x59, 0x4b, 0x64, + 0x2d, 0x85, 0xdf, 0xff, 0xce, 0x11, 0x90, 0x3f, 0xfb, 0xb4, + 0xe3, 0x62, 0xb0, 0x46, 0xa8, 0x7d, 0xe2, 0x21, 0xcc, 0x2d, + 0xc6, 0xf1, 0x7c, 0xe7, 0xd9, 0x23, 0x27, 0x64, 0x74, 0xda, + 0x69, 0xe6, 0x5d, 0xcf, 0x0e, 0x7b, 0x07, 0xee, 0x81, 0xfb, + 0x32, 0x87, 0xd5, 0xe6, 0xc7, 0x76, 0x47, 0x32, 0x9b, 0x2b, + 0xa4, 0x97, 0x80, 0x68, 0x17, 0xb3, 0x3c, 0x4a, 0xf5, 0x58, + 0x87, 0x60, 0xcc, 0x8d, 0x35, 0xee, 0xab, 0xe5, 0x10, 0x4b, + 0xf9, 0xd2, 0xdc, 0xfd, 0x67, 0x77, 0x59, 0x49, 0x8c, 0x64, + 0x31, 0x07, 0xea, 0xf7, 0x52, 0x0c, 0xa3, 0x1a, 0xba, 0xa7, + 0x59, 0xa8, 0x1c, 0xbe, 0x95, 0xc4, 0x18, 0x1d, 0x8c, 0xf6, + 0x47, 0xfb, 0x2f, 0x8d, 0xe1, 0xea, 0xf4, 0x6d, 0xb0, 0xdb, + 0xd3, 0x38, 0x2c, 0xe9, 0x1b, 0x36, 0x57, 0xb7, 0x9e, 0x8c, + 0xae, 0x00, 0x76, 0xe4, 0xc2, 0x93, 0xed, 0x52, 0x4d, 0x46, + 0x8f, 0xc6, 0x02, 0xe6, 0x45, 0x48, 0x7e, 0xb3, 0xa3, 0xce, + 0xe7, 0xcf, 0x4d, 0xd9, 0xd5, 0x5c, 0xe4, 0x32, 0xa8, 0x76, + 0x55, 0x52, 0xd7, 0x25, 0xce, 0xac, 0x5d, 0xc5, 0x68, 0x9a, + 0xf4, 0x88, 0xc7, 0x58, 0x5c, 0xa8, 0x7b, 0xad, 0x0a, 0xc9, + 0xa6, 0x48, 0x46, 0xdc, 0xd6, 0x45, 0x9b, 0xdd, 0x7d, 0x4d, + 0x59, 0x55, 0x74, 0x76, 0x0f, 0x75, 0x83, 0xc5, 0xf4, 0xb6, + 0x8b, 0x1d, 0x9d, 0x10, 0xc2, 0x16, 0x5a, 0xce, 0xee, 0x00, + 0xa7, 0x78, 0xa4, 0x4e, 0xca, 0x8d, 0xdc, 0x0b, 0x7a, 0x46, + 0x49, 0x3e, 0x80, 0x09, 0x9e, 0x64, 0x6a, 0xc2, 0xca, 0xc4, + 0xdb, 0xd7, 0xec, 0xfd, 0xd9, 0x9f, 0x2e, 0xce, 0xd9, 0xff, + 0xfd, 0xd7, 0x7f, 0xff, 0xed, 0xef, 0x7f, 0xfd, 0x8f, 0xbf, + 0xff, 0xed, 0xaf, 0xff, 0xfb, 0x3f, 0xff, 0x49, 0x05, 0x0a, + 0x65, 0xb5, 0x3f, 0xe2, 0xcd, 0xd3, 0x9f, 0xd8, 0x29, 0xb3, + 0x69, 0xb5, 0xca, 0xe2, 0x0b, 0xe9, 0x1e, 0x8a, 0x44, 0x6e, + 0xfb, 0x7a, 0xf4, 0x91, 0x8e, 0x3a, 0xaa, 0xa3, 0x03, 0xad, + 0x37, 0x72, 0x85, 0xcb, 0x0d, 0xc8, 0x9c, 0x4c, 0x8d, 0xe0, + 0x94, 0x2d, 0xfc, 0x82, 0xe9, 0x65, 0x3e, 0xd0, 0xd7, 0x0a, + 0x2b, 0xf9, 0x46, 0x2f, 0xe7, 0xe2, 0xb8, 0xab, 0x2f, 0x91, + 0xe3, 0x6b, 0x7d, 0x05, 0x1e, 0xb3, 0x0f, 0x6a, 0x6a, 0x1d, + 0xab, 0x8d, 0x9f, 0xe7, 0x40, 0x76, 0xb7, 0x48, 0x66, 0x1f, + 0xc1, 0x05, 0x2e, 0x39, 0x46, 0x05, 0x30, 0x36, 0x59, 0xae, + 0x57, 0x17, 0x55, 0x4f, 0xda, 0x46, 0x5d, 0x1d, 0x2f, 0xa8, + 0xb7, 0x5a, 0xc7, 0xb3, 0xe1, 0xe9, 0xa5, 0x1a, 0x04, 0xc8, + 0x87, 0xb2, 0x91, 0xce, 0xc0, 0x09, 0xe1, 0xc4, 0x9d, 0x5e, + 0x9a, 0x38, 0x33, 0x4c, 0xfa, 0x80, 0x5c, 0xa1, 0x49, 0x63, + 0xfa, 0x0b, 0x2f, 0x66, 0xa7, 0x67, 0x97, 0x17, 0xec, 0x3a, + 0xbc, 0x11, 0xc1, 0x71, 0x17, 0xde, 0xa9, 0x66, 0x47, 0xbd, + 0xa0, 0x3b, 0x5c, 0xcc, 0xc8, 0x54, 0x35, 0x42, 0xe3, 0x16, + 0x58, 0x1b, 0xb4, 0x71, 0xe7, 0x8b, 0x60, 0x9a, 0xce, 0x4e, + 0xda, 0xc3, 0x5e, 0xbb, 0xcc, 0x09, 0x10, 0x20, 0xfc, 0x6d, + 0x75, 0x43, 0xdf, 0xd6, 0xd5, 0x55, 0xf4, 0xba, 0x8a, 0x32, + 0xbc, 0x88, 0xab, 0xac, 0x7e, 0x87, 0x37, 0x71, 0x9f, 0x94, + 0x57, 0xa4, 0x50, 0xc7, 0x6c, 0xde, 0xd7, 0x8c, 0xdb, 0x6b, + 0x2f, 0xf5, 0xc5, 0x53, 0x31, 0x4a, 0xc8, 0x2d, 0x4c, 0xca, + 0xf6, 0x7a, 0x06, 0xbb, 0x64, 0x2c, 0xd2, 0x14, 0x5b, 0xc7, + 0x6e, 0x18, 0x82, 0xd5, 0x29, 0x60, 0x99, 0x4a, 0x13, 0xa1, + 0x14, 0xf7, 0x8c, 0xda, 0x3a, 0x33, 0xf6, 0x2a, 0x87, 0x7c, + 0xed, 0x53, 0x04, 0x3c, 0xee, 0xca, 0x8e, 0x2a, 0x1a, 0xaa, + 0x01, 0x76, 0xd6, 0x59, 0xb9, 0x05, 0x2d, 0x0d, 0x2c, 0xe0, + 0x3d, 0xee, 0x1a, 0xbc, 0xa2, 0x1b, 0x75, 0xa5, 0x73, 0x54, + 0x9d, 0x4a, 0xcc, 0xc1, 0x89, 0x37, 0xf2, 0xa8, 0xd7, 0x38, + 0xa2, 0xc6, 0x9d, 0x5e, 0x67, 0xd8, 0x9a, 0xf8, 0x12, 0x9a, + 0xc8, 0xa3, 0xcc, 0xf8, 0xfe, 0x5e, 0xbb, 0xc0, 0x01, 0x22, + 0x36, 0x66, 0x3b, 0x6f, 0x6b, 0x66, 0x8a, 0x97, 0x6a, 0x1b, + 0xb9, 0x8e, 0xb7, 0x6c, 0xbb, 0xb9, 0x29, 0x7f, 0x97, 0xb7, + 0x4e, 0x99, 0x3d, 0x6c, 0x6a, 0xc6, 0xdd, 0xdb, 0x10, 0x8d, + 0xe8, 0x09, 0xb4, 0x86, 0x88, 0xcb, 0x6c, 0x51, 0x5b, 0x43, + 0xad, 0x85, 0xf1, 0x5a, 0xbe, 0xd4, 0x86, 0xdd, 0xca, 0x59, + 0x41, 0x41, 0xf4, 0x48, 0x52, 0x49, 0x43, 0xd8, 0xd6, 0x8c, + 0x95, 0x6f, 0xc5, 0xc4, 0x8b, 0xb0, 0x52, 0xf2, 0x24, 0x7a, + 0xca, 0xb0, 0x97, 0x39, 0xcc, 0x3b, 0x7e, 0xc5, 0x90, 0x47, + 0x9c, 0x94, 0xe3, 0x9d, 0xd1, 0xd8, 0x20, 0xd8, 0xad, 0x0b, + 0x75, 0x14, 0x33, 0x1e, 0x1a, 0xe7, 0x56, 0x06, 0x9e, 0x8d, + 0x83, 0x9c, 0x11, 0xe0, 0x5a, 0xa5, 0x08, 0x37, 0xe3, 0x4d, + 0xa2, 0xda, 0x19, 0x64, 0x4e, 0xf7, 0xe1, 0x02, 0xd2, 0x21, + 0xf5, 0xe2, 0x96, 0x63, 0xda, 0x18, 0x62, 0xea, 0x33, 0xa1, + 0xfb, 0x12, 0x54, 0xef, 0x38, 0x4b, 0x12, 0x2f, 0x49, 0xb1, + 0xeb, 0x0f, 0xe5, 0x10, 0x68, 0x8d, 0x77, 0xf9, 0x84, 0xe7, + 0xd3, 0x0b, 0x2f, 0xe9, 0x98, 0xf4, 0xf4, 0x58, 0xe6, 0xc8, + 0xc4, 0xe5, 0xdb, 0xb3, 0x7f, 0x3b, 0x9b, 0x60, 0x66, 0xd8, + 0xd6, 0x40, 0xad, 0xe3, 0x30, 0xc2, 0x86, 0xd3, 0x57, 0x8a, + 0x83, 0x7b, 0x16, 0x06, 0xfe, 0xfd, 0x71, 0x57, 0x35, 0x57, + 0xc0, 0x00, 0x19, 0x6e, 0xb8, 0x79, 0x92, 0x66, 0x4c, 0x7f, + 0xd1, 0x10, 0x7c, 0x20, 0x24, 0x11, 0xf0, 0x2b, 0x10, 0xb7, + 0x79, 0x73, 0x19, 0x09, 0x64, 0x6e, 0xc4, 0xfd, 0x29, 0x93, + 0x7c, 0x1f, 0x77, 0xa5, 0x50, 0x4a, 0xd8, 0x6e, 0x66, 0xcc, + 0x1b, 0xd9, 0xd7, 0x8c, 0x77, 0x3e, 0xde, 0xac, 0x30, 0x03, + 0xb6, 0xe4, 0xfe, 0x02, 0x6d, 0x1a, 0x2b, 0x42, 0xf1, 0xbc, + 0x7d, 0xfa, 0xf1, 0xa6, 0xde, 0xd0, 0x00, 0xd9, 0x39, 0x16, + 0xc9, 0xfc, 0x26, 0x08, 0x25, 0xe0, 0xa9, 0x1c, 0xd0, 0xc4, + 0xce, 0xca, 0x0b, 0x29, 0x9d, 0xc3, 0x5e, 0xa5, 0xb1, 0x37, + 0x49, 0xaf, 0xc3, 0xc8, 0x9b, 0x24, 0x4d, 0xcc, 0xee, 0x22, + 0xc5, 0x07, 0xac, 0xe6, 0xa0, 0x72, 0x9e, 0x86, 0xa0, 0x7b, + 0x30, 0x38, 0xa1, 0x0e, 0x74, 0x09, 0x13, 0x4c, 0x44, 0x24, + 0x62, 0xac, 0x59, 0xa5, 0x84, 0x13, 0x6f, 0xdd, 0xf8, 0xca, + 0x52, 0xa5, 0xf1, 0xcc, 0xc0, 0x2c, 0xb9, 0xb6, 0xca, 0xa6, + 0x36, 0x39, 0x3b, 0x7d, 0x15, 0x16, 0xac, 0x7c, 0x35, 0xd1, + 0x20, 0xbc, 0x45, 0x7b, 0xaf, 0x04, 0xaa, 0x82, 0xb6, 0x95, + 0x02, 0x26, 0xb9, 0x02, 0x3a, 0x7f, 0x16, 0x49, 0x49, 0xf5, + 0x93, 0x82, 0xd2, 0xef, 0xa1, 0xff, 0x14, 0x80, 0x4a, 0x53, + 0x68, 0x84, 0xa6, 0xf5, 0x16, 0x63, 0x21, 0x7b, 0xae, 0x8c, + 0x63, 0x03, 0x33, 0xba, 0xe2, 0x4b, 0x51, 0x6f, 0x48, 0x36, + 0x1a, 0x4f, 0x69, 0x58, 0xda, 0xb8, 0x96, 0xd9, 0x04, 0xd2, + 0xa3, 0x61, 0x32, 0xc6, 0xcf, 0xef, 0xd5, 0xbb, 0x53, 0x3a, + 0xe0, 0x39, 0xe6, 0xea, 0x01, 0xe0, 0x67, 0x68, 0x09, 0x66, + 0xda, 0x85, 0x4f, 0x0a, 0xc9, 0x21, 0xea, 0x7a, 0xc4, 0xc7, + 0x28, 0xcf, 0xd4, 0xe9, 0x09, 0x47, 0x86, 0x13, 0xe2, 0x4d, + 0x6e, 0x4e, 0xda, 0xb8, 0x97, 0xbc, 0xe4, 0x53, 0xb1, 0xf5, + 0x1c, 0x3b, 0x9e, 0xef, 0x50, 0x9d, 0x7c, 0x87, 0x3d, 0x8f, + 0x85, 0xf3, 0x7c, 0xbb, 0x7d, 0x8a, 0x8d, 0xc7, 0xde, 0x5c, + 0x05, 0x54, 0x78, 0x73, 0x31, 0x07, 0xc3, 0x4e, 0xe2, 0xc9, + 0x49, 0x1b, 0xfe, 0xe0, 0x0e, 0x0e, 0xf8, 0x32, 0x9e, 0x52, + 0xc1, 0x8a, 0x85, 0xae, 0x71, 0xe2, 0xb3, 0x51, 0xaa, 0xbc, + 0x09, 0x2f, 0xdb, 0xa7, 0xc7, 0x5d, 0x5e, 0xe6, 0x3c, 0xa1, + 0x42, 0xb1, 0x9d, 0x77, 0xd9, 0x67, 0xb2, 0x7e, 0xa5, 0xa0, + 0x89, 0x2e, 0x43, 0xc7, 0xca, 0x37, 0xa7, 0xed, 0x97, 0x36, + 0x99, 0xe4, 0x88, 0x5c, 0x2a, 0xba, 0x13, 0xfa, 0x7c, 0xfb, + 0x25, 0xcc, 0x3b, 0xf5, 0x64, 0xa2, 0x49, 0x62, 0x8f, 0x2b, + 0x5c, 0x20, 0x2b, 0xdc, 0x76, 0xe9, 0x54, 0xa7, 0x29, 0xde, + 0x07, 0x0d, 0x6f, 0x95, 0xcf, 0x26, 0x9e, 0x1a, 0x91, 0xcb, + 0x37, 0x06, 0xcb, 0xc3, 0x69, 0x53, 0x1d, 0x16, 0xa6, 0xc8, + 0xf0, 0xa7, 0x76, 0x9e, 0x64, 0x9f, 0xc9, 0xd2, 0xb9, 0x82, + 0x6e, 0xcc, 0x91, 0x1c, 0x60, 0x2a, 0x9c, 0xdf, 0x23, 0x43, + 0xb2, 0xdd, 0xce, 0x0f, 0x56, 0xef, 0x6b, 0x19, 0xc2, 0xce, + 0x12, 0x47, 0x12, 0x7e, 0x13, 0x96, 0x70, 0x84, 0x95, 0x27, + 0xec, 0xb0, 0x30, 0xb5, 0xa0, 0xd3, 0x02, 0x3b, 0x4f, 0xb2, + 0xcf, 0x64, 0xe9, 0x3b, 0x05, 0xdd, 0x98, 0x23, 0x39, 0x20, + 0x67, 0x68, 0x72, 0xcf, 0x03, 0x64, 0x48, 0xb6, 0x5b, 0xf8, + 0xe1, 0x78, 0x32, 0x61, 0x67, 0x87, 0xba, 0x4c, 0x6e, 0xce, + 0x24, 0xac, 0x85, 0x2c, 0xf5, 0xe4, 0x54, 0x1d, 0x1e, 0xdf, + 0x68, 0x55, 0x50, 0x57, 0x95, 0xf0, 0x5f, 0xf8, 0x92, 0x27, + 0xf4, 0x98, 0xef, 0xd1, 0x32, 0xf4, 0x1c, 0xac, 0x76, 0x65, + 0x5c, 0xc8, 0x8f, 0x20, 0xc8, 0xc8, 0xe0, 0xc3, 0xab, 0x32, + 0x3c, 0x6d, 0x01, 0xbe, 0x7f, 0x7c, 0xf6, 0xe2, 0xe0, 0x60, + 0xff, 0xa5, 0xc2, 0x88, 0x21, 0x6e, 0x79, 0x9a, 0xc7, 0x36, + 0x72, 0x38, 0x79, 0x8e, 0x82, 0x8e, 0x53, 0xed, 0x7c, 0x5b, + 0x0a, 0x68, 0xea, 0x26, 0x11, 0x05, 0x3e, 0x33, 0x3a, 0xe6, + 0xf7, 0x47, 0xd4, 0xc2, 0x6a, 0xf4, 0x65, 0xcf, 0x67, 0xe5, + 0x6b, 0xee, 0xf7, 0xaf, 0xde, 0x87, 0x29, 0x53, 0xd3, 0xee, + 0xdb, 0x4b, 0x43, 0x14, 0xe3, 0x02, 0x37, 0x6c, 0x37, 0x48, + 0xeb, 0x66, 0x14, 0x45, 0x28, 0x05, 0xd2, 0x2b, 0x24, 0x2e, + 0x91, 0x52, 0xbe, 0xfb, 0x44, 0x75, 0xa2, 0x88, 0x95, 0x9c, + 0xa8, 0x84, 0xe7, 0xda, 0x9b, 0x0b, 0x0b, 0x12, 0x3f, 0x9c, + 0x60, 0x4f, 0x13, 0x0c, 0xdf, 0x45, 0xac, 0x06, 0xc9, 0x22, + 0xaa, 0xc5, 0x51, 0x2a, 0x73, 0x68, 0xf5, 0xc3, 0x6a, 0x04, + 0x21, 0x0f, 0xde, 0x99, 0x4a, 0x90, 0x0f, 0x75, 0xd6, 0x58, + 0xf9, 0x29, 0x53, 0x2c, 0xad, 0x48, 0x3e, 0x0c, 0x86, 0xcd, + 0x94, 0xb8, 0xb8, 0xe9, 0x51, 0xe7, 0x94, 0xd6, 0xdc, 0x21, + 0x67, 0x4d, 0x43, 0xe9, 0xa5, 0xf6, 0x1d, 0xb6, 0xb6, 0x59, + 0x8a, 0xfb, 0x9c, 0xec, 0x5d, 0xf7, 0x8b, 0x29, 0x80, 0x2f, + 0x64, 0x24, 0x72, 0x0a, 0xe4, 0x56, 0x39, 0x09, 0x7a, 0xdb, + 0xcd, 0x93, 0xe2, 0x3c, 0x35, 0xca, 0x67, 0xc8, 0x48, 0x63, + 0x32, 0x27, 0x68, 0x99, 0xee, 0xb0, 0xce, 0x62, 0x7f, 0xb8, + 0x1e, 0x0e, 0x1a, 0x1a, 0x2c, 0x82, 0x36, 0x32, 0x5a, 0x79, + 0x2b, 0xee, 0xa4, 0xdf, 0xeb, 0x9d, 0x5e, 0xfd, 0xc0, 0xbe, + 0x17, 0x71, 0x52, 0x6b, 0xc1, 0x3f, 0xa4, 0xc3, 0x41, 0x47, + 0x41, 0x34, 0x31, 0xc2, 0xf7, 0xa1, 0x83, 0x99, 0x4e, 0x05, + 0xd5, 0x2d, 0xe2, 0x39, 0x9f, 0x79, 0x11, 0x01, 0x34, 0xc1, + 0x74, 0x1e, 0xc6, 0x98, 0x1d, 0xd6, 0x63, 0x22, 0x80, 0x26, + 0x98, 0xea, 0x05, 0xcc, 0x70, 0x6d, 0x20, 0xe1, 0x1b, 0xd0, + 0xef, 0x8c, 0xee, 0x0d, 0xe0, 0x61, 0x87, 0x53, 0x87, 0xf5, + 0xea, 0x46, 0xa4, 0x93, 0x99, 0x89, 0x90, 0xfa, 0xa5, 0xe6, + 0x47, 0xbd, 0x1c, 0x90, 0xf0, 0x7d, 0x07, 0x98, 0xda, 0xac, + 0x01, 0x75, 0x88, 0x28, 0x93, 0x1b, 0xa2, 0xbe, 0x4a, 0x1c, + 0x82, 0x6a, 0x22, 0xcc, 0x5b, 0xc1, 0xa3, 0xee, 0x7b, 0xcf, + 0xa6, 0x9b, 0x19, 0x74, 0xd5, 0xb0, 0x7f, 0x20, 0xd9, 0x9f, + 0x83, 0x1f, 0x96, 0xa1, 0x88, 0x50, 0x4b, 0x53, 0x92, 0x75, + 0x83, 0xb8, 0x13, 0xc3, 0x26, 0xa5, 0x6d, 0x90, 0xfd, 0xf6, + 0xea, 0xea, 0xc2, 0x42, 0x52, 0x82, 0xad, 0xdb, 0x3f, 0xe6, + 0x5e, 0xb4, 0xda, 0x73, 0xae, 0xae, 0xdf, 0x37, 0x76, 0x1d, + 0x82, 0x6d, 0x16, 0xf0, 0x57, 0xba, 0x0b, 0xe1, 0xd9, 0xc4, + 0x5f, 0x70, 0xb6, 0xd8, 0x85, 0xb3, 0x0a, 0x1b, 0x82, 0x5c, + 0x38, 0xb5, 0xc8, 0x8a, 0xc0, 0x72, 0xe1, 0x52, 0x99, 0xab, + 0xf1, 0x90, 0x9c, 0x3c, 0x35, 0x34, 0xe7, 0x00, 0x21, 0x57, + 0x91, 0xc5, 0xfe, 0x6b, 0x2c, 0x40, 0x35, 0x23, 0xfc, 0x3a, + 0x8e, 0xc3, 0xb8, 0x19, 0x65, 0x02, 0x5d, 0x45, 0x9a, 0x00, + 0x6a, 0x69, 0x5b, 0x8d, 0xa1, 0xfa, 0xc2, 0xcc, 0x26, 0xae, + 0x2a, 0x9b, 0x8c, 0xb5, 0xf9, 0xc4, 0xd0, 0xc8, 0x27, 0x68, + 0x1f, 0xe5, 0x2d, 0xbf, 0xe7, 0xfe, 0x52, 0x24, 0xd2, 0x32, + 0x2a, 0x76, 0x07, 0xf0, 0xf2, 0x12, 0x23, 0xa5, 0x19, 0x04, + 0x49, 0x06, 0xd7, 0x2a, 0x59, 0xdc, 0xd2, 0x82, 0xc4, 0x78, + 0x28, 0xb3, 0xad, 0x0e, 0x35, 0x4f, 0xda, 0xc3, 0x36, 0x23, + 0xc4, 0xb0, 0x40, 0x85, 0x77, 0x99, 0x62, 0x8d, 0xcb, 0xf8, + 0xf2, 0xb9, 0xc9, 0xf6, 0xc6, 0x0e, 0xa2, 0x51, 0x19, 0x8f, + 0x0a, 0xe0, 0x11, 0xb7, 0x4a, 0x26, 0x1d, 0x47, 0x2a, 0x0b, + 0x18, 0x7a, 0x23, 0xfd, 0x89, 0xa9, 0x95, 0x1d, 0x84, 0x79, + 0xef, 0x25, 0xb0, 0x91, 0xf5, 0x79, 0x20, 0xc2, 0x45, 0x92, + 0xf9, 0x93, 0x29, 0xde, 0x1c, 0x20, 0xaa, 0xda, 0x96, 0x8f, + 0x2c, 0x5b, 0xb3, 0x00, 0x8a, 0x41, 0x59, 0x4a, 0x66, 0x58, + 0x45, 0x66, 0x16, 0x39, 0xca, 0xb7, 0xe7, 0xc5, 0x80, 0xd4, + 0x35, 0x5c, 0xa9, 0x80, 0xf2, 0x1d, 0x56, 0xb5, 0xce, 0x41, + 0x4d, 0xe3, 0xb8, 0x9c, 0x9d, 0x59, 0xd0, 0xbe, 0x6b, 0x8a, + 0x96, 0x3e, 0x12, 0x48, 0xee, 0x13, 0x99, 0x3c, 0x02, 0x2d, + 0xc4, 0xff, 0x42, 0x99, 0xcf, 0x4c, 0x38, 0xb2, 0xfb, 0x6f, + 0xc6, 0x46, 0xb3, 0xa3, 0x11, 0xe8, 0xac, 0xbd, 0xd2, 0xac, + 0x12, 0x0d, 0x22, 0xaa, 0x5b, 0x15, 0xf5, 0x76, 0xf3, 0xac, + 0xe3, 0x41, 0xd6, 0x80, 0xd7, 0x7c, 0xed, 0xe6, 0x80, 0xd6, + 0x70, 0x0d, 0xbd, 0x58, 0x2b, 0x5a, 0xc4, 0xc2, 0x16, 0x5b, + 0x71, 0xf0, 0x6f, 0xd7, 0xd0, 0x97, 0xa1, 0x9f, 0xae, 0xb0, + 0xf4, 0x2b, 0x11, 0x24, 0x61, 0x6c, 0xb7, 0x71, 0x1c, 0xfa, + 0xe8, 0x82, 0x7d, 0x49, 0x58, 0xfb, 0x50, 0x2d, 0x2f, 0x98, + 0x71, 0xad, 0x58, 0x46, 0x2a, 0x6b, 0xa5, 0xf0, 0x69, 0x24, + 0x2a, 0x7d, 0x47, 0xc9, 0xb3, 0xc2, 0x41, 0x75, 0x46, 0x03, + 0x91, 0x5a, 0x37, 0x46, 0x7d, 0xeb, 0x42, 0xf9, 0x3a, 0x9d, + 0x75, 0x7f, 0xf0, 0x5c, 0xcf, 0x12, 0xe9, 0x01, 0x51, 0x07, + 0xba, 0xb1, 0xb7, 0xc9, 0x22, 0xf9, 0xea, 0xed, 0xf9, 0x65, + 0x0d, 0x16, 0x67, 0x36, 0x89, 0x9a, 0xa0, 0xb8, 0xa8, 0x43, + 0xe0, 0x35, 0x1a, 0xfe, 0xfe, 0xec, 0xbc, 0x66, 0x3c, 0xf4, + 0x34, 0x41, 0x70, 0xb5, 0x18, 0x03, 0x34, 0x7b, 0xcf, 0x93, + 0x9b, 0x1a, 0x44, 0x73, 0xe8, 0x6a, 0x82, 0xe9, 0x4f, 0x3c, + 0x15, 0xb7, 0xfc, 0xbe, 0x06, 0xcb, 0xf4, 0xb6, 0x91, 0x42, + 0x3f, 0x5c, 0xd5, 0xe9, 0x33, 0xa8, 0x4b, 0xa9, 0x0b, 0x3b, + 0x99, 0x82, 0x4d, 0x74, 0xc6, 0x71, 0x78, 0x63, 0x1c, 0xed, + 0xe5, 0x66, 0xa1, 0x6d, 0xad, 0xb8, 0x53, 0xb4, 0xe9, 0xf7, + 0x5f, 0xae, 0xaf, 0x6b, 0x38, 0x92, 0xc8, 0x3b, 0x2a, 0xf0, + 0x35, 0x51, 0xf5, 0x87, 0xeb, 0xba, 0xc9, 0x4e, 0x82, 0x34, + 0x5a, 0x89, 0x69, 0x7d, 0x7e, 0x61, 0xfa, 0xdf, 0x79, 0xa5, + 0x92, 0x56, 0x49, 0x2b, 0x8c, 0x42, 0x47, 0x47, 0x81, 0x9f, + 0xe6, 0x48, 0x6d, 0x89, 0x47, 0xa3, 0x3a, 0xc6, 0x6a, 0x27, + 0xad, 0xf2, 0xb5, 0xc2, 0x4d, 0xad, 0x05, 0x0c, 0xfd, 0xaa, + 0x7a, 0x1a, 0x69, 0x9c, 0x3c, 0x0e, 0x7a, 0x96, 0xc3, 0xc9, + 0xb6, 0x4e, 0xe5, 0xce, 0xdd, 0x69, 0x47, 0xe1, 0xfe, 0x40, + 0x71, 0x47, 0x2d, 0x73, 0x96, 0x9e, 0x6e, 0xfd, 0xc9, 0x51, + 0xb9, 0xc6, 0x81, 0xf7, 0x5a, 0x10, 0xd1, 0x17, 0xb0, 0x8b, + 0x67, 0xb9, 0x35, 0xec, 0x82, 0xce, 0x26, 0xc0, 0x14, 0x62, + 0x37, 0x79, 0xad, 0x34, 0x6f, 0xc8, 0x68, 0x54, 0xb9, 0x4c, + 0x50, 0xc7, 0x6c, 0x7e, 0x9d, 0x60, 0x63, 0x86, 0x8d, 0x0b, + 0x05, 0xa5, 0xd6, 0xe6, 0xdc, 0x7e, 0x2b, 0x3a, 0xc8, 0x87, + 0xfc, 0x00, 0xbf, 0x5f, 0x8a, 0xeb, 0x81, 0x9d, 0xed, 0xc1, + 0x06, 0x7c, 0x57, 0x17, 0x06, 0xfd, 0xca, 0x38, 0x5e, 0x55, + 0xe8, 0x69, 0xa5, 0x28, 0x2d, 0x7e, 0xfb, 0x72, 0xed, 0xa3, + 0x87, 0xe5, 0x2a, 0xff, 0xf4, 0x49, 0xe9, 0xc7, 0x37, 0x6f, + 0x8c, 0x03, 0xd0, 0x95, 0x90, 0x1f, 0x4a, 0x27, 0xa5, 0xd9, + 0x41, 0x69, 0x41, 0xa0, 0xc2, 0x50, 0x94, 0x8c, 0x31, 0x4b, + 0x54, 0x45, 0x9e, 0xaf, 0x0b, 0x4c, 0x17, 0x6e, 0xe2, 0xd9, + 0xbc, 0xbb, 0xc2, 0x98, 0x35, 0x8b, 0x2d, 0x2c, 0x85, 0xb5, + 0x39, 0x6b, 0xcd, 0xdd, 0x83, 0xc2, 0x44, 0xc2, 0xda, 0x59, + 0x9c, 0x42, 0x6c, 0xa0, 0x87, 0x6c, 0x67, 0xa1, 0x4f, 0x29, + 0xd0, 0xdd, 0xdd, 0xdd, 0xae, 0xf1, 0x7f, 0x4d, 0xde, 0x5a, + 0xc9, 0xb7, 0xad, 0x8b, 0xe6, 0x83, 0x58, 0xa6, 0x55, 0xb6, + 0xc8, 0xb4, 0x6c, 0x7a, 0x44, 0xb6, 0xab, 0x2b, 0xf4, 0x83, + 0x58, 0x86, 0x25, 0xbd, 0xc8, 0x30, 0x36, 0x3c, 0x22, 0xbb, + 0xc5, 0x64, 0xe0, 0x41, 0xac, 0x62, 0xf6, 0x50, 0xe4, 0x95, + 0x5a, 0x1e, 0xc0, 0xac, 0x5e, 0x8c, 0x57, 0x55, 0x97, 0xfb, + 0xba, 0xf8, 0x4c, 0x92, 0x31, 0x43, 0x34, 0x4b, 0x0a, 0x5a, + 0x90, 0xaf, 0x1a, 0x25, 0x74, 0x56, 0x5a, 0x17, 0x28, 0x8a, + 0x97, 0x28, 0xce, 0x60, 0x3b, 0x51, 0x7b, 0xc3, 0x02, 0x50, + 0xd5, 0xf6, 0x49, 0xa6, 0x6a, 0x6e, 0x55, 0xd4, 0xe8, 0x43, + 0x47, 0x89, 0x42, 0x7a, 0x92, 0xbf, 0xae, 0xa6, 0x01, 0x28, + 0xcf, 0xad, 0x29, 0xcc, 0xda, 0x00, 0x52, 0xb6, 0x0f, 0xd4, + 0x21, 0xb2, 0xca, 0xae, 0xae, 0x2e, 0x5e, 0x3d, 0xc9, 0x92, + 0x8b, 0xd8, 0x11, 0x79, 0xc9, 0x6c, 0xf2, 0xe6, 0xe6, 0x8b, + 0x01, 0x31, 0xfa, 0xe4, 0x8b, 0x17, 0x52, 0xa9, 0x2e, 0xb9, + 0xba, 0x75, 0xf3, 0x25, 0xf7, 0xf6, 0x97, 0xe4, 0x7a, 0x60, + 0x67, 0x7b, 0xe5, 0x92, 0x5b, 0xb0, 0x37, 0x68, 0x43, 0xe6, + 0x89, 0xcf, 0x0c, 0xc2, 0xb2, 0xd5, 0x54, 0x47, 0x45, 0x6a, + 0x57, 0x59, 0xb1, 0xca, 0xd4, 0x9b, 0x8b, 0x5a, 0xfb, 0xcb, + 0x94, 0xa5, 0x8f, 0xc5, 0x18, 0x24, 0x06, 0x4b, 0x75, 0x5d, + 0xb4, 0x4e, 0x9d, 0x1f, 0x9e, 0x2a, 0x27, 0x44, 0x06, 0xae, + 0x88, 0x7e, 0x49, 0x77, 0x66, 0x47, 0xf3, 0x69, 0x27, 0x79, + 0x3e, 0x81, 0xff, 0x59, 0x99, 0xb5, 0x45, 0xa4, 0xf4, 0x53, + 0x39, 0x18, 0xc9, 0x4f, 0x06, 0xa4, 0x93, 0x57, 0xfa, 0xb0, + 0xef, 0x93, 0xf6, 0x54, 0xa4, 0xd7, 0xff, 0x7a, 0x1e, 0x3a, + 0x02, 0x4f, 0x5e, 0x99, 0x3d, 0xeb, 0x68, 0xc2, 0x14, 0x9b, + 0x00, 0x0e, 0xfb, 0xde, 0x49, 0xb2, 0x82, 0x34, 0x32, 0x76, + 0xf2, 0xe7, 0x97, 0xe9, 0x63, 0x9b, 0x37, 0xa8, 0xdc, 0x6f, + 0x6e, 0x31, 0xb0, 0x6d, 0x30, 0x2f, 0x54, 0x19, 0x36, 0x63, + 0x18, 0x8c, 0xb1, 0xa9, 0x21, 0x70, 0xd3, 0x70, 0x1a, 0x64, + 0x88, 0x92, 0x86, 0x7a, 0x7a, 0x65, 0x6d, 0x56, 0xe8, 0xba, + 0x0d, 0xb3, 0xc2, 0x2b, 0x54, 0x4e, 0x25, 0xd8, 0x67, 0xd7, + 0xf0, 0x52, 0xba, 0x52, 0xdd, 0x08, 0xd3, 0x59, 0x1a, 0xce, + 0xbd, 0xc9, 0x17, 0xe6, 0x98, 0x55, 0x5f, 0xb6, 0xeb, 0xb8, + 0x93, 0xca, 0xca, 0xd6, 0x43, 0xd6, 0x8c, 0x73, 0x1f, 0xaf, + 0xc2, 0xb2, 0x8b, 0xcb, 0xa6, 0x2e, 0xb9, 0xda, 0x07, 0x15, + 0x63, 0x95, 0x74, 0xd3, 0x68, 0x6f, 0x94, 0x62, 0xac, 0xf7, + 0x84, 0xe2, 0x45, 0xe6, 0x47, 0xe0, 0x39, 0x32, 0x6e, 0x33, + 0xdb, 0x7a, 0xca, 0x7c, 0xdf, 0x35, 0x0f, 0xc5, 0x4d, 0x6e, + 0x9e, 0xda, 0xef, 0x15, 0xaf, 0x3b, 0x00, 0x4f, 0x44, 0x0a, + 0x0e, 0xf4, 0x0e, 0xfd, 0x4d, 0x1d, 0x7e, 0x5f, 0x89, 0xfc, + 0xe4, 0x1b, 0x5e, 0xb3, 0xc4, 0xf4, 0x2f, 0x09, 0x94, 0x64, + 0x61, 0xb0, 0xf9, 0x01, 0xde, 0xda, 0x63, 0x70, 0x96, 0x3f, + 0xcc, 0x13, 0x87, 0x69, 0x38, 0x09, 0xf5, 0xd3, 0x07, 0x25, + 0x0b, 0x8e, 0xa0, 0xb7, 0xbe, 0xea, 0x61, 0x0d, 0x11, 0xaf, + 0x78, 0xca, 0x59, 0x94, 0x61, 0x5d, 0x13, 0x22, 0x10, 0x90, + 0xf2, 0x59, 0x18, 0x85, 0xac, 0xac, 0x0b, 0x0f, 0x01, 0x85, + 0xf8, 0x46, 0x5e, 0x2d, 0x6b, 0x5f, 0xf6, 0xf0, 0x80, 0x7d, + 0xec, 0xed, 0xd9, 0xe3, 0xbb, 0xbc, 0x96, 0xe7, 0x1b, 0x55, + 0xba, 0xdb, 0xc8, 0xdb, 0x8b, 0x8a, 0x94, 0x28, 0x1e, 0xee, + 0xec, 0x9a, 0xa5, 0x8b, 0xcc, 0xcd, 0xcd, 0x96, 0x47, 0x72, + 0x70, 0xc5, 0xec, 0x23, 0xf8, 0xb9, 0x66, 0xce, 0x7c, 0x5e, + 0xa1, 0xd8, 0x56, 0xf1, 0xed, 0x4d, 0x18, 0xdd, 0xb8, 0xd2, + 0xb5, 0x86, 0x4d, 0xf3, 0xb9, 0x98, 0x42, 0xdb, 0x06, 0xc1, + 0xf1, 0xc9, 0xb2, 0xd4, 0x4c, 0x6f, 0x79, 0x62, 0x6d, 0x36, + 0x6d, 0x9e, 0x55, 0x47, 0xbf, 0x04, 0xab, 0x03, 0x0b, 0xaf, + 0xcd, 0x53, 0x69, 0xe3, 0x60, 0xb9, 0x53, 0xf4, 0xc6, 0xa1, + 0xe9, 0x78, 0x91, 0xce, 0x8b, 0x5a, 0x2b, 0x3d, 0x78, 0xf8, + 0x20, 0x17, 0xbe, 0xc0, 0x73, 0xa8, 0x25, 0x7e, 0x0e, 0xdb, + 0x3c, 0xd9, 0x5e, 0xaf, 0xb3, 0xda, 0x47, 0x79, 0xda, 0xf8, + 0xa9, 0x41, 0x27, 0xed, 0x7e, 0xaf, 0x57, 0x72, 0x69, 0x85, + 0xbf, 0xe2, 0xd8, 0x59, 0xbb, 0x5a, 0x5b, 0x2e, 0x43, 0xdf, + 0xf7, 0x82, 0x29, 0xf3, 0x34, 0x43, 0x5e, 0xc0, 0xe6, 0xf8, + 0x45, 0x20, 0xea, 0x43, 0xde, 0xfa, 0xf8, 0x29, 0x2c, 0xea, + 0xfb, 0x44, 0x22, 0x80, 0x95, 0xdf, 0x24, 0x32, 0xff, 0xf7, + 0x94, 0xbe, 0x9c, 0x25, 0x10, 0xf4, 0x38, 0x02, 0x7d, 0x85, + 0x85, 0xfc, 0x84, 0x21, 0x68, 0x9d, 0x23, 0x3e, 0x7a, 0x6e, + 0x5c, 0x1d, 0x53, 0x6c, 0x60, 0xf0, 0x8b, 0xb1, 0xef, 0x25, + 0x33, 0x96, 0xab, 0xe7, 0x31, 0xb4, 0x33, 0x28, 0x19, 0x92, + 0x24, 0x52, 0xb1, 0x25, 0xdd, 0xac, 0x34, 0x73, 0xe1, 0x32, + 0xcd, 0x0e, 0x48, 0x28, 0x13, 0x7f, 0x7c, 0x7e, 0x20, 0x08, + 0x53, 0xa6, 0x3e, 0x54, 0x65, 0x87, 0x79, 0x29, 0x7e, 0x1c, + 0x9e, 0x17, 0xa8, 0x6f, 0x58, 0x89, 0xd4, 0x80, 0x4c, 0x9b, + 0xa1, 0x4b, 0x5f, 0x82, 0x23, 0xd7, 0x6b, 0xd4, 0x6d, 0x22, + 0x40, 0x6d, 0x4e, 0x41, 0xc1, 0xdb, 0x3b, 0x2c, 0x84, 0xc1, + 0xf1, 0xad, 0x97, 0x88, 0x32, 0x42, 0xdc, 0xb7, 0xe1, 0x47, + 0x9a, 0xe2, 0x63, 0x03, 0x1a, 0x39, 0xb6, 0x2b, 0x84, 0xa8, + 0xf3, 0xfc, 0x3d, 0xbb, 0xe5, 0x9a, 0x3d, 0x64, 0xd6, 0xd9, + 0xfd, 0x02, 0xcd, 0x67, 0xa2, 0xae, 0x57, 0x7b, 0xf1, 0x90, + 0x5d, 0xab, 0x11, 0xb8, 0xfc, 0x18, 0xc8, 0xef, 0x44, 0x2a, + 0x6b, 0xb8, 0xd0, 0xa5, 0xed, 0x4f, 0xd1, 0xd5, 0x1a, 0x72, + 0x35, 0xf3, 0x0c, 0xbf, 0x29, 0x48, 0x4b, 0xbf, 0x25, 0x75, + 0xe2, 0xa0, 0x06, 0x2f, 0x4b, 0x3a, 0xc6, 0x2f, 0xcc, 0x02, + 0x97, 0xf6, 0x9c, 0x05, 0x7d, 0x49, 0x0d, 0x99, 0x22, 0x9f, + 0x10, 0x46, 0xfc, 0x56, 0x97, 0xc0, 0x61, 0x69, 0x7e, 0x6c, + 0x8e, 0xcf, 0xda, 0x24, 0x61, 0xbc, 0xbd, 0x4e, 0x33, 0xfa, + 0x1e, 0x15, 0xd8, 0x0f, 0xd0, 0x93, 0x97, 0x39, 0x8d, 0xc3, + 0x33, 0x60, 0x83, 0x78, 0x43, 0x62, 0x01, 0x2c, 0x06, 0xd9, + 0xdc, 0x3c, 0x85, 0xbd, 0x02, 0x6e, 0x20, 0xf8, 0x4a, 0x40, + 0x8c, 0xb1, 0x68, 0x34, 0xef, 0x52, 0x1a, 0x85, 0x06, 0x6f, + 0xbe, 0x98, 0x4b, 0x06, 0xb7, 0x72, 0x93, 0xdb, 0x96, 0x1f, + 0xbf, 0x73, 0x9f, 0x80, 0x3a, 0xc0, 0x52, 0xbc, 0xfc, 0xcb, + 0x98, 0x4c, 0x09, 0xd0, 0x77, 0xe5, 0x5c, 0x7c, 0x89, 0x5e, + 0x37, 0x30, 0xb8, 0x7f, 0x16, 0x22, 0x02, 0xdf, 0xc0, 0x6f, + 0xde, 0x91, 0x9c, 0x3e, 0x49, 0x1c, 0xbc, 0x01, 0x2a, 0x67, + 0x48, 0x84, 0xa6, 0xb0, 0xa4, 0xbd, 0x52, 0xa7, 0xd2, 0xdf, + 0x99, 0x0b, 0x76, 0xa5, 0x3e, 0xba, 0x08, 0x19, 0x93, 0x5f, + 0xec, 0x95, 0x85, 0xba, 0x5b, 0x0f, 0xfc, 0x79, 0x2c, 0xe4, + 0x37, 0x50, 0x39, 0x68, 0xb0, 0xe8, 0xbb, 0x2a, 0x32, 0xe0, + 0x47, 0x01, 0xb8, 0xae, 0x37, 0x69, 0xbc, 0x26, 0x59, 0x2f, + 0x54, 0x98, 0x8b, 0xd0, 0xca, 0x35, 0xa8, 0xdf, 0x7c, 0x0d, + 0x02, 0x0e, 0xb2, 0x43, 0x8f, 0x6c, 0x1a, 0xf4, 0xa7, 0x0a, + 0x54, 0x31, 0xbf, 0xd2, 0xd1, 0x30, 0xcb, 0xcc, 0xe5, 0x27, + 0x17, 0xe8, 0x38, 0x01, 0x09, 0xb1, 0x6a, 0x50, 0xfd, 0xae, + 0x27, 0x7c, 0x07, 0xb6, 0x31, 0x16, 0x5c, 0xf9, 0x35, 0xbf, + 0xe2, 0xe7, 0x97, 0x66, 0xcc, 0xeb, 0xe7, 0x3b, 0xf6, 0xc4, + 0xfc, 0xff, 0x79, 0x7b, 0xb6, 0xe5, 0xb6, 0x71, 0x64, 0x9f, + 0xb3, 0x55, 0xe7, 0x1f, 0x58, 0xae, 0xda, 0xb3, 0x93, 0x1a, + 0x5b, 0x96, 0x65, 0x3b, 0x93, 0x64, 0x27, 0xaa, 0x92, 0x25, + 0xd9, 0x96, 0xad, 0xdb, 0x88, 0xb4, 0xb3, 0x99, 0x17, 0x15, + 0x24, 0xc1, 0x22, 0x22, 0x8a, 0x50, 0x78, 0x91, 0xa3, 0x9c, + 0x9f, 0x3f, 0xdd, 0x00, 0x48, 0x51, 0x24, 0x41, 0x51, 0x76, + 0xb2, 0x0f, 0x71, 0x6c, 0x02, 0xe8, 0x6e, 0x34, 0x1a, 0x7d, + 0xc1, 0xa5, 0xb1, 0x5d, 0xf2, 0x8d, 0xae, 0xed, 0x95, 0xd2, + 0x38, 0x23, 0x2a, 0xb6, 0x72, 0x63, 0x5f, 0x06, 0x86, 0xe4, + 0x06, 0x71, 0x0c, 0x75, 0x7a, 0xc6, 0x8b, 0x1a, 0xd4, 0xa3, + 0xa6, 0xc6, 0xee, 0x9d, 0xba, 0xc3, 0xf0, 0x0f, 0x1d, 0x80, + 0x21, 0xce, 0xcf, 0x95, 0x25, 0x00, 0x34, 0xf5, 0x0a, 0x1b, + 0xa1, 0x2b, 0x19, 0x3f, 0xac, 0x55, 0x3d, 0x85, 0x91, 0x1a, + 0xc6, 0x9f, 0x5f, 0x43, 0x91, 0x49, 0x57, 0xc4, 0x13, 0x57, + 0x24, 0x74, 0x04, 0xdd, 0xc2, 0x14, 0x76, 0xe2, 0x5b, 0x67, + 0xdb, 0xcb, 0x68, 0xa2, 0x99, 0x98, 0xee, 0xcf, 0x1e, 0x26, + 0x15, 0xc2, 0x99, 0xee, 0x01, 0x75, 0xe0, 0x04, 0xa8, 0xaa, + 0xb8, 0xd2, 0x20, 0xec, 0xbb, 0x8a, 0x46, 0x6d, 0x22, 0xb2, + 0x7c, 0xc1, 0xa4, 0x90, 0x8f, 0x97, 0x11, 0x03, 0xc2, 0xa5, + 0x00, 0xef, 0xfb, 0xec, 0xc2, 0x54, 0xa8, 0x5e, 0xd3, 0xad, + 0x86, 0xe3, 0xe0, 0x21, 0x28, 0x3f, 0xdb, 0xad, 0x3a, 0x14, + 0x09, 0x8d, 0xf4, 0x3a, 0x04, 0x43, 0x12, 0xd8, 0x0d, 0x7f, + 0xc4, 0x79, 0xce, 0x50, 0xd6, 0xb1, 0x10, 0x47, 0xce, 0x83, + 0xe2, 0x57, 0x61, 0x79, 0x58, 0x25, 0xf5, 0x51, 0x02, 0xc3, + 0xc3, 0x4a, 0x2a, 0x9d, 0xd7, 0x00, 0x6f, 0x31, 0x32, 0xcf, + 0x01, 0x8d, 0x9f, 0x75, 0x70, 0x73, 0xe2, 0x6e, 0x50, 0xb5, + 0xd7, 0xa0, 0x5e, 0x49, 0x9e, 0x48, 0xef, 0xac, 0x8e, 0x8a, + 0x3c, 0x5a, 0x69, 0xa9, 0x9a, 0xd1, 0x29, 0x5b, 0x82, 0xff, + 0x23, 0x32, 0xd5, 0x20, 0xcb, 0x84, 0xb5, 0x76, 0xc5, 0x11, + 0x04, 0x74, 0xeb, 0x2a, 0x6f, 0xd1, 0xbe, 0x3b, 0x6c, 0x41, + 0x8d, 0x39, 0x05, 0x2c, 0xae, 0xf1, 0xdb, 0xf1, 0xdb, 0xec, + 0x76, 0x4f, 0x27, 0xd9, 0x4a, 0xbb, 0xb7, 0x73, 0x23, 0x20, + 0x68, 0x77, 0x77, 0xfa, 0xe1, 0x92, 0x82, 0x20, 0xa2, 0x48, + 0x43, 0x77, 0xd2, 0x57, 0x67, 0x23, 0xc5, 0x15, 0x7f, 0x50, + 0x4a, 0xb1, 0xc0, 0x7a, 0x15, 0xa8, 0xcd, 0x6b, 0x79, 0x94, + 0x30, 0xad, 0x35, 0xf1, 0x33, 0x5a, 0x49, 0xc1, 0x1d, 0x30, + 0xb1, 0x07, 0xa9, 0xcf, 0xb3, 0x92, 0xfa, 0xf3, 0xf2, 0x65, + 0xea, 0x13, 0xe5, 0x6d, 0x10, 0x06, 0x2d, 0x13, 0xaf, 0x16, + 0xaf, 0xb3, 0x42, 0x89, 0xf8, 0xd5, 0xe0, 0x5a, 0x91, 0x3f, + 0x86, 0xda, 0xa1, 0x65, 0x9e, 0xbd, 0x57, 0x66, 0xdf, 0xf8, + 0x4d, 0xa4, 0x7e, 0x36, 0x2e, 0xd1, 0x0a, 0xc3, 0x30, 0x8a, + 0xa2, 0x17, 0x8b, 0xb0, 0x22, 0xc8, 0x2a, 0x41, 0x50, 0x27, + 0x65, 0x7d, 0x1f, 0x85, 0x1b, 0xec, 0xd1, 0x29, 0x85, 0x86, + 0x33, 0x63, 0xcd, 0x88, 0x0c, 0x55, 0x48, 0xae, 0x4d, 0xf7, + 0xe4, 0xeb, 0x7f, 0x33, 0xe5, 0xf3, 0x80, 0x27, 0x32, 0xe7, + 0xd4, 0x8f, 0xde, 0x5e, 0x8c, 0x5c, 0xce, 0x28, 0x71, 0x51, + 0xe5, 0x7f, 0xfe, 0xd1, 0x24, 0xa1, 0xf0, 0x01, 0x3e, 0x1a, + 0x02, 0x31, 0x40, 0x93, 0x22, 0x27, 0xde, 0x6d, 0x44, 0x62, + 0x41, 0xcb, 0xcd, 0xd0, 0x85, 0xc7, 0xbf, 0x55, 0x96, 0x23, + 0x70, 0x9d, 0x52, 0x37, 0x8e, 0xc5, 0xad, 0x77, 0xf1, 0xbc, + 0xa5, 0xf0, 0xf0, 0x25, 0xcd, 0xcc, 0xdf, 0x92, 0x8d, 0xcf, + 0x3d, 0x32, 0x77, 0xeb, 0xff, 0x0b, 0x5f, 0xa0, 0x02, 0xd6, + 0x3b, 0x1b, 0x8f, 0xe0, 0x0b, 0x8e, 0x52, 0x09, 0x8b, 0xc7, + 0x54, 0x55, 0x78, 0x02, 0x90, 0xf8, 0x72, 0x49, 0xdd, 0x99, + 0x02, 0x96, 0xa4, 0xf5, 0xa8, 0xae, 0x30, 0x0a, 0x9e, 0x94, + 0xf3, 0xae, 0xce, 0x77, 0x62, 0xf5, 0x8b, 0x94, 0x02, 0xc0, + 0x64, 0xa2, 0xb1, 0xff, 0x95, 0x3b, 0x94, 0x02, 0x61, 0xda, + 0xfb, 0xda, 0x2d, 0x3b, 0xad, 0x2f, 0x99, 0x5b, 0x42, 0x64, + 0xf6, 0x79, 0x80, 0x55, 0x41, 0xaa, 0xf2, 0x04, 0x93, 0x49, + 0x1b, 0x52, 0x44, 0x5f, 0x08, 0xa5, 0x95, 0x43, 0xeb, 0x50, + 0x0d, 0xb7, 0x86, 0xdc, 0x6d, 0xb1, 0x12, 0x41, 0x71, 0xf2, + 0x3c, 0x16, 0x92, 0x48, 0xd2, 0xd4, 0x44, 0xc1, 0x08, 0x2c, + 0x55, 0xe1, 0xd7, 0xea, 0x9f, 0xdb, 0x46, 0x46, 0xf7, 0xec, + 0xa6, 0x52, 0x48, 0x6b, 0x9e, 0xc3, 0xd6, 0xa9, 0xe3, 0x45, + 0x59, 0x95, 0xa8, 0x00, 0xd0, 0x65, 0x66, 0x67, 0x2d, 0x5e, + 0xc3, 0x8e, 0x73, 0x29, 0xc4, 0xcc, 0xda, 0x66, 0x57, 0xd8, + 0xa5, 0xea, 0x68, 0x4f, 0xef, 0x5f, 0xba, 0x9a, 0x5d, 0xcf, + 0xb9, 0x1f, 0x90, 0x4d, 0xa4, 0xf3, 0xf8, 0x93, 0x6f, 0x08, + 0x28, 0x2d, 0xfc, 0xdf, 0xdc, 0x40, 0x90, 0x97, 0x1c, 0x5a, + 0x34, 0xc0, 0x8d, 0xb4, 0x78, 0x0f, 0x61, 0x4a, 0xb6, 0x72, + 0x2a, 0xcb, 0xa4, 0x9e, 0x7b, 0xc1, 0xce, 0x41, 0xc1, 0x8e, + 0x01, 0x9b, 0x19, 0x9f, 0x8e, 0x96, 0x1c, 0x14, 0xdc, 0xf6, + 0x60, 0xf7, 0xf6, 0x02, 0x03, 0x7e, 0x8f, 0xf9, 0x9e, 0x3e, + 0x75, 0xb5, 0xcb, 0xfc, 0xb3, 0xbd, 0xf7, 0x81, 0xb6, 0x76, + 0xb2, 0x5c, 0x44, 0xf1, 0x87, 0x50, 0x4d, 0x59, 0x4c, 0xd7, + 0x08, 0xc6, 0xa4, 0xc1, 0x76, 0x37, 0xcd, 0xa1, 0x73, 0xd0, + 0x97, 0xf5, 0x3e, 0xfa, 0xdd, 0x3b, 0xf7, 0x18, 0x54, 0x41, + 0x54, 0x4d, 0xaf, 0x91, 0x84, 0xfa, 0xb9, 0xac, 0x16, 0xaa, + 0xca, 0x77, 0xb1, 0xd6, 0x59, 0xe3, 0x99, 0xcc, 0x25, 0x5f, + 0x0b, 0x5c, 0xd1, 0x24, 0x4a, 0x7d, 0x54, 0x23, 0xd7, 0x17, + 0x08, 0x70, 0x29, 0x09, 0x8a, 0xe8, 0x52, 0xac, 0xb2, 0x81, + 0x21, 0x11, 0x51, 0xfb, 0x74, 0x4b, 0x2a, 0x04, 0x8b, 0xbd, + 0xb8, 0x3c, 0xa5, 0x65, 0xa2, 0xa5, 0x4f, 0x51, 0xbd, 0x85, + 0x61, 0xc1, 0xf6, 0xd4, 0x4e, 0x51, 0x97, 0x50, 0x93, 0xd6, + 0x2e, 0x76, 0x54, 0x6b, 0x7c, 0x16, 0xb5, 0xb8, 0x6b, 0x76, + 0xb6, 0x63, 0xf6, 0x6e, 0xb7, 0x6e, 0x79, 0x18, 0x29, 0xca, + 0xa7, 0xbc, 0xce, 0xc4, 0xe5, 0x07, 0x3b, 0x12, 0x02, 0xdb, + 0xac, 0x9a, 0x56, 0x4d, 0x10, 0x90, 0x84, 0x60, 0x88, 0x37, + 0xc6, 0x0b, 0x01, 0x9e, 0x65, 0x01, 0xf6, 0xf8, 0x6b, 0x00, + 0xd6, 0xb2, 0x00, 0x2d, 0x88, 0x0d, 0x5f, 0x01, 0xf1, 0x3c, + 0x0b, 0xf1, 0x33, 0x9d, 0xb9, 0xaf, 0x82, 0x79, 0x91, 0x43, + 0xa5, 0x1d, 0x7a, 0xaf, 0x01, 0x79, 0x99, 0x05, 0x79, 0xed, + 0xb1, 0x57, 0x00, 0x7c, 0x97, 0x33, 0xd6, 0xb8, 0x2e, 0x95, + 0x05, 0xb9, 0xd5, 0x68, 0x19, 0xdb, 0x7b, 0xa0, 0x72, 0x79, + 0xbf, 0x47, 0xb7, 0xd4, 0xd2, 0xba, 0xa5, 0x69, 0x43, 0x18, + 0x3c, 0x05, 0xfb, 0x00, 0x36, 0x0f, 0x0f, 0x15, 0xa8, 0xcf, + 0x6f, 0xca, 0xa9, 0x96, 0x6a, 0xe5, 0x52, 0xcc, 0xc7, 0xcb, + 0x4a, 0x35, 0x31, 0x0d, 0x6b, 0x40, 0x14, 0x5d, 0x7d, 0xaa, + 0x9c, 0x15, 0x4e, 0x46, 0x87, 0x3f, 0x37, 0x77, 0xa6, 0xa2, + 0xfc, 0x10, 0x2d, 0x18, 0x92, 0xef, 0x15, 0x4c, 0x2d, 0x2a, + 0xf2, 0x75, 0x3e, 0x01, 0x85, 0xf8, 0x1e, 0x35, 0x86, 0xf7, + 0x4b, 0x4a, 0x70, 0x22, 0x62, 0xa6, 0x03, 0x23, 0xcd, 0xc6, + 0x5f, 0x48, 0xad, 0x0d, 0xec, 0xdd, 0x25, 0x57, 0x7d, 0x29, + 0x49, 0xaf, 0x7c, 0x64, 0xe4, 0x40, 0x7a, 0x05, 0xb5, 0xe0, + 0x34, 0x26, 0xa8, 0x3d, 0x97, 0xd4, 0x16, 0x13, 0x6b, 0x06, + 0xc4, 0x0b, 0x06, 0xee, 0x90, 0x3f, 0x6f, 0x77, 0xfb, 0x72, + 0x0a, 0xa2, 0x9d, 0x7c, 0xfc, 0xa8, 0x6c, 0xb0, 0xf1, 0x4f, + 0x03, 0x42, 0x80, 0x15, 0x96, 0x1b, 0x42, 0xe1, 0xc9, 0xc2, + 0x7f, 0xbe, 0x88, 0xf2, 0x77, 0x98, 0x2d, 0x3f, 0x41, 0xfb, + 0x65, 0x19, 0xda, 0x5d, 0x3e, 0x78, 0xea, 0x31, 0xb7, 0xc9, + 0xc3, 0x6d, 0x7a, 0xb5, 0x9c, 0x82, 0xac, 0x19, 0x52, 0x2b, + 0xcc, 0x53, 0x2c, 0xc7, 0x9b, 0x72, 0x34, 0x98, 0x42, 0xa4, + 0x31, 0x0b, 0x3d, 0x8c, 0xa4, 0x52, 0x26, 0x89, 0xb9, 0x15, + 0x55, 0xf1, 0x25, 0xfd, 0xaa, 0x1d, 0xda, 0x27, 0xa8, 0x0e, + 0x66, 0x66, 0x44, 0xb7, 0x4b, 0x44, 0x99, 0xcf, 0x49, 0x31, + 0x72, 0xe3, 0x4e, 0x4d, 0xb9, 0xeb, 0xd3, 0x69, 0x88, 0x11, + 0x67, 0xb2, 0x0b, 0xe2, 0x99, 0x8e, 0x40, 0xb8, 0xee, 0x62, + 0x77, 0x22, 0xdb, 0x77, 0x98, 0xd1, 0x33, 0xec, 0xa8, 0x90, + 0x4a, 0x6c, 0x58, 0xd9, 0x69, 0x93, 0xe8, 0x75, 0xbe, 0xd6, + 0x39, 0x7d, 0xa1, 0x73, 0x73, 0x79, 0xa8, 0xfe, 0x01, 0x6f, + 0x9b, 0x2e, 0x27, 0xce, 0xe6, 0x34, 0xcf, 0xbf, 0x49, 0x69, + 0xa1, 0xc4, 0x82, 0x90, 0x94, 0xd6, 0x86, 0xbf, 0x14, 0xcd, + 0xe2, 0xc3, 0x5a, 0xf1, 0xf2, 0x4a, 0xee, 0xb0, 0xbe, 0x24, + 0xb8, 0x88, 0x10, 0x49, 0x2a, 0x63, 0x2f, 0x76, 0xfb, 0x21, + 0x71, 0x1c, 0x46, 0x4d, 0x21, 0x70, 0x83, 0x88, 0x2a, 0x8e, + 0x23, 0xac, 0xa3, 0x57, 0x20, 0x17, 0x53, 0x50, 0xb9, 0x29, + 0x0a, 0xfd, 0xae, 0xd3, 0x22, 0xe7, 0x28, 0x04, 0xf4, 0x21, + 0x71, 0x76, 0xc4, 0x04, 0x24, 0x28, 0xe5, 0x5a, 0xbf, 0x89, + 0x18, 0xa3, 0x1d, 0xf7, 0xc8, 0xcd, 0xde, 0x7a, 0xda, 0x7a, + 0x37, 0xbb, 0x96, 0xf0, 0xa9, 0xad, 0xcc, 0xbe, 0x4b, 0xe2, + 0xd6, 0x24, 0x36, 0xde, 0x15, 0x14, 0xf1, 0xd6, 0x5d, 0xe2, + 0x4a, 0xa6, 0x7c, 0xbd, 0x6a, 0xbb, 0x9f, 0x95, 0xf4, 0xc6, + 0x2d, 0x79, 0x0d, 0xf3, 0x67, 0xde, 0xb5, 0xd4, 0x64, 0xe4, + 0xd0, 0x1d, 0x47, 0x7c, 0xb3, 0x8f, 0x2c, 0x6d, 0x94, 0xa0, + 0x49, 0x76, 0x72, 0x90, 0x18, 0x88, 0xfb, 0xb7, 0x02, 0x97, + 0x0c, 0x9e, 0xf2, 0x22, 0x29, 0xfc, 0x03, 0x34, 0x36, 0x7d, + 0x66, 0x31, 0xff, 0xfd, 0xfc, 0xb4, 0x24, 0xba, 0x83, 0xa6, + 0xea, 0x4a, 0x56, 0xf3, 0x3a, 0xbb, 0xe2, 0xd9, 0xa4, 0x8e, + 0xcf, 0xf0, 0xaa, 0xb7, 0x66, 0xad, 0xf3, 0x9a, 0xd8, 0x60, + 0xf7, 0x60, 0x64, 0x83, 0x43, 0x4f, 0xb3, 0xc7, 0xbf, 0x6e, + 0x47, 0x43, 0x71, 0x79, 0x4b, 0xad, 0xb7, 0xc5, 0x87, 0x07, + 0xb6, 0x94, 0x76, 0x8b, 0x3a, 0x99, 0x3c, 0xd4, 0x1f, 0x9f, + 0x54, 0x95, 0x27, 0xec, 0x14, 0x17, 0xea, 0x3b, 0x9d, 0xd7, + 0x60, 0x3d, 0x20, 0x80, 0x3f, 0x4f, 0x48, 0xfd, 0x23, 0x77, + 0x02, 0x32, 0x2f, 0x25, 0xf1, 0xb5, 0x9a, 0x78, 0xe1, 0xa6, + 0xa4, 0xcc, 0x3f, 0xfe, 0x62, 0x99, 0x8f, 0xb8, 0xfc, 0xe6, + 0x35, 0x6c, 0x5e, 0xff, 0x4a, 0x36, 0x47, 0x31, 0x3c, 0x05, + 0x5d, 0xea, 0xce, 0xe9, 0x36, 0x8e, 0x4f, 0xf3, 0xf5, 0x1d, + 0x5d, 0x26, 0x63, 0xfb, 0xa8, 0x7e, 0xee, 0xa5, 0xed, 0x92, + 0xb1, 0x7d, 0x72, 0x61, 0xab, 0xd0, 0x00, 0x9e, 0x15, 0x1a, + 0xc0, 0x98, 0x96, 0x4c, 0x68, 0xbf, 0xb5, 0x7f, 0x62, 0x39, + 0x39, 0x15, 0xd1, 0x97, 0x08, 0x31, 0x7a, 0xfe, 0x7c, 0x38, + 0xc0, 0xf9, 0x9a, 0xbf, 0x1e, 0x7d, 0x24, 0xd2, 0x9e, 0x8b, + 0xac, 0xa5, 0x25, 0x55, 0xcd, 0x99, 0xca, 0x2d, 0xe8, 0xcf, + 0x9b, 0xe2, 0xdc, 0xc9, 0x4e, 0x56, 0xf4, 0x14, 0xc7, 0x45, + 0x1f, 0x95, 0x16, 0xaa, 0x54, 0x2a, 0x89, 0xed, 0x44, 0x5c, + 0x07, 0x5e, 0x8b, 0xdb, 0x83, 0x2a, 0xad, 0x2b, 0xea, 0xa0, + 0x83, 0xe3, 0x27, 0xe8, 0x9c, 0xc8, 0x57, 0x5b, 0xd4, 0x3f, + 0x51, 0xe1, 0x65, 0x9d, 0xa3, 0x89, 0x1c, 0xd5, 0x25, 0x7b, + 0x26, 0xb1, 0x15, 0xf4, 0x2a, 0xbb, 0x66, 0x7a, 0x98, 0xdc, + 0xc8, 0x7d, 0xe6, 0x32, 0x9e, 0x53, 0x2c, 0x3a, 0x26, 0x95, + 0x9b, 0xa0, 0x3e, 0x78, 0x74, 0x69, 0x97, 0xa9, 0x1c, 0x93, + 0x91, 0x19, 0x23, 0x01, 0x40, 0x20, 0xbc, 0xde, 0xc9, 0x44, + 0x11, 0xb3, 0x3a, 0xb1, 0xaf, 0x41, 0xb6, 0xa7, 0x5f, 0xf8, + 0x14, 0xa2, 0x1d, 0x3a, 0xab, 0x80, 0x8f, 0xb9, 0x99, 0xc8, + 0xcd, 0x0b, 0xb1, 0xdc, 0x86, 0xcb, 0xfd, 0xf8, 0xd8, 0xd8, + 0x0a, 0x1d, 0x50, 0xb9, 0xcc, 0xfc, 0x24, 0x93, 0x56, 0xbc, + 0x44, 0x0c, 0x52, 0x14, 0x5e, 0xe1, 0xeb, 0x15, 0xc5, 0x24, + 0xaa, 0x83, 0x47, 0x6b, 0xb1, 0xef, 0x30, 0x91, 0xf5, 0x8d, + 0xdf, 0xb6, 0x2e, 0x75, 0xe4, 0x1d, 0x2b, 0x67, 0xd9, 0x81, + 0x29, 0x8a, 0xfb, 0x1e, 0xae, 0xa2, 0x5e, 0xa6, 0x3e, 0x7c, + 0x1b, 0x91, 0x1e, 0x01, 0xf8, 0x09, 0xb4, 0x47, 0xeb, 0xa0, + 0x69, 0x41, 0x96, 0x02, 0xae, 0x68, 0xc6, 0x8d, 0x92, 0x98, + 0xc2, 0xd7, 0x21, 0x1d, 0x51, 0xdc, 0xef, 0xce, 0xa0, 0x13, + 0x9f, 0x7f, 0x16, 0x0e, 0x3c, 0x98, 0x9c, 0xb3, 0x00, 0x85, + 0xc7, 0x95, 0xe5, 0xa0, 0x1f, 0xbf, 0x78, 0x43, 0xe7, 0xbc, + 0x60, 0x43, 0x47, 0x2d, 0x02, 0x7e, 0xf8, 0xf0, 0x21, 0x77, + 0xb7, 0xa4, 0xf7, 0x2d, 0x08, 0x34, 0x3b, 0x25, 0xb2, 0x28, + 0xb1, 0x73, 0x28, 0x0e, 0x72, 0xe1, 0x06, 0xa1, 0x78, 0x12, + 0x0c, 0x7b, 0x9a, 0x39, 0x47, 0x08, 0x05, 0x22, 0x19, 0x72, + 0x64, 0x89, 0x8e, 0xca, 0x6e, 0x0b, 0x15, 0x30, 0x4e, 0xee, + 0x30, 0xed, 0x9f, 0x70, 0x6a, 0x5b, 0x2c, 0x3a, 0x43, 0x27, + 0x73, 0x4e, 0xc6, 0x9b, 0x71, 0x82, 0xd2, 0x40, 0xf6, 0x22, + 0xde, 0x42, 0xfb, 0x29, 0xb3, 0x0d, 0x37, 0x4b, 0x35, 0xd4, + 0xc9, 0x8d, 0xd4, 0x5c, 0x2c, 0x39, 0x1b, 0x47, 0x45, 0xc9, + 0x68, 0xf6, 0x99, 0xfe, 0x27, 0x40, 0xa1, 0xb5, 0xfa, 0xd5, + 0xc8, 0xea, 0xa3, 0xd1, 0xbf, 0x86, 0x9a, 0xb9, 0x1b, 0x29, + 0x08, 0xc2, 0xd7, 0x5c, 0x09, 0xd0, 0x6f, 0x72, 0xc8, 0x3e, + 0x0d, 0x1d, 0x7c, 0x92, 0x25, 0xca, 0xb2, 0x8c, 0xf7, 0xa2, + 0x10, 0xda, 0x47, 0x5d, 0xa3, 0x84, 0x2b, 0x8d, 0xf5, 0x4c, + 0x19, 0x92, 0x8a, 0x24, 0x6d, 0x9f, 0x8e, 0x2e, 0x15, 0xb2, + 0xf8, 0xf6, 0x66, 0xd2, 0x2d, 0x4e, 0xee, 0x77, 0x24, 0xd8, + 0xb9, 0xc3, 0x3c, 0x4f, 0x9f, 0x4c, 0xfc, 0xa0, 0x58, 0x02, + 0x49, 0x93, 0x49, 0xbf, 0xb7, 0x3b, 0x62, 0x32, 0x07, 0x38, + 0x96, 0x24, 0x36, 0x66, 0xc4, 0x37, 0x49, 0x25, 0x8c, 0xb3, + 0x28, 0x8c, 0xa2, 0x89, 0x97, 0xa0, 0x15, 0xc7, 0x1c, 0xae, + 0xcd, 0x18, 0xa9, 0x3c, 0xc6, 0x61, 0xe0, 0x17, 0x85, 0x72, + 0xfb, 0x25, 0x75, 0x4e, 0xed, 0x95, 0x3b, 0x41, 0x45, 0x72, + 0x63, 0x8a, 0x83, 0x87, 0x79, 0x82, 0x83, 0xd1, 0x50, 0x39, + 0xb1, 0x51, 0x23, 0x91, 0xb9, 0xd7, 0x71, 0xd0, 0x55, 0x9b, + 0x8d, 0x3f, 0xa2, 0x13, 0x71, 0xbe, 0x47, 0xf1, 0x47, 0xfe, + 0xa9, 0x4e, 0x46, 0xc6, 0x3c, 0x4a, 0x7d, 0x3d, 0xcd, 0xc3, + 0xab, 0x3d, 0xe4, 0x98, 0xa9, 0xf9, 0x13, 0xe8, 0x26, 0x6b, + 0x1a, 0xb1, 0x29, 0x8a, 0x4a, 0xc9, 0x9a, 0x1a, 0x51, 0x72, + 0xe1, 0x28, 0x38, 0xc5, 0x6f, 0x78, 0xe4, 0x18, 0x34, 0x43, + 0xc0, 0xdc, 0xb9, 0x2f, 0x0f, 0x01, 0x6b, 0x48, 0xcf, 0xdc, + 0x60, 0xd9, 0x5e, 0x05, 0xfd, 0xf5, 0x3d, 0x92, 0x4b, 0xb7, + 0x1b, 0xb0, 0x92, 0xf0, 0x1f, 0x4d, 0x0c, 0x87, 0xf8, 0x5b, + 0xad, 0xec, 0x6e, 0x9f, 0x1b, 0x8f, 0x3a, 0x94, 0x18, 0x21, + 0xe1, 0xf2, 0xc9, 0xe7, 0x0a, 0x19, 0x40, 0x0e, 0xc5, 0x49, + 0x0e, 0x95, 0xe5, 0xf9, 0xb5, 0x0c, 0xf8, 0x69, 0x02, 0xe7, + 0x21, 0x99, 0xa9, 0x91, 0x4b, 0x92, 0x9e, 0xdf, 0x1f, 0xfa, + 0x5d, 0xdf, 0x9f, 0x32, 0xc2, 0xf8, 0x66, 0xff, 0xb6, 0xb9, + 0x36, 0xc5, 0x4e, 0x3a, 0x39, 0xf4, 0xde, 0xd4, 0x7d, 0x05, + 0x19, 0x74, 0xce, 0x77, 0x92, 0x7c, 0xa5, 0xd3, 0xf4, 0xe5, + 0xc6, 0x8b, 0x8a, 0x82, 0x83, 0xe3, 0x71, 0x7d, 0xda, 0xa4, + 0xf2, 0xaf, 0x45, 0x1c, 0x3c, 0x25, 0x1f, 0x9b, 0x81, 0xe7, + 0xe4, 0xcd, 0x4b, 0xe9, 0x64, 0x46, 0x2f, 0x9f, 0x66, 0x84, + 0x57, 0xd4, 0x89, 0xbe, 0x8a, 0xf3, 0x54, 0x6a, 0x49, 0x53, + 0xb5, 0xc8, 0x3b, 0xbb, 0x9f, 0xf3, 0xaa, 0xc5, 0x6e, 0x2a, + 0xbf, 0x5d, 0x37, 0x24, 0x61, 0x25, 0x13, 0x54, 0x62, 0x8b, + 0x78, 0x8c, 0xa3, 0xad, 0x58, 0x84, 0xb2, 0x8b, 0x5f, 0xad, + 0x71, 0x9e, 0x82, 0x53, 0x86, 0xa5, 0x40, 0x25, 0xfe, 0xda, + 0xe4, 0xdc, 0x11, 0xbf, 0x3e, 0x3d, 0x7d, 0x82, 0xa8, 0x6e, + 0xb1, 0x3d, 0x1c, 0x75, 0x94, 0xb9, 0x48, 0x27, 0xda, 0xeb, + 0xae, 0xd9, 0x0d, 0xdc, 0x53, 0x05, 0xb6, 0xa0, 0x86, 0xc2, + 0xa6, 0xad, 0xf1, 0xf4, 0x74, 0xba, 0x43, 0xc4, 0x9e, 0x15, + 0xb1, 0x12, 0xec, 0x14, 0xe0, 0x86, 0x31, 0x38, 0xfd, 0x5a, + 0x76, 0xc1, 0x31, 0xa4, 0x1d, 0x57, 0xfa, 0x52, 0x5e, 0x1c, + 0xcf, 0x1e, 0x4d, 0x4a, 0x8d, 0x0a, 0x22, 0xce, 0x1c, 0x2d, + 0xda, 0xe9, 0x1c, 0x6e, 0x3e, 0x24, 0x47, 0x1b, 0x63, 0x2e, + 0x18, 0x86, 0x3d, 0x77, 0x3c, 0x0e, 0x4f, 0x71, 0xf7, 0x90, + 0xc9, 0xc3, 0xae, 0xcd, 0x70, 0xe7, 0xe9, 0x52, 0xdc, 0xd5, + 0x2e, 0xb7, 0xd9, 0x3b, 0x70, 0xda, 0x47, 0x49, 0xd6, 0x73, + 0x6d, 0x7f, 0x16, 0xe1, 0x2f, 0xb3, 0xfd, 0xd2, 0xa7, 0x3f, + 0x91, 0x69, 0x9b, 0xd5, 0x64, 0x55, 0xaf, 0xd4, 0xca, 0x6f, + 0x8a, 0xf1, 0x3b, 0xdf, 0x0e, 0xb3, 0xfc, 0x3f, 0x97, 0x52, + 0x95, 0x25, 0x77, 0x97, 0x54, 0xf5, 0xf1, 0x15, 0xb4, 0x96, + 0x4f, 0xb8, 0xd6, 0x48, 0x67, 0xc1, 0x3f, 0x38, 0xdd, 0xe1, + 0x45, 0x4a, 0x16, 0xe4, 0x8b, 0xbf, 0xe2, 0x40, 0xa2, 0xcc, + 0x0d, 0x3f, 0x2d, 0xcc, 0x17, 0x2c, 0x72, 0xed, 0x17, 0x24, + 0x87, 0xff, 0x73, 0x25, 0x4f, 0xb2, 0x58, 0xb7, 0x1d, 0xd3, + 0x30, 0x07, 0xd7, 0xd6, 0xe7, 0xc6, 0xa8, 0x6d, 0xc0, 0xef, + 0xc3, 0xd1, 0xe0, 0xb1, 0xd3, 0x6a, 0xb7, 0x8c, 0xa3, 0x86, + 0x09, 0x7f, 0x1f, 0x19, 0x8d, 0x7e, 0x0b, 0xfe, 0x7d, 0x31, + 0xda, 0xff, 0x19, 0x8e, 0xda, 0xa6, 0x09, 0x25, 0x83, 0x11, + 0xb6, 0xec, 0xf4, 0x86, 0xdd, 0x0e, 0xfc, 0x05, 0x0d, 0x47, + 0x8d, 0xbe, 0xd5, 0x69, 0x9b, 0xc7, 0x46, 0xa7, 0xdf, 0xec, + 0x3e, 0xb4, 0x3a, 0xfd, 0x9b, 0x63, 0xe3, 0xea, 0xc1, 0x32, + 0xfa, 0x03, 0xcb, 0xe8, 0x76, 0x7a, 0x1d, 0x0b, 0xaa, 0x59, + 0x83, 0x63, 0xf1, 0x60, 0x64, 0xb6, 0x19, 0x02, 0x1b, 0x5c, + 0x1b, 0xbd, 0xf6, 0xa8, 0x79, 0x0b, 0x5f, 0x1a, 0x57, 0x9d, + 0x6e, 0xc7, 0xfa, 0x22, 0xf0, 0x5e, 0x77, 0xac, 0x3e, 0xe0, + 0x34, 0xae, 0x07, 0x23, 0xa3, 0x61, 0x0c, 0x1b, 0x23, 0xab, + 0xd3, 0x7c, 0xe8, 0x36, 0x46, 0xc6, 0xf0, 0x61, 0x34, 0x1c, + 0x98, 0x6d, 0x03, 0x89, 0x6e, 0x75, 0xcc, 0x66, 0xb7, 0xd1, + 0xe9, 0xb5, 0x5b, 0x15, 0x41, 0x57, 0x1f, 0xf0, 0x1a, 0xed, + 0xc7, 0x76, 0xdf, 0x32, 0xcc, 0xdb, 0x46, 0xb7, 0x2b, 0xd0, + 0xb6, 0xe0, 0x43, 0x77, 0x30, 0x6c, 0x8f, 0x0c, 0x04, 0x05, + 0xdd, 0x69, 0x0e, 0xfa, 0xd6, 0xa8, 0x03, 0x54, 0x0e, 0x46, + 0xa6, 0x71, 0xd5, 0x06, 0x3a, 0x1b, 0x57, 0xdd, 0xb6, 0xc4, + 0x04, 0xc5, 0xad, 0xce, 0xa8, 0xdd, 0xb4, 0x8e, 0x25, 0x40, + 0xf5, 0x07, 0x76, 0x0f, 0x58, 0x03, 0x24, 0x76, 0x8f, 0x0d, + 0x73, 0xd8, 0x6e, 0x76, 0xf0, 0x97, 0xf6, 0x7f, 0xda, 0xd0, + 0xa5, 0xc6, 0xe8, 0xcb, 0x31, 0x82, 0x06, 0xb0, 0x66, 0xfb, + 0xaf, 0x07, 0xa8, 0x04, 0x85, 0x46, 0xab, 0xd1, 0x6b, 0xdc, + 0xc8, 0x1e, 0xfe, 0xb6, 0x87, 0x37, 0xc0, 0xf7, 0xe6, 0xc3, + 0xa8, 0xdd, 0x43, 0xb2, 0x81, 0x1b, 0xe6, 0xc3, 0x95, 0x69, + 0x75, 0xac, 0x07, 0xab, 0x6d, 0xdc, 0x0c, 0x06, 0x2d, 0x53, + 0x31, 0xdd, 0x6c, 0x8f, 0x1e, 0x3b, 0xcd, 0xb6, 0xf9, 0x6f, + 0xa3, 0x3b, 0x00, 0xbe, 0x40, 0xc5, 0x07, 0xb3, 0x7d, 0x0c, + 0x78, 0xac, 0x86, 0x40, 0x0f, 0x50, 0x80, 0x67, 0x50, 0x0c, + 0xbf, 0x5f, 0x3d, 0x98, 0x1d, 0xc1, 0xbd, 0x4e, 0xdf, 0x6a, + 0x8f, 0x46, 0x0f, 0x43, 0xab, 0x33, 0xe8, 0xbf, 0x45, 0x28, + 0xb7, 0x83, 0xcf, 0xc0, 0x0e, 0x20, 0xb6, 0xf1, 0x80, 0xe3, + 0x89, 0x9c, 0x1e, 0xf4, 0x45, 0xb7, 0x81, 0x55, 0x83, 0xd1, + 0x17, 0x84, 0x8b, 0xfc, 0x10, 0x03, 0x71, 0x6c, 0x7c, 0xbe, + 0x6d, 0xc3, 0xf7, 0x11, 0xc0, 0x91, 0x5c, 0x6b, 0x28, 0xc6, + 0x98, 0xc0, 0xc0, 0xa6, 0x95, 0xac, 0x09, 0x58, 0x81, 0x9f, + 0x96, 0xb1, 0xed, 0xac, 0xd1, 0x6f, 0xdf, 0x74, 0x3b, 0x37, + 0xed, 0x7e, 0xb3, 0x8d, 0xa5, 0x03, 0x04, 0xf4, 0xb9, 0x63, + 0xb6, 0xdf, 0xc2, 0xd0, 0x75, 0x80, 0xbe, 0x1b, 0x35, 0x64, + 0x88, 0xfc, 0x73, 0x03, 0x30, 0x3f, 0x88, 0xee, 0xe3, 0x90, + 0x01, 0x6d, 0xf2, 0xd7, 0x84, 0x84, 0x1e, 0x8b, 0x81, 0x35, + 0x3a, 0xd7, 0x46, 0xa3, 0xf5, 0xd8, 0x11, 0xc2, 0x78, 0x2d, + 0xc5, 0xb8, 0x6d, 0x80, 0x40, 0x98, 0x1d, 0x25, 0x3c, 0x82, + 0x83, 0xcd, 0x5b, 0x35, 0x00, 0x15, 0x75, 0xc1, 0x7c, 0x15, + 0x8b, 0xbe, 0x30, 0x6a, 0xf2, 0x72, 0xa6, 0xc7, 0xe7, 0x30, + 0xff, 0xd0, 0x2c, 0x3c, 0x79, 0x14, 0x7c, 0x0b, 0xfe, 0x14, + 0x3c, 0x13, 0x8f, 0x7e, 0x14, 0x4f, 0x0f, 0xe1, 0x96, 0x95, + 0x47, 0x67, 0x0c, 0xaf, 0x79, 0x80, 0xb2, 0x11, 0xf7, 0x0c, + 0x89, 0x3b, 0x3b, 0x05, 0xbf, 0x63, 0xc9, 0x67, 0xec, 0x69, + 0x83, 0x70, 0xe0, 0x5b, 0xe8, 0xce, 0xa8, 0xbc, 0x14, 0x16, + 0x50, 0x6f, 0x89, 0x16, 0x46, 0xfc, 0x71, 0xd3, 0x7f, 0x30, + 0x6e, 0x28, 0x78, 0x7a, 0xc4, 0x91, 0xf7, 0xef, 0xa6, 0x46, + 0x97, 0x4d, 0xa9, 0x0b, 0x31, 0x3b, 0x5e, 0x64, 0x91, 0xc7, + 0x92, 0x21, 0x76, 0x9d, 0x08, 0x38, 0xd8, 0xe2, 0x1a, 0x69, + 0x30, 0x15, 0x0d, 0xc6, 0x35, 0xbe, 0x7d, 0x2b, 0x36, 0x4a, + 0x8f, 0x0d, 0xca, 0xf0, 0xc8, 0xb6, 0xb1, 0x96, 0x29, 0xbb, + 0x8d, 0xf3, 0x08, 0x87, 0x02, 0x58, 0x49, 0x77, 0x51, 0x8c, + 0x10, 0xa5, 0xfb, 0xe8, 0x78, 0x12, 0x5d, 0xf1, 0xa8, 0xca, + 0xdc, 0xeb, 0x57, 0x64, 0x34, 0xfb, 0x05, 0x1f, 0x6f, 0xb2, + 0x79, 0xe8, 0xcc, 0x0c, 0x1b, 0x5d, 0xae, 0xf8, 0x90, 0x35, + 0x01, 0xc5, 0xb3, 0xda, 0xec, 0xef, 0xa0, 0x78, 0x78, 0xdb, + 0xe1, 0xe0, 0x88, 0x6f, 0x4f, 0x52, 0x2b, 0x5e, 0x57, 0x0c, + 0x3c, 0x07, 0xee, 0xf2, 0xe0, 0x18, 0x3c, 0x39, 0x6a, 0xd8, + 0x41, 0xb0, 0xfa, 0x78, 0x7a, 0xfa, 0xfc, 0xfc, 0x5c, 0x99, + 0xbb, 0x61, 0x85, 0x7b, 0xf3, 0x53, 0x47, 0xc2, 0xf0, 0x4f, + 0xd3, 0xbd, 0xc2, 0xff, 0x9a, 0x80, 0x5f, 0x3c, 0xb8, 0x6d, + 0xfc, 0xd6, 0x7c, 0x6b, 0xd4, 0xaa, 0xb5, 0xb3, 0x13, 0xf8, + 0x71, 0x61, 0x74, 0x41, 0xbf, 0xb2, 0xf7, 0x17, 0x86, 0x00, + 0xe8, 0x03, 0xc4, 0x39, 0x20, 0x0e, 0x27, 0x95, 0x29, 0x5f, + 0x9e, 0xaa, 0xb2, 0xd3, 0xc7, 0x19, 0xa8, 0xce, 0xf1, 0x36, + 0xd5, 0x7a, 0x04, 0xfe, 0xcd, 0x0e, 0x7c, 0x57, 0x8e, 0x36, + 0x70, 0xe6, 0xa3, 0x61, 0x86, 0xde, 0xd3, 0x0d, 0xf1, 0xe6, + 0xc4, 0xe5, 0x3b, 0xb4, 0x94, 0x36, 0x05, 0xab, 0x67, 0xc0, + 0x39, 0x23, 0xdb, 0xc8, 0x60, 0x29, 0xfe, 0x52, 0xcf, 0x97, + 0x24, 0x2c, 0x81, 0xf8, 0x7e, 0x32, 0xdd, 0x31, 0x14, 0xe2, + 0xd9, 0x5d, 0xb9, 0xba, 0xe5, 0xc8, 0xa7, 0x22, 0xe2, 0x97, + 0x25, 0x70, 0x31, 0xe2, 0x48, 0x1c, 0x9f, 0xe7, 0x2e, 0x3e, + 0x02, 0xb4, 0xa4, 0x81, 0xcd, 0x67, 0x22, 0xc5, 0x8e, 0x6a, + 0xec, 0xaf, 0x40, 0x7a, 0xa3, 0x98, 0x03, 0x0f, 0xf7, 0x1c, + 0xd5, 0xff, 0x17, 0x97, 0xe2, 0xfc, 0x7f, 0x83, 0x87, 0x07, + 0x65, 0x11, 0x53, 0xd5, 0x2a, 0xd2, 0x36, 0xb1, 0x22, 0x5e, + 0x5d, 0xda, 0x5e, 0x4c, 0x5f, 0x25, 0x6c, 0x4b, 0xea, 0xe1, + 0xd6, 0xec, 0xb5, 0x7f, 0x90, 0x0e, 0x07, 0x61, 0x7f, 0xfa, + 0xd7, 0xf9, 0xbf, 0x5e, 0x9e, 0xd8, 0x48, 0x6d, 0x86, 0xc8, + 0xd7, 0xa6, 0x10, 0x53, 0x47, 0xfa, 0x88, 0x92, 0x13, 0x99, + 0xcf, 0x91, 0xdf, 0x27, 0xfb, 0x21, 0xf6, 0x12, 0x65, 0x47, + 0xb0, 0xfe, 0xd1, 0x4f, 0xc9, 0x85, 0xb9, 0xaf, 0x5f, 0xe5, + 0x6f, 0xe7, 0xef, 0xf4, 0x6d, 0xf8, 0x3c, 0xcb, 0xe9, 0xda, + 0xf6, 0x6b, 0x5e, 0xcf, 0x62, 0x54, 0x45, 0x1d, 0x2b, 0x78, + 0xd7, 0xef, 0xe0, 0x37, 0x4c, 0xe4, 0x8b, 0x61, 0xf8, 0xe4, + 0x9d, 0x72, 0xa8, 0xf8, 0x62, 0x17, 0xf7, 0x4f, 0x80, 0x1e, + 0x3d, 0x55, 0xb6, 0xfb, 0x20, 0xd9, 0x21, 0xf9, 0x14, 0x96, + 0x54, 0xec, 0x9f, 0x2c, 0x75, 0x09, 0xab, 0xf4, 0xcb, 0xca, + 0xf2, 0xa1, 0x16, 0x4f, 0x41, 0xe8, 0xc5, 0x3b, 0x79, 0xd9, + 0xef, 0xf1, 0x8a, 0x83, 0x42, 0x86, 0x2a, 0x50, 0xd4, 0x92, + 0xfa, 0x10, 0xf7, 0x95, 0xe8, 0x1a, 0x74, 0xd7, 0xde, 0xa1, + 0xd9, 0x55, 0x1f, 0x28, 0x1c, 0x4a, 0x1f, 0xa4, 0x55, 0x89, + 0x7c, 0x6c, 0x48, 0x3e, 0x6c, 0x14, 0xa5, 0x87, 0x11, 0x3f, + 0xf1, 0xdc, 0x55, 0x60, 0x7c, 0xf5, 0xb9, 0x6b, 0xfd, 0x6d, + 0x7c, 0x12, 0xda, 0xfe, 0xff, 0xa4, 0x13, 0x7b, 0xd4, 0x78, + 0xf2, 0xd8, 0x94, 0x9c, 0x36, 0x26, 0x6c, 0xf6, 0x95, 0xb8, + 0x47, 0x1f, 0x8f, 0x6e, 0x7a, 0x56, 0xf5, 0xe8, 0x38, 0x55, + 0x3a, 0x9d, 0x7a, 0x44, 0x57, 0x36, 0x03, 0x8b, 0x37, 0x6e, + 0x4c, 0xc8, 0x04, 0x6b, 0xb4, 0x1b, 0xd6, 0xc9, 0x79, 0xa6, + 0x8a, 0x33, 0x67, 0x60, 0x89, 0xa0, 0xb8, 0xd9, 0xb6, 0x4e, + 0xce, 0x32, 0xc5, 0xfe, 0x92, 0x78, 0xda, 0xc6, 0x57, 0x64, + 0x49, 0x16, 0x5c, 0x83, 0xfc, 0x8a, 0xb8, 0xf3, 0x90, 0x41, + 0xe1, 0xe7, 0x46, 0x0e, 0x60, 0x28, 0xfd, 0x1a, 0x3a, 0xba, + 0xa6, 0xcc, 0xf7, 0x49, 0xa8, 0x2b, 0x74, 0x88, 0x1b, 0x6c, + 0x3c, 0x8a, 0x24, 0x03, 0xe4, 0x5a, 0xa6, 0xdc, 0x23, 0x3f, + 0x7e, 0x90, 0x35, 0x03, 0xb3, 0xa0, 0x45, 0x1e, 0x7e, 0x85, + 0xf8, 0x35, 0x14, 0x1d, 0xcb, 0x85, 0xd1, 0x24, 0xcc, 0xc3, + 0x7e, 0xb5, 0xdb, 0xb9, 0x85, 0x3e, 0x8c, 0x39, 0x08, 0x36, + 0x36, 0xff, 0xf3, 0xf7, 0xea, 0x59, 0x3d, 0x8b, 0xa1, 0x49, + 0xc3, 0x80, 0x44, 0x4c, 0x05, 0x3f, 0xcf, 0x3a, 0xee, 0x9d, + 0x57, 0x2e, 0x2b, 0xd5, 0xe3, 0xde, 0x59, 0x15, 0xff, 0x3f, + 0xcd, 0xf0, 0x12, 0xac, 0x15, 0x59, 0x78, 0x1b, 0x4d, 0xa7, + 0x5b, 0x64, 0x41, 0x3c, 0x6d, 0x99, 0x37, 0xa6, 0xfe, 0xd8, + 0x24, 0x0e, 0x21, 0x4b, 0xdd, 0x50, 0xb5, 0xbe, 0x32, 0x8c, + 0x24, 0x98, 0xb6, 0x9c, 0x87, 0xd0, 0x5e, 0xc7, 0xb0, 0xb6, + 0x33, 0x6e, 0x10, 0x16, 0xba, 0xfa, 0x0e, 0xa3, 0xbf, 0x13, + 0xf0, 0x67, 0x9d, 0x94, 0xde, 0x40, 0x1c, 0xe3, 0x61, 0x2e, + 0x6e, 0x0d, 0xc3, 0x6f, 0x41, 0xca, 0xf4, 0x43, 0x7a, 0xc7, + 0x6d, 0xe2, 0xba, 0xd4, 0x87, 0x21, 0x9b, 0x43, 0x1d, 0xb3, + 0x61, 0xe6, 0x55, 0x0a, 0x27, 0xda, 0xf1, 0xbc, 0x27, 0xcb, + 0x95, 0xec, 0x5e, 0x6e, 0xe7, 0xef, 0x6d, 0xe2, 0x05, 0x3c, + 0x5c, 0x6a, 0x9b, 0xb3, 0x39, 0x71, 0x98, 0xbe, 0xd4, 0xf5, + 0x6d, 0x90, 0x09, 0x1d, 0xf3, 0xba, 0x64, 0xce, 0x7d, 0x6d, + 0x21, 0x9b, 0x78, 0xb4, 0x50, 0x58, 0xbb, 0xf8, 0x30, 0x59, + 0x3e, 0x57, 0xbb, 0x21, 0xde, 0xac, 0xd3, 0x36, 0x0c, 0x27, + 0x20, 0xe5, 0xc4, 0xb7, 0xb5, 0x94, 0x77, 0x43, 0x1f, 0xe4, + 0x4a, 0x57, 0xda, 0x03, 0x8e, 0x4d, 0xb8, 0x0e, 0x7a, 0x8f, + 0xac, 0xf0, 0x69, 0x03, 0x6d, 0x5b, 0x30, 0xc1, 0xa1, 0x76, + 0xac, 0x7a, 0xa8, 0x92, 0x84, 0x34, 0x68, 0xca, 0xf9, 0x9c, + 0x80, 0xea, 0xb2, 0x43, 0xdd, 0x88, 0xf5, 0xb8, 0xeb, 0xf1, + 0x35, 0xd3, 0x29, 0xbe, 0x3e, 0xce, 0xdf, 0x89, 0x56, 0xd8, + 0xfb, 0xa0, 0x4f, 0x97, 0xd4, 0xd5, 0x72, 0xae, 0xcf, 0xa0, + 0x78, 0xa3, 0x2d, 0x85, 0xa9, 0xb2, 0x98, 0xda, 0x3c, 0x08, + 0x34, 0xd8, 0x07, 0x21, 0x01, 0xf2, 0x79, 0x38, 0xe7, 0x3a, + 0x1d, 0x86, 0xe9, 0x9a, 0xf8, 0x49, 0x9f, 0xaf, 0xb5, 0xec, + 0x35, 0x09, 0x1f, 0x5b, 0xfa, 0x91, 0xb7, 0xc0, 0x8e, 0x70, + 0x21, 0x92, 0xb9, 0x2a, 0xca, 0x0a, 0x5d, 0xa6, 0xd5, 0xe9, + 0x9f, 0x99, 0x3b, 0xb3, 0x39, 0x5d, 0x64, 0xc7, 0x4e, 0xdc, + 0x13, 0x46, 0xb3, 0x41, 0xb0, 0xf0, 0xd6, 0xb4, 0xce, 0xaa, + 0xb7, 0x2d, 0xa1, 0xba, 0x6a, 0x42, 0x75, 0x9d, 0x55, 0xce, + 0x2a, 0xd5, 0x6c, 0x75, 0x17, 0x98, 0xe1, 0x91, 0x39, 0xd2, + 0xda, 0xb8, 0x37, 0xad, 0x0f, 0x8d, 0xfb, 0x32, 0x8d, 0xc0, + 0x38, 0x38, 0x62, 0x4a, 0x82, 0x04, 0x5c, 0xe4, 0x94, 0x07, + 0x6c, 0x1e, 0xea, 0x8b, 0x01, 0x5f, 0x48, 0x98, 0x18, 0xc2, + 0x3f, 0x4f, 0xaa, 0xe7, 0xf5, 0xf3, 0x9c, 0x2a, 0x73, 0x0c, + 0x16, 0x5c, 0x54, 0xf7, 0xd4, 0xe5, 0x60, 0x07, 0x19, 0x3e, + 0xdf, 0x55, 0xa2, 0x7e, 0x93, 0x04, 0x60, 0xd8, 0xbc, 0x69, + 0x29, 0xe0, 0x4d, 0xf0, 0xe0, 0xf8, 0xa4, 0x54, 0xd5, 0x3b, + 0x30, 0x3b, 0x9b, 0x32, 0x15, 0xbb, 0x64, 0x3c, 0x62, 0xfc, + 0x6b, 0x29, 0xa0, 0x3d, 0xea, 0xce, 0xf8, 0x8f, 0x52, 0x55, + 0x01, 0xe6, 0xf8, 0x86, 0x80, 0xaa, 0x91, 0xfa, 0x68, 0x6f, + 0x7d, 0xb0, 0x28, 0x01, 0x29, 0x57, 0xd1, 0x1d, 0xdf, 0x85, + 0xc2, 0x45, 0x29, 0x55, 0xb7, 0x1b, 0xb2, 0x52, 0x04, 0x58, + 0xe1, 0x34, 0x5c, 0x96, 0x03, 0xfb, 0x00, 0xca, 0x82, 0xb0, + 0x42, 0x6a, 0xa5, 0x7d, 0xc8, 0x17, 0x27, 0x3f, 0x74, 0xa7, + 0xb8, 0xf4, 0x2c, 0x9a, 0x5f, 0xd4, 0x2f, 0x04, 0x10, 0x61, + 0xac, 0x41, 0x78, 0x4f, 0xab, 0x28, 0xcd, 0x17, 0xf8, 0x4b, + 0xb6, 0x65, 0xc0, 0x16, 0x7c, 0x21, 0x68, 0x04, 0x2b, 0x7f, + 0x99, 0x29, 0xbf, 0x22, 0x76, 0x11, 0x55, 0xa2, 0x78, 0x0c, + 0xce, 0xd0, 0x0c, 0x42, 0x6f, 0x31, 0x63, 0x4d, 0xeb, 0x5d, + 0x13, 0xa7, 0xcf, 0x05, 0x62, 0x8e, 0xdc, 0x85, 0x9c, 0x76, + 0xde, 0x04, 0x54, 0x8c, 0xaf, 0xeb, 0xd0, 0x15, 0x75, 0xe8, + 0xb2, 0x00, 0x2d, 0x75, 0xd8, 0x0f, 0xaa, 0xd0, 0x65, 0x4b, + 0xd1, 0xb9, 0x39, 0x31, 0xc1, 0xc9, 0x11, 0x1c, 0xc9, 0x47, + 0xc0, 0xc9, 0xf8, 0x11, 0x2f, 0xaf, 0xc6, 0x2c, 0xcb, 0xa9, + 0x32, 0xe7, 0x51, 0xf9, 0x65, 0x3d, 0x87, 0x35, 0x9c, 0xf9, + 0x48, 0x43, 0xcf, 0xb4, 0xfe, 0xe8, 0xed, 0xd7, 0x18, 0x4d, + 0xb2, 0x9c, 0x78, 0x6c, 0x36, 0xa7, 0xc0, 0xae, 0xcd, 0x41, + 0xcd, 0x56, 0x20, 0xf6, 0x1e, 0xb2, 0x58, 0x4f, 0x2b, 0x86, + 0x2d, 0xa1, 0x76, 0x10, 0x9b, 0x78, 0x71, 0x89, 0xf8, 0x45, + 0xcd, 0x37, 0xd4, 0x75, 0xa9, 0x9e, 0xe1, 0x50, 0x61, 0xa9, + 0x17, 0x92, 0xa6, 0x0d, 0x3f, 0xe7, 0x3c, 0x39, 0xfc, 0x7b, + 0x3a, 0x65, 0x33, 0x10, 0x77, 0x5b, 0xe8, 0xc7, 0x98, 0x0f, + 0xc5, 0x12, 0xd3, 0xe4, 0x30, 0x58, 0xa0, 0x56, 0x84, 0x56, + 0xcb, 0x1d, 0xf6, 0xa6, 0x87, 0x3b, 0xcf, 0xae, 0x02, 0x99, + 0x2d, 0x0e, 0x19, 0x99, 0x14, 0x0c, 0x77, 0x33, 0x44, 0x26, + 0x71, 0x9d, 0xc0, 0xb4, 0x88, 0x0b, 0x3a, 0x75, 0x01, 0x9e, + 0xd2, 0x3a, 0xeb, 0x24, 0xc6, 0x75, 0x9e, 0x7d, 0x3d, 0x01, + 0xb2, 0x74, 0x0c, 0x64, 0x0a, 0xdb, 0x95, 0x5f, 0x87, 0xba, + 0x98, 0x1f, 0xb9, 0xb4, 0x74, 0xb4, 0x68, 0xe0, 0x71, 0x16, + 0xa8, 0x81, 0x69, 0x97, 0x68, 0x80, 0xe9, 0xdd, 0x24, 0x13, + 0x73, 0xbb, 0xd9, 0x9e, 0x2d, 0xb9, 0xbb, 0xe5, 0x62, 0x09, + 0x12, 0xda, 0xcc, 0x0b, 0x5d, 0xba, 0xa2, 0xfa, 0x89, 0x02, + 0xde, 0x37, 0xa8, 0xe2, 0x35, 0xcc, 0x77, 0x4f, 0x37, 0x76, + 0xd7, 0xe0, 0x50, 0x8c, 0xfb, 0xd4, 0x29, 0x60, 0x1f, 0x56, + 0x21, 0x0e, 0x2d, 0x32, 0x15, 0x37, 0x98, 0x3f, 0x52, 0x4d, + 0x2f, 0xec, 0x5d, 0x63, 0x3f, 0xf5, 0x37, 0x7c, 0x16, 0xd8, + 0x64, 0x12, 0xc3, 0x84, 0x9f, 0xb5, 0xba, 0x0a, 0x76, 0x4e, + 0x4f, 0x6a, 0x71, 0xbc, 0x93, 0x74, 0x43, 0xe2, 0xa6, 0xdc, + 0x3f, 0x14, 0x1b, 0x4e, 0xe3, 0xb1, 0x15, 0x7a, 0x8b, 0xf2, + 0x23, 0x76, 0xe3, 0x81, 0xa7, 0x37, 0xd3, 0x0e, 0xd8, 0x4d, + 0x48, 0x66, 0xd4, 0xe1, 0xa1, 0x18, 0x00, 0x5d, 0x8d, 0x80, + 0x2e, 0x65, 0xf8, 0x90, 0xcb, 0x7c, 0xa8, 0xb0, 0x21, 0xdf, + 0xc0, 0x9d, 0xd1, 0x0f, 0xe1, 0x4d, 0xb8, 0x21, 0x6e, 0xc1, + 0xe4, 0xb9, 0x85, 0xf8, 0xe2, 0x89, 0x7c, 0x2f, 0xcf, 0x89, + 0x5b, 0xb2, 0x96, 0x00, 0x81, 0xa2, 0xcb, 0xad, 0xc6, 0x38, + 0x8d, 0x5b, 0x9c, 0x66, 0x19, 0x7e, 0x4b, 0xbd, 0x25, 0xf7, + 0xc1, 0xeb, 0xe2, 0x3a, 0x19, 0xe9, 0xb8, 0x33, 0x06, 0x60, + 0xa3, 0xff, 0xd1, 0xc5, 0xf4, 0xcb, 0x73, 0x3a, 0x6a, 0x7d, + 0xef, 0xf2, 0xef, 0xe5, 0x75, 0x59, 0xd4, 0xaa, 0x07, 0x01, + 0xa0, 0x2b, 0x94, 0xe0, 0x81, 0xe8, 0x86, 0x78, 0x4c, 0x3a, + 0x8a, 0x0d, 0x0f, 0x6c, 0x6b, 0x51, 0xc7, 0x19, 0x37, 0x59, + 0xb0, 0x39, 0x9c, 0xde, 0x47, 0xba, 0x16, 0xa2, 0x7b, 0x20, + 0xc6, 0x47, 0xe6, 0x4e, 0xd1, 0x56, 0xbc, 0x80, 0xaf, 0xe0, + 0xb8, 0x83, 0x5f, 0x3a, 0x3d, 0xa4, 0x61, 0xb8, 0x66, 0x8b, + 0xf2, 0xaa, 0xa8, 0xf3, 0x8d, 0x38, 0xe1, 0x21, 0xda, 0xf0, + 0x0e, 0xe8, 0x91, 0xca, 0x30, 0xd7, 0xae, 0xdd, 0x81, 0x62, + 0x13, 0xeb, 0x38, 0xa5, 0xc3, 0x82, 0x7b, 0x70, 0xe7, 0xc2, + 0xe9, 0x62, 0x03, 0x51, 0x2f, 0xf8, 0x88, 0x51, 0x5c, 0x5c, + 0x92, 0x9a, 0xb8, 0x31, 0x44, 0x87, 0x01, 0xc3, 0x77, 0x23, + 0x0f, 0x90, 0xa6, 0x7b, 0x0f, 0x94, 0x23, 0x30, 0xfa, 0xeb, + 0x42, 0xa7, 0x07, 0xc0, 0x2b, 0x1f, 0x92, 0x1f, 0xfa, 0x39, + 0xdc, 0x65, 0xcb, 0x02, 0x6f, 0xa7, 0x8b, 0x11, 0x88, 0x3b, + 0x07, 0xbf, 0x0c, 0x47, 0x7e, 0x68, 0x5a, 0xef, 0x87, 0xfb, + 0x89, 0xea, 0xe2, 0xed, 0xd8, 0xf1, 0xd0, 0x43, 0x99, 0xd1, + 0xfa, 0x7a, 0x3d, 0x50, 0xda, 0x8c, 0xeb, 0xb5, 0x7a, 0x0f, + 0x64, 0x47, 0x86, 0x52, 0xb9, 0xda, 0x0b, 0x8b, 0xc3, 0x02, + 0xdf, 0x06, 0xe6, 0x25, 0x03, 0x47, 0x4e, 0x8f, 0xdd, 0x03, + 0x07, 0x9c, 0x7d, 0x0b, 0xa9, 0xbe, 0x06, 0x84, 0x53, 0xdc, + 0xe3, 0x7e, 0xf9, 0x39, 0xd6, 0x23, 0x3f, 0x48, 0xe0, 0x10, + 0xb7, 0xbc, 0x7b, 0x03, 0x61, 0x10, 0x5a, 0x66, 0x4a, 0x0f, + 0x40, 0x42, 0xf1, 0xce, 0x7d, 0x79, 0x9f, 0xbb, 0x47, 0x81, + 0xa4, 0x05, 0xd2, 0x75, 0x88, 0x44, 0xf7, 0xe8, 0x77, 0x36, + 0xe5, 0x19, 0x1d, 0xb3, 0x07, 0x15, 0xf2, 0xd3, 0xe1, 0x6e, + 0xd6, 0xac, 0x16, 0xa2, 0xe2, 0xee, 0x34, 0x88, 0x5d, 0xf6, + 0x12, 0x46, 0x04, 0xe7, 0x09, 0xf5, 0x3c, 0x7a, 0x08, 0x65, + 0xd8, 0x64, 0xcd, 0x66, 0xb4, 0x48, 0xe0, 0x70, 0xe3, 0x8d, + 0x12, 0xa7, 0xfc, 0xe4, 0xc3, 0x16, 0x3e, 0x50, 0x42, 0xb4, + 0x62, 0xd6, 0x27, 0x6a, 0x49, 0xb8, 0x24, 0xc4, 0x3e, 0x7d, + 0x1e, 0x7f, 0xe1, 0x87, 0xf8, 0x09, 0x7d, 0xb6, 0x02, 0x39, + 0x77, 0x0f, 0x68, 0x20, 0x97, 0x67, 0x4a, 0x4b, 0x42, 0x1f, + 0x57, 0x40, 0x6d, 0xa5, 0x22, 0x6a, 0xf5, 0x5a, 0x5e, 0x85, + 0xc0, 0x1e, 0xb7, 0xc8, 0x02, 0xc2, 0x26, 0x08, 0xd1, 0x42, + 0x87, 0xd8, 0xe5, 0xa5, 0x79, 0xa7, 0x71, 0x53, 0xde, 0xc3, + 0x7b, 0x59, 0x63, 0x64, 0x1d, 0xf8, 0x9b, 0x22, 0x7e, 0x2c, + 0xdb, 0x3e, 0x0c, 0x17, 0x2f, 0x71, 0x01, 0x07, 0x5f, 0xc1, + 0xa4, 0xcd, 0x49, 0x79, 0x0b, 0x35, 0x24, 0x68, 0x02, 0x75, + 0xf6, 0x06, 0x4a, 0xe7, 0x2e, 0xf3, 0x82, 0xd0, 0x3d, 0xc0, + 0x15, 0x10, 0xb7, 0xb3, 0x40, 0xc7, 0x4d, 0x0a, 0x24, 0x7a, + 0x68, 0x73, 0xea, 0xb2, 0xef, 0x3a, 0xb7, 0x09, 0x97, 0xf3, + 0x4e, 0x48, 0x78, 0x22, 0x15, 0xf5, 0x01, 0xa8, 0xd1, 0x6b, + 0xe7, 0x4f, 0x63, 0x73, 0x45, 0x98, 0x36, 0xd2, 0x16, 0x6b, + 0x85, 0xe3, 0x47, 0xea, 0xd8, 0x5c, 0xaf, 0xa4, 0x87, 0x21, + 0xc5, 0x5a, 0x10, 0xde, 0x69, 0x03, 0xb0, 0x61, 0xe8, 0x42, + 0x00, 0xd8, 0x40, 0x6f, 0xb8, 0x60, 0xf1, 0x65, 0x04, 0x94, + 0x6c, 0x00, 0xce, 0xfa, 0x10, 0xf1, 0x19, 0x11, 0x77, 0xc1, + 0xdc, 0x71, 0xc7, 0x75, 0x68, 0x70, 0x40, 0x2b, 0x3a, 0x65, + 0x4f, 0x05, 0x31, 0xf3, 0x88, 0xce, 0x99, 0xab, 0x35, 0x5b, + 0x23, 0x2a, 0xf3, 0xcb, 0x1d, 0x80, 0x8f, 0xf1, 0xf1, 0x15, + 0x04, 0x10, 0x53, 0xae, 0xb7, 0xd2, 0x26, 0x01, 0x26, 0x79, + 0x45, 0x4b, 0x27, 0x58, 0x83, 0xc9, 0x60, 0x7d, 0x67, 0xa9, + 0xe8, 0x03, 0xe0, 0x7c, 0x77, 0x5a, 0xbb, 0x90, 0x0a, 0x14, + 0x7f, 0xcb, 0x6d, 0xca, 0xc7, 0x22, 0x82, 0x9c, 0x6b, 0x87, + 0x09, 0x17, 0x7e, 0x87, 0x24, 0x74, 0x0a, 0xa4, 0xd1, 0x9c, + 0x72, 0x08, 0xd5, 0x27, 0x1b, 0x3f, 0x74, 0x67, 0xb2, 0xd6, + 0x59, 0xfd, 0xec, 0xcf, 0xdf, 0xab, 0xd5, 0x78, 0xd6, 0x6d, + 0xf7, 0x99, 0xb2, 0x73, 0xce, 0x64, 0xc1, 0xe2, 0x20, 0x0b, + 0x66, 0x06, 0x10, 0xa4, 0x81, 0x7e, 0xc0, 0x25, 0xa5, 0x8d, + 0x96, 0xec, 0x60, 0x7c, 0xc7, 0x6d, 0x17, 0x25, 0xab, 0x6f, + 0x5a, 0xe7, 0x1f, 0xcf, 0xab, 0xfd, 0x52, 0x90, 0xef, 0x59, + 0x10, 0xf8, 0x05, 0x40, 0xbb, 0xe1, 0x94, 0x91, 0x82, 0x72, + 0xcb, 0xe6, 0x4b, 0x52, 0x04, 0x40, 0xfa, 0xdb, 0x5a, 0xbb, + 0x62, 0x3e, 0xb3, 0xa7, 0x60, 0xdc, 0x94, 0xd9, 0x54, 0x74, + 0xb2, 0x66, 0xd1, 0x39, 0x90, 0x31, 0x27, 0xce, 0x4a, 0x2b, + 0x8e, 0x96, 0x1d, 0x3a, 0xb4, 0xbc, 0xe5, 0x85, 0xea, 0xb8, + 0xe4, 0xa7, 0xa2, 0xdf, 0x92, 0xea, 0xc2, 0x62, 0x5f, 0x43, + 0x19, 0xf4, 0x95, 0x74, 0x1f, 0x2d, 0xb4, 0x38, 0xc1, 0x01, + 0x4e, 0xb0, 0x85, 0xba, 0x46, 0xbf, 0x28, 0xff, 0x88, 0x93, + 0x27, 0x94, 0xaa, 0xa1, 0x24, 0x09, 0x9f, 0x6d, 0x16, 0x50, + 0x9b, 0x7b, 0xf1, 0x4a, 0x5f, 0xb6, 0x06, 0x73, 0x5d, 0xb6, + 0xa2, 0xf3, 0xf2, 0x13, 0xf9, 0x0b, 0x59, 0x84, 0x81, 0x74, + 0x15, 0xca, 0xca, 0xf0, 0x17, 0x0c, 0x06, 0x9e, 0x17, 0xae, + 0x54, 0x38, 0xfb, 0x8c, 0x0d, 0xea, 0x80, 0x69, 0xa0, 0xf6, + 0x7a, 0x85, 0x77, 0xf4, 0xe7, 0xef, 0x67, 0xb8, 0xeb, 0x79, + 0x96, 0x57, 0xa7, 0x45, 0xd6, 0x72, 0x39, 0xfb, 0xf7, 0xea, + 0x1f, 0xf5, 0x93, 0x3f, 0x72, 0xab, 0x84, 0xb8, 0x2a, 0xd4, + 0x7a, 0xf0, 0xa2, 0x88, 0x06, 0xe0, 0x55, 0x01, 0x5e, 0x2e, + 0x4e, 0xf0, 0xe7, 0xbf, 0x85, 0x60, 0x90, 0x84, 0x38, 0xc1, + 0xc0, 0x41, 0xb5, 0x86, 0x18, 0x3b, 0xb9, 0x1a, 0xad, 0x3c, + 0xb4, 0xe4, 0x0e, 0x72, 0xb2, 0xad, 0x5a, 0x41, 0x03, 0x62, + 0x2e, 0xeb, 0x27, 0x97, 0xb9, 0x75, 0xa6, 0xbd, 0xd0, 0x9b, + 0xa1, 0x54, 0xf4, 0xff, 0x46, 0xe8, 0xb5, 0xfe, 0xdf, 0x08, + 0xfd, 0x83, 0xdc, 0x9f, 0x2e, 0x00, 0x3e, 0x24, 0xce, 0x52, + 0x8c, 0x7d, 0x5a, 0x2f, 0x6d, 0xab, 0x8c, 0x44, 0x26, 0x7f, + 0x52, 0x58, 0xc7, 0xdc, 0xf0, 0x67, 0xb5, 0x75, 0x7e, 0x5e, + 0x3f, 0xc9, 0xad, 0x62, 0x89, 0x6c, 0x05, 0xa2, 0x4a, 0xb5, + 0x5e, 0x85, 0x9f, 0xb5, 0x3a, 0x3a, 0x12, 0x52, 0xb9, 0x9d, + 0xe5, 0x6d, 0xa2, 0x6f, 0xdb, 0x3e, 0x72, 0x3f, 0xe0, 0x0b, + 0xd9, 0xf8, 0x5d, 0xfd, 0x24, 0x31, 0x55, 0x45, 0x05, 0x88, + 0xa9, 0xdc, 0xf9, 0x86, 0x12, 0x6f, 0xb2, 0xa1, 0x6e, 0xc9, + 0x1d, 0x7a, 0x9f, 0xe1, 0xa6, 0x18, 0x75, 0xf3, 0x88, 0x16, + 0x65, 0xce, 0x92, 0x04, 0x9b, 0x3c, 0x94, 0xa2, 0x74, 0xa9, + 0x96, 0x7e, 0x71, 0xa7, 0xae, 0x2d, 0x30, 0xd5, 0x00, 0xc3, + 0x85, 0x30, 0x16, 0x02, 0xd9, 0x65, 0x52, 0x4d, 0x8b, 0x26, + 0x2e, 0x99, 0x6d, 0x3c, 0x29, 0x27, 0xd0, 0xf5, 0xb3, 0x5a, + 0xaa, 0xf8, 0x5b, 0x20, 0x7c, 0xe1, 0xcc, 0x20, 0xab, 0x42, + 0x3e, 0xa1, 0xda, 0x52, 0xdf, 0x9e, 0x93, 0x89, 0x98, 0x3c, + 0xf9, 0xe5, 0xc1, 0xc6, 0xd3, 0xc3, 0xbe, 0x22, 0x73, 0x7b, + 0x46, 0x66, 0x3a, 0x3e, 0x5c, 0x11, 0xdb, 0x93, 0x9e, 0x8c, + 0xa6, 0x78, 0xa1, 0x20, 0x5f, 0xd4, 0x4f, 0x2e, 0xd2, 0x65, + 0xee, 0x7c, 0x11, 0x0d, 0xdb, 0xee, 0x34, 0x92, 0xc5, 0x1e, + 0x44, 0xa9, 0x8e, 0xb6, 0x98, 0x32, 0x2f, 0x0c, 0x76, 0x79, + 0x9c, 0xb6, 0x84, 0xd5, 0x54, 0x13, 0xe6, 0xdb, 0x0b, 0xba, + 0xd0, 0x0d, 0xda, 0x15, 0x2e, 0xca, 0x32, 0x59, 0xfa, 0xbe, + 0x7e, 0xf2, 0x7e, 0xb7, 0xb4, 0x09, 0x5a, 0x4d, 0x89, 0xf0, + 0x87, 0xfa, 0xc9, 0x87, 0x74, 0x21, 0x67, 0x13, 0xe2, 0xf8, + 0xc4, 0xd5, 0x36, 0xe7, 0x0e, 0x5f, 0x4a, 0x7f, 0x13, 0xb8, + 0x7c, 0x0e, 0x9a, 0xe0, 0x12, 0x0c, 0xe6, 0x6e, 0x9d, 0x16, + 0x38, 0xa5, 0xfe, 0x54, 0x04, 0xe6, 0xa9, 0x4e, 0x5d, 0xc6, + 0x9d, 0xba, 0x4c, 0x77, 0xaa, 0x65, 0xcb, 0xfd, 0xfc, 0xdc, + 0x2e, 0xb5, 0x98, 0xc3, 0x74, 0x34, 0xb7, 0xc2, 0x09, 0x61, + 0xba, 0xb1, 0x69, 0x85, 0xbe, 0x4d, 0x5c, 0xbd, 0x4c, 0x5d, + 0x03, 0xa9, 0xf3, 0x50, 0xee, 0x05, 0x65, 0x06, 0xe0, 0x3c, + 0x1e, 0x80, 0x14, 0xd4, 0x1b, 0xf2, 0x23, 0xd3, 0xe0, 0x02, + 0x66, 0xc5, 0xc5, 0x7b, 0xdd, 0xac, 0xb8, 0xa5, 0x13, 0x8f, + 0xbb, 0x07, 0xb6, 0x81, 0xd0, 0xdb, 0x66, 0xe3, 0x1e, 0x73, + 0x6d, 0x9d, 0xf0, 0xdc, 0x82, 0x42, 0x18, 0xdf, 0x73, 0x11, + 0x33, 0xdc, 0xde, 0x5b, 0xe9, 0xc1, 0xba, 0xe5, 0xeb, 0x99, + 0xae, 0x69, 0xc7, 0x03, 0x4b, 0xe4, 0x2f, 0x74, 0xe3, 0x7c, + 0x87, 0xa7, 0x76, 0x04, 0x5b, 0x3e, 0x77, 0xae, 0xd2, 0x6d, + 0xef, 0xc8, 0x86, 0xac, 0xe4, 0x19, 0xa4, 0xcf, 0x1d, 0x2b, + 0x3d, 0x20, 0x77, 0xd4, 0x0b, 0x7d, 0x15, 0x84, 0x75, 0xf0, + 0x88, 0x44, 0xa7, 0x15, 0xf7, 0xb6, 0xf6, 0x2e, 0x1b, 0x9e, + 0x63, 0x9b, 0x7b, 0x32, 0x89, 0xa6, 0xc8, 0x05, 0x0a, 0xd5, + 0x45, 0x46, 0xa8, 0xee, 0xc9, 0x72, 0x6a, 0x93, 0x40, 0xc9, + 0x48, 0x9e, 0x6a, 0xb9, 0xc7, 0xad, 0x2e, 0x71, 0x62, 0x64, + 0x08, 0xac, 0xb8, 0x4c, 0x17, 0x06, 0x36, 0x26, 0x73, 0x8e, + 0xf4, 0xc3, 0x05, 0xca, 0xc2, 0xc7, 0x8b, 0x74, 0x2d, 0x10, + 0x96, 0xd9, 0x66, 0xae, 0x9d, 0x1f, 0xf7, 0xdc, 0x59, 0x10, + 0xc1, 0x15, 0xec, 0x58, 0x56, 0xf2, 0xef, 0x3d, 0xe2, 0xbb, + 0x7c, 0x43, 0x3c, 0x5f, 0xab, 0x0e, 0xee, 0xf1, 0xb0, 0x12, + 0xf8, 0x86, 0x4b, 0x60, 0xa0, 0x8e, 0xf9, 0xf7, 0xe1, 0x14, + 0x5f, 0xf3, 0xd0, 0x17, 0xe3, 0x1b, 0x20, 0x3a, 0x55, 0x05, + 0x36, 0x58, 0x68, 0x41, 0xf0, 0x48, 0xd2, 0x0d, 0x7b, 0x78, + 0xb8, 0x43, 0xcd, 0xed, 0xb4, 0x53, 0x20, 0xcb, 0x17, 0xb8, + 0x56, 0xe1, 0xc9, 0x71, 0x6d, 0x64, 0x9b, 0xbb, 0xcc, 0x51, + 0x3e, 0x5c, 0xa6, 0x2c, 0xf4, 0xa7, 0x91, 0x6a, 0xce, 0x4e, + 0xc3, 0x3e, 0x04, 0x77, 0x3e, 0x3b, 0x6c, 0x92, 0xe1, 0x11, + 0x93, 0x45, 0xf8, 0xc3, 0xa5, 0x81, 0x9e, 0x99, 0x58, 0xc7, + 0x67, 0x13, 0x56, 0xc0, 0xef, 0xc1, 0xd2, 0xd7, 0x6a, 0xca, + 0x81, 0x47, 0x1c, 0x9d, 0x66, 0x18, 0xda, 0x2e, 0x5f, 0x8e, + 0x87, 0x54, 0x3f, 0xf9, 0x86, 0xb8, 0x54, 0x0b, 0x4e, 0xed, + 0x22, 0x7f, 0x92, 0x0c, 0x37, 0x68, 0xad, 0x89, 0x18, 0x46, + 0xf0, 0xf5, 0xd2, 0xa2, 0xf4, 0x17, 0xc8, 0x91, 0xa7, 0x1b, + 0xc3, 0xbf, 0x36, 0x3f, 0x36, 0x0e, 0xf7, 0x66, 0x44, 0x47, + 0xdd, 0x88, 0x6d, 0xc8, 0xcc, 0xd6, 0x35, 0x37, 0xc9, 0xc2, + 0x26, 0x0e, 0xd3, 0x0f, 0xb4, 0x89, 0xcb, 0x06, 0x0b, 0xe2, + 0xce, 0x74, 0xf0, 0x4d, 0xca, 0xc5, 0x7c, 0xcc, 0x21, 0xdc, + 0xc4, 0xf4, 0xe5, 0xb6, 0x50, 0xb9, 0x39, 0x22, 0x66, 0x82, + 0xdc, 0x92, 0x15, 0xf7, 0xa8, 0x4e, 0x78, 0x4d, 0x0f, 0xb3, + 0x9a, 0x2e, 0xb8, 0xb3, 0x89, 0x06, 0x26, 0x8f, 0x40, 0x8b, + 0x80, 0x5f, 0xad, 0x41, 0x61, 0x11, 0x34, 0x7f, 0xae, 0xd6, + 0x0f, 0xb0, 0x26, 0x60, 0x2d, 0x7c, 0xad, 0x49, 0xb0, 0x28, + 0x58, 0xfa, 0xc8, 0xd0, 0xa3, 0xae, 0xc1, 0x88, 0x4f, 0xe9, + 0x9d, 0xe3, 0xbb, 0x3f, 0x3e, 0xa0, 0x6f, 0x73, 0x57, 0x7b, + 0x77, 0xbe, 0x13, 0x06, 0x8b, 0x86, 0x36, 0x5b, 0xae, 0xec, + 0x50, 0x27, 0x4c, 0xff, 0xdf, 0xde, 0xb7, 0x7f, 0xb5, 0x8d, + 0x24, 0x8d, 0xfe, 0xcc, 0x7f, 0xa1, 0x78, 0xef, 0xb7, 0xb6, + 0x17, 0x63, 0x6c, 0x93, 0xb7, 0xc7, 0xd9, 0x93, 0x40, 0xd8, + 0xb0, 0x93, 0x04, 0x6e, 0x20, 0xe4, 0xdb, 0xc9, 0xe5, 0xe6, + 0x08, 0x4b, 0x60, 0x0d, 0xb6, 0xe4, 0x95, 0x64, 0x1e, 0x33, + 0x93, 0xff, 0xfd, 0x76, 0xf5, 0xfb, 0x29, 0xb5, 0x80, 0x24, + 0x3b, 0xdf, 0xb9, 0x7b, 0xf6, 0x4c, 0xb0, 0xba, 0xaa, 0xfa, + 0x55, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x75, 0x94, 0x5d, 0xdc, + 0xc0, 0xbe, 0xf8, 0x4f, 0x73, 0xc8, 0x8e, 0xb2, 0x85, 0x9b, + 0x41, 0x3f, 0xce, 0x43, 0xb4, 0x43, 0x85, 0x82, 0x1d, 0xcc, + 0x31, 0xfb, 0x98, 0xaf, 0x16, 0xff, 0x4e, 0x5c, 0x15, 0x7f, + 0x2c, 0xca, 0x8d, 0xf7, 0x54, 0x73, 0x35, 0x74, 0x73, 0x00, + 0x38, 0x86, 0x04, 0xa3, 0x09, 0x71, 0x5a, 0xb3, 0x36, 0xe1, + 0x78, 0x1e, 0x46, 0xc9, 0xa5, 0x50, 0x3e, 0x6d, 0x44, 0xf0, + 0xc9, 0x85, 0xf5, 0xc2, 0x94, 0x8c, 0xff, 0x42, 0x4c, 0xc1, + 0xb4, 0xf7, 0xc7, 0x30, 0xaa, 0x8f, 0x0d, 0xe1, 0xf8, 0xaf, + 0x18, 0xc9, 0x4e, 0x74, 0xa6, 0x49, 0xe9, 0x7d, 0x97, 0x75, + 0xf2, 0xfe, 0x15, 0xe7, 0xf1, 0x25, 0x9b, 0x1e, 0x75, 0xf2, + 0xc0, 0xaa, 0x0e, 0x5a, 0xf0, 0xcb, 0xdf, 0x32, 0xee, 0x0d, + 0xe5, 0x65, 0x3d, 0x60, 0x88, 0xaf, 0xe2, 0x7c, 0xb1, 0xe2, + 0xd7, 0xa9, 0x55, 0x47, 0x5d, 0x86, 0xb1, 0x8d, 0x96, 0x37, + 0x76, 0x6c, 0xfd, 0xf4, 0xfa, 0x68, 0xf0, 0x49, 0x92, 0x5a, + 0x43, 0x73, 0x1b, 0x13, 0x38, 0xcb, 0xf8, 0xcb, 0x71, 0x9c, + 0x33, 0x9f, 0x0d, 0xd4, 0x44, 0x13, 0x68, 0x37, 0xcc, 0xb3, + 0xb8, 0x19, 0xdd, 0x77, 0x61, 0x84, 0x54, 0xc5, 0xb0, 0x19, + 0xd2, 0x87, 0xf8, 0xe6, 0xe2, 0xd7, 0x90, 0xdc, 0xa4, 0xa9, + 0x7e, 0x0b, 0x0c, 0xe2, 0x30, 0x5b, 0x95, 0xb3, 0x2f, 0xff, + 0x88, 0xb3, 0xfc, 0x3c, 0xb1, 0x19, 0x78, 0x39, 0x5c, 0xf9, + 0xe5, 0x4d, 0x3c, 0x27, 0x9e, 0x87, 0x0e, 0x4a, 0x65, 0x98, + 0xce, 0x63, 0x9b, 0x97, 0x18, 0x52, 0xb0, 0x90, 0xa4, 0x25, + 0x27, 0x91, 0x79, 0x98, 0xe0, 0x91, 0x79, 0x09, 0x2b, 0xfb, + 0x19, 0x62, 0x92, 0x97, 0xdb, 0x95, 0x07, 0x44, 0x8e, 0xfb, + 0x2a, 0x4f, 0x0a, 0xea, 0x79, 0x49, 0x8f, 0x96, 0x56, 0xa0, + 0x0c, 0x89, 0x86, 0x2f, 0x6f, 0x12, 0x7c, 0x06, 0x6b, 0x5c, + 0x07, 0x18, 0x53, 0x1a, 0x1c, 0x5e, 0x39, 0xde, 0x4e, 0x98, + 0x5f, 0x11, 0x33, 0x28, 0xab, 0xd1, 0x02, 0xf4, 0x7a, 0x35, + 0x9d, 0x53, 0x81, 0xfe, 0x14, 0xd4, 0x8f, 0xa7, 0x8a, 0xfa, + 0xc1, 0xc1, 0xde, 0x64, 0xa7, 0x48, 0xf3, 0x6a, 0xde, 0x86, + 0xb7, 0x49, 0x1a, 0xc5, 0xe4, 0xb8, 0xe6, 0x1e, 0x9f, 0xb7, + 0x68, 0x53, 0xf9, 0xf2, 0x26, 0xbb, 0x62, 0x07, 0xf9, 0x2d, + 0xbc, 0xd2, 0xb1, 0x00, 0x24, 0x62, 0x58, 0xab, 0xc9, 0x42, + 0xe2, 0x5d, 0x3c, 0x3f, 0xcd, 0x56, 0x79, 0x7a, 0x8b, 0x61, + 0x3a, 0x88, 0xf3, 0x12, 0x36, 0xad, 0x97, 0x9f, 0x54, 0xa9, + 0xce, 0x01, 0x0e, 0x6f, 0xd0, 0xde, 0x70, 0xe3, 0x4b, 0xf8, + 0x75, 0x39, 0xdd, 0x44, 0xac, 0xa8, 0x33, 0x24, 0xfd, 0xbc, + 0x3e, 0x70, 0x15, 0x0c, 0xcd, 0x85, 0xc9, 0x8b, 0x06, 0xb8, + 0x0c, 0x09, 0xc0, 0xa1, 0x05, 0x8f, 0x20, 0xa2, 0x81, 0x1a, + 0x5a, 0x30, 0x47, 0xa4, 0x70, 0xf4, 0x42, 0xd2, 0x4b, 0x59, + 0xe1, 0xc8, 0x5c, 0x58, 0xac, 0x68, 0xcb, 0x5c, 0x2f, 0xac, + 0xe8, 0xa1, 0x69, 0x34, 0x67, 0x45, 0x8f, 0x4c, 0x3b, 0x30, + 0x2b, 0x7a, 0x4c, 0x8a, 0x1e, 0xbf, 0x78, 0x6c, 0x14, 0x3d, + 0x21, 0x45, 0x4f, 0x5e, 0x3c, 0x31, 0x8a, 0x9e, 0x92, 0xa2, + 0xa7, 0x2f, 0x9e, 0x1a, 0x45, 0xcf, 0x48, 0xd1, 0xb3, 0x17, + 0xcf, 0xf4, 0xa2, 0x0d, 0xd7, 0x10, 0x6f, 0x0c, 0x2d, 0xee, + 0xf6, 0xbc, 0x6c, 0x60, 0xdb, 0x64, 0x78, 0xe9, 0xd0, 0xa6, + 0x14, 0xf0, 0xd2, 0x91, 0x4d, 0xfd, 0xe7, 0xa5, 0x5b, 0xa4, + 0x14, 0x69, 0x44, 0xc3, 0x2d, 0xb3, 0xf4, 0x21, 0x29, 0x45, + 0xbb, 0xca, 0xd0, 0x18, 0xd1, 0x0d, 0x42, 0x18, 0x5b, 0x6b, + 0x8c, 0xb2, 0x2d, 0x8b, 0xa2, 0xc5, 0xca, 0x1e, 0x5a, 0xb6, + 0x2a, 0x56, 0xf6, 0xc8, 0xb2, 0xcb, 0xb1, 0xb2, 0xc7, 0x96, + 0xed, 0x9c, 0x95, 0x3d, 0xb1, 0x6c, 0xd4, 0xac, 0xec, 0xa9, + 0x45, 0x49, 0x60, 0x65, 0xcf, 0x2c, 0xbb, 0x33, 0x2d, 0xb3, + 0xcf, 0x54, 0x1e, 0xc7, 0xe9, 0x55, 0x32, 0x9d, 0xd9, 0x0a, + 0x3f, 0x6e, 0xc3, 0xca, 0xfa, 0x78, 0xb4, 0xad, 0x7d, 0x3e, + 0xda, 0xb6, 0x7e, 0x4e, 0xe1, 0xde, 0xa5, 0xc0, 0xfa, 0xb4, + 0x51, 0xf8, 0xcb, 0x6a, 0xbe, 0x32, 0xbe, 0xaf, 0xf2, 0x6c, + 0x19, 0x6f, 0xbe, 0x5c, 0x14, 0x48, 0x27, 0x88, 0xf0, 0xeb, + 0x0f, 0x0f, 0x7b, 0x16, 0xc3, 0x4a, 0xa3, 0x2c, 0xcf, 0xc3, + 0x66, 0x38, 0x20, 0x64, 0x90, 0x5e, 0x6c, 0xd3, 0x2d, 0x18, + 0x48, 0x39, 0x8b, 0xd3, 0xc2, 0xf7, 0x94, 0x42, 0x91, 0x5e, + 0xc5, 0xf3, 0xf3, 0x3c, 0xc4, 0x7b, 0x9a, 0x7f, 0x63, 0x90, + 0x2a, 0x42, 0xf4, 0xf3, 0x06, 0x28, 0x10, 0xae, 0xb8, 0x98, + 0x87, 0x97, 0x61, 0x43, 0xb4, 0x55, 0x51, 0xc4, 0xf3, 0xa2, + 0x19, 0x12, 0x3a, 0x80, 0x86, 0xe0, 0x53, 0xd9, 0x74, 0x2c, + 0x90, 0x7a, 0xb5, 0x24, 0x68, 0x4d, 0x2a, 0x2b, 0xd0, 0xa1, + 0x21, 0x6e, 0x36, 0x1a, 0xdb, 0x33, 0xa4, 0xe2, 0xa7, 0xe4, + 0x5a, 0x5d, 0x6b, 0x60, 0x05, 0x12, 0xfa, 0x4f, 0x3a, 0x0b, + 0x9b, 0xd6, 0xb5, 0x03, 0xaf, 0x8a, 0x53, 0x7a, 0xe8, 0x1f, + 0xc2, 0x42, 0x61, 0xb0, 0x5c, 0x03, 0xd3, 0x51, 0xfe, 0x01, + 0xd1, 0xa5, 0xe7, 0x44, 0xa5, 0xf7, 0xaf, 0xe8, 0x1f, 0xab, + 0x38, 0x4f, 0x89, 0xd5, 0x1e, 0x6a, 0x79, 0x55, 0xa5, 0xe2, + 0x51, 0x94, 0x37, 0x10, 0x74, 0x38, 0xbd, 0x48, 0x1a, 0x4e, + 0xd4, 0x5e, 0x31, 0x8f, 0xe1, 0xfa, 0xf6, 0x1d, 0x7f, 0x9c, + 0xe7, 0x53, 0xd9, 0x1e, 0x64, 0xfc, 0xe1, 0x86, 0x1a, 0x55, + 0x1c, 0x12, 0x88, 0x7f, 0x22, 0x19, 0xd0, 0xa8, 0xfd, 0x3f, + 0xc3, 0x39, 0x15, 0x4d, 0x7f, 0x8e, 0x4d, 0xb3, 0xea, 0x8b, + 0x10, 0x06, 0x92, 0xc4, 0x97, 0x0d, 0xbb, 0xf7, 0x73, 0x92, + 0x67, 0x97, 0xee, 0x56, 0xbe, 0x45, 0x9a, 0x24, 0x3e, 0xac, + 0xd4, 0x6b, 0xd2, 0x0c, 0xe3, 0x57, 0xc4, 0x03, 0xbf, 0x52, + 0xb7, 0x45, 0xef, 0xf9, 0x7c, 0x9b, 0x21, 0x39, 0xd5, 0x64, + 0x80, 0xdf, 0xae, 0xae, 0xe3, 0x05, 0x68, 0x57, 0xe7, 0x8d, + 0xea, 0x41, 0x47, 0x83, 0x3c, 0x89, 0x1a, 0xa2, 0xcc, 0xcb, + 0xb0, 0x21, 0x06, 0x52, 0x8d, 0x67, 0xe1, 0x22, 0x6d, 0x38, + 0x17, 0xef, 0x92, 0x94, 0x1d, 0x1b, 0x6d, 0x73, 0xf1, 0x2e, + 0x4b, 0x43, 0x7c, 0xad, 0xdd, 0xa0, 0x25, 0x59, 0x31, 0xcd, + 0xae, 0xf0, 0x65, 0xd8, 0xcf, 0x26, 0xc1, 0xfd, 0x62, 0xde, + 0x8c, 0xdc, 0x01, 0xea, 0x58, 0x33, 0xf1, 0x78, 0x90, 0x45, + 0xe7, 0x59, 0x4e, 0xfd, 0xd1, 0xfd, 0xb1, 0xe0, 0xe1, 0x4f, + 0xb3, 0x6d, 0xe2, 0x43, 0x72, 0x1e, 0x36, 0x1c, 0xee, 0x0f, + 0xc4, 0xb5, 0xc7, 0xbf, 0x0e, 0x6c, 0x0b, 0x0a, 0xdd, 0x9b, + 0x22, 0xbc, 0x7a, 0x81, 0xb9, 0x4f, 0xb3, 0x86, 0x64, 0xf3, + 0xf0, 0xd7, 0xf8, 0xb2, 0x39, 0x52, 0xc9, 0x56, 0xae, 0xb5, + 0x31, 0xc9, 0xe2, 0x2c, 0x46, 0x7f, 0x65, 0x73, 0xd7, 0xf4, + 0x1f, 0x5e, 0x64, 0xcb, 0x5f, 0x1b, 0x8e, 0x40, 0x76, 0x96, + 0x34, 0x1d, 0xe6, 0xc3, 0x32, 0x9b, 0x5e, 0xcc, 0xb2, 0x79, + 0x33, 0xbd, 0xe5, 0x28, 0x84, 0x94, 0xed, 0x4d, 0x57, 0xd0, + 0x11, 0x3a, 0xf6, 0xa7, 0xcd, 0xba, 0xf4, 0x71, 0x7e, 0x13, + 0xa6, 0xd9, 0x25, 0x5b, 0x78, 0xb6, 0xa1, 0xfc, 0xf8, 0xdb, + 0x0c, 0x31, 0x71, 0x16, 0x35, 0x6c, 0xcc, 0x71, 0x18, 0xad, + 0x7e, 0x6b, 0xd4, 0x96, 0xe3, 0x10, 0x2e, 0x37, 0x9b, 0x6d, + 0xb9, 0x60, 0xb2, 0x6a, 0x28, 0x6c, 0x8f, 0x93, 0x79, 0x9a, + 0xac, 0x9a, 0x6a, 0x6f, 0xc7, 0xd9, 0xfc, 0x3c, 0xa3, 0xbb, + 0x8f, 0x43, 0x42, 0x7d, 0x0a, 0x91, 0x5e, 0x7b, 0xd5, 0xa8, + 0x2d, 0xbf, 0x84, 0xe7, 0x79, 0x7c, 0xda, 0x10, 0x65, 0x89, + 0x66, 0xe3, 0xb7, 0xd9, 0x4d, 0xdc, 0xb0, 0x07, 0xbf, 0xac, + 0x72, 0xa2, 0xc1, 0x7b, 0xd4, 0x45, 0xdc, 0xb1, 0xe1, 0x85, + 0x22, 0xda, 0xca, 0x52, 0xb4, 0xa8, 0xf1, 0xfa, 0x54, 0x1f, + 0x9a, 0x52, 0x98, 0xed, 0x19, 0x7d, 0xfb, 0xab, 0x1f, 0x52, + 0x78, 0x39, 0x24, 0x43, 0x22, 0x0e, 0x2c, 0xfa, 0x59, 0x85, + 0x81, 0x64, 0x53, 0x4e, 0xc1, 0x30, 0x09, 0x72, 0x18, 0xf0, + 0xaf, 0x75, 0x35, 0xe2, 0xe7, 0x38, 0x47, 0x22, 0x73, 0x1e, + 0xdb, 0xdc, 0x02, 0x28, 0xc8, 0xbb, 0x70, 0x16, 0x5b, 0x98, + 0x9c, 0x97, 0xce, 0xa3, 0xe4, 0x32, 0x2e, 0xaa, 0xf0, 0xd1, + 0xf8, 0x95, 0x84, 0x71, 0x9c, 0x44, 0x6e, 0xb2, 0x12, 0xbb, + 0x6b, 0x59, 0x1b, 0xf9, 0x21, 0x5e, 0xa5, 0x49, 0x66, 0x3b, + 0x56, 0x1c, 0x84, 0xd3, 0xe4, 0x0c, 0x2c, 0x96, 0xcb, 0x24, + 0xb4, 0x9d, 0x4c, 0x79, 0xf9, 0x6a, 0x7a, 0x31, 0x27, 0xd6, + 0x78, 0x1f, 0xbf, 0x06, 0x86, 0xf6, 0x2a, 0x5b, 0x9d, 0x87, + 0x49, 0x2a, 0x39, 0x66, 0xa8, 0x87, 0x66, 0x06, 0x87, 0xa6, + 0xb2, 0x9c, 0xe1, 0x13, 0x16, 0x9c, 0x9c, 0xc1, 0xf4, 0x34, + 0x1c, 0x3d, 0x7f, 0xf8, 0x08, 0x9a, 0x83, 0x7e, 0xd0, 0x6a, + 0x36, 0xe1, 0x13, 0xaf, 0x4b, 0x36, 0x4d, 0x09, 0x32, 0xd4, + 0x55, 0x52, 0x3f, 0xba, 0x33, 0x80, 0xd7, 0x61, 0x51, 0x32, + 0x27, 0x8b, 0xc7, 0x2f, 0x1e, 0x63, 0xfb, 0x04, 0xf7, 0x2e, + 0x1b, 0x71, 0xef, 0xb2, 0x91, 0x89, 0x78, 0x16, 0x96, 0x95, + 0x3d, 0x78, 0x0d, 0x1e, 0x47, 0xa7, 0xab, 0xfc, 0xa6, 0x6a, + 0x14, 0x77, 0xc3, 0x8b, 0x30, 0x3b, 0xcb, 0x2a, 0x41, 0x92, + 0x5f, 0x13, 0xc9, 0x80, 0x80, 0xe1, 0xb0, 0xf5, 0x97, 0x58, + 0x81, 0xd1, 0x3f, 0x5b, 0x9b, 0xcf, 0x9e, 0x99, 0x68, 0xab, + 0x34, 0x3c, 0x23, 0x11, 0x08, 0x0c, 0xdb, 0x03, 0x83, 0xf9, + 0x47, 0x38, 0x0f, 0x97, 0x21, 0x7f, 0x9e, 0x2a, 0x9b, 0x5f, + 0x04, 0xc8, 0xe2, 0x34, 0x61, 0x03, 0x24, 0x9b, 0x53, 0x38, + 0xc0, 0x2a, 0x8c, 0xc2, 0x39, 0x92, 0x95, 0xf4, 0x5a, 0xca, + 0x31, 0x1a, 0x08, 0x0c, 0x6f, 0x3b, 0x33, 0xd5, 0xca, 0xc7, + 0x8a, 0xdf, 0x64, 0x69, 0x36, 0x27, 0x27, 0x6e, 0xfc, 0x0e, + 0xda, 0x00, 0x40, 0xda, 0x31, 0xe2, 0xf8, 0x45, 0xc8, 0x3a, + 0xa4, 0x1a, 0x44, 0x38, 0x54, 0x56, 0xe4, 0x61, 0xe5, 0xac, + 0xfc, 0x7c, 0x15, 0xfe, 0x1a, 0xce, 0x63, 0x76, 0xcf, 0x64, + 0x1f, 0x97, 0x77, 0xe1, 0xaf, 0xab, 0x3c, 0xab, 0x86, 0xc8, + 0xff, 0xbd, 0x8a, 0x0b, 0xe6, 0xda, 0xf9, 0x0c, 0x89, 0x0a, + 0xc5, 0x82, 0xca, 0xe1, 0x92, 0xe8, 0x0a, 0xfb, 0x9c, 0x1d, + 0xa2, 0x5e, 0x99, 0xad, 0x79, 0x8f, 0x16, 0xf2, 0xaa, 0xaa, + 0x9e, 0xf7, 0xc9, 0x2a, 0xb6, 0x18, 0xf0, 0x78, 0x71, 0x96, + 0x9f, 0x65, 0x73, 0xf9, 0x4a, 0x0a, 0x53, 0x72, 0x9b, 0x1f, + 0x05, 0xe2, 0x6a, 0x11, 0x87, 0x55, 0x03, 0x75, 0x80, 0xf8, + 0xe2, 0xcb, 0x01, 0xf1, 0xbc, 0xb4, 0x37, 0xfe, 0x00, 0x71, + 0xcf, 0xca, 0x62, 0xbd, 0xe1, 0xe5, 0x49, 0x39, 0x0d, 0x93, + 0x3c, 0x35, 0xad, 0x74, 0x1c, 0x22, 0x9b, 0xa5, 0x4b, 0xea, + 0xf6, 0xe1, 0x6a, 0x06, 0xf8, 0xec, 0xbe, 0x23, 0x0e, 0x98, + 0x55, 0xeb, 0xf8, 0x43, 0x98, 0x67, 0x65, 0x96, 0x92, 0x6b, + 0x70, 0xcd, 0x16, 0xca, 0x60, 0x0e, 0xc3, 0x64, 0x49, 0xf6, + 0x74, 0x07, 0x17, 0x1e, 0x85, 0xb3, 0x84, 0x30, 0x98, 0x83, + 0xc2, 0x11, 0xd2, 0xf5, 0xae, 0xc2, 0xaa, 0x09, 0x3b, 0x82, + 0x36, 0x94, 0xe1, 0x72, 0x55, 0xb5, 0xa4, 0x3f, 0x85, 0x17, + 0x71, 0x15, 0x91, 0x4f, 0xa0, 0x72, 0x15, 0x32, 0x04, 0x01, + 0xf8, 0x3a, 0xc6, 0x41, 0xb2, 0x20, 0x68, 0xcd, 0x65, 0x98, + 0xe3, 0x50, 0xea, 0xc1, 0xd9, 0x2a, 0xc5, 0xb1, 0xac, 0x3a, + 0xf1, 0x3c, 0x89, 0xba, 0xc1, 0xef, 0x34, 0x6e, 0x0f, 0x94, + 0xe7, 0x71, 0x89, 0x00, 0xa2, 0x6c, 0xba, 0x82, 0x2c, 0x9d, + 0xfd, 0xf3, 0xb8, 0x7c, 0x3d, 0xc7, 0x09, 0x3b, 0x5f, 0xdd, + 0xec, 0x45, 0x04, 0x7e, 0x6c, 0x06, 0x70, 0x84, 0xff, 0x25, + 0x67, 0x9d, 0x07, 0x08, 0xbb, 0xfb, 0xbb, 0xbd, 0x18, 0xfe, + 0x07, 0x81, 0x74, 0xb2, 0x79, 0xdc, 0x9f, 0x67, 0xe7, 0x9d, + 0xf6, 0xfb, 0x2c, 0x88, 0x09, 0xe9, 0xe0, 0x0c, 0x62, 0xaf, + 0x91, 0xe0, 0x65, 0xa8, 0x7d, 0xed, 0x60, 0x3d, 0xa8, 0xaa, + 0xe8, 0xab, 0xfd, 0x33, 0xaa, 0x7b, 0x95, 0x43, 0x08, 0xb9, + 0xd2, 0x82, 0xf7, 0x75, 0x2c, 0x07, 0xf4, 0x81, 0x8e, 0x7e, + 0x42, 0xa3, 0x76, 0x70, 0x15, 0xbd, 0x09, 0x8b, 0x6d, 0x9c, + 0xa7, 0x3a, 0x9a, 0x9c, 0x85, 0xf3, 0x22, 0x1e, 0xb3, 0x72, + 0x08, 0x50, 0x55, 0x55, 0x7e, 0x8a, 0xb3, 0x19, 0x57, 0x41, + 0x1c, 0xed, 0x45, 0xd7, 0xce, 0x42, 0x9c, 0x5f, 0x02, 0xd2, + 0x2d, 0x16, 0x15, 0x20, 0x24, 0xcb, 0xaa, 0x13, 0x80, 0x64, + 0x2e, 0xb9, 0x8a, 0xcc, 0xd2, 0xe4, 0x2c, 0xe8, 0xcc, 0xb3, + 0x69, 0x38, 0x47, 0xea, 0x3b, 0x84, 0x7d, 0xe8, 0x8b, 0xc8, + 0x4a, 0x0f, 0x26, 0x93, 0x74, 0x35, 0x9f, 0x77, 0x49, 0xc4, + 0xe3, 0x24, 0xea, 0x98, 0xb1, 0x97, 0xba, 0x7d, 0x1c, 0xb4, + 0x09, 0x51, 0x74, 0xd0, 0x98, 0x4c, 0x26, 0xad, 0x32, 0x47, + 0x52, 0x86, 0x37, 0xa5, 0x98, 0x65, 0x57, 0x2f, 0xe7, 0x10, + 0x10, 0xb9, 0x98, 0x5c, 0x25, 0x69, 0x94, 0x5d, 0xf5, 0x01, + 0x17, 0xc7, 0xdd, 0x9d, 0xe5, 0xf1, 0x59, 0xbf, 0x80, 0xac, + 0x64, 0xc5, 0x27, 0x34, 0xc5, 0x9d, 0x36, 0x84, 0x8f, 0x6f, + 0x77, 0xeb, 0x1a, 0xca, 0x2b, 0x61, 0x0c, 0x6a, 0xc0, 0xe2, + 0x86, 0xf3, 0xfe, 0xc8, 0x4d, 0xb0, 0xc0, 0x09, 0x72, 0xb8, + 0xe2, 0xaf, 0x88, 0xc5, 0x8a, 0x58, 0xa2, 0x5c, 0xc4, 0x05, + 0x04, 0xfb, 0xf3, 0xa0, 0x6d, 0x83, 0xd4, 0xa9, 0xb3, 0x71, + 0x41, 0xeb, 0xe7, 0xb0, 0x0c, 0xcb, 0x55, 0xb1, 0x07, 0xaf, + 0x3d, 0x2e, 0xc3, 0x39, 0x1f, 0xb1, 0x08, 0xad, 0xf8, 0x23, + 0x9e, 0xca, 0xab, 0xd8, 0xdb, 0xc1, 0x55, 0x8d, 0x45, 0xbc, + 0xa9, 0xf7, 0x90, 0xe1, 0x30, 0xbc, 0xa6, 0x79, 0xc5, 0x0a, + 0xb4, 0x2a, 0xb7, 0x1e, 0x2a, 0xd8, 0x90, 0x6d, 0xaa, 0x0e, + 0xfb, 0x58, 0x60, 0x3f, 0xe5, 0xc8, 0x38, 0x8c, 0x32, 0xd2, + 0xf6, 0xd3, 0xb7, 0xf1, 0x65, 0x3c, 0x47, 0x45, 0x03, 0x5e, + 0x04, 0xc9, 0xc5, 0xa0, 0x04, 0xa2, 0x7a, 0x23, 0x39, 0xa1, + 0xb0, 0x1b, 0x49, 0xed, 0xe4, 0x2c, 0x2d, 0x17, 0x7b, 0x69, + 0x52, 0x72, 0x6a, 0xa4, 0x19, 0x10, 0x31, 0x7b, 0xfb, 0xe7, + 0x64, 0x3b, 0x9b, 0x4f, 0x82, 0xe1, 0x68, 0x2c, 0x0d, 0xcb, + 0xee, 0x21, 0x1b, 0x92, 0xbd, 0x1d, 0x84, 0xc4, 0x9b, 0x0f, + 0xc5, 0xf3, 0x2c, 0x5b, 0xfe, 0x03, 0x40, 0xb6, 0xd3, 0x72, + 0x32, 0x50, 0xdb, 0x0d, 0x63, 0x56, 0xbc, 0xbe, 0x46, 0x3a, + 0x79, 0x61, 0xb4, 0x01, 0x03, 0x40, 0x52, 0x0f, 0x47, 0xf9, + 0x4c, 0x04, 0x96, 0xd6, 0xab, 0x0c, 0xd3, 0x1b, 0x1c, 0xda, + 0x9b, 0x16, 0xbf, 0x4e, 0x21, 0x66, 0x98, 0xbe, 0xe0, 0x50, + 0x1f, 0xdf, 0x66, 0x61, 0x64, 0x7c, 0x0f, 0x71, 0xd2, 0x96, + 0xc3, 0xb8, 0x24, 0xd1, 0xc1, 0x77, 0x92, 0x62, 0x39, 0x0f, + 0x6f, 0x50, 0x15, 0xad, 0x14, 0x02, 0x2a, 0x71, 0x38, 0x48, + 0x7a, 0x8f, 0x13, 0x89, 0x40, 0x4e, 0x14, 0x93, 0xf6, 0x11, + 0xc9, 0x4a, 0x62, 0x34, 0x9b, 0x2c, 0xa8, 0xbd, 0x05, 0xe2, + 0xb6, 0xfd, 0xd3, 0x5f, 0x11, 0x3a, 0xf4, 0xec, 0x33, 0x34, + 0xbf, 0x77, 0xbb, 0xff, 0x9c, 0x8c, 0x71, 0x04, 0x34, 0x22, + 0x90, 0xcb, 0xa0, 0x0c, 0x4f, 0x31, 0xf1, 0xc3, 0x7c, 0x0a, + 0x84, 0x5b, 0xad, 0x5e, 0xeb, 0x8a, 0xcc, 0xf2, 0x97, 0x1b, + 0xec, 0x94, 0xdd, 0x5f, 0xa6, 0xe7, 0xd2, 0x47, 0x48, 0xf4, + 0x03, 0x5f, 0x4e, 0xa4, 0x89, 0x9e, 0x85, 0x24, 0xb8, 0x1c, + 0x22, 0x00, 0x32, 0x85, 0xfd, 0xa4, 0xeb, 0x81, 0xc0, 0xc4, + 0x78, 0x50, 0x0f, 0x4b, 0x74, 0x8e, 0x2b, 0x8f, 0xb2, 0x65, + 0x32, 0x2d, 0x14, 0x1c, 0x57, 0x31, 0xa6, 0x01, 0x54, 0x36, + 0x37, 0x03, 0xc4, 0x15, 0x52, 0x24, 0x38, 0x1c, 0xc6, 0x51, + 0x30, 0x0d, 0xfa, 0x84, 0xc3, 0x3f, 0x52, 0x7a, 0x3c, 0x1a, + 0x24, 0x69, 0x83, 0x84, 0x8d, 0xc3, 0x35, 0xbe, 0xe0, 0xdb, + 0x0f, 0x3a, 0x34, 0x40, 0x5e, 0xa6, 0xac, 0x80, 0x74, 0x8d, + 0x38, 0x73, 0x91, 0x44, 0x16, 0x47, 0x76, 0xb4, 0xee, 0x88, + 0xc5, 0xab, 0x9b, 0x6d, 0x08, 0xb0, 0xf7, 0x3e, 0x5c, 0xc4, + 0x1d, 0x1a, 0xf5, 0xb1, 0xfb, 0x79, 0x40, 0x46, 0x85, 0x6c, + 0x34, 0x9b, 0x7f, 0x0b, 0x8e, 0xb2, 0xf3, 0xf3, 0x79, 0x1c, + 0x9c, 0xc6, 0xe5, 0x55, 0x1c, 0xa7, 0x41, 0x18, 0xe1, 0x88, + 0xf9, 0x21, 0x4e, 0xd6, 0x84, 0x24, 0x3c, 0xfc, 0x80, 0x3a, + 0x21, 0x06, 0xff, 0x12, 0x8d, 0x12, 0xce, 0x6e, 0x85, 0xe3, + 0xf6, 0x41, 0xa6, 0x99, 0x32, 0x5b, 0xbe, 0x0f, 0x2f, 0x83, + 0xab, 0x19, 0xc2, 0x04, 0x28, 0x1c, 0x69, 0x71, 0x3a, 0x4f, + 0xa6, 0x17, 0x45, 0x90, 0x91, 0x4f, 0x09, 0x1a, 0xdb, 0xe0, + 0x6f, 0x9b, 0x50, 0x1b, 0xdb, 0xd6, 0x03, 0xa0, 0x45, 0x50, + 0x3b, 0x4c, 0x78, 0x42, 0x57, 0xae, 0xe9, 0xc0, 0x2c, 0x6e, + 0x48, 0x21, 0x1d, 0x18, 0x2c, 0xfe, 0xae, 0xfb, 0x53, 0xd6, + 0x97, 0x00, 0x09, 0xb3, 0xa0, 0xc5, 0x40, 0x98, 0x76, 0x20, + 0x03, 0xac, 0xa3, 0xf2, 0x40, 0x6a, 0x30, 0x21, 0xa3, 0x88, + 0x54, 0x05, 0x5e, 0x90, 0xa3, 0x90, 0x5c, 0x46, 0x2a, 0xcd, + 0x06, 0x29, 0x0b, 0x81, 0x62, 0x91, 0x98, 0xed, 0xa0, 0x23, + 0x46, 0x0c, 0xb8, 0x5d, 0x1a, 0x6d, 0x0f, 0x61, 0xcd, 0xd1, + 0xec, 0x61, 0x90, 0xf0, 0x14, 0x51, 0xe4, 0x10, 0x13, 0xc8, + 0xd3, 0xbd, 0x80, 0x6d, 0xe2, 0x8f, 0x3f, 0x94, 0xaf, 0x24, + 0x30, 0xb4, 0xf1, 0x99, 0xc8, 0x63, 0xf2, 0x5d, 0x92, 0xeb, + 0xa4, 0x65, 0x54, 0x89, 0xa0, 0xd5, 0xb8, 0x9b, 0x49, 0x91, + 0xde, 0x67, 0x57, 0x41, 0x47, 0x6b, 0x22, 0x5a, 0x4d, 0x6f, + 0x93, 0xf4, 0xa2, 0xf0, 0x61, 0x1a, 0x0a, 0xcb, 0x26, 0x02, + 0x02, 0xc4, 0x76, 0x12, 0x2c, 0x42, 0x83, 0x24, 0xf8, 0x89, + 0x93, 0xea, 0x93, 0x28, 0x97, 0xe8, 0xe3, 0xfa, 0x3a, 0x9f, + 0x10, 0x98, 0xb5, 0x8e, 0x3c, 0x64, 0x0c, 0xfa, 0x73, 0x72, + 0xd2, 0x87, 0xa8, 0x8a, 0xdd, 0x6e, 0x97, 0x40, 0x32, 0xfd, + 0x4e, 0x06, 0xc0, 0x11, 0xb0, 0xfb, 0x91, 0x90, 0x54, 0x38, + 0xb7, 0x15, 0x9d, 0x1f, 0x36, 0x95, 0x0d, 0xd0, 0x85, 0xa0, + 0xa3, 0x43, 0x46, 0xff, 0x8b, 0xb7, 0x56, 0x31, 0x60, 0xbc, + 0xf5, 0x6e, 0x91, 0x29, 0x37, 0x44, 0x65, 0x29, 0x1f, 0x31, + 0xcb, 0xaa, 0x8d, 0x3a, 0x6d, 0x0d, 0xbc, 0xdd, 0x55, 0x5b, + 0x3d, 0xb1, 0x93, 0x1b, 0xdb, 0x27, 0x1d, 0x6e, 0xd4, 0xd0, + 0xc9, 0x26, 0xe6, 0x9c, 0xd4, 0x8b, 0xe7, 0x8b, 0xb4, 0xec, + 0x4d, 0xb3, 0x79, 0x96, 0xb3, 0x5e, 0xc1, 0xf4, 0x27, 0xbd, + 0x40, 0xc4, 0x20, 0xef, 0xf1, 0x29, 0x1c, 0x13, 0xf5, 0x53, + 0xd1, 0x4b, 0x80, 0xd4, 0x5e, 0x34, 0xc1, 0x84, 0xfa, 0x49, + 0x34, 0x16, 0x2c, 0x84, 0x66, 0xf4, 0x63, 0x8e, 0xf7, 0xa8, + 0xf8, 0x2a, 0xf8, 0xf8, 0xe1, 0x6d, 0x87, 0xc0, 0x80, 0x26, + 0x45, 0x59, 0xc5, 0x20, 0x84, 0xe0, 0x27, 0x14, 0xaf, 0x3f, + 0x0b, 0x8b, 0x19, 0x01, 0x13, 0x4d, 0xf1, 0x64, 0x47, 0x16, + 0x3c, 0xdd, 0xcd, 0x91, 0x14, 0xc2, 0xca, 0x93, 0xa2, 0xb8, + 0x8e, 0x49, 0xbe, 0xb2, 0xe6, 0x7d, 0x97, 0xb5, 0x62, 0xb2, + 0xee, 0x69, 0x38, 0xbd, 0x80, 0xdc, 0x7b, 0x69, 0x04, 0x9e, + 0xfe, 0x39, 0xb4, 0x4e, 0x65, 0x20, 0xca, 0xb7, 0x86, 0x3c, + 0x42, 0xc2, 0x11, 0x14, 0x3d, 0xb1, 0x0c, 0x23, 0x51, 0x56, + 0xb3, 0xaa, 0xc8, 0x24, 0xba, 0xea, 0xc7, 0x9c, 0xa4, 0xcb, + 0x47, 0xf9, 0xd4, 0xc2, 0x79, 0xf1, 0x4b, 0x82, 0x13, 0x90, + 0x84, 0x49, 0x5a, 0x74, 0x20, 0x2a, 0x69, 0x2f, 0xb8, 0x88, + 0x6f, 0xf0, 0x8a, 0xa7, 0x8d, 0xa2, 0x52, 0x8c, 0x28, 0x0b, + 0x7d, 0x54, 0x48, 0xe0, 0x50, 0xfb, 0x90, 0xa0, 0xec, 0xa0, + 0xdf, 0xc1, 0xe4, 0x05, 0x6b, 0x3f, 0x85, 0x85, 0x60, 0xad, + 0xd9, 0x19, 0x0e, 0x72, 0xfa, 0x19, 0x01, 0x9c, 0xe0, 0x4d, + 0xa0, 0x9d, 0x61, 0x0a, 0xed, 0xe0, 0xef, 0x54, 0x14, 0xe8, + 0x35, 0x63, 0x50, 0x5e, 0x7d, 0x8f, 0x84, 0x94, 0xed, 0x06, + 0xcf, 0x03, 0x5c, 0x07, 0xa2, 0x40, 0x4b, 0x68, 0xb7, 0xba, + 0x63, 0xb7, 0x44, 0xfd, 0x32, 0x4b, 0xa2, 0xf8, 0x0b, 0x1a, + 0x84, 0xd5, 0x22, 0xed, 0xe0, 0x88, 0xad, 0x7b, 0x11, 0xac, + 0xae, 0x2f, 0x69, 0xd6, 0x43, 0xcc, 0xf1, 0x05, 0x60, 0x68, + 0xff, 0x90, 0xe2, 0x42, 0x96, 0xc9, 0x29, 0xdd, 0xea, 0x29, + 0x38, 0x21, 0x0f, 0xa5, 0x84, 0x39, 0x90, 0xea, 0x98, 0xfc, + 0x84, 0x80, 0xfa, 0x79, 0x76, 0xc5, 0xf9, 0x42, 0xb0, 0x05, + 0x00, 0xf2, 0xe5, 0x06, 0xa1, 0x28, 0x10, 0x31, 0x06, 0x0d, + 0x8c, 0x02, 0x9f, 0x8a, 0xcf, 0xa4, 0x09, 0x6c, 0x53, 0x07, + 0xb6, 0xa0, 0x8d, 0x61, 0x8c, 0xc0, 0xa4, 0x23, 0x25, 0x42, + 0xb6, 0xbd, 0xb7, 0x48, 0xff, 0xec, 0xe3, 0x0d, 0x3e, 0xee, + 0xb4, 0xa1, 0x67, 0xf4, 0xbc, 0x03, 0x4c, 0x40, 0x02, 0x76, + 0xdb, 0x51, 0x90, 0x7a, 0xa0, 0xc0, 0xa3, 0x26, 0x06, 0xf2, + 0x6e, 0xa9, 0x0c, 0x1b, 0xe2, 0x33, 0xe8, 0xf8, 0x17, 0xa2, + 0x38, 0x7d, 0xa1, 0xa9, 0x69, 0xce, 0xce, 0xa1, 0x89, 0x3b, + 0xa4, 0x8c, 0x9f, 0x9d, 0xd0, 0xb6, 0x4f, 0xb2, 0xa7, 0xd0, + 0xc4, 0x83, 0xdd, 0x3e, 0xc5, 0x8e, 0x26, 0x1c, 0x78, 0xcc, + 0x41, 0xed, 0x49, 0x27, 0x87, 0xb7, 0xc2, 0x1a, 0xd5, 0x60, + 0x19, 0x69, 0xad, 0x7d, 0xc0, 0x79, 0xc6, 0xed, 0x6a, 0x60, + 0x96, 0xef, 0x0f, 0xc1, 0x4c, 0x21, 0x13, 0xe9, 0x9b, 0x97, + 0x35, 0x08, 0x52, 0x0a, 0xab, 0x6a, 0x40, 0x2d, 0x33, 0x54, + 0x35, 0xb0, 0x9c, 0x5f, 0xc9, 0x09, 0xf9, 0x95, 0xcc, 0x2e, + 0x3d, 0x3d, 0x43, 0x18, 0x82, 0x62, 0x36, 0xc5, 0x27, 0x7b, + 0xd9, 0x62, 0x83, 0x26, 0x94, 0xac, 0xc5, 0x60, 0x73, 0x73, + 0x9a, 0x45, 0x31, 0xcd, 0x5c, 0x04, 0xd6, 0x17, 0xe3, 0xdc, + 0x8d, 0x08, 0xb0, 0xf9, 0x0f, 0x10, 0x38, 0x3e, 0x01, 0xa1, + 0x6f, 0x88, 0x9c, 0x0d, 0xb4, 0x5f, 0xac, 0x4e, 0x21, 0xf6, + 0x7e, 0x7a, 0xde, 0x19, 0x76, 0xc7, 0x08, 0xfe, 0x60, 0x85, + 0x0e, 0x1a, 0x18, 0x01, 0xa9, 0xda, 0x08, 0x39, 0x81, 0xa6, + 0xf6, 0x84, 0xea, 0x4a, 0xb5, 0xe5, 0xbf, 0x04, 0xe0, 0x43, + 0x83, 0x86, 0x83, 0x84, 0x78, 0xc7, 0x55, 0x49, 0x86, 0x9e, + 0x00, 0xf1, 0x33, 0xd0, 0x20, 0x5d, 0x89, 0x82, 0x49, 0x7b, + 0xdd, 0x56, 0xfb, 0x7a, 0xfb, 0x79, 0xd0, 0x5e, 0xc7, 0x4d, + 0x1e, 0x57, 0x91, 0x41, 0xe8, 0xb6, 0xad, 0x8f, 0xa0, 0x5b, + 0x47, 0x80, 0x91, 0x33, 0xcc, 0x07, 0x14, 0xf5, 0x01, 0x3d, + 0xe3, 0x4b, 0x6a, 0x95, 0x1d, 0xac, 0x6a, 0x7c, 0x09, 0x9e, + 0x0d, 0x02, 0x69, 0x9c, 0x7f, 0x99, 0x11, 0xfd, 0x14, 0x58, + 0x81, 0xa6, 0x0a, 0xdb, 0x47, 0xea, 0x04, 0xd8, 0x59, 0x40, + 0x95, 0xef, 0x30, 0xd1, 0xb0, 0x26, 0x2b, 0x3b, 0x6e, 0x8a, + 0x7d, 0x70, 0x80, 0xbd, 0xde, 0x3f, 0xeb, 0xb4, 0xff, 0xd2, + 0xee, 0x06, 0x0f, 0x90, 0x94, 0xdd, 0x18, 0x8a, 0x76, 0x08, + 0x91, 0x06, 0x75, 0xec, 0x45, 0x3e, 0xb3, 0xbd, 0xde, 0x06, + 0xd8, 0xf6, 0x98, 0x93, 0x00, 0x99, 0xca, 0x29, 0x18, 0xcd, + 0x84, 0xb3, 0x94, 0x3a, 0x35, 0xb4, 0x2a, 0x34, 0x05, 0x52, + 0xcd, 0x02, 0x9e, 0x6e, 0x65, 0xec, 0x5f, 0xc7, 0xd4, 0xa6, + 0x48, 0x99, 0x96, 0xb8, 0xe4, 0x56, 0xd3, 0x4c, 0xa5, 0x25, + 0xd7, 0x1c, 0xab, 0x87, 0x9c, 0x2e, 0x9e, 0xaf, 0xb6, 0xe5, + 0x37, 0x47, 0x07, 0x7d, 0x34, 0x76, 0x61, 0x71, 0x93, 0x4e, + 0x95, 0xe5, 0x87, 0x51, 0x42, 0x78, 0x99, 0x14, 0xec, 0xa7, + 0x58, 0x6c, 0x75, 0xb4, 0x7d, 0x4d, 0xc5, 0x11, 0x50, 0x14, + 0xd7, 0x66, 0x45, 0x58, 0x43, 0x02, 0x82, 0x26, 0x20, 0xed, + 0x18, 0x95, 0xa1, 0xf3, 0x33, 0xd8, 0xe3, 0x0e, 0xb9, 0x85, + 0x00, 0x55, 0x48, 0xf4, 0x82, 0xaf, 0xbd, 0xe1, 0x68, 0x80, + 0xfe, 0x47, 0x7b, 0xef, 0xda, 0x10, 0x3a, 0x78, 0xa3, 0xa2, + 0x7a, 0x53, 0x82, 0x34, 0xf1, 0x5f, 0x60, 0xb3, 0x61, 0x13, + 0x4a, 0xfa, 0x02, 0x96, 0x2a, 0x9c, 0x48, 0x90, 0xc8, 0x29, + 0x56, 0xb8, 0x08, 0x2f, 0x88, 0xc9, 0x05, 0xcb, 0xf4, 0xce, + 0x40, 0xfa, 0x0c, 0xf6, 0x27, 0xcb, 0xe7, 0x6d, 0x65, 0x17, + 0x90, 0xe9, 0x98, 0xb9, 0xd3, 0x3a, 0x2a, 0x1e, 0x54, 0x64, + 0xfb, 0x0e, 0x35, 0x29, 0xdf, 0x79, 0x93, 0x8f, 0xd9, 0xe6, + 0x81, 0x8e, 0x74, 0x8e, 0xfe, 0x40, 0x66, 0x1e, 0x47, 0xd1, + 0xce, 0x4d, 0x6a, 0x2d, 0x7d, 0x1f, 0x97, 0xae, 0xef, 0xea, + 0xe8, 0xf0, 0x92, 0x03, 0xb4, 0xd1, 0x38, 0x8a, 0x20, 0x93, + 0xaa, 0xbd, 0x04, 0x8f, 0xab, 0xa3, 0x0c, 0x0f, 0xae, 0xab, + 0x8c, 0x8d, 0x63, 0x65, 0x21, 0x0c, 0xb2, 0x0a, 0x23, 0xfe, + 0xc3, 0xa1, 0x77, 0x0f, 0x77, 0x92, 0x9c, 0x95, 0x1b, 0xc6, + 0x4a, 0x21, 0x3b, 0x0a, 0x18, 0x11, 0xf2, 0xb1, 0x23, 0x06, + 0x11, 0x03, 0xf7, 0x82, 0x91, 0xe0, 0xc0, 0x73, 0x9c, 0xa0, + 0xa4, 0x8c, 0xf7, 0xd3, 0x6d, 0x59, 0x66, 0xa8, 0x47, 0xe6, + 0x8e, 0x64, 0x77, 0xb0, 0x1c, 0x88, 0x54, 0x81, 0x0c, 0x40, + 0x68, 0x15, 0x5b, 0xe0, 0xba, 0x0f, 0x64, 0x4b, 0xf6, 0x9a, + 0x03, 0x48, 0x5b, 0xf0, 0x6b, 0x1e, 0x62, 0xc1, 0x4f, 0x78, + 0x7c, 0x25, 0x63, 0x69, 0x59, 0xf0, 0x20, 0x3a, 0xd0, 0x62, + 0xdd, 0x09, 0xcb, 0x50, 0x13, 0x18, 0xc0, 0x0e, 0xd8, 0xf0, + 0xef, 0x66, 0x08, 0x6e, 0xd1, 0xb5, 0xb2, 0x84, 0xbb, 0x14, + 0x33, 0x93, 0x63, 0x21, 0x60, 0x66, 0x6a, 0xbe, 0x48, 0x2c, + 0x7c, 0x26, 0x1d, 0x4a, 0xb4, 0x4e, 0x63, 0x11, 0xf5, 0x16, + 0x6c, 0x70, 0x1d, 0xf9, 0x38, 0x4c, 0x0c, 0x75, 0x93, 0xe0, + 0xf7, 0xaf, 0xec, 0xdc, 0x8a, 0x7e, 0xf7, 0xb1, 0x1d, 0x8b, + 0x18, 0xa3, 0xf4, 0x0c, 0x23, 0xdd, 0x3e, 0x3e, 0x44, 0xc8, + 0xd0, 0xcb, 0xab, 0x48, 0x01, 0xe6, 0x39, 0x3b, 0x14, 0x58, + 0xa4, 0x64, 0x81, 0xbc, 0xc6, 0x8d, 0x5f, 0x66, 0x45, 0xf9, + 0x4f, 0x74, 0x3e, 0xe9, 0xb4, 0xc2, 0x55, 0x39, 0x6b, 0xf5, + 0xfe, 0x79, 0xb8, 0xff, 0xbe, 0x4f, 0xb6, 0xbb, 0xe4, 0xec, + 0xa6, 0x83, 0xc9, 0x76, 0x19, 0x6f, 0x5e, 0x25, 0xe5, 0x74, + 0x16, 0x74, 0x10, 0x7e, 0x1f, 0xa0, 0xb9, 0xd4, 0x9d, 0x42, + 0x1e, 0x90, 0x01, 0x3a, 0xcc, 0x84, 0xf3, 0x38, 0x2f, 0x83, + 0x4e, 0x8b, 0xe7, 0x61, 0x51, 0xb2, 0xb6, 0x04, 0x57, 0x39, + 0x3c, 0x4c, 0x46, 0x2a, 0xd3, 0x69, 0x1e, 0x87, 0x17, 0x63, + 0x09, 0x79, 0x68, 0x45, 0x76, 0xc3, 0x8f, 0x24, 0xf8, 0x83, + 0x7a, 0xf2, 0x5b, 0x08, 0xfc, 0xf7, 0x35, 0x65, 0xdf, 0x17, + 0xd7, 0x27, 0x74, 0xc4, 0xdc, 0x97, 0x3b, 0x62, 0x37, 0x77, + 0x5d, 0xc0, 0x28, 0x77, 0x31, 0xb0, 0x85, 0x48, 0x0a, 0x42, + 0x83, 0x7b, 0x1b, 0xb3, 0x0e, 0x72, 0x65, 0xa2, 0x52, 0x5c, + 0xb3, 0x5e, 0xab, 0x70, 0x1b, 0xfd, 0xda, 0x9a, 0x61, 0x0e, + 0x72, 0x22, 0x69, 0x84, 0x2d, 0x55, 0x6b, 0x64, 0xf9, 0x5f, + 0xf2, 0x3d, 0x4f, 0xa0, 0x92, 0xb1, 0x8b, 0x30, 0x7f, 0x53, + 0xd6, 0x9a, 0xa7, 0x55, 0xca, 0x86, 0x24, 0x65, 0x21, 0xea, + 0x82, 0xe2, 0xb6, 0x48, 0x4a, 0xb9, 0x01, 0x32, 0x63, 0x70, + 0x0d, 0x48, 0xb7, 0x21, 0x88, 0xc3, 0x76, 0x5c, 0xa2, 0x7e, + 0xe0, 0x05, 0x54, 0xd0, 0xf3, 0x47, 0x14, 0x74, 0xe8, 0xc9, + 0x5d, 0x18, 0x8b, 0x71, 0x0e, 0x17, 0xc5, 0x30, 0xf3, 0xef, + 0x55, 0x9c, 0xdf, 0x90, 0x44, 0xd6, 0x59, 0x8e, 0x48, 0x74, + 0x3e, 0xb7, 0x31, 0x50, 0xbb, 0xd7, 0x26, 0x49, 0x2c, 0xdb, + 0x27, 0x4c, 0xb0, 0x63, 0xdc, 0x3e, 0x3a, 0x85, 0xbf, 0x0e, + 0xa7, 0xb3, 0x0e, 0xdc, 0x31, 0xbd, 0xe0, 0x07, 0x11, 0x34, + 0x87, 0xe2, 0x08, 0x24, 0xad, 0x5f, 0x61, 0x1d, 0x50, 0x9a, + 0x8b, 0x86, 0x29, 0x81, 0xf4, 0x81, 0x7b, 0x07, 0xe8, 0x6c, + 0x8c, 0xd6, 0x68, 0xd1, 0xc1, 0xd4, 0x8f, 0xe2, 0xeb, 0x52, + 0x69, 0xee, 0x92, 0x24, 0x95, 0x46, 0x0d, 0xde, 0xfc, 0xbf, + 0x9d, 0xd1, 0xa3, 0xcf, 0x83, 0x8d, 0x47, 0x27, 0x7f, 0x8c, + 0xd0, 0x3f, 0x0f, 0x4f, 0xd0, 0x7f, 0x9e, 0x9d, 0xfc, 0xf1, + 0x79, 0x30, 0x3c, 0xf9, 0x3b, 0xfe, 0x13, 0xff, 0xe7, 0xef, + 0xdd, 0xff, 0xd3, 0xff, 0x31, 0x70, 0xff, 0x6b, 0x53, 0x6c, + 0x7f, 0xbc, 0x2f, 0x44, 0x92, 0xf5, 0x51, 0x0f, 0xd0, 0x80, + 0xb1, 0xce, 0x74, 0xc5, 0xf1, 0x8d, 0xcf, 0x02, 0x94, 0x0c, + 0xfb, 0x90, 0xdb, 0x69, 0x88, 0xfe, 0x9e, 0x0a, 0x89, 0xce, + 0x6f, 0xc0, 0x05, 0xdf, 0x2a, 0xeb, 0x25, 0x20, 0xa2, 0xa5, + 0xd3, 0x82, 0x7c, 0x63, 0x38, 0xd1, 0x18, 0x8e, 0x40, 0x07, + 0x79, 0xc6, 0x52, 0x34, 0xdb, 0x97, 0x30, 0xce, 0xc1, 0xde, + 0x41, 0x40, 0x87, 0xf9, 0x41, 0x8b, 0xd3, 0x6d, 0x50, 0xb7, + 0xa4, 0xd1, 0x3a, 0x8c, 0xfc, 0x58, 0xfa, 0xec, 0x9d, 0xc1, + 0x76, 0x45, 0x6e, 0xe9, 0x3a, 0xe4, 0x44, 0x0f, 0xe2, 0x9a, + 0x75, 0x17, 0x9b, 0x6f, 0xb0, 0x38, 0xcb, 0xae, 0x26, 0x83, + 0x31, 0xfc, 0xf3, 0x93, 0x80, 0xe2, 0x16, 0x3e, 0xf4, 0x19, + 0x1b, 0x73, 0x02, 0x71, 0x72, 0x6b, 0xc3, 0x05, 0xe6, 0xb0, + 0x4d, 0x4e, 0xac, 0x0c, 0xe1, 0x33, 0x02, 0x3c, 0xe9, 0x9a, + 0xc3, 0x23, 0x30, 0x46, 0x9e, 0x18, 0x5f, 0xd7, 0x64, 0xfb, + 0x9a, 0xe8, 0xac, 0xce, 0xb4, 0xb4, 0x93, 0xe2, 0x2a, 0xf2, + 0x9e, 0x3b, 0x79, 0x14, 0xe6, 0x68, 0x7f, 0x6e, 0xd6, 0xcd, + 0x63, 0x60, 0xb0, 0xfb, 0xe8, 0xa7, 0xd2, 0x53, 0xa1, 0xd7, + 0x13, 0x05, 0xdd, 0xec, 0x27, 0xb9, 0xfb, 0xbb, 0x14, 0x30, + 0x64, 0x67, 0x6a, 0x4b, 0x5f, 0x98, 0x71, 0x4c, 0xfa, 0x84, + 0x0e, 0xb9, 0x48, 0x93, 0x7c, 0x73, 0xf4, 0xee, 0xed, 0x84, + 0x19, 0x66, 0xe7, 0x38, 0xf5, 0x34, 0xd8, 0x07, 0x8b, 0xe4, + 0x37, 0xa0, 0x32, 0x1c, 0x4a, 0x68, 0xd2, 0xbd, 0xf0, 0xa4, + 0x92, 0xc7, 0xc4, 0xe2, 0x33, 0xf0, 0x34, 0xd3, 0xae, 0xa8, + 0x6c, 0x7d, 0x32, 0x92, 0x8d, 0xc3, 0xe6, 0x3d, 0x73, 0xe5, + 0x84, 0x6b, 0x35, 0x0a, 0x20, 0xef, 0x0a, 0xbd, 0x78, 0x65, + 0x7d, 0x68, 0x70, 0x0b, 0xbd, 0xdf, 0x45, 0x47, 0xf2, 0x0f, + 0xe8, 0x70, 0x3d, 0x09, 0xd4, 0x01, 0x46, 0x1a, 0x49, 0x89, + 0xbe, 0xf3, 0xd3, 0x9b, 0xa8, 0x46, 0xb2, 0xab, 0x8b, 0x36, + 0xa9, 0x26, 0xf5, 0x35, 0x66, 0x31, 0x25, 0xc4, 0x29, 0xb9, + 0x6d, 0xf4, 0x51, 0x6c, 0x4d, 0xf8, 0x8a, 0x2a, 0x99, 0x4c, + 0x46, 0xe4, 0x12, 0x0e, 0xfd, 0xb5, 0xd5, 0x95, 0xb4, 0x02, + 0x6c, 0xfb, 0x24, 0xbb, 0x1f, 0xce, 0xc4, 0x8a, 0xa8, 0xb5, + 0x47, 0x83, 0xe5, 0x35, 0x37, 0x44, 0x7c, 0x95, 0xe8, 0x20, + 0xe4, 0x87, 0x35, 0xb8, 0xc3, 0x2d, 0x0b, 0xf2, 0x57, 0x7d, + 0x18, 0x61, 0x08, 0x87, 0x63, 0xd7, 0x08, 0xb2, 0x01, 0x24, + 0xc8, 0x9a, 0x75, 0x58, 0x1e, 0x3e, 0x6c, 0x25, 0x86, 0xe5, + 0x43, 0xed, 0xc4, 0x0f, 0x99, 0x89, 0x18, 0x70, 0xb0, 0x57, + 0x05, 0x17, 0x9b, 0x53, 0xb4, 0x3f, 0x97, 0x31, 0xbd, 0xd4, + 0xe8, 0xb4, 0x93, 0xc5, 0xb9, 0x64, 0x0d, 0x86, 0xa3, 0xd5, + 0xcb, 0x92, 0xe6, 0xbc, 0xec, 0xb4, 0x41, 0x43, 0x6c, 0xf7, + 0x82, 0x36, 0xbb, 0xf3, 0x3f, 0x07, 0x6f, 0x28, 0x54, 0x8d, + 0x13, 0x21, 0x89, 0x1a, 0x81, 0xe3, 0x21, 0x43, 0x3b, 0xf6, + 0x2c, 0x86, 0xb4, 0x8e, 0xcf, 0x61, 0xc4, 0xc6, 0x72, 0x6b, + 0x94, 0x4b, 0x5b, 0xb4, 0x25, 0x9c, 0xa7, 0xa8, 0xbb, 0x30, + 0xab, 0x88, 0x36, 0x9c, 0x20, 0xf8, 0x25, 0x1f, 0x37, 0x5e, + 0x87, 0x4b, 0x74, 0x36, 0x8a, 0xb6, 0x67, 0xc9, 0x1c, 0xfc, + 0xc3, 0xba, 0x63, 0xf9, 0xda, 0xa2, 0x72, 0x1c, 0xa2, 0xe4, + 0xd2, 0xab, 0x66, 0xa5, 0xda, 0x58, 0xad, 0x50, 0xa3, 0x0d, + 0x3b, 0xe9, 0xfb, 0x2c, 0x42, 0xfd, 0x6c, 0x33, 0xf5, 0x7e, + 0xcd, 0xf4, 0x9e, 0x80, 0x69, 0xdb, 0x18, 0x9e, 0xa0, 0x7a, + 0xe2, 0x79, 0x7d, 0x6f, 0x54, 0x80, 0x1a, 0x2e, 0x78, 0x74, + 0x32, 0xf6, 0xe8, 0x39, 0x51, 0x9b, 0x9c, 0x73, 0x04, 0x77, + 0x31, 0x30, 0xa9, 0x24, 0x83, 0x77, 0x3d, 0xaf, 0x14, 0x54, + 0x99, 0x3c, 0xf0, 0xe3, 0x15, 0x6f, 0x70, 0x58, 0xf4, 0x80, + 0xb0, 0xe5, 0x6e, 0x02, 0xcf, 0xc0, 0xd8, 0x0e, 0x6a, 0x00, + 0x93, 0x14, 0x83, 0x0c, 0x2a, 0x69, 0x61, 0x90, 0xe1, 0xa0, + 0x02, 0x48, 0xe3, 0xdf, 0xe1, 0x23, 0xb4, 0xe2, 0x9d, 0xc0, + 0x68, 0xd4, 0xa3, 0x2c, 0x9d, 0xdf, 0x20, 0x78, 0x90, 0xb3, + 0x1c, 0xf0, 0xbe, 0x66, 0xfb, 0xf1, 0x7d, 0xce, 0x36, 0x49, + 0xd9, 0xe8, 0x3f, 0xdb, 0xaf, 0x30, 0xfc, 0x06, 0x4c, 0xa2, + 0xba, 0xa1, 0x23, 0xd6, 0xee, 0x27, 0xd1, 0xb5, 0x27, 0x17, + 0x48, 0x64, 0x1a, 0xc8, 0x0d, 0x10, 0xd3, 0x63, 0x92, 0x3e, + 0x7b, 0x0b, 0x4d, 0xc1, 0xf8, 0x32, 0x81, 0xf0, 0x44, 0xf3, + 0xa4, 0xbc, 0x79, 0x3e, 0x4b, 0xa2, 0x28, 0x4e, 0xc7, 0xee, + 0x8e, 0x60, 0x4d, 0x17, 0x9a, 0x80, 0x0e, 0x41, 0x6e, 0x28, + 0xc8, 0x5e, 0x99, 0x4c, 0x2f, 0xf0, 0xe1, 0x82, 0xb4, 0x14, + 0x9b, 0xa4, 0xbb, 0x63, 0x9f, 0x59, 0x5c, 0xd3, 0x94, 0x09, + 0x7d, 0xe2, 0x06, 0x27, 0x42, 0xbf, 0x40, 0x33, 0x87, 0x4a, + 0x74, 0x9a, 0xee, 0x2b, 0x39, 0x3f, 0xdd, 0xc1, 0x97, 0x85, + 0x86, 0x43, 0xc6, 0x43, 0x78, 0xe3, 0x58, 0x56, 0xf0, 0xd1, + 0x92, 0x37, 0x60, 0x6d, 0x69, 0x9d, 0x52, 0x2c, 0xfa, 0x86, + 0xfa, 0x54, 0x1a, 0xc0, 0x6c, 0x2a, 0xcf, 0xb2, 0xb4, 0xdc, + 0x80, 0x35, 0xfe, 0xfc, 0x29, 0x9a, 0xc1, 0x05, 0x52, 0x29, + 0x93, 0x74, 0xa3, 0xcc, 0x96, 0xcf, 0x95, 0x3d, 0xc1, 0x3e, + 0xcc, 0x4b, 0xb1, 0x56, 0xd6, 0xee, 0xd6, 0xe6, 0xa5, 0x7f, + 0x83, 0x6f, 0xdf, 0x44, 0xdf, 0xc9, 0x18, 0xf1, 0xc9, 0xb8, + 0xfb, 0x44, 0x8c, 0xfe, 0x6c, 0x13, 0x31, 0xfa, 0x96, 0x13, + 0xa1, 0xab, 0x62, 0x75, 0x9a, 0xd5, 0x40, 0x97, 0xb1, 0x3e, + 0x2b, 0xd3, 0x4d, 0x05, 0xfd, 0x01, 0xc7, 0x56, 0xe1, 0x0b, + 0xd3, 0x7e, 0x9f, 0xb5, 0xeb, 0x90, 0x86, 0x26, 0x12, 0xc8, + 0xe0, 0x3a, 0xb4, 0x91, 0x81, 0xf6, 0x5f, 0xb5, 0x38, 0x5b, + 0x06, 0xce, 0xe2, 0x65, 0x2d, 0xd2, 0x43, 0x03, 0x09, 0xab, + 0x4a, 0xb5, 0x78, 0x8f, 0x54, 0xe9, 0xd7, 0x26, 0xa7, 0xc9, + 0xa0, 0xbe, 0x95, 0x4f, 0x34, 0xc4, 0x77, 0x70, 0x09, 0x5c, + 0x8b, 0xf5, 0x54, 0xc3, 0x02, 0x5b, 0x7a, 0xb0, 0x9d, 0xad, + 0xd2, 0xb2, 0x16, 0xf5, 0x99, 0x86, 0xba, 0x0d, 0x4e, 0x96, + 0x9e, 0xb8, 0x43, 0x4d, 0xc8, 0xb7, 0x77, 0x90, 0x36, 0xa0, + 0xe0, 0xd2, 0x03, 0xe5, 0x5e, 0x74, 0x3d, 0x61, 0x47, 0x49, + 0x1f, 0xd1, 0xee, 0xae, 0x92, 0x10, 0x5b, 0x5f, 0xd7, 0xc7, + 0x17, 0xdb, 0x24, 0xc6, 0x77, 0xc0, 0x1e, 0xb5, 0x75, 0xdf, + 0xa4, 0x9a, 0x93, 0x64, 0xe3, 0x5a, 0x98, 0x49, 0xc1, 0xb3, + 0x95, 0x3a, 0x36, 0x31, 0x2e, 0x28, 0xae, 0x5d, 0x3e, 0x8b, + 0x9b, 0xa9, 0xcb, 0xfe, 0xfa, 0x93, 0x53, 0x7d, 0x62, 0x79, + 0xa6, 0x9d, 0x80, 0x4c, 0x7f, 0x32, 0x0c, 0xb0, 0x0e, 0x78, + 0x22, 0x16, 0x7d, 0xa1, 0x85, 0xba, 0x82, 0x31, 0x50, 0xfb, + 0x39, 0x4e, 0x47, 0xe8, 0x2c, 0xf1, 0xdc, 0xcf, 0x07, 0x31, + 0x50, 0x45, 0x9e, 0x55, 0xc1, 0xb1, 0x5f, 0xa1, 0x15, 0xf8, + 0x96, 0x67, 0x27, 0x2e, 0xc3, 0x64, 0x1e, 0x47, 0xba, 0x6f, + 0x03, 0x78, 0xb8, 0x60, 0x80, 0x8d, 0x88, 0x42, 0x48, 0x8f, + 0x3d, 0xaa, 0x08, 0x69, 0xef, 0x1b, 0x34, 0x4b, 0x7c, 0x35, + 0x5d, 0x62, 0x3e, 0x5a, 0x93, 0x78, 0x03, 0x6c, 0xe9, 0x87, + 0x0a, 0xfd, 0x4e, 0x25, 0x09, 0x97, 0xdf, 0x98, 0x76, 0x39, + 0x0d, 0x6f, 0x1e, 0xe8, 0x05, 0x99, 0x6a, 0x7c, 0x2a, 0x39, + 0x0c, 0xb5, 0x3d, 0x89, 0x0f, 0x68, 0x66, 0xd8, 0x58, 0x5e, + 0xa1, 0xf1, 0x8d, 0x83, 0x8e, 0x28, 0x93, 0xfd, 0xc6, 0x5e, + 0x0c, 0x84, 0x55, 0x65, 0x4d, 0x02, 0x89, 0x62, 0x24, 0x45, + 0x62, 0xd9, 0x8a, 0xa2, 0x99, 0x1a, 0xa8, 0xb5, 0x46, 0x6a, + 0x9b, 0x87, 0x9d, 0x46, 0xaa, 0xc0, 0x62, 0xa6, 0x71, 0x1b, + 0x6b, 0xb6, 0x9a, 0xdb, 0x68, 0x30, 0x83, 0x29, 0x8b, 0x79, + 0x63, 0xa3, 0x3d, 0x56, 0x0d, 0x2f, 0xa3, 0x6e, 0x40, 0xec, + 0x2d, 0x56, 0x6d, 0x80, 0x1c, 0x03, 0x1e, 0x53, 0x4d, 0x60, + 0xcd, 0x61, 0x76, 0x61, 0xd6, 0x2b, 0x62, 0x7a, 0x51, 0x87, + 0x83, 0x8e, 0x86, 0x36, 0xf2, 0x3e, 0x0a, 0xbb, 0x8e, 0xe2, + 0xb3, 0xe1, 0x3b, 0x71, 0x2a, 0xf7, 0x7b, 0x7a, 0x0f, 0xdd, + 0x2a, 0x6e, 0xc0, 0xa3, 0x62, 0x63, 0x7b, 0x17, 0xae, 0x62, + 0xf0, 0xb5, 0x47, 0x1c, 0xed, 0x81, 0x43, 0xce, 0x64, 0x32, + 0xa0, 0xbe, 0x80, 0xce, 0x0a, 0x4c, 0xcd, 0x60, 0xbb, 0xcd, + 0x04, 0x03, 0xf3, 0x0a, 0x6c, 0x80, 0xbc, 0x2b, 0x35, 0x4d, + 0x1a, 0xd0, 0x17, 0xc3, 0x91, 0x32, 0x96, 0x44, 0xe2, 0x90, + 0x83, 0xdb, 0xa4, 0xf5, 0x10, 0x4c, 0x3e, 0xad, 0x8a, 0x05, + 0xa5, 0xfb, 0x6f, 0x28, 0x2b, 0x49, 0x75, 0xf1, 0xa3, 0xab, + 0x49, 0xfd, 0x08, 0x3c, 0x40, 0x1d, 0x6b, 0x6c, 0x66, 0xcb, + 0xe1, 0x56, 0x2d, 0xf7, 0xab, 0xf4, 0x7c, 0x0d, 0x95, 0x8f, + 0x1a, 0xf3, 0x7e, 0x85, 0x69, 0x10, 0xb5, 0x52, 0xb5, 0x04, + 0x6a, 0x6d, 0xf2, 0x3e, 0x50, 0x6a, 0x7a, 0x6e, 0x0d, 0x99, + 0xa1, 0xbf, 0x11, 0xd1, 0xcf, 0xa8, 0x00, 0x1c, 0x53, 0x6f, + 0x52, 0x80, 0x56, 0x61, 0x56, 0xf7, 0xb2, 0x1f, 0xf9, 0x42, + 0xab, 0xf2, 0xe1, 0x89, 0x6e, 0x69, 0xac, 0x32, 0x24, 0x0d, + 0x07, 0xbe, 0xa7, 0x7c, 0xff, 0xb1, 0x1d, 0xdd, 0xa7, 0xb1, + 0x46, 0xd7, 0x36, 0xaa, 0xc7, 0xf6, 0x25, 0xde, 0xe5, 0xfd, + 0x47, 0xd7, 0x0a, 0x7f, 0x6f, 0x03, 0xb1, 0xf5, 0x23, 0x6c, + 0x94, 0xd0, 0x26, 0x78, 0x10, 0x3b, 0xdc, 0xf0, 0x1f, 0x06, + 0x3f, 0x78, 0x95, 0xcd, 0xb0, 0x35, 0xaa, 0xda, 0x0c, 0xd9, + 0xab, 0x33, 0x42, 0xf6, 0xda, 0x5b, 0x0f, 0x2b, 0x0d, 0x53, + 0xd8, 0x49, 0x91, 0x5a, 0xb0, 0xd4, 0x57, 0xbe, 0x9d, 0xee, + 0xfd, 0x33, 0xee, 0xc3, 0x1f, 0x39, 0x5f, 0xa3, 0x86, 0xf3, + 0x35, 0xfa, 0x1f, 0x3a, 0x5f, 0x64, 0x97, 0xb0, 0xcd, 0x94, + 0x8f, 0xca, 0x51, 0x89, 0x57, 0xa9, 0x76, 0x54, 0x62, 0x9a, + 0x2a, 0x01, 0x95, 0x1c, 0x1e, 0xb8, 0xa6, 0xc5, 0x01, 0x2f, + 0x37, 0x1f, 0xd4, 0x87, 0x56, 0x54, 0x7a, 0x46, 0x75, 0x2a, + 0x15, 0x92, 0x73, 0xa7, 0xae, 0x52, 0xf0, 0x22, 0xa1, 0x50, + 0xd0, 0x67, 0xcf, 0x3e, 0x1a, 0x85, 0xf6, 0x50, 0xda, 0x43, + 0xbd, 0x96, 0xab, 0xfc, 0x8e, 0xea, 0x85, 0xa9, 0x02, 0xab, + 0xcd, 0x36, 0x34, 0x0e, 0xd1, 0xc8, 0x3b, 0xe8, 0x1b, 0x6e, + 0x22, 0x3f, 0x4e, 0xdb, 0x38, 0x6a, 0xa4, 0x6d, 0x1c, 0x35, + 0xd7, 0x36, 0x9e, 0x7e, 0x0f, 0x6d, 0xc3, 0x3d, 0xb2, 0x3f, + 0x4e, 0xd7, 0x38, 0x6a, 0xa8, 0x6b, 0x1c, 0xdd, 0x5d, 0xd7, + 0x70, 0x0f, 0xc3, 0x8f, 0xd2, 0x34, 0x8e, 0xf6, 0xcf, 0xce, + 0x0a, 0xf0, 0x8f, 0xf1, 0x1d, 0x04, 0x3f, 0x78, 0x76, 0x1f, + 0xfa, 0xc8, 0x97, 0xb1, 0x1e, 0x55, 0xdd, 0x63, 0xc6, 0x4b, + 0x72, 0x21, 0xda, 0x1f, 0xb6, 0x3d, 0x99, 0xfa, 0xa1, 0xb2, + 0x57, 0xde, 0xd3, 0x1c, 0xdd, 0xab, 0x76, 0xe1, 0x2f, 0x00, + 0xf6, 0x76, 0xfc, 0x67, 0xa7, 0x1e, 0x56, 0x1d, 0xa7, 0xe1, + 0xa3, 0xea, 0xd5, 0x2f, 0x6b, 0x04, 0xf8, 0x39, 0x04, 0x11, + 0xc1, 0x7b, 0x3b, 0xc4, 0xb9, 0xd1, 0x5f, 0x87, 0xfb, 0x9e, + 0xd7, 0xbe, 0x30, 0x10, 0xaf, 0xca, 0xd4, 0x7f, 0xd4, 0x3c, + 0x80, 0xd5, 0x61, 0x1b, 0x55, 0x8f, 0x1a, 0xbd, 0xb6, 0x6d, + 0x5f, 0x7b, 0xdc, 0xd9, 0x06, 0x6d, 0x62, 0x17, 0x43, 0x53, + 0x87, 0x6f, 0x6d, 0xfb, 0x49, 0x74, 0x3f, 0x83, 0x4a, 0x1d, + 0x4d, 0xbd, 0x46, 0x0b, 0xcd, 0xa6, 0xff, 0x68, 0x79, 0x00, + 0x37, 0x1a, 0x2d, 0x99, 0xc7, 0xa6, 0xd9, 0xf2, 0x06, 0x8d, + 0xc4, 0x6e, 0x9e, 0x2d, 0x28, 0x87, 0x35, 0x1c, 0x93, 0xaf, + 0xc2, 0xe0, 0x6b, 0xae, 0x65, 0x4f, 0xfd, 0xd3, 0x85, 0x55, + 0xa7, 0x7d, 0xba, 0xf0, 0xea, 0x75, 0x4f, 0x17, 0xa6, 0xa9, + 0x79, 0x52, 0xf1, 0x5b, 0x8b, 0x69, 0x2a, 0x9e, 0x48, 0x34, + 0x58, 0x1d, 0x30, 0xcd, 0x87, 0x43, 0x86, 0x19, 0x8b, 0x15, + 0x49, 0x46, 0xac, 0xc6, 0x3a, 0xe7, 0x71, 0x23, 0x9d, 0x93, + 0x57, 0xe9, 0xab, 0x73, 0x3e, 0xb9, 0xbd, 0xce, 0x59, 0xa3, + 0x75, 0x1e, 0x57, 0x68, 0x9d, 0xa2, 0x99, 0x77, 0xb1, 0x72, + 0x39, 0x89, 0xfc, 0x40, 0x1b, 0x17, 0x6a, 0x53, 0x33, 0x33, + 0x97, 0x27, 0xc2, 0x0f, 0xd0, 0x3d, 0xdd, 0xe3, 0xfb, 0x03, + 0xed, 0x5c, 0xa8, 0x4d, 0x4d, 0x4d, 0x5d, 0x2e, 0x94, 0x7b, + 0x1a, 0x8c, 0x1f, 0x66, 0xeb, 0x42, 0x2d, 0x6a, 0xa8, 0x84, + 0xfa, 0xa3, 0x30, 0x3d, 0x74, 0x38, 0xf2, 0xe5, 0xb2, 0xa7, + 0x5e, 0x8a, 0xe8, 0x60, 0xe0, 0xad, 0x8a, 0x3e, 0x1e, 0xdc, + 0x5a, 0x15, 0x75, 0x4f, 0xd6, 0xc3, 0x1f, 0x38, 0x59, 0xbb, + 0xf8, 0x3d, 0x7f, 0xa3, 0xc9, 0xf2, 0x43, 0xf9, 0x9f, 0x3a, + 0x59, 0x8f, 0x7e, 0xc8, 0xb9, 0x01, 0xda, 0xf3, 0x31, 0x4d, + 0x9a, 0xad, 0x2a, 0x1f, 0x04, 0x36, 0x4d, 0x4f, 0xef, 0x65, + 0x96, 0xe4, 0xd1, 0x7f, 0xf4, 0xe8, 0x1b, 0x8c, 0xfe, 0xe3, + 0x1f, 0x36, 0xfa, 0x0d, 0x0e, 0x6e, 0x7e, 0xe0, 0x77, 0x3b, + 0xbb, 0x1d, 0xff, 0x49, 0xce, 0x6e, 0x30, 0x16, 0x4d, 0x8e, + 0x6f, 0x9e, 0xf0, 0xdf, 0xfc, 0x04, 0x77, 0xfc, 0x03, 0x4f, + 0x70, 0xe4, 0xc1, 0xf3, 0xbc, 0xd1, 0x98, 0x7d, 0xeb, 0x73, + 0xdc, 0xf1, 0xfd, 0x9d, 0xe3, 0xb4, 0xd5, 0xed, 0x7b, 0x8f, + 0xe0, 0xc0, 0xaa, 0xbd, 0x45, 0x70, 0xe0, 0x79, 0xdc, 0x21, + 0x38, 0x30, 0xeb, 0xcf, 0x71, 0x2e, 0x4c, 0xf3, 0x1c, 0x47, + 0xf7, 0xd2, 0x5a, 0xcc, 0x47, 0x06, 0x26, 0x16, 0xee, 0xb5, + 0x78, 0x8f, 0xab, 0x4e, 0x8e, 0x96, 0xfb, 0x0a, 0x33, 0x54, + 0x45, 0xd0, 0xb1, 0x3d, 0x68, 0x53, 0x20, 0x34, 0x6f, 0x08, + 0xb9, 0x0c, 0x1f, 0x27, 0xef, 0xe2, 0x13, 0x61, 0x56, 0xe7, + 0x7b, 0x88, 0x1c, 0x3e, 0xfe, 0xa6, 0x8e, 0x11, 0x96, 0x86, + 0x79, 0x1f, 0x1b, 0x1d, 0x8f, 0x2d, 0x2a, 0x89, 0xdd, 0xf2, + 0x78, 0xe3, 0x7c, 0x5d, 0xb4, 0x8d, 0x5f, 0xc1, 0xb6, 0xee, + 0xf7, 0x20, 0xb4, 0xdd, 0xf4, 0x18, 0xb4, 0xdd, 0xf4, 0x10, + 0x74, 0x9b, 0xa1, 0xf3, 0x3b, 0x0c, 0x99, 0x02, 0xfa, 0xb6, + 0x63, 0xa7, 0x8e, 0x08, 0x04, 0x92, 0x6d, 0x32, 0x20, 0x3e, + 0xf0, 0xaa, 0x28, 0x7f, 0x56, 0x2d, 0xca, 0xcb, 0xa4, 0xc4, + 0xc0, 0x44, 0x76, 0x43, 0xec, 0x5b, 0x1c, 0x08, 0x38, 0x84, + 0x8a, 0xe2, 0x88, 0xe3, 0xc1, 0xf2, 0xc9, 0x96, 0x58, 0x12, + 0x90, 0xf8, 0x8b, 0xfb, 0xf8, 0x47, 0xa7, 0xfd, 0x06, 0x0d, + 0xd3, 0xe6, 0x76, 0x96, 0xcd, 0x51, 0x1b, 0x07, 0x52, 0x2d, + 0x04, 0x18, 0xd8, 0x1c, 0x21, 0x90, 0x1f, 0xb4, 0xd0, 0x49, + 0x06, 0x51, 0x18, 0x5a, 0x28, 0x0c, 0xfd, 0x28, 0xd0, 0x36, + 0x8c, 0x2c, 0x14, 0x46, 0x06, 0x05, 0xaf, 0x77, 0x7a, 0xcd, + 0xf8, 0xe8, 0xe1, 0x8f, 0xe4, 0x23, 0x88, 0xe3, 0xd8, 0xc0, + 0x27, 0xc1, 0x0f, 0xbe, 0xea, 0xbc, 0x64, 0x9d, 0x02, 0x88, + 0x64, 0xe9, 0xcd, 0x06, 0x58, 0x20, 0x83, 0x93, 0xb9, 0x2c, + 0xa5, 0x13, 0xf4, 0x33, 0x48, 0x40, 0x9e, 0x2a, 0xc2, 0x19, + 0xbb, 0x19, 0x3e, 0x98, 0xe4, 0x3c, 0xd8, 0xa1, 0xab, 0x09, + 0x49, 0x2f, 0x48, 0x44, 0x0c, 0x08, 0xa9, 0x7e, 0x54, 0x93, + 0xd1, 0x02, 0x70, 0xd1, 0xbd, 0x5e, 0x5f, 0xb7, 0x3e, 0x8d, + 0xad, 0xd2, 0x79, 0xe0, 0xed, 0xd5, 0x36, 0x1b, 0x45, 0xf1, + 0xfe, 0x4a, 0x3c, 0xef, 0xac, 0x5e, 0x62, 0x73, 0x84, 0x15, + 0x40, 0x6f, 0x01, 0x93, 0x70, 0x96, 0x84, 0xfd, 0x0d, 0x38, + 0xf3, 0xd1, 0x8f, 0xe4, 0x4c, 0xfa, 0xc0, 0xde, 0x9b, 0x33, + 0xbd, 0xe0, 0xab, 0x38, 0xb3, 0x6e, 0xf8, 0xb1, 0xbe, 0x1f, + 0x14, 0xd9, 0x2a, 0x9f, 0xc6, 0xd5, 0xec, 0xbc, 0xf8, 0x77, + 0x59, 0xde, 0x4d, 0xaa, 0x11, 0xe7, 0x91, 0x3b, 0x89, 0x35, + 0xe2, 0x44, 0xe2, 0x2b, 0xd7, 0xac, 0x24, 0x20, 0x26, 0x29, + 0xa2, 0xb0, 0x65, 0xa1, 0xb0, 0xf5, 0x3d, 0x24, 0xe3, 0xe3, + 0x1f, 0xc9, 0x7f, 0x2c, 0x28, 0x84, 0x37, 0x03, 0xfa, 0x21, + 0xdc, 0x85, 0x03, 0x4b, 0xf2, 0xb2, 0xe8, 0xfb, 0xb0, 0x20, + 0x9d, 0x7c, 0x3f, 0x0e, 0xac, 0x55, 0xad, 0xbe, 0xaf, 0x7a, + 0xd9, 0xc0, 0x5a, 0x09, 0x59, 0x16, 0xca, 0x86, 0x73, 0xdd, + 0x00, 0x47, 0x33, 0x5e, 0x0d, 0xee, 0xe6, 0x9e, 0xc7, 0xf8, + 0x01, 0x1a, 0x90, 0x84, 0x73, 0xc6, 0x10, 0xe0, 0x9d, 0x0e, + 0x71, 0xe2, 0x56, 0x79, 0x4c, 0xa5, 0x54, 0x78, 0x86, 0x86, + 0x29, 0x38, 0xcd, 0xb2, 0xd2, 0xd7, 0xca, 0x70, 0x9b, 0xf5, + 0xf9, 0xe4, 0xc7, 0x1c, 0x1e, 0x9a, 0xd8, 0xa2, 0xb7, 0xff, + 0x7b, 0xd9, 0x60, 0x09, 0xd7, 0x03, 0x7f, 0x9b, 0xf9, 0x7c, + 0x9d, 0xe2, 0xe9, 0x82, 0x38, 0x68, 0x9d, 0xeb, 0x65, 0xb7, + 0x1f, 0xfc, 0xbc, 0x9c, 0x0c, 0x07, 0x83, 0xcd, 0xeb, 0xe5, + 0xb7, 0x9c, 0xbe, 0xa7, 0x7f, 0x82, 0xe9, 0xdb, 0x79, 0xd5, + 0x60, 0xfa, 0xea, 0x81, 0x6b, 0x67, 0x04, 0x5f, 0x09, 0xf4, + 0x9a, 0xb8, 0x11, 0x3d, 0xf2, 0x13, 0xe1, 0x64, 0x8a, 0xa3, + 0x38, 0x8c, 0x60, 0x9a, 0xdb, 0xdf, 0xe8, 0x4c, 0xfa, 0xec, + 0x4f, 0x30, 0xa5, 0x60, 0xd6, 0x6a, 0x30, 0xa9, 0x3e, 0xe0, + 0x77, 0x98, 0x91, 0x8c, 0x18, 0xd9, 0xbe, 0xe1, 0x32, 0x1b, + 0x0e, 0xfe, 0x04, 0x93, 0x72, 0x94, 0x34, 0xd1, 0x74, 0x92, + 0x1f, 0x29, 0x26, 0x13, 0xf4, 0xdf, 0xf3, 0x1c, 0x76, 0xbf, + 0x04, 0x8d, 0x4d, 0x02, 0x21, 0xf8, 0xa6, 0x59, 0x1a, 0x15, + 0xdf, 0x74, 0x0e, 0x87, 0x7f, 0x86, 0x39, 0x6c, 0xb2, 0xac, + 0x8e, 0x8a, 0x6f, 0x30, 0x87, 0x43, 0xdf, 0x39, 0x2c, 0xc2, + 0xc5, 0x72, 0x8e, 0x93, 0xf5, 0x7c, 0xc7, 0x39, 0x1c, 0xfd, + 0xc8, 0xe3, 0xc4, 0xe1, 0x74, 0x86, 0x2a, 0x68, 0x62, 0x6a, + 0xf1, 0xc4, 0xa8, 0x32, 0xda, 0x59, 0x15, 0xfb, 0x08, 0x72, + 0x48, 0x24, 0xd3, 0xe0, 0x22, 0xb9, 0xdb, 0x01, 0x01, 0xde, + 0x17, 0x33, 0x32, 0x7e, 0xa7, 0x84, 0xea, 0xa8, 0x34, 0xdb, + 0xa2, 0xd3, 0x7a, 0x6c, 0x9a, 0x3a, 0x6e, 0xc2, 0x48, 0xd8, + 0x34, 0xc2, 0xcc, 0x90, 0xd3, 0x70, 0x3e, 0x5d, 0xcd, 0x71, + 0x40, 0xf3, 0x6f, 0xca, 0x53, 0x5b, 0xff, 0x99, 0x72, 0x81, + 0xa8, 0x31, 0x41, 0x3b, 0x4c, 0x6f, 0x3c, 0x85, 0xc7, 0xcf, + 0x4d, 0x36, 0x80, 0x9f, 0x93, 0xfb, 0x7d, 0xad, 0xe8, 0xbb, + 0x01, 0x60, 0x1b, 0x0f, 0xe2, 0x38, 0x36, 0xd5, 0x88, 0x05, + 0xd3, 0x52, 0x6c, 0x08, 0xdf, 0x7b, 0xf2, 0x1f, 0xfe, 0x09, + 0x36, 0x85, 0xc3, 0x5f, 0x9a, 0x88, 0x9c, 0x5f, 0xbe, 0xef, + 0xc6, 0x4e, 0x9e, 0x9b, 0x3d, 0x7b, 0x56, 0x3f, 0xf3, 0xe4, + 0x42, 0x27, 0xf8, 0x2d, 0x4b, 0xe3, 0xa0, 0x83, 0x93, 0xc3, + 0x45, 0x5d, 0xa4, 0xbb, 0xe1, 0x94, 0x19, 0x78, 0xaa, 0x82, + 0xce, 0x60, 0xe3, 0xd9, 0xb3, 0xff, 0xea, 0x36, 0x9b, 0xf0, + 0xff, 0xe0, 0x89, 0x7b, 0xdd, 0x64, 0xe2, 0x5e, 0xff, 0xf2, + 0x7d, 0x77, 0x73, 0x32, 0x71, 0x95, 0xa1, 0xe5, 0xac, 0x33, + 0x07, 0x79, 0xbf, 0xcc, 0x99, 0x1b, 0x6e, 0x20, 0x4a, 0x7e, + 0x53, 0x77, 0xab, 0x75, 0xfa, 0xe8, 0x4f, 0x71, 0xc9, 0xf9, + 0x09, 0x47, 0x56, 0x6c, 0x30, 0xe9, 0x7e, 0x08, 0x96, 0xeb, + 0x07, 0x82, 0xe8, 0xbd, 0xc9, 0xbe, 0xa4, 0x21, 0x58, 0x68, + 0xf6, 0x82, 0x00, 0x91, 0x8b, 0x40, 0x79, 0x6b, 0xe4, 0xa6, + 0x41, 0xa3, 0x03, 0xd1, 0xfc, 0xa3, 0xce, 0x7b, 0x6e, 0x39, + 0x30, 0x0e, 0x44, 0xd5, 0xa9, 0x0e, 0x33, 0xd5, 0x1c, 0x5f, + 0x8f, 0x38, 0xd5, 0x98, 0x82, 0xe2, 0xce, 0xe1, 0x43, 0xc3, + 0xa4, 0x80, 0xaf, 0x62, 0x1b, 0x36, 0x02, 0xa6, 0x02, 0x87, + 0xa4, 0xb2, 0xdf, 0xb6, 0xde, 0xa1, 0x39, 0x70, 0x17, 0x75, + 0xc7, 0xd6, 0xd8, 0x2e, 0xa6, 0xee, 0xd0, 0x22, 0x39, 0xfa, + 0xd1, 0x6d, 0x9b, 0x24, 0x5f, 0xd6, 0xdc, 0x63, 0xd3, 0x94, + 0xb0, 0x4e, 0xb7, 0x6d, 0x9b, 0x62, 0xc6, 0xbf, 0xc7, 0xc6, + 0xfd, 0xf7, 0xf2, 0xb6, 0x0d, 0xab, 0xb0, 0x3f, 0xde, 0xa1, + 0x3d, 0x3b, 0xcc, 0xd8, 0x75, 0xa7, 0x56, 0x45, 0xcd, 0xa9, + 0x38, 0x3c, 0xa9, 0x3a, 0x68, 0x8b, 0xb9, 0x53, 0x53, 0x32, + 0xd9, 0x21, 0xeb, 0x76, 0xfc, 0x93, 0x74, 0x8a, 0x3b, 0x36, + 0xc2, 0x69, 0xfe, 0xb8, 0x4b, 0xb3, 0x8a, 0x3b, 0x37, 0xcb, + 0x79, 0xa2, 0xbf, 0x43, 0xb3, 0xc8, 0x61, 0xf0, 0x8e, 0xed, + 0xaa, 0x3e, 0x1b, 0xde, 0xa1, 0x75, 0xe8, 0xe0, 0x7b, 0xcb, + 0x96, 0xdd, 0xe2, 0x18, 0x73, 0x97, 0xfd, 0x46, 0x28, 0x60, + 0xb7, 0x6d, 0xb0, 0xac, 0xc3, 0xe9, 0x4a, 0x37, 0x92, 0x13, + 0x41, 0xa3, 0x85, 0x65, 0x34, 0x90, 0xea, 0x31, 0x77, 0x69, + 0x9b, 0x4d, 0x3b, 0xa9, 0xc8, 0x8e, 0xf9, 0x2a, 0xcf, 0x2e, + 0xe2, 0x7c, 0xef, 0x40, 0xc9, 0xad, 0xc3, 0xf2, 0x39, 0xb3, + 0x2c, 0x87, 0x04, 0x88, 0x85, 0x68, 0xc3, 0x10, 0xb3, 0x70, + 0x62, 0x42, 0xec, 0x40, 0x1a, 0x44, 0x01, 0x14, 0x25, 0x97, + 0xc3, 0x09, 0xc9, 0xae, 0x73, 0xb9, 0xa1, 0x42, 0x6e, 0xc9, + 0x70, 0xc4, 0xce, 0xa4, 0xd5, 0x09, 0x89, 0xe8, 0x21, 0xf9, + 0x95, 0x1e, 0x0d, 0x4b, 0xcd, 0xad, 0x43, 0x8a, 0xb4, 0xcc, + 0x3a, 0xcf, 0xb9, 0x83, 0xcb, 0x75, 0x75, 0x3e, 0xe1, 0x35, + 0x68, 0xa1, 0x99, 0x57, 0x13, 0x32, 0xc2, 0x2e, 0xcf, 0xf2, + 0x70, 0xc1, 0xa3, 0xd2, 0x21, 0x4a, 0xb3, 0xb0, 0x86, 0x96, + 0x9c, 0x2c, 0xe5, 0xab, 0x9c, 0xab, 0xa7, 0xb2, 0x39, 0x6a, + 0x52, 0x16, 0xad, 0x3d, 0x10, 0x87, 0xf4, 0x7e, 0x1b, 0x33, + 0xfa, 0x4e, 0x8d, 0x51, 0x29, 0x99, 0xad, 0xf9, 0x6a, 0x64, + 0xd2, 0x24, 0x7c, 0x01, 0x99, 0x40, 0xd5, 0x40, 0x86, 0x5a, + 0x33, 0xc7, 0x0e, 0xc4, 0x9d, 0x83, 0xd5, 0xe9, 0x3c, 0x29, + 0x66, 0xb7, 0xc6, 0xdf, 0x65, 0xa1, 0x01, 0x6f, 0x85, 0xbe, + 0xe5, 0x87, 0x48, 0x4e, 0x6d, 0xfa, 0x9b, 0x52, 0x58, 0x87, + 0xef, 0x92, 0x94, 0xf6, 0x40, 0x59, 0x89, 0x2c, 0xdb, 0x52, + 0x99, 0x6f, 0x2c, 0x30, 0x04, 0x24, 0xea, 0x93, 0xd3, 0xab, + 0xcb, 0x4d, 0x59, 0xae, 0x4e, 0xf7, 0x53, 0x12, 0x7f, 0x46, + 0x0a, 0x71, 0xc8, 0x26, 0x3c, 0x36, 0x67, 0xc9, 0x9a, 0x0c, + 0x3b, 0xae, 0x4e, 0xaf, 0xbc, 0xe6, 0x96, 0x25, 0x9f, 0x92, + 0xb3, 0xc4, 0x2a, 0x47, 0xd2, 0x18, 0xb7, 0xef, 0x0a, 0x95, + 0xcb, 0xeb, 0x5e, 0xea, 0x5c, 0x5e, 0x14, 0x89, 0x53, 0x24, + 0x50, 0xf4, 0xd7, 0xe5, 0xec, 0x13, 0xa6, 0x60, 0x13, 0x08, + 0x38, 0xad, 0x32, 0x45, 0x9a, 0x4c, 0x82, 0xa1, 0x94, 0x5e, + 0xbe, 0x72, 0xa5, 0xd4, 0xf4, 0x56, 0xcb, 0x3c, 0x5f, 0x93, + 0x86, 0xd9, 0x3d, 0xc2, 0xae, 0x69, 0xdf, 0x79, 0xb3, 0x7d, + 0xa0, 0x09, 0x31, 0xcb, 0xc0, 0x1d, 0x45, 0xb3, 0xe9, 0x52, + 0x9e, 0xf5, 0x5b, 0xf4, 0xb4, 0x51, 0x57, 0x44, 0x8a, 0x1d, + 0xa5, 0xb5, 0x87, 0x37, 0xc5, 0x3c, 0x3b, 0x87, 0xcd, 0xc2, + 0xd9, 0xd4, 0x02, 0x83, 0x6c, 0xe0, 0xc4, 0xc9, 0x75, 0x13, + 0x4a, 0x61, 0x49, 0x91, 0xd7, 0xb4, 0x0e, 0xbe, 0x6d, 0x67, + 0x95, 0x0e, 0xcb, 0xf9, 0x2c, 0xa5, 0xa9, 0x29, 0x7f, 0xdb, + 0xc9, 0xb3, 0xe5, 0x4e, 0x76, 0x95, 0x52, 0xb7, 0x7c, 0xda, + 0x99, 0xf2, 0xb7, 0xb6, 0xd4, 0xdd, 0x84, 0x9d, 0xee, 0xb1, + 0x4b, 0x26, 0xf1, 0xb9, 0xbf, 0x06, 0x5d, 0x10, 0x7c, 0x89, + 0x8e, 0x7e, 0x11, 0xf9, 0xc3, 0x39, 0x35, 0xe1, 0x66, 0x79, + 0xa2, 0xde, 0x2e, 0x5c, 0xf7, 0x02, 0xf4, 0x7f, 0x1c, 0xeb, + 0x94, 0xfe, 0xc3, 0xc3, 0xc5, 0x33, 0xc7, 0x4b, 0x2b, 0x7b, + 0x41, 0xea, 0xbe, 0x5f, 0xb6, 0x21, 0x67, 0x45, 0xf3, 0xe6, + 0x97, 0xbf, 0x81, 0x1f, 0xbf, 0x68, 0x9b, 0x9c, 0x39, 0x0f, + 0x17, 0x03, 0x5d, 0x04, 0x42, 0x7a, 0xf3, 0xb9, 0xfc, 0xed, + 0x84, 0x0b, 0x46, 0x41, 0x10, 0x60, 0xda, 0x5d, 0x4d, 0xc5, + 0x21, 0x9f, 0xc7, 0x72, 0x16, 0xa0, 0x0e, 0xf9, 0xc6, 0x92, + 0x1f, 0x5a, 0x56, 0x89, 0x16, 0xd2, 0x95, 0x64, 0x21, 0x8d, + 0xe4, 0x6e, 0x5d, 0x96, 0xa0, 0x68, 0x40, 0xe6, 0x8f, 0x63, + 0x33, 0xfb, 0x0f, 0x30, 0x11, 0xc7, 0xb9, 0x2c, 0x15, 0xdb, + 0x4e, 0x00, 0xd1, 0x61, 0x11, 0x73, 0xb4, 0x7a, 0x41, 0xeb, + 0x3c, 0x4f, 0xa2, 0x0d, 0x92, 0x96, 0x26, 0x78, 0x1e, 0x14, + 0xcb, 0x30, 0x0d, 0x1e, 0x8e, 0x5b, 0x5d, 0x2d, 0x90, 0x66, + 0x33, 0x02, 0x5b, 0x9c, 0x80, 0x91, 0x8b, 0x5c, 0x49, 0x54, + 0xd4, 0xdb, 0xea, 0x05, 0xac, 0x8d, 0x5e, 0xf0, 0x4f, 0x1a, + 0xc2, 0x3f, 0x6d, 0x08, 0xff, 0xac, 0x21, 0xfc, 0x70, 0xa0, + 0x21, 0x50, 0x7e, 0xd4, 0xb2, 0x39, 0x1a, 0x79, 0x3c, 0xa5, + 0x3c, 0xe2, 0x86, 0x9c, 0xa7, 0x97, 0x62, 0x4a, 0x9a, 0x6a, + 0xba, 0x70, 0xc4, 0x7e, 0x33, 0xd6, 0x14, 0x0a, 0x4a, 0x85, + 0x88, 0xcc, 0x3a, 0x12, 0x58, 0xfe, 0x9a, 0x58, 0x8a, 0x24, + 0x72, 0xd5, 0xa0, 0x8b, 0xaf, 0x9a, 0xaa, 0x84, 0xf0, 0x1c, + 0x3b, 0x54, 0x20, 0x49, 0xe5, 0x75, 0xd3, 0x0a, 0x34, 0xb5, + 0x5d, 0x27, 0x66, 0xc9, 0x7a, 0x5e, 0xd1, 0x30, 0x1d, 0x9a, + 0xd3, 0xab, 0xc8, 0x8b, 0x5e, 0x4b, 0x8e, 0xc1, 0x3a, 0x89, + 0xf1, 0x54, 0xf1, 0xb5, 0xa4, 0x08, 0xa4, 0x85, 0x50, 0x81, + 0x13, 0x8c, 0xbe, 0xcd, 0xce, 0x6b, 0x06, 0x9e, 0x81, 0x79, + 0x93, 0xd0, 0xf3, 0x32, 0x4b, 0xd9, 0xbb, 0xa7, 0x90, 0xb0, + 0x34, 0x5f, 0x74, 0xda, 0x2f, 0xf3, 0x38, 0xb8, 0xc9, 0x56, + 0x41, 0xb1, 0xa2, 0x7f, 0x5c, 0xc1, 0xa9, 0xb5, 0xcc, 0x20, + 0x05, 0x62, 0x40, 0xd8, 0x02, 0xfd, 0x99, 0x5f, 0xa2, 0x43, + 0xf7, 0xdf, 0xdb, 0x52, 0x62, 0x2a, 0x91, 0x43, 0x94, 0x54, + 0x0c, 0x19, 0x94, 0xb9, 0x1e, 0x2d, 0x0a, 0xb7, 0x17, 0x48, + 0x94, 0xfd, 0xde, 0x0a, 0x71, 0x0b, 0x5a, 0xcf, 0x21, 0x32, + 0x30, 0x02, 0x3e, 0x0c, 0x2f, 0xe3, 0xd6, 0xd7, 0xb6, 0xf6, + 0x94, 0xaa, 0x22, 0x71, 0x7c, 0xc5, 0xb0, 0xa8, 0xb0, 0x96, + 0xb1, 0x51, 0x13, 0xcb, 0x57, 0x50, 0x92, 0x00, 0x6d, 0x43, + 0x7c, 0x53, 0x7c, 0x88, 0xc1, 0xf7, 0xb2, 0x8e, 0x08, 0xc0, + 0xd8, 0xf0, 0x51, 0x9f, 0x7d, 0x5a, 0x21, 0xe0, 0x2c, 0x44, + 0x56, 0x4b, 0x48, 0xf3, 0xb8, 0xf1, 0xe9, 0x68, 0x6b, 0x54, + 0x4d, 0x85, 0x00, 0x02, 0x9c, 0x9b, 0xca, 0xe1, 0xd1, 0x3b, + 0x3f, 0x32, 0x18, 0x50, 0xa3, 0xa3, 0x4b, 0x10, 0x10, 0x60, + 0x07, 0x57, 0x11, 0x21, 0x87, 0xf5, 0x76, 0x1b, 0x3d, 0x0a, + 0x25, 0x62, 0x4b, 0x4a, 0x79, 0x48, 0x1d, 0x84, 0x21, 0x27, + 0x6c, 0x3d, 0x61, 0x0a, 0xe5, 0x45, 0x98, 0xc9, 0xa8, 0x7a, + 0xaa, 0xa7, 0x58, 0x34, 0xf9, 0xd2, 0x2d, 0x79, 0x66, 0xe2, + 0xc3, 0x69, 0x98, 0xd6, 0xcc, 0x32, 0x82, 0x60, 0x51, 0x0d, + 0x5d, 0x23, 0x4b, 0xd2, 0xd2, 0x92, 0xf7, 0xd3, 0xd5, 0xd4, + 0xa2, 0x8c, 0x26, 0x15, 0x16, 0x84, 0x64, 0x2a, 0xd9, 0xaa, + 0xf4, 0x22, 0xe3, 0x4a, 0x02, 0x1b, 0x30, 0x01, 0x54, 0x9d, + 0x7c, 0x56, 0x4e, 0x0c, 0x2b, 0xe5, 0xb8, 0x74, 0x65, 0x85, + 0x45, 0x8b, 0x0d, 0xb7, 0x9a, 0x24, 0x57, 0x72, 0x0d, 0x02, + 0x52, 0x5d, 0xe3, 0x1d, 0xfc, 0xca, 0xba, 0x46, 0x0c, 0x70, + 0x38, 0x27, 0x25, 0x9c, 0x2e, 0x74, 0xf7, 0xb0, 0x86, 0x0e, + 0x85, 0xb2, 0x53, 0x41, 0x1a, 0xd2, 0x25, 0x44, 0x36, 0x9f, + 0x67, 0x57, 0xdb, 0x76, 0xde, 0x09, 0x38, 0xa5, 0x05, 0x4e, + 0x62, 0x3d, 0x0b, 0xf3, 0xc2, 0xce, 0x3d, 0x1a, 0xc9, 0x59, + 0x72, 0x3e, 0xbb, 0x6f, 0x9a, 0x78, 0x33, 0xdc, 0x4f, 0x0f, + 0xb2, 0x2b, 0x30, 0x79, 0xdd, 0x2b, 0xe9, 0x14, 0x62, 0x24, + 0x25, 0x29, 0x4e, 0x15, 0x72, 0xcf, 0xa4, 0x17, 0xe1, 0x35, + 0xda, 0xc0, 0x3f, 0xc4, 0xcb, 0xe2, 0xbe, 0x09, 0x67, 0x97, + 0x92, 0x1e, 0x51, 0x45, 0x96, 0xc0, 0xf9, 0xcd, 0xdb, 0x7d, + 0x91, 0xa4, 0x2f, 0xde, 0x06, 0xe3, 0xe4, 0xa7, 0x27, 0xca, + 0x7b, 0x37, 0x16, 0x38, 0x6a, 0x6f, 0x07, 0x8e, 0x7b, 0xb8, + 0xd2, 0xa8, 0x15, 0xac, 0x07, 0x09, 0x3b, 0x3b, 0xa1, 0xb6, + 0x90, 0xf2, 0x9a, 0x46, 0x54, 0xb7, 0x42, 0x33, 0x67, 0xa1, + 0xfe, 0x1d, 0x6f, 0x97, 0xf9, 0x9c, 0xec, 0x45, 0xf0, 0x20, + 0x93, 0x9a, 0x6f, 0xeb, 0xba, 0x0a, 0x6b, 0x4d, 0xc2, 0x3c, + 0x08, 0xf3, 0x8b, 0x83, 0xac, 0x48, 0xb0, 0x02, 0xd0, 0x15, + 0x59, 0x8d, 0x35, 0x30, 0xb5, 0x02, 0x45, 0x69, 0x7d, 0x30, + 0xd9, 0x32, 0x42, 0x03, 0xe0, 0xf6, 0xd9, 0x8d, 0x45, 0xb6, + 0xc5, 0x1d, 0x48, 0xca, 0xab, 0x6c, 0x9e, 0xb2, 0xd0, 0xb5, + 0xa5, 0xd8, 0xb0, 0xee, 0x11, 0xf2, 0xf4, 0xa8, 0x89, 0x40, + 0xe8, 0x71, 0x54, 0xa3, 0xa3, 0x3c, 0x9e, 0xa5, 0xc7, 0x0b, + 0x04, 0xa9, 0xa2, 0x6a, 0x89, 0xc7, 0x2b, 0x4e, 0x8c, 0x63, + 0x8b, 0xcc, 0x36, 0x9a, 0x41, 0x81, 0xc7, 0x4a, 0xc4, 0xb3, + 0xcd, 0xcd, 0xe0, 0xd3, 0x2c, 0x4e, 0xb1, 0xc1, 0x1f, 0x27, + 0x99, 0xc7, 0xe3, 0x55, 0x04, 0x68, 0x12, 0x7f, 0x82, 0x83, + 0xde, 0x8b, 0xa0, 0x73, 0xdd, 0xed, 0x05, 0xd8, 0x1f, 0x07, + 0x03, 0x2d, 0xb2, 0x28, 0x9c, 0x93, 0x83, 0x13, 0x2a, 0xae, + 0x1c, 0x60, 0xbc, 0x29, 0xbc, 0x03, 0xf8, 0x6a, 0xa3, 0x86, + 0x65, 0xa7, 0xdb, 0xc1, 0x79, 0xeb, 0xf7, 0x2f, 0xac, 0x53, + 0x28, 0x22, 0x0b, 0xac, 0xe1, 0x11, 0x52, 0xf6, 0x3b, 0xef, + 0x5a, 0xc7, 0xb6, 0x1a, 0xb7, 0xc3, 0x74, 0x1a, 0xcf, 0xeb, + 0x6a, 0x6d, 0x56, 0x85, 0xa2, 0xf5, 0x49, 0x5c, 0x7e, 0x8f, + 0xea, 0x39, 0x24, 0xa7, 0x66, 0x77, 0x4a, 0x68, 0x2b, 0x2d, + 0x93, 0xf4, 0xbc, 0x70, 0xa9, 0xe8, 0x4a, 0xac, 0x05, 0x4f, + 0x4d, 0xfd, 0x12, 0x5a, 0xad, 0x29, 0xea, 0xb8, 0x6d, 0x39, + 0x5c, 0x01, 0xa6, 0x68, 0x79, 0xbe, 0xfb, 0xdf, 0x47, 0x47, + 0x46, 0x4a, 0xbf, 0x0a, 0x8a, 0xf0, 0x7a, 0xed, 0x03, 0x43, + 0x96, 0xa9, 0xae, 0xa9, 0x24, 0x65, 0xdd, 0x41, 0xcb, 0x50, + 0x2b, 0x26, 0x70, 0x51, 0xc0, 0x91, 0x63, 0xe3, 0x60, 0x55, + 0xcc, 0xf6, 0xd1, 0xe1, 0x04, 0x49, 0x99, 0x10, 0x12, 0xbf, + 0x87, 0x51, 0xf4, 0xfa, 0x32, 0x4e, 0x4b, 0xb0, 0x75, 0xc1, + 0xf1, 0xbc, 0xd3, 0xc2, 0xa3, 0xdd, 0xea, 0xc1, 0x54, 0x92, + 0x04, 0xeb, 0x01, 0xfa, 0x1f, 0xd3, 0x04, 0x65, 0x6c, 0xa4, + 0x3a, 0xe4, 0x84, 0x23, 0x40, 0x00, 0x81, 0xa0, 0x80, 0xd9, + 0xe6, 0x32, 0xa2, 0x2b, 0xea, 0xc6, 0x2b, 0x63, 0xc3, 0x8d, + 0x7c, 0x5f, 0x8d, 0xc0, 0xf5, 0xd8, 0x1a, 0x50, 0xa2, 0xc3, + 0x0e, 0xaf, 0xbf, 0x51, 0x85, 0x80, 0xc9, 0xc6, 0xcc, 0x46, + 0x99, 0x0e, 0x6b, 0xbc, 0x40, 0x12, 0xe4, 0x76, 0x63, 0x2a, + 0x50, 0x9b, 0x0e, 0xa8, 0x03, 0xf3, 0x5e, 0xaa, 0x77, 0x0e, + 0x25, 0xda, 0x3f, 0x5e, 0x63, 0x14, 0x7c, 0x18, 0xb0, 0xd4, + 0x45, 0xb6, 0x15, 0xb3, 0xb2, 0x98, 0x62, 0x59, 0xb6, 0xf3, + 0xae, 0x71, 0x30, 0x40, 0xd3, 0x85, 0xe1, 0x1b, 0xcf, 0x15, + 0x6e, 0x9b, 0xd2, 0x6e, 0xe3, 0x18, 0x03, 0x57, 0xf3, 0xfb, + 0xab, 0xf2, 0xe8, 0x90, 0xdc, 0xe7, 0x7a, 0xf6, 0x62, 0xcd, + 0x72, 0xe9, 0x62, 0x52, 0xd2, 0x2f, 0x5e, 0xd6, 0xc2, 0x79, + 0x9c, 0x97, 0x68, 0xeb, 0xdd, 0x0e, 0x57, 0x58, 0x40, 0x3e, + 0x0f, 0xf6, 0xce, 0x88, 0xa3, 0x0b, 0xf5, 0x26, 0x47, 0x7f, + 0xb1, 0xe4, 0x5e, 0x51, 0x80, 0x04, 0x01, 0xfc, 0x3e, 0x2d, + 0xb2, 0xf9, 0xaa, 0x8c, 0xe7, 0x37, 0xc1, 0x22, 0x4c, 0xd1, + 0x81, 0x12, 0x1d, 0xd7, 0x41, 0x84, 0xa1, 0xd3, 0x0f, 0x48, + 0xb5, 0x72, 0x16, 0x96, 0x78, 0x9b, 0x21, 0x09, 0xd2, 0x00, + 0x03, 0xc9, 0x83, 0x18, 0x35, 0x20, 0x0a, 0xae, 0x12, 0x44, + 0x9b, 0xec, 0x54, 0xd8, 0x03, 0x01, 0xdf, 0xd7, 0xf5, 0x03, + 0xba, 0x7f, 0x07, 0x38, 0x8b, 0x3c, 0xde, 0x98, 0xc1, 0xba, + 0x4a, 0xac, 0x14, 0x45, 0x12, 0x61, 0x1a, 0x69, 0x56, 0x02, + 0x9d, 0x6c, 0xb1, 0x88, 0x91, 0x12, 0x41, 0x48, 0xc9, 0x2d, + 0x6d, 0x69, 0xd6, 0x07, 0xeb, 0xd8, 0x22, 0x21, 0x3f, 0xcd, + 0x10, 0x55, 0xb8, 0x0c, 0x6e, 0x30, 0x73, 0xb3, 0x90, 0x30, + 0x9e, 0x9b, 0xeb, 0x79, 0x4d, 0xb3, 0x70, 0x03, 0x6f, 0x79, + 0x06, 0xf1, 0x36, 0x0b, 0x32, 0x45, 0x88, 0x73, 0x92, 0x84, + 0x93, 0x5b, 0x74, 0x87, 0x00, 0xf5, 0x44, 0xe2, 0x66, 0x44, + 0x8d, 0x6f, 0x67, 0x8d, 0x29, 0x52, 0xc4, 0xee, 0x38, 0xa0, + 0x41, 0x5d, 0x39, 0x84, 0xad, 0xe7, 0x08, 0x07, 0xf5, 0x9c, + 0xec, 0x61, 0x06, 0x57, 0x71, 0x4c, 0x62, 0x17, 0xc7, 0x13, + 0x0b, 0xe9, 0xd1, 0xa4, 0x56, 0x5b, 0xb6, 0x29, 0x7d, 0xc3, + 0x60, 0xa3, 0x7f, 0x83, 0x86, 0xbf, 0x47, 0x3f, 0xa3, 0x3f, + 0x9f, 0xb7, 0xd7, 0xa1, 0xaf, 0x6f, 0x5e, 0x7e, 0x79, 0x39, + 0xa5, 0x5a, 0xa5, 0xa2, 0x2f, 0xae, 0xb7, 0x0d, 0xd3, 0x92, + 0x32, 0xb9, 0x44, 0x29, 0x3a, 0x9c, 0xe6, 0xc9, 0xb4, 0x3c, + 0xca, 0x96, 0xc9, 0xb4, 0xd8, 0xf8, 0x57, 0x5c, 0x78, 0x8c, + 0x98, 0x76, 0x41, 0x79, 0x18, 0x2f, 0x43, 0xb0, 0xff, 0x4a, + 0x69, 0xdc, 0xf0, 0x5e, 0x38, 0xae, 0xaa, 0x69, 0x9b, 0x8c, + 0x80, 0x47, 0x6d, 0x14, 0xb9, 0x14, 0xc8, 0x56, 0x0e, 0x50, + 0xe6, 0xdf, 0x56, 0xa1, 0x2f, 0x3f, 0xd4, 0xd6, 0x67, 0xf0, + 0x87, 0x13, 0xa3, 0x31, 0xbf, 0x38, 0x29, 0xd9, 0xf9, 0xc7, + 0xe0, 0x1e, 0x61, 0x34, 0x93, 0x2d, 0x0c, 0x5f, 0xe5, 0x25, + 0xc7, 0x6f, 0xc5, 0x34, 0x2b, 0xbe, 0xba, 0x23, 0x4a, 0xb7, + 0x4b, 0xf0, 0x7d, 0x7f, 0xf2, 0xfb, 0x57, 0x96, 0x10, 0x0d, + 0x7e, 0x82, 0x2f, 0xec, 0x51, 0x76, 0x11, 0xd3, 0x1b, 0x27, + 0xd8, 0x3d, 0x18, 0xee, 0xcb, 0x83, 0x3d, 0x5c, 0x82, 0x46, + 0x5a, 0xba, 0x62, 0xa2, 0x68, 0xa0, 0x66, 0x3b, 0xf0, 0x3e, + 0xb2, 0x22, 0x2b, 0x22, 0x73, 0x88, 0xd1, 0x90, 0x8e, 0xe0, + 0xb3, 0x8a, 0x20, 0x96, 0x11, 0xe4, 0xb8, 0x26, 0x9b, 0xce, + 0xc1, 0x7e, 0xab, 0xf7, 0xcf, 0xc3, 0xfd, 0xf7, 0x48, 0x65, + 0xcd, 0x91, 0x7e, 0x98, 0x9c, 0xdd, 0x74, 0xc8, 0xe7, 0x6e, + 0xd5, 0xbd, 0x86, 0xb4, 0xef, 0xa8, 0xc3, 0x81, 0x3f, 0xa2, + 0xc6, 0xc8, 0x63, 0x82, 0xbf, 0xf5, 0x49, 0x8a, 0x46, 0xda, + 0xce, 0x77, 0x05, 0xd9, 0x52, 0x41, 0x91, 0xd0, 0x77, 0x92, + 0xe0, 0xef, 0xc1, 0x10, 0x6d, 0x1a, 0x03, 0x9d, 0x00, 0x3e, + 0x87, 0xf0, 0x6e, 0xe2, 0x6f, 0x30, 0x30, 0x6a, 0x17, 0x37, + 0x37, 0x31, 0xaf, 0x68, 0x1b, 0x2f, 0xd3, 0x40, 0x35, 0x8a, + 0xcb, 0xab, 0x48, 0x23, 0x48, 0xb6, 0x78, 0x6d, 0x8c, 0x09, + 0xf0, 0x0c, 0x0d, 0x9b, 0x06, 0xfd, 0x06, 0x7d, 0x72, 0x81, + 0x2f, 0xb3, 0x5c, 0x07, 0x3f, 0x40, 0x9f, 0x5c, 0xe0, 0x68, + 0x1b, 0x4a, 0x96, 0x09, 0xb9, 0x34, 0x94, 0x71, 0x3e, 0xb0, + 0xef, 0x2e, 0x44, 0x6d, 0xf6, 0xf1, 0x47, 0xcf, 0xa9, 0xc7, + 0xb0, 0xd6, 0xd9, 0xc7, 0x25, 0x2a, 0x03, 0xf0, 0xa9, 0xb7, + 0xe4, 0xfe, 0xa1, 0x2b, 0x4d, 0xfd, 0x2c, 0xb4, 0x1d, 0xf3, + 0xb2, 0xd9, 0x92, 0xdb, 0x53, 0xb0, 0x11, 0x13, 0x94, 0xd0, + 0x23, 0x2d, 0xaf, 0xa7, 0xc4, 0x24, 0xe2, 0xae, 0xb3, 0x33, + 0x13, 0x76, 0x01, 0x96, 0xa8, 0xf3, 0xaf, 0x7f, 0x0d, 0xd4, + 0xcf, 0x03, 0xf2, 0x2d, 0x4c, 0x6f, 0x30, 0x25, 0xfa, 0xfd, + 0x35, 0xbb, 0x26, 0x85, 0x32, 0xa6, 0xc8, 0xb0, 0x43, 0x16, + 0xd3, 0x63, 0xfe, 0x42, 0x81, 0x37, 0xc1, 0xfe, 0xc0, 0xcf, + 0x53, 0x54, 0x7d, 0x80, 0x2b, 0x10, 0xa4, 0xa7, 0x20, 0xa5, + 0x65, 0x85, 0x8e, 0x7d, 0x01, 0x26, 0x8e, 0x7e, 0xdd, 0x04, + 0x51, 0x16, 0x17, 0x69, 0xbb, 0x0c, 0xae, 0xb2, 0xfc, 0x22, + 0x40, 0x3b, 0xc2, 0x32, 0xce, 0xe1, 0x3a, 0x89, 0x5d, 0xd8, + 0x1b, 0x11, 0xf0, 0xe4, 0xd0, 0x77, 0x97, 0xe6, 0xa5, 0xae, + 0x12, 0x2c, 0xef, 0xec, 0xbc, 0x32, 0x6d, 0xa0, 0xcf, 0xfd, + 0xe5, 0xe3, 0x5e, 0xa0, 0x24, 0x05, 0x55, 0x82, 0x29, 0xe9, + 0x89, 0x66, 0x69, 0xee, 0x4e, 0x6c, 0x71, 0xfa, 0x5d, 0x89, + 0xc5, 0x64, 0xcb, 0x4a, 0x9b, 0xd8, 0x03, 0x30, 0x4a, 0x96, + 0x0d, 0x32, 0xab, 0x13, 0xd6, 0x78, 0xea, 0x59, 0x8f, 0x76, + 0xec, 0x6b, 0x3e, 0xbf, 0xcc, 0xa0, 0x8c, 0x8d, 0x24, 0x74, + 0xfa, 0x0f, 0x10, 0x48, 0x17, 0xad, 0x94, 0x30, 0xda, 0x4f, + 0xe7, 0x37, 0x93, 0x07, 0x6c, 0xc6, 0x60, 0xf6, 0x08, 0x49, + 0x39, 0xb3, 0xbc, 0x59, 0xc8, 0xd2, 0x8e, 0xca, 0x34, 0x89, + 0x65, 0x79, 0x03, 0x53, 0x26, 0x87, 0xf6, 0xcb, 0xa4, 0x48, + 0x4e, 0x93, 0x79, 0x52, 0xde, 0x4c, 0x5a, 0xf8, 0x6f, 0xb4, + 0x94, 0xd8, 0x3b, 0x09, 0x96, 0x5c, 0xb2, 0x01, 0x09, 0x34, + 0x05, 0x11, 0x12, 0xdc, 0x36, 0xdf, 0x0b, 0x4d, 0xa6, 0x9a, + 0x97, 0x93, 0xbf, 0x73, 0x1e, 0xf7, 0x38, 0xec, 0x03, 0x1e, + 0x78, 0x8e, 0x26, 0xa7, 0x39, 0xf6, 0x1c, 0x05, 0x7f, 0x4d, + 0xe2, 0xab, 0x29, 0x9f, 0xf8, 0xab, 0x0e, 0xf3, 0xd8, 0x48, + 0xd9, 0x23, 0x97, 0x96, 0x4c, 0x83, 0x62, 0x57, 0x9c, 0x0b, + 0x5c, 0x2a, 0x6e, 0x7f, 0xb1, 0x68, 0x91, 0xb4, 0x28, 0x8f, + 0x9e, 0x89, 0x7b, 0xd2, 0x46, 0xfd, 0x8a, 0x29, 0xdb, 0xc3, + 0x8f, 0x90, 0x92, 0x80, 0x0e, 0x60, 0x6b, 0xa1, 0x6f, 0xdf, + 0xf8, 0x7d, 0xee, 0xb7, 0xeb, 0x1e, 0xbb, 0xbb, 0x6d, 0xd2, + 0xb9, 0x08, 0xe3, 0x50, 0x02, 0xbe, 0x7d, 0x91, 0xef, 0x94, + 0x2d, 0x0d, 0xb4, 0x36, 0x51, 0xbe, 0xfa, 0x90, 0xfc, 0x48, + 0xce, 0x0e, 0x65, 0x3f, 0x25, 0x00, 0x3a, 0xa4, 0x23, 0x20, + 0xc4, 0x2b, 0x85, 0x21, 0x43, 0xd2, 0x0d, 0x1a, 0x59, 0xa0, + 0x48, 0xec, 0x5b, 0x7c, 0x36, 0x03, 0xe2, 0x41, 0x7b, 0x5d, + 0xa1, 0xb6, 0xde, 0x76, 0x59, 0xa3, 0xf4, 0x4e, 0x9f, 0xd1, + 0xfb, 0x9d, 0x1e, 0x6e, 0x24, 0xfa, 0x60, 0x50, 0x92, 0x8d, + 0x45, 0xe7, 0x71, 0xb9, 0x7b, 0xb8, 0x93, 0xe4, 0xb6, 0x40, + 0x9c, 0xae, 0x49, 0x14, 0x97, 0x3a, 0x41, 0x93, 0x19, 0x24, + 0x68, 0xa2, 0x87, 0xc5, 0x0d, 0x52, 0x67, 0x17, 0xbe, 0xdd, + 0x9a, 0xce, 0xe3, 0x30, 0xdf, 0x3d, 0x94, 0xdb, 0x9e, 0xc7, + 0xf3, 0x2c, 0x8c, 0x76, 0xb2, 0x29, 0x3a, 0xa9, 0x95, 0xe5, + 0xf2, 0xf9, 0xe6, 0x5f, 0x66, 0xd9, 0x02, 0x75, 0x7c, 0xf8, + 0x68, 0x30, 0x18, 0xf4, 0xa4, 0xc3, 0x83, 0xc3, 0x8f, 0x8b, + 0x79, 0x9c, 0xec, 0xa2, 0xd6, 0x60, 0x4f, 0x56, 0x34, 0x83, + 0xec, 0x4f, 0x79, 0xea, 0x09, 0xab, 0xbf, 0xca, 0xae, 0x9d, + 0x93, 0x8f, 0x19, 0x04, 0x7d, 0x45, 0xa2, 0x7d, 0x17, 0xce, + 0xd4, 0x13, 0x06, 0xc6, 0x3e, 0xb4, 0xba, 0x82, 0x49, 0x58, + 0x15, 0x74, 0xab, 0x80, 0x24, 0xbe, 0x81, 0x74, 0xed, 0xc6, + 0x50, 0x34, 0xaf, 0x51, 0x6a, 0x16, 0x0d, 0x2c, 0x5e, 0x6c, + 0x55, 0x58, 0xd4, 0x9d, 0x8d, 0xca, 0x73, 0x9a, 0x6f, 0x9a, + 0x77, 0x88, 0xb9, 0x96, 0xd1, 0xa6, 0x04, 0x2f, 0xb0, 0x1f, + 0x5d, 0xa0, 0xfd, 0x8f, 0x0e, 0xb7, 0xc0, 0xa2, 0xde, 0xd0, + 0xfc, 0x5d, 0xfc, 0x57, 0x09, 0x4c, 0x74, 0x0f, 0xcd, 0xf7, + 0xeb, 0x70, 0x3a, 0xeb, 0x74, 0x12, 0x34, 0xcd, 0xf2, 0x11, + 0x05, 0x0f, 0x57, 0x1a, 0x5f, 0xed, 0xdb, 0x62, 0x0c, 0x22, + 0xd8, 0xfe, 0x19, 0x3c, 0x41, 0xeb, 0x89, 0x3f, 0xf9, 0x8c, + 0x8b, 0x26, 0x80, 0xcf, 0x31, 0x27, 0xd1, 0x5b, 0xa1, 0x83, + 0xea, 0x59, 0x92, 0x0a, 0x3b, 0xfe, 0x57, 0x1f, 0x61, 0xa4, + 0xde, 0x1a, 0x37, 0x92, 0xb4, 0x08, 0x53, 0x89, 0x28, 0x55, + 0x10, 0x2a, 0x9e, 0x72, 0x09, 0x57, 0xcc, 0xaf, 0xb7, 0x0b, + 0x89, 0xa7, 0x91, 0x08, 0x07, 0x3f, 0xde, 0x6c, 0x55, 0x76, + 0xcc, 0xdb, 0x00, 0x58, 0xac, 0x12, 0xda, 0xde, 0x4e, 0x47, + 0xe4, 0xbe, 0xee, 0x01, 0xcf, 0x77, 0x2b, 0x9c, 0xfe, 0xf8, + 0xa5, 0x36, 0xa5, 0x66, 0xbf, 0x2f, 0xae, 0xb2, 0xcb, 0x4b, + 0x9e, 0x91, 0xe6, 0x5a, 0xe2, 0x6b, 0x31, 0xe8, 0x2c, 0xc3, + 0x72, 0xd6, 0xa3, 0xc6, 0xaf, 0x1e, 0x5e, 0xb6, 0xc4, 0x06, + 0xdd, 0xcb, 0xe3, 0xb7, 0x08, 0x46, 0xb1, 0x70, 0x63, 0xa5, + 0x94, 0xc0, 0xb0, 0x83, 0x07, 0x52, 0x42, 0x50, 0x3f, 0xc9, + 0x35, 0xcd, 0x1e, 0x3c, 0x4f, 0x41, 0x52, 0xab, 0x1b, 0x60, + 0x18, 0xf6, 0xb3, 0x63, 0x02, 0x90, 0xe6, 0xf3, 0x67, 0xab, + 0xa7, 0x59, 0x74, 0x43, 0x7b, 0x30, 0x5d, 0xe5, 0x68, 0xb4, + 0xe0, 0x15, 0x04, 0xcc, 0x47, 0x5b, 0x72, 0x21, 0x59, 0xe2, + 0x10, 0xc1, 0xd8, 0x9c, 0xa9, 0xb8, 0xb2, 0xf3, 0x02, 0xc9, + 0xb8, 0x54, 0x3d, 0x31, 0x70, 0x6d, 0x04, 0x9f, 0xfa, 0x88, + 0x4e, 0x72, 0x9e, 0xe2, 0x21, 0xd0, 0xac, 0xfc, 0xb8, 0xeb, + 0xb4, 0x8f, 0xdc, 0xba, 0xcf, 0xf1, 0xc8, 0xf0, 0x75, 0x88, + 0xcc, 0x5a, 0x13, 0x6f, 0xaf, 0xd9, 0x3e, 0x55, 0xd3, 0x33, + 0xc4, 0xfd, 0xe1, 0x6a, 0x5e, 0x8a, 0x24, 0xea, 0x8e, 0xee, + 0xb1, 0x67, 0x0c, 0x5a, 0x0f, 0x11, 0xfb, 0xd0, 0xf9, 0xaa, + 0x3e, 0xdc, 0xeb, 0xce, 0x41, 0x4d, 0x96, 0x4c, 0x4e, 0x90, + 0x02, 0x0c, 0x79, 0xbe, 0xa2, 0x8a, 0x17, 0x6c, 0x0b, 0x84, + 0xa8, 0xfd, 0xd6, 0xc5, 0xbd, 0x86, 0x28, 0x3d, 0xa4, 0xe0, + 0x4b, 0xcb, 0xc7, 0xb5, 0x23, 0x3c, 0xac, 0xdc, 0x10, 0xb4, + 0x5e, 0x2a, 0x8e, 0x4b, 0x0d, 0xbb, 0x88, 0x1f, 0xf0, 0xd6, + 0x75, 0x30, 0xbe, 0x9e, 0xc6, 0x4b, 0x90, 0x80, 0x25, 0x3e, + 0xf1, 0x78, 0xf7, 0x17, 0xbf, 0x4c, 0xbe, 0xff, 0xde, 0x12, + 0x0f, 0xab, 0x66, 0x1d, 0x05, 0x1c, 0xef, 0x86, 0x63, 0x37, + 0xaf, 0xdb, 0x37, 0xdb, 0x26, 0xb9, 0x25, 0xaf, 0x2e, 0xd1, + 0xf0, 0x07, 0x9d, 0x5a, 0x93, 0x22, 0x39, 0xbe, 0xfa, 0xbc, + 0x26, 0x42, 0x6b, 0x75, 0x24, 0xba, 0xe7, 0xb4, 0xa8, 0x99, + 0x26, 0x69, 0x65, 0x6b, 0x6e, 0x76, 0xfb, 0x28, 0xf1, 0x0d, + 0x19, 0xdb, 0x35, 0x7f, 0xb3, 0x9c, 0xcf, 0x60, 0x61, 0x34, + 0xb9, 0x69, 0x0f, 0x3a, 0x62, 0xde, 0xde, 0x63, 0xf6, 0xea, + 0x74, 0x51, 0xbd, 0xc4, 0x4c, 0x38, 0xb6, 0xc3, 0xc1, 0x60, + 0x59, 0x01, 0x05, 0xc8, 0xbb, 0x18, 0x9d, 0x21, 0xd2, 0xf3, + 0x38, 0x97, 0x2f, 0x47, 0x15, 0x17, 0x47, 0xb4, 0x77, 0xaa, + 0x5e, 0x79, 0xe6, 0xf5, 0xea, 0x59, 0x45, 0x99, 0x79, 0xf5, + 0x2a, 0x40, 0x60, 0x87, 0xc4, 0xd8, 0xc3, 0xde, 0xd6, 0x43, + 0x0b, 0x85, 0x6c, 0x5e, 0x3a, 0x88, 0x1b, 0xdb, 0x34, 0x0c, + 0x9c, 0xb2, 0xe2, 0x4c, 0x87, 0x3b, 0xf9, 0x76, 0xd5, 0xf4, + 0x9a, 0x93, 0x4b, 0x6d, 0xde, 0x6f, 0x72, 0xb9, 0xe7, 0xb2, + 0x70, 0xad, 0x63, 0x73, 0x60, 0x65, 0x0d, 0xf6, 0x06, 0xba, + 0x2c, 0xd9, 0x1a, 0xc9, 0x87, 0xfe, 0xf6, 0x2e, 0x55, 0x69, + 0xc9, 0xef, 0x8d, 0xed, 0x5d, 0xc7, 0xa3, 0x3a, 0x02, 0x8e, + 0xa3, 0x19, 0x65, 0xe9, 0x44, 0xc2, 0x38, 0x24, 0x9f, 0xde, + 0x63, 0x1d, 0xb7, 0xca, 0x8a, 0x86, 0xe0, 0x09, 0x87, 0x1b, + 0x56, 0x34, 0x42, 0xa9, 0x5b, 0xdf, 0x3d, 0xc6, 0xa1, 0xb4, + 0x63, 0x97, 0x61, 0x0e, 0x32, 0x54, 0xed, 0x18, 0xf9, 0xd0, + 0x8f, 0x89, 0xa7, 0x78, 0x83, 0x67, 0x42, 0x14, 0x11, 0xdc, + 0xbc, 0x55, 0x2c, 0x9b, 0xe3, 0xb7, 0x82, 0x92, 0x20, 0x04, + 0xd9, 0xc5, 0x32, 0x59, 0xaa, 0x23, 0x41, 0xc1, 0x16, 0x61, + 0x71, 0xa1, 0x52, 0x86, 0x2f, 0x56, 0xd0, 0xf3, 0x2b, 0x95, + 0xe2, 0xf9, 0x95, 0x15, 0x2c, 0x4a, 0x0b, 0xad, 0xa9, 0x69, + 0x61, 0x05, 0x44, 0x4a, 0x49, 0xa4, 0x42, 0xc2, 0x38, 0x1c, + 0x1e, 0xee, 0xed, 0xa8, 0xe0, 0xb0, 0xd4, 0x4d, 0x16, 0xd7, + 0x7c, 0x12, 0x28, 0x4d, 0x61, 0x10, 0x36, 0x5c, 0x56, 0x25, + 0x8a, 0xfc, 0x52, 0xd4, 0x0e, 0xf4, 0x60, 0x62, 0x96, 0x8d, + 0x58, 0xa1, 0x79, 0x4d, 0x8a, 0xa7, 0x74, 0x89, 0x94, 0x19, + 0xb4, 0x6f, 0x46, 0xd8, 0x6c, 0x88, 0x0d, 0x8b, 0xd3, 0x6c, + 0x81, 0xe4, 0x7c, 0x1c, 0x3c, 0x08, 0x0e, 0x90, 0x96, 0x88, + 0x84, 0x6f, 0x1e, 0x6f, 0x40, 0x7c, 0x91, 0x96, 0x74, 0x52, + 0x24, 0xef, 0x49, 0x94, 0x47, 0x32, 0xb2, 0x83, 0x16, 0xed, + 0x14, 0xd8, 0xcd, 0x69, 0x30, 0x13, 0xcd, 0x67, 0xd6, 0x64, + 0x70, 0xe8, 0x99, 0xb9, 0xe2, 0xed, 0x83, 0xb5, 0x22, 0x70, + 0x26, 0xd9, 0xda, 0x01, 0xd3, 0x80, 0x94, 0x01, 0xa3, 0x65, + 0x15, 0x03, 0x06, 0x10, 0xdf, 0x74, 0xc0, 0x40, 0x6d, 0x3c, + 0x24, 0x37, 0xc5, 0xea, 0xbb, 0x34, 0xfe, 0xdd, 0xca, 0x90, + 0xf8, 0x15, 0x91, 0x04, 0x5e, 0xfe, 0xe6, 0x00, 0xa3, 0xaf, + 0x89, 0xc4, 0x8b, 0x25, 0x2b, 0x52, 0x57, 0xe5, 0x76, 0xec, + 0x66, 0xff, 0x36, 0xbe, 0x8c, 0xe7, 0x93, 0x66, 0x6f, 0xca, + 0x14, 0x02, 0x7b, 0x4b, 0x0b, 0xb6, 0x63, 0x6d, 0x93, 0x52, + 0xb8, 0xb4, 0xb0, 0xe0, 0x2c, 0x8d, 0xbb, 0x8c, 0xca, 0x6d, + 0xa4, 0x72, 0x17, 0xd1, 0xa5, 0x2a, 0xd4, 0x64, 0x97, 0xaa, + 0xa4, 0x65, 0xec, 0x36, 0x93, 0x3f, 0xa8, 0xf2, 0xda, 0x47, + 0xf8, 0x16, 0x2f, 0x6d, 0x21, 0x4b, 0xf2, 0x4d, 0x12, 0xb5, + 0xf4, 0x4b, 0x1f, 0xfe, 0x6d, 0xf4, 0x44, 0x5b, 0x77, 0x94, + 0x70, 0x41, 0x3f, 0x90, 0x2c, 0x23, 0xac, 0xb2, 0x64, 0xa9, + 0x55, 0xb5, 0xa7, 0xcd, 0x88, 0x68, 0x96, 0xb8, 0x55, 0xe2, + 0x2e, 0xea, 0xc6, 0x4c, 0x08, 0xba, 0xf4, 0x20, 0xa9, 0x53, + 0xa7, 0x9f, 0x5d, 0x75, 0x50, 0xcf, 0x09, 0xad, 0x1a, 0xfe, + 0xe0, 0xd8, 0x81, 0xf3, 0x2e, 0x49, 0x77, 0x62, 0x72, 0xaa, + 0xd6, 0x34, 0x56, 0x56, 0xe2, 0xc0, 0x95, 0xee, 0xf5, 0x18, + 0x92, 0x79, 0xaf, 0x27, 0xd7, 0xc4, 0x34, 0x60, 0xb3, 0x26, + 0x53, 0x37, 0x56, 0x2f, 0x13, 0x65, 0x2a, 0xe0, 0x6e, 0x0e, + 0x5a, 0x95, 0x49, 0x85, 0x95, 0xf8, 0x50, 0x39, 0x40, 0x87, + 0xe2, 0x97, 0xc5, 0x87, 0xcc, 0xe0, 0x16, 0xa5, 0xcc, 0x87, + 0xd2, 0xc7, 0x25, 0xc8, 0x17, 0x93, 0x0a, 0xf9, 0xee, 0x43, + 0x01, 0x69, 0xef, 0xe7, 0x26, 0x3e, 0x7c, 0xf5, 0xc1, 0x66, + 0xee, 0xb1, 0x26, 0x05, 0xf3, 0x95, 0xb5, 0x9b, 0xca, 0x07, + 0x70, 0x2c, 0x4d, 0x99, 0x7f, 0xab, 0x4c, 0x85, 0x95, 0x78, + 0x8d, 0xea, 0x1c, 0x81, 0x1e, 0xc5, 0xd7, 0xb6, 0x41, 0x65, + 0x45, 0xb5, 0x74, 0x2e, 0xe2, 0x78, 0xf9, 0x72, 0x9e, 0x5c, + 0xc6, 0x96, 0x71, 0x55, 0xca, 0x1c, 0x9c, 0x06, 0xbe, 0x88, + 0x47, 0xfb, 0xcc, 0xd3, 0x49, 0xc5, 0x77, 0xba, 0x41, 0x39, + 0xda, 0x42, 0x68, 0xed, 0x54, 0xd1, 0xda, 0x69, 0x46, 0xcb, + 0x4a, 0x03, 0x3b, 0x41, 0x54, 0x75, 0x27, 0x3b, 0xc8, 0x0a, + 0x2b, 0xa6, 0xe4, 0x7e, 0x6d, 0x43, 0x4e, 0x57, 0x8b, 0x5d, + 0x6c, 0xe9, 0x56, 0x91, 0xf9, 0x67, 0xbb, 0x4c, 0xfc, 0xca, + 0x25, 0xa3, 0xed, 0x9c, 0xa0, 0x69, 0x15, 0x7c, 0xfa, 0xaf, + 0x74, 0xe6, 0x71, 0xeb, 0x13, 0x16, 0x88, 0x07, 0x13, 0xad, + 0xa0, 0x42, 0x93, 0x20, 0xcf, 0x0a, 0xbf, 0x8d, 0x2e, 0x51, + 0x73, 0x32, 0xd2, 0xf7, 0x3c, 0xdc, 0x60, 0xfb, 0xa6, 0x47, + 0x07, 0xa6, 0x72, 0xd7, 0x73, 0xec, 0x79, 0xea, 0x99, 0x55, + 0xda, 0xf8, 0x88, 0x0f, 0xa7, 0xb4, 0xef, 0xe1, 0x4c, 0x6a, + 0xa8, 0xab, 0xd8, 0x74, 0xcd, 0x3e, 0x92, 0x0f, 0x7d, 0x7c, + 0xe3, 0xb4, 0x2b, 0xb9, 0xad, 0x83, 0xfb, 0x06, 0x9c, 0x93, + 0x3e, 0xe0, 0xf2, 0x63, 0x51, 0xec, 0xe2, 0x5d, 0x99, 0xd0, + 0x2b, 0xb0, 0xb8, 0x56, 0x50, 0xa2, 0xe5, 0x35, 0xa4, 0xd0, + 0x2c, 0x91, 0x2b, 0x30, 0x27, 0x1d, 0xfe, 0xea, 0xb2, 0x8a, + 0x0c, 0xb1, 0x6e, 0x59, 0x48, 0x7c, 0x80, 0x82, 0x1a, 0xe4, + 0xa8, 0x18, 0x3e, 0x75, 0x0f, 0xcb, 0xce, 0x21, 0x2b, 0xad, + 0x21, 0x43, 0x56, 0xad, 0x9b, 0x90, 0x5c, 0x5e, 0x43, 0x0a, + 0xaf, 0x71, 0xb2, 0xa0, 0x6d, 0x94, 0xc0, 0x75, 0xda, 0x9f, + 0x82, 0x45, 0x6c, 0x52, 0x61, 0xf1, 0x0e, 0x01, 0xa9, 0x2b, + 0x12, 0xd8, 0xe7, 0x60, 0x5f, 0x62, 0x1d, 0xf0, 0x83, 0xd2, + 0x1c, 0x7e, 0x0e, 0xf6, 0xeb, 0xbd, 0x7d, 0x6e, 0xe1, 0x3e, + 0x75, 0x2b, 0xd7, 0xa9, 0x46, 0x6e, 0x53, 0xd0, 0x39, 0xdd, + 0xaf, 0xe9, 0x4e, 0x3e, 0x4d, 0x0d, 0xfc, 0x99, 0xbc, 0x1d, + 0x95, 0x1a, 0x38, 0x29, 0x35, 0x70, 0x50, 0xba, 0x95, 0x73, + 0x52, 0x23, 0xc7, 0x24, 0x22, 0x89, 0xfa, 0x5c, 0xf6, 0x90, + 0x3f, 0x94, 0x32, 0xcc, 0x58, 0x07, 0xfb, 0xca, 0x37, 0x36, + 0x1f, 0xf8, 0x5f, 0xbb, 0x48, 0x45, 0x90, 0x0e, 0x89, 0x4a, + 0x68, 0xdc, 0xee, 0x18, 0x21, 0x19, 0xf2, 0x88, 0x3c, 0xdd, + 0xdc, 0x94, 0xad, 0x6d, 0xb3, 0x55, 0x7a, 0x21, 0x40, 0x86, + 0xbd, 0x87, 0x92, 0x95, 0xab, 0x0a, 0xf2, 0x51, 0xef, 0x69, + 0x3d, 0xd0, 0xb3, 0xde, 0x70, 0xd4, 0x23, 0xd7, 0x4e, 0x82, + 0x6a, 0x45, 0xe5, 0x08, 0x1a, 0xe0, 0x3c, 0x0d, 0x6d, 0x1a, + 0xfa, 0x14, 0x7e, 0x62, 0x6f, 0x94, 0x1e, 0xfe, 0xf3, 0x75, + 0x1a, 0xf5, 0xf0, 0x9e, 0x02, 0x0f, 0xea, 0xe8, 0xe5, 0x17, + 0xb6, 0xcf, 0x91, 0xfb, 0xbb, 0xa3, 0xe8, 0x9a, 0x7c, 0x54, + 0xd3, 0x7b, 0xaa, 0xce, 0x49, 0x95, 0x1e, 0x4b, 0x73, 0xe6, + 0xe9, 0x51, 0xec, 0x95, 0xf1, 0x82, 0xda, 0xf6, 0x3e, 0x9f, + 0x8c, 0x8d, 0x74, 0x9f, 0x90, 0xd4, 0x99, 0x37, 0x8e, 0x64, + 0xfe, 0x64, 0x2d, 0x5c, 0x1f, 0x8a, 0x0c, 0xa0, 0xc2, 0xdf, + 0x08, 0x53, 0xc5, 0x52, 0xb4, 0xe0, 0xce, 0x9a, 0x6b, 0xd2, + 0x47, 0xb4, 0x9b, 0x28, 0xf9, 0x34, 0x95, 0x22, 0x6e, 0x39, + 0xc1, 0xcd, 0xc6, 0x71, 0x44, 0xd7, 0x21, 0xec, 0x2a, 0x65, + 0xe2, 0xc0, 0x44, 0x91, 0xa5, 0x82, 0xe2, 0xe0, 0x84, 0xd1, + 0x98, 0x44, 0xd0, 0xb4, 0x3b, 0x50, 0x69, 0x54, 0x07, 0x3a, + 0xa1, 0xaf, 0xc8, 0xc4, 0x4b, 0x48, 0x10, 0x26, 0x48, 0xe3, + 0x7c, 0x61, 0x1b, 0x4a, 0x8b, 0x1c, 0x48, 0x23, 0x15, 0x69, + 0x64, 0x43, 0xfa, 0x2a, 0x07, 0x23, 0x60, 0xb3, 0xd0, 0x87, + 0x57, 0x24, 0x1d, 0x89, 0x9c, 0x11, 0xde, 0x95, 0xbb, 0xa5, + 0x4d, 0x64, 0x75, 0x82, 0x7e, 0x05, 0xc7, 0x1a, 0xe5, 0x3b, + 0x7e, 0x91, 0xc9, 0xbf, 0xc8, 0xb1, 0xdf, 0x00, 0x14, 0x89, + 0xb0, 0x55, 0xbe, 0x7f, 0x46, 0xd0, 0xb0, 0x33, 0x9c, 0x78, + 0x41, 0xd9, 0x36, 0xc4, 0x72, 0x44, 0xe0, 0x06, 0xf4, 0xca, + 0x58, 0xe4, 0x6d, 0x85, 0x94, 0xb0, 0xf0, 0x48, 0x32, 0xd0, + 0x5f, 0x49, 0x82, 0xbf, 0xc3, 0x7b, 0x1c, 0x8e, 0xb9, 0xc3, + 0xa9, 0x47, 0xd8, 0x77, 0x4b, 0xf5, 0x87, 0x5b, 0x23, 0xa4, + 0xff, 0x98, 0x5c, 0xff, 0xf4, 0x53, 0x22, 0x77, 0x98, 0x77, + 0x96, 0xa8, 0x33, 0xc5, 0x44, 0x1d, 0x2d, 0x61, 0x0d, 0x10, + 0x8b, 0x45, 0xd3, 0x74, 0xe5, 0xde, 0x46, 0xe1, 0x0d, 0xeb, + 0x2c, 0xa9, 0x50, 0x62, 0x07, 0xcb, 0x53, 0x4c, 0xed, 0xae, + 0x55, 0xa6, 0x34, 0xbd, 0x99, 0xce, 0x51, 0x6b, 0x78, 0xa7, + 0x18, 0x76, 0xdb, 0xc6, 0x17, 0xb8, 0xfd, 0xd8, 0x59, 0x6c, + 0x22, 0xd1, 0x50, 0xb9, 0x80, 0x34, 0xc1, 0xf2, 0x7a, 0x56, + 0x7f, 0xcf, 0xc5, 0xb4, 0x71, 0xf9, 0xd9, 0x33, 0xae, 0xf2, + 0xa7, 0x41, 0xff, 0x51, 0x37, 0xb0, 0x16, 0x4d, 0x50, 0xd1, + 0xb8, 0x0e, 0xff, 0x85, 0x13, 0xdb, 0x8e, 0xcb, 0xde, 0x47, + 0xdb, 0x2a, 0x57, 0xca, 0x9c, 0xb5, 0x2b, 0x50, 0x2f, 0xdc, + 0xf8, 0x1c, 0x9b, 0xbf, 0x9a, 0x45, 0xe3, 0xd4, 0x87, 0x26, + 0x4e, 0xde, 0xa1, 0x53, 0x7f, 0x3f, 0xcf, 0x56, 0x69, 0x64, + 0xef, 0xd4, 0xdf, 0x86, 0xdc, 0xc5, 0x84, 0xa2, 0x61, 0xd2, + 0x56, 0x3c, 0xa5, 0x52, 0x13, 0xb1, 0x90, 0xde, 0x6e, 0x4f, + 0x38, 0x92, 0xf6, 0xa2, 0x5b, 0x99, 0x7c, 0x82, 0x27, 0x3f, + 0xcc, 0x16, 0x78, 0xda, 0x73, 0x6d, 0x0b, 0x9e, 0x78, 0x75, + 0x3d, 0x11, 0x03, 0xa3, 0x3c, 0xc5, 0x76, 0x70, 0x1a, 0x59, + 0xf2, 0xf8, 0xbf, 0xb6, 0x87, 0xc4, 0x74, 0xb1, 0x48, 0x3b, + 0x89, 0xc6, 0x62, 0x73, 0x9a, 0xeb, 0x0c, 0xc9, 0x2d, 0x21, + 0xc0, 0xe9, 0x07, 0x08, 0x4f, 0xc4, 0x53, 0x82, 0x8a, 0x2a, + 0x19, 0x38, 0xfd, 0x57, 0x5e, 0xc1, 0xba, 0xa2, 0x40, 0x90, + 0x1c, 0xba, 0x02, 0xa7, 0xd8, 0xf5, 0xd6, 0x0d, 0xa4, 0x8b, + 0x3c, 0xda, 0x81, 0xcd, 0x4d, 0xfb, 0x2e, 0x2d, 0x20, 0x87, + 0x3d, 0x96, 0x6c, 0xb1, 0x1e, 0xf6, 0x61, 0xef, 0xb1, 0x37, + 0xec, 0x93, 0xde, 0x33, 0x6f, 0xd8, 0xe1, 0x00, 0x69, 0x0c, + 0x5d, 0x5d, 0x99, 0x72, 0xb5, 0x97, 0x81, 0xfa, 0xaa, 0x14, + 0x02, 0xd7, 0xa2, 0x59, 0x38, 0x94, 0x86, 0x06, 0x69, 0xc1, + 0xff, 0x83, 0x55, 0x08, 0x43, 0x1f, 0xd8, 0xf6, 0x51, 0x08, + 0x14, 0x0a, 0x10, 0xed, 0x5b, 0x21, 0x80, 0x43, 0x89, 0x9b, + 0x1b, 0xb8, 0x8c, 0x44, 0xc3, 0xa2, 0x4a, 0x58, 0x34, 0xde, + 0xaa, 0x77, 0xb5, 0x38, 0xbc, 0xb7, 0x84, 0x4f, 0x72, 0x00, + 0x57, 0xd7, 0x7a, 0x79, 0x48, 0xa2, 0x5b, 0x4b, 0x68, 0x24, + 0xac, 0x77, 0x35, 0x5a, 0x69, 0xa2, 0xd1, 0x90, 0xdb, 0xd5, + 0x78, 0x89, 0xc8, 0xc8, 0x28, 0x70, 0xe5, 0x34, 0x8d, 0xd5, + 0xe8, 0xd7, 0x4b, 0xb9, 0xc6, 0xff, 0x5e, 0xd6, 0x80, 0xb3, + 0x90, 0xd4, 0x32, 0xd2, 0xce, 0xab, 0x1a, 0x24, 0x12, 0x3c, + 0x5a, 0x46, 0xc1, 0x99, 0xcd, 0x6a, 0xc6, 0x23, 0x51, 0x86, + 0x22, 0xa9, 0x03, 0x2f, 0x14, 0x70, 0x0b, 0xf5, 0x40, 0x81, + 0xa7, 0xc1, 0x91, 0x25, 0x1c, 0x96, 0x74, 0xa8, 0xba, 0x9e, + 0x0b, 0xa5, 0x59, 0x3f, 0xd7, 0x35, 0x0b, 0x6f, 0x50, 0x2f, + 0x7f, 0x51, 0xea, 0xf9, 0xa5, 0x06, 0x27, 0x4e, 0x23, 0x15, + 0xe3, 0xb5, 0x13, 0xa3, 0xb9, 0x8a, 0xca, 0x85, 0x90, 0xa2, + 0x91, 0xc2, 0x0b, 0xd0, 0x2c, 0xd5, 0x56, 0xb7, 0xfc, 0xb1, + 0x2f, 0xbd, 0x25, 0xc1, 0x1a, 0x96, 0x3d, 0x2a, 0x45, 0xdb, + 0x6a, 0x05, 0x95, 0x70, 0x41, 0xec, 0x38, 0xc8, 0x5a, 0x2a, + 0x5d, 0x4a, 0x61, 0x31, 0xf4, 0x5a, 0xe5, 0x90, 0x19, 0xaa, + 0x86, 0xa7, 0xf7, 0xb4, 0x4f, 0x68, 0x4e, 0x64, 0xd2, 0x0e, + 0xc8, 0x0a, 0x85, 0xd6, 0xb1, 0x67, 0xa2, 0xf6, 0x54, 0xef, + 0x9b, 0x9c, 0xb8, 0xbc, 0x7d, 0x3a, 0xf7, 0x0b, 0xee, 0xe6, + 0xe2, 0xb3, 0x45, 0x60, 0x60, 0x6d, 0x6b, 0xa0, 0x9e, 0xaf, + 0xc6, 0xa6, 0x00, 0x5a, 0xc0, 0xbd, 0xef, 0x09, 0x40, 0x54, + 0xdf, 0x12, 0xc4, 0x37, 0xed, 0xe4, 0x78, 0xe4, 0x3a, 0x39, + 0x4a, 0x18, 0x89, 0x24, 0x58, 0x8e, 0xf6, 0x76, 0x6a, 0xa0, + 0xf5, 0x6d, 0xe5, 0xc8, 0x67, 0x57, 0xc1, 0x4e, 0xdd, 0x12, + 0x0e, 0x09, 0x90, 0x2f, 0xd7, 0xd4, 0xcf, 0xe3, 0xe5, 0x3c, + 0x9c, 0xc6, 0x9d, 0xcd, 0x60, 0xf3, 0xbc, 0x17, 0xb4, 0xb8, + 0xcd, 0xfb, 0x2c, 0x80, 0xb0, 0x17, 0xa2, 0xb8, 0x07, 0xc5, + 0xed, 0x7e, 0x5b, 0x94, 0x4f, 0x02, 0xc4, 0xb2, 0x45, 0xbc, + 0x3b, 0xcf, 0xc2, 0xb2, 0x73, 0xd6, 0xed, 0x97, 0xd9, 0x6e, + 0x72, 0x1d, 0x47, 0x9d, 0x61, 0xd7, 0x68, 0x3c, 0x17, 0x8a, + 0x0a, 0x86, 0x34, 0x88, 0xda, 0xda, 0x16, 0xa8, 0xc6, 0xd2, + 0x2e, 0x29, 0xd3, 0x48, 0xef, 0x30, 0xc9, 0x07, 0xac, 0x03, + 0x16, 0x13, 0x85, 0x9a, 0x06, 0x21, 0x26, 0x7c, 0x22, 0xcd, + 0xbd, 0x05, 0x06, 0x31, 0xc1, 0x84, 0xfd, 0xe1, 0x7a, 0x51, + 0x87, 0xe0, 0x1d, 0x8b, 0x81, 0xd1, 0xf2, 0xd1, 0x21, 0xb9, + 0x2b, 0x97, 0xa1, 0x12, 0x41, 0x89, 0xae, 0x0a, 0x39, 0xf8, + 0xfd, 0x12, 0x60, 0xeb, 0xf9, 0x9d, 0xb0, 0xf5, 0x4f, 0xef, + 0x41, 0xf3, 0x0f, 0xaf, 0x29, 0xb1, 0xc2, 0xa1, 0x01, 0x21, + 0x92, 0x86, 0x02, 0xc4, 0xbf, 0xe9, 0x76, 0x12, 0x54, 0xe0, + 0x34, 0x95, 0x08, 0x24, 0x99, 0xe1, 0x01, 0xc5, 0xce, 0xf3, + 0x12, 0x82, 0xa1, 0x4a, 0xa1, 0xa2, 0x5b, 0xb0, 0x3d, 0xa0, + 0x7d, 0x17, 0xce, 0xe7, 0x19, 0xd4, 0xa5, 0x3e, 0x54, 0xb2, + 0xbe, 0xd6, 0xc8, 0x5d, 0xec, 0x66, 0xfb, 0xcd, 0x1b, 0x69, + 0xb4, 0x91, 0xb8, 0xf7, 0x3a, 0xda, 0x28, 0xc1, 0xad, 0x90, + 0xa6, 0xa5, 0xb6, 0xf8, 0x23, 0xfa, 0xe2, 0x9a, 0x44, 0x7d, + 0xbf, 0xe6, 0x74, 0xcc, 0xed, 0x9a, 0xae, 0x02, 0xce, 0x6a, + 0xec, 0x43, 0x1f, 0xff, 0x31, 0x51, 0xa8, 0x39, 0x76, 0x28, + 0x00, 0x71, 0x6d, 0x4e, 0x94, 0x5a, 0xe5, 0x1b, 0xe7, 0x35, + 0x2d, 0x72, 0x25, 0xf3, 0x5c, 0xa5, 0xbe, 0x87, 0xe4, 0xb3, + 0xea, 0x7e, 0x48, 0xbe, 0xdd, 0xc1, 0x59, 0x47, 0xa7, 0xe1, + 0xe5, 0xaf, 0xa3, 0x23, 0x79, 0xbb, 0xec, 0x58, 0xdc, 0x19, + 0x09, 0x21, 0x9b, 0x3b, 0x23, 0x29, 0xe9, 0xd6, 0x5d, 0x39, + 0x6e, 0x2f, 0xa2, 0xa0, 0x33, 0x5d, 0xf0, 0xed, 0x5a, 0xaf, + 0x03, 0x15, 0xb5, 0x7a, 0x50, 0x5e, 0x29, 0x09, 0xd9, 0xdb, + 0x4a, 0x1c, 0xb4, 0x8c, 0xbc, 0xe6, 0xe8, 0xca, 0xe2, 0x90, + 0x84, 0x2a, 0xa4, 0x5e, 0x6d, 0x02, 0x06, 0x4b, 0xa1, 0xb1, + 0x01, 0xb7, 0x17, 0x29, 0x40, 0x49, 0xa4, 0x9d, 0x16, 0xdf, + 0xc3, 0xd9, 0x4d, 0x90, 0xec, 0x17, 0xf3, 0x04, 0xad, 0x20, + 0xe9, 0x43, 0x02, 0x33, 0xb4, 0x7f, 0xd6, 0x69, 0x6d, 0xb4, + 0xba, 0xeb, 0x43, 0xfd, 0xb0, 0xf9, 0x21, 0xbb, 0x9a, 0xb0, + 0x8a, 0x14, 0x5c, 0xf4, 0xd3, 0x8a, 0xc9, 0x1f, 0xf3, 0xae, + 0x98, 0x28, 0x93, 0x9e, 0xb8, 0x32, 0x92, 0x86, 0x5f, 0x1e, + 0xb9, 0xc4, 0x96, 0x23, 0x8a, 0xc5, 0xe5, 0x11, 0xea, 0x15, + 0x79, 0x73, 0x2c, 0xf8, 0x70, 0x4d, 0xfe, 0x4e, 0x74, 0x3a, + 0xf6, 0x4c, 0xf7, 0x7d, 0xe6, 0x00, 0x59, 0x51, 0x10, 0xae, + 0x5f, 0x1b, 0xac, 0x11, 0x97, 0xe4, 0xe1, 0xa4, 0xc1, 0x19, + 0x12, 0xa5, 0x6e, 0xf5, 0xd3, 0x34, 0x4b, 0xaa, 0x4f, 0x38, + 0x51, 0x2a, 0x13, 0x0b, 0x47, 0x4e, 0x36, 0x5d, 0x50, 0xa8, + 0x4c, 0x16, 0x14, 0xe2, 0xb9, 0x22, 0x50, 0x74, 0xac, 0xe9, + 0x0f, 0xe7, 0x1c, 0x89, 0xd7, 0x3e, 0x9c, 0x28, 0x31, 0xe2, + 0x4d, 0x06, 0x68, 0x97, 0x68, 0x93, 0x07, 0xba, 0x6d, 0xb4, + 0x59, 0xb4, 0xe9, 0x73, 0xdf, 0x36, 0x95, 0x59, 0xca, 0x39, + 0x87, 0xd4, 0x6d, 0x79, 0xe1, 0x2b, 0x67, 0x3c, 0xf8, 0xba, + 0x66, 0xc4, 0xf3, 0xa6, 0x7d, 0x86, 0x6a, 0x7f, 0x78, 0x8f, + 0x5f, 0xd4, 0x74, 0x58, 0xed, 0x35, 0x3d, 0xb6, 0x7b, 0x75, + 0x7c, 0xcd, 0x38, 0xb5, 0x37, 0x42, 0x53, 0x0e, 0xec, 0x0d, + 0x2b, 0x84, 0x43, 0x7b, 0x43, 0x14, 0x38, 0xb2, 0x37, 0x44, + 0x21, 0x47, 0xf6, 0xa6, 0x63, 0x91, 0x34, 0x47, 0x69, 0x5e, + 0x0b, 0x3f, 0xb9, 0x37, 0xc4, 0xfb, 0xb9, 0x79, 0xeb, 0xe0, + 0xf0, 0xde, 0x10, 0xe5, 0x75, 0x73, 0x14, 0x66, 0xa6, 0xf2, + 0x40, 0xe3, 0xc2, 0x91, 0xbd, 0x0d, 0x9d, 0x70, 0x9e, 0xee, + 0xea, 0xf2, 0xc6, 0x39, 0x60, 0xc6, 0xc9, 0xd4, 0x58, 0xbd, + 0x52, 0xde, 0x44, 0x69, 0xfd, 0xaa, 0x21, 0xe9, 0xe4, 0x70, + 0x17, 0x0a, 0x11, 0xac, 0x92, 0xf2, 0x56, 0x60, 0x5d, 0x4b, + 0x38, 0xe2, 0x5c, 0x24, 0xf8, 0xb1, 0xc1, 0x54, 0x09, 0x87, + 0x2b, 0x5d, 0x63, 0x0d, 0xc7, 0xc9, 0x4f, 0xc3, 0x2d, 0x23, + 0xd6, 0xe7, 0xe5, 0x94, 0x90, 0x9b, 0x98, 0x9d, 0x4a, 0xe4, + 0x20, 0x08, 0x0c, 0x4e, 0x7b, 0x06, 0x34, 0xec, 0x4a, 0x15, + 0xeb, 0x41, 0x46, 0xd9, 0x7d, 0x38, 0x87, 0xa8, 0x3b, 0xb9, + 0xf3, 0x87, 0x8b, 0x1d, 0x75, 0xd3, 0x3f, 0x8f, 0xe9, 0xe3, + 0x8d, 0x9d, 0x9b, 0x74, 0x2f, 0x3d, 0xcb, 0x3a, 0x8a, 0x6d, + 0xf9, 0x9c, 0x05, 0xf5, 0x60, 0xb8, 0x5a, 0x21, 0x3e, 0xde, + 0x3b, 0xca, 0xf0, 0x51, 0x48, 0x29, 0xb3, 0xa7, 0x68, 0x79, + 0x93, 0x2d, 0xe2, 0x4f, 0x61, 0x9e, 0xa2, 0xbd, 0x6a, 0x0f, + 0xcd, 0x55, 0x67, 0x26, 0x7e, 0xf7, 0x16, 0x49, 0x7a, 0x58, + 0x2e, 0x8e, 0xe3, 0x1c, 0x02, 0x16, 0x4b, 0xb3, 0x82, 0x63, + 0x53, 0x09, 0xb8, 0x40, 0xc9, 0xc3, 0x81, 0x03, 0x68, 0xa1, + 0xc2, 0xbd, 0xc5, 0x79, 0xab, 0x36, 0xda, 0x83, 0x0e, 0x9d, + 0x4f, 0x27, 0x65, 0x78, 0xba, 0xb7, 0x08, 0xcf, 0xe3, 0xc3, + 0x7c, 0xfa, 0x79, 0x70, 0x22, 0x81, 0x21, 0x05, 0x0b, 0x87, + 0xd0, 0xde, 0x80, 0x81, 0xaa, 0x27, 0xad, 0x3d, 0xc8, 0xaa, + 0x69, 0x15, 0x0b, 0x63, 0xe1, 0xd5, 0xac, 0x51, 0xb3, 0x66, + 0x59, 0x68, 0xdb, 0x91, 0x4e, 0xc3, 0xe9, 0xc5, 0x39, 0xbe, + 0xdf, 0x9a, 0xb4, 0xf2, 0x38, 0x72, 0x22, 0x50, 0xdf, 0x4e, + 0x29, 0x72, 0xc8, 0xa4, 0x85, 0x26, 0x6a, 0x6b, 0x14, 0x5c, + 0x92, 0xb9, 0x0a, 0x92, 0x14, 0xfb, 0xe7, 0x95, 0x50, 0x6f, + 0x2f, 0x40, 0xf3, 0xd8, 0xe7, 0x45, 0x68, 0xd2, 0x57, 0xf3, + 0x28, 0x38, 0x8d, 0x83, 0xd6, 0xba, 0x32, 0xc1, 0xeb, 0xad, + 0x3e, 0xf3, 0xe5, 0x23, 0x01, 0xcb, 0x03, 0x12, 0xda, 0xbc, + 0x26, 0x61, 0x0d, 0x22, 0x40, 0x1c, 0xaf, 0x64, 0x2e, 0x2a, + 0xd8, 0x47, 0x8d, 0x6b, 0xf8, 0xf7, 0xef, 0xcd, 0x33, 0xaf, + 0xf3, 0x3c, 0xcb, 0xff, 0x03, 0x99, 0xc6, 0xdd, 0xae, 0x2a, + 0xae, 0x51, 0xb1, 0x7c, 0xd8, 0x06, 0x63, 0xb8, 0xf9, 0x86, + 0x84, 0xf9, 0x2b, 0x96, 0x59, 0x1a, 0xc1, 0x82, 0x7e, 0x10, + 0x1c, 0xe5, 0x37, 0xe4, 0x5d, 0x6b, 0xbf, 0x6a, 0xfe, 0x89, + 0xdc, 0x66, 0x66, 0xcc, 0x14, 0x8b, 0xcf, 0x80, 0xda, 0x35, + 0x41, 0x29, 0xee, 0xde, 0xd2, 0xcf, 0xe5, 0x8e, 0x77, 0x5c, + 0x76, 0x13, 0x0e, 0xda, 0x23, 0x34, 0x9b, 0x8d, 0x5a, 0xb9, + 0x91, 0x1b, 0x79, 0x70, 0x62, 0x0c, 0xf0, 0x76, 0x36, 0xc7, + 0x67, 0x7e, 0x96, 0xc6, 0x69, 0xcd, 0xda, 0x8e, 0xdb, 0x50, + 0x92, 0x3d, 0x27, 0x60, 0xe8, 0x78, 0x18, 0x05, 0xfe, 0xec, + 0x1c, 0xe2, 0x22, 0xf4, 0x02, 0xac, 0xd1, 0x76, 0xb5, 0x98, + 0xd6, 0x20, 0xe7, 0xf1, 0xc8, 0x40, 0xe8, 0x84, 0x02, 0xff, + 0xf8, 0x6b, 0x30, 0xb8, 0x7e, 0x72, 0x26, 0xed, 0x73, 0x1d, + 0x0e, 0xf8, 0x60, 0xf2, 0x88, 0xbc, 0x87, 0x95, 0xbe, 0x3c, + 0x96, 0x82, 0x71, 0xd8, 0x86, 0x05, 0x53, 0x4e, 0xa2, 0x6b, + 0x9f, 0x1e, 0x9d, 0xe7, 0xb1, 0x58, 0xac, 0x55, 0x23, 0x74, + 0x6b, 0xa2, 0xf6, 0x90, 0x74, 0x4a, 0xa2, 0x26, 0x99, 0xd5, + 0x64, 0x8e, 0x54, 0x4c, 0x86, 0x5e, 0x71, 0xa5, 0xf0, 0xe0, + 0x39, 0xe2, 0x3d, 0x05, 0x0f, 0x58, 0x74, 0x27, 0x3c, 0x67, + 0xe4, 0x23, 0x3a, 0x68, 0x04, 0x7f, 0xfc, 0x41, 0xc3, 0x2b, + 0xed, 0x9d, 0xc1, 0x2e, 0xfd, 0xfa, 0x3a, 0x29, 0xca, 0x42, + 0x6e, 0xc7, 0x03, 0x72, 0x87, 0x80, 0xb7, 0x70, 0x52, 0xaa, + 0x20, 0x81, 0xff, 0xa8, 0x13, 0x49, 0x14, 0x8a, 0x59, 0x5b, + 0x84, 0x17, 0xb1, 0xd4, 0x67, 0x19, 0x4b, 0x66, 0x30, 0xd2, + 0x6f, 0x3c, 0xe9, 0x70, 0x1f, 0xf6, 0xb9, 0xb5, 0xb1, 0xb1, + 0xd1, 0xea, 0xb5, 0x92, 0x08, 0xf2, 0x15, 0xb5, 0x20, 0x05, + 0x79, 0x81, 0xfe, 0xc5, 0x71, 0x06, 0xe1, 0x8f, 0x33, 0xe2, + 0x52, 0xdb, 0x6b, 0xad, 0xd2, 0x8b, 0x34, 0xbb, 0x4a, 0xd1, + 0x5f, 0x69, 0x16, 0xd0, 0x63, 0x6e, 0xeb, 0x6c, 0x35, 0x9f, + 0x07, 0x80, 0x03, 0x28, 0x6c, 0xfd, 0xa3, 0xbf, 0x4f, 0xa9, + 0x7f, 0xf2, 0x89, 0x74, 0xbb, 0x00, 0x91, 0xd5, 0x17, 0xe7, + 0x52, 0xa2, 0x03, 0x4c, 0x04, 0xf6, 0x0c, 0x6c, 0x04, 0x42, + 0x6d, 0x19, 0x18, 0xde, 0x4e, 0xde, 0xeb, 0xc0, 0x0c, 0xb0, + 0x85, 0x23, 0x58, 0x0e, 0xe5, 0x30, 0x5b, 0xe0, 0x57, 0x39, + 0xe1, 0xeb, 0xd6, 0x07, 0x43, 0x49, 0x53, 0xc5, 0x78, 0x95, + 0x45, 0xde, 0x60, 0xf9, 0x26, 0xf1, 0x77, 0x1a, 0xf1, 0xec, + 0x25, 0x0d, 0xa2, 0xc5, 0x17, 0x12, 0x49, 0x3e, 0x29, 0xff, + 0x1a, 0x29, 0xbf, 0x1e, 0x3e, 0x0f, 0xe4, 0x9f, 0x8f, 0x59, + 0x21, 0x0f, 0x14, 0xe1, 0xd1, 0x4c, 0xeb, 0x8a, 0x81, 0x8e, + 0x06, 0x9b, 0x9b, 0xe7, 0x79, 0x78, 0xc3, 0x17, 0xa2, 0x3f, + 0xb1, 0x29, 0x21, 0x71, 0x35, 0x43, 0x9d, 0x13, 0xe8, 0x72, + 0xce, 0x46, 0x1e, 0x9f, 0x82, 0x26, 0xb4, 0x94, 0x7f, 0x3d, + 0xe2, 0x9d, 0xba, 0x87, 0x6e, 0xdc, 0xc4, 0x70, 0x8d, 0x7f, + 0xfb, 0x3e, 0x9c, 0xc2, 0x6b, 0x8f, 0x26, 0xd8, 0x94, 0x4f, + 0xd8, 0x6d, 0x24, 0x0b, 0xb4, 0xef, 0x33, 0x0c, 0x5b, 0x22, + 0x95, 0xe6, 0x1d, 0x7a, 0xac, 0x4a, 0xcf, 0x6f, 0x37, 0x69, + 0x4f, 0xee, 0xa5, 0xb5, 0xb9, 0x3c, 0x34, 0x77, 0x6c, 0xab, + 0xff, 0xec, 0x10, 0x7b, 0x1e, 0x15, 0x4e, 0x95, 0x7d, 0x65, + 0xd1, 0xfa, 0x6b, 0x89, 0x0f, 0xad, 0x0b, 0x1e, 0x1b, 0x4b, + 0xd7, 0xfc, 0x28, 0x8c, 0xac, 0x14, 0x96, 0x59, 0xc1, 0xae, + 0xec, 0xa8, 0x08, 0x04, 0xbd, 0x8c, 0x38, 0x9e, 0x80, 0xa2, + 0xb8, 0xde, 0xa1, 0x64, 0xba, 0x3c, 0xa8, 0x0f, 0x6c, 0x38, + 0x6d, 0x02, 0xd1, 0x86, 0x0c, 0x81, 0x24, 0x8e, 0x92, 0xe2, + 0x4a, 0x08, 0x94, 0x09, 0xc4, 0x64, 0x02, 0x47, 0x55, 0x1e, + 0x31, 0x82, 0xd5, 0x82, 0xd5, 0x4f, 0x5a, 0xcd, 0x17, 0x10, + 0xd1, 0xfd, 0x65, 0x7a, 0xde, 0x1a, 0xf3, 0xf0, 0x32, 0x44, + 0xcf, 0xb5, 0x01, 0x63, 0xd9, 0xaf, 0x40, 0x57, 0x00, 0x83, + 0x80, 0x21, 0xb0, 0xd2, 0xab, 0x23, 0x68, 0x1c, 0xd8, 0x0d, + 0x5e, 0x20, 0x05, 0x5f, 0x41, 0x3a, 0x9d, 0x87, 0xe9, 0x85, + 0x0c, 0x5e, 0x37, 0xa4, 0x5b, 0xd6, 0x21, 0x5d, 0xc4, 0x61, + 0xba, 0xbd, 0xca, 0xa5, 0x2a, 0xdb, 0x52, 0x50, 0x3f, 0xcb, + 0x90, 0xb1, 0xd1, 0x46, 0x9a, 0xf8, 0xfe, 0xe9, 0xaf, 0x68, + 0x97, 0xa2, 0x15, 0xa1, 0x6a, 0x66, 0xc9, 0x3c, 0x7a, 0x9f, + 0x45, 0x31, 0xe6, 0xae, 0x14, 0xfd, 0x41, 0x82, 0xe4, 0xb6, + 0xe4, 0x28, 0x81, 0xad, 0x75, 0xb2, 0x5f, 0x7e, 0x16, 0xea, + 0xd5, 0xc9, 0x58, 0x19, 0x9a, 0xdb, 0xd6, 0x83, 0x7a, 0xe4, + 0x24, 0xed, 0x37, 0x42, 0x0f, 0x95, 0x9d, 0xcd, 0xb2, 0x35, + 0x61, 0x9a, 0xda, 0x96, 0xf4, 0x30, 0x50, 0x04, 0xf6, 0xb3, + 0xa0, 0x81, 0x28, 0x78, 0x78, 0x3f, 0xa2, 0xe0, 0xe1, 0xdd, + 0x44, 0x81, 0xe8, 0x36, 0x3e, 0xd8, 0xa0, 0x0e, 0x84, 0xf3, + 0xb9, 0x12, 0xda, 0x31, 0x8f, 0x97, 0x71, 0x89, 0x7d, 0x3f, + 0x0a, 0x43, 0x50, 0xa8, 0xaa, 0xc7, 0x64, 0x54, 0x2d, 0x2d, + 0x69, 0x90, 0x25, 0x79, 0x90, 0x38, 0x9b, 0x4f, 0xf3, 0x17, + 0x03, 0x29, 0x6b, 0xc3, 0x1d, 0x46, 0x4f, 0xdf, 0xe8, 0x1a, + 0x8f, 0xa0, 0xba, 0xd3, 0x35, 0x18, 0x41, 0x66, 0xc5, 0x79, + 0x8e, 0x18, 0x9d, 0x76, 0xaa, 0x5f, 0x66, 0x87, 0xf8, 0xfa, + 0xa2, 0xd3, 0x5d, 0x6f, 0x29, 0xc3, 0xaa, 0x0f, 0xa5, 0x3e, + 0x96, 0x43, 0x5e, 0xa2, 0x1e, 0xa5, 0xef, 0x34, 0x36, 0x16, + 0x5d, 0xe6, 0xae, 0x0c, 0xf6, 0xb5, 0x66, 0xd3, 0xf0, 0x5f, + 0x81, 0x4f, 0xec, 0x32, 0x2a, 0xbb, 0x64, 0x3e, 0x44, 0xb5, + 0x14, 0x9e, 0x5a, 0x29, 0x64, 0x53, 0x4f, 0xf4, 0x67, 0x56, + 0xf4, 0xa9, 0x2f, 0xfa, 0xd0, 0xae, 0xea, 0x46, 0x53, 0xc9, + 0x2f, 0x00, 0x8d, 0x21, 0x38, 0x0a, 0x0f, 0x87, 0xb2, 0xdd, + 0x54, 0x3b, 0xbe, 0xd8, 0x7d, 0xde, 0x81, 0x14, 0xb8, 0x76, + 0x0c, 0xa5, 0x55, 0x82, 0x93, 0x39, 0x2c, 0x87, 0x1b, 0xf2, + 0xde, 0xa7, 0x18, 0x25, 0x04, 0xd6, 0x58, 0xc1, 0x01, 0x01, + 0x5a, 0x8b, 0x86, 0x1a, 0x0a, 0x17, 0x92, 0x12, 0xaa, 0xd2, + 0x0e, 0x88, 0x7f, 0x4e, 0x99, 0xb8, 0x1b, 0xd4, 0x8d, 0x0d, + 0xe9, 0x77, 0xb5, 0xc4, 0x23, 0x6c, 0x7e, 0x47, 0x4a, 0x16, + 0x0e, 0x27, 0x18, 0x2c, 0xa1, 0xaf, 0xe0, 0xd8, 0x06, 0xd5, + 0xad, 0xaf, 0xeb, 0x53, 0x2b, 0xed, 0x12, 0xea, 0xb8, 0x8c, + 0x8c, 0xf9, 0x19, 0x79, 0xcc, 0xcf, 0xc8, 0x9c, 0x9f, 0x91, + 0xe7, 0xfc, 0x8c, 0xec, 0xf3, 0x33, 0xfa, 0xff, 0xf3, 0xa3, + 0x3f, 0x30, 0xd1, 0x8e, 0xfc, 0xd6, 0x75, 0xd6, 0x66, 0x57, + 0x83, 0x5c, 0xf9, 0xf1, 0xdd, 0x49, 0x5d, 0x2d, 0x21, 0x33, + 0x42, 0xa8, 0x8e, 0xef, 0xb5, 0x6b, 0xb4, 0xc1, 0xe4, 0xee, + 0xd4, 0x54, 0xd6, 0xd6, 0x7c, 0xa7, 0xca, 0xd6, 0xde, 0x63, + 0xf9, 0x71, 0x85, 0x5c, 0x11, 0xb1, 0x3a, 0x4b, 0xd5, 0xdd, + 0x0b, 0x6b, 0xb1, 0x8a, 0xf0, 0xc0, 0xdc, 0x3f, 0x8f, 0xdd, + 0x82, 0xa5, 0xaa, 0x18, 0x4a, 0x8e, 0xeb, 0x06, 0xb6, 0x2e, + 0x2d, 0x72, 0x7c, 0x5b, 0xbc, 0xef, 0x92, 0x98, 0x4b, 0xf5, + 0xbc, 0x90, 0x56, 0x36, 0x71, 0x10, 0x20, 0xc3, 0x8e, 0xb9, + 0xe4, 0x80, 0x9f, 0x74, 0x14, 0xf3, 0x1c, 0x49, 0xcc, 0x2c, + 0xdd, 0x0d, 0xd8, 0x63, 0xe6, 0x1b, 0x50, 0xea, 0x25, 0x20, + 0xc9, 0xc9, 0xc6, 0x2f, 0x9c, 0x98, 0xb1, 0x88, 0xaf, 0x0f, + 0xae, 0x81, 0x80, 0x3e, 0xa6, 0x00, 0x4f, 0xd4, 0x72, 0x81, + 0x07, 0xe2, 0x86, 0x11, 0xfc, 0xe3, 0x0f, 0x1a, 0xca, 0x95, + 0x7e, 0xe8, 0x1a, 0x15, 0x8e, 0xa4, 0xf4, 0xf3, 0x6a, 0x11, + 0xbe, 0xc8, 0x10, 0x19, 0xef, 0xea, 0xee, 0x30, 0x88, 0x3c, + 0xaa, 0x87, 0x57, 0xed, 0xff, 0x06, 0xbc, 0x76, 0xbb, 0xa0, + 0xb4, 0xe9, 0x84, 0x9c, 0xdc, 0xec, 0x86, 0xd1, 0x6d, 0xd5, + 0x0c, 0xdf, 0xe1, 0xf6, 0x59, 0xd3, 0x3c, 0xda, 0xc0, 0x62, + 0xef, 0x78, 0x86, 0x08, 0x0e, 0xc3, 0x32, 0x7d, 0xf2, 0xa0, + 0x4e, 0x7e, 0xc0, 0x78, 0xdb, 0x87, 0x8a, 0x14, 0xda, 0x46, + 0x5d, 0x3c, 0x18, 0x0c, 0xfe, 0x1a, 0x74, 0x86, 0x3f, 0xfd, + 0xa4, 0xdc, 0xf7, 0x52, 0xc4, 0x09, 0x99, 0x34, 0xcb, 0xeb, + 0x46, 0x7a, 0xcd, 0xcc, 0xe7, 0xc9, 0x06, 0x82, 0x2f, 0x84, + 0x03, 0x3d, 0xed, 0xa4, 0xc7, 0x95, 0x83, 0xeb, 0x91, 0xac, + 0x31, 0x50, 0x64, 0xb9, 0xc3, 0x25, 0xc2, 0x06, 0x5a, 0xe2, + 0xc2, 0x69, 0x6b, 0xad, 0xf2, 0xc5, 0x6c, 0x35, 0x15, 0xb2, + 0xe0, 0x35, 0x3a, 0xe6, 0xf3, 0xd8, 0x1a, 0x2a, 0xf8, 0x79, + 0xad, 0x85, 0xc8, 0xa8, 0x29, 0x91, 0x91, 0x7c, 0xd2, 0xa5, + 0xc3, 0x88, 0x18, 0x94, 0x05, 0xa2, 0x87, 0xc8, 0xb5, 0x10, + 0x7c, 0x5b, 0xe3, 0x50, 0xab, 0xf4, 0xf0, 0xc0, 0x93, 0x42, + 0x7b, 0xbc, 0x2c, 0x16, 0x87, 0x2c, 0xa2, 0x34, 0x7d, 0xa6, + 0x67, 0x0f, 0x72, 0x4f, 0x1a, 0x28, 0x83, 0x6b, 0x91, 0xb3, + 0x27, 0x03, 0xc1, 0xbf, 0x8e, 0xc8, 0xd6, 0xad, 0x97, 0xf3, + 0x79, 0xab, 0x37, 0x7a, 0xf4, 0xc8, 0x46, 0xad, 0x22, 0x9c, + 0x75, 0x33, 0xb6, 0x3a, 0xd3, 0xba, 0x6b, 0x9d, 0xf9, 0xae, + 0x4f, 0x24, 0xee, 0x3a, 0x36, 0xec, 0xc1, 0x1c, 0xb3, 0x1d, + 0xca, 0xb7, 0x33, 0xf6, 0x80, 0xa5, 0xba, 0x5c, 0xc2, 0x4f, + 0x81, 0xc9, 0xf5, 0xc5, 0x94, 0xfe, 0x92, 0xa7, 0xce, 0xf9, + 0x6e, 0x77, 0x22, 0x43, 0x53, 0x21, 0x40, 0xde, 0xfa, 0x4a, + 0x79, 0xe6, 0x8d, 0x07, 0xb2, 0x0a, 0x92, 0x78, 0x9d, 0xba, + 0x39, 0x1c, 0x68, 0x58, 0xea, 0xbb, 0x56, 0x0b, 0x1a, 0x06, + 0x30, 0xf1, 0x6c, 0xaf, 0x4c, 0x6d, 0xe8, 0xf2, 0x1b, 0x55, + 0x8d, 0x84, 0xed, 0xc1, 0xa9, 0x8d, 0x84, 0x0c, 0xa7, 0x91, + 0x30, 0x1f, 0x9f, 0xda, 0x08, 0x08, 0xa8, 0xb1, 0xc7, 0xd6, + 0xa1, 0x5c, 0xc8, 0x76, 0xf4, 0x1b, 0x3e, 0x79, 0xce, 0xec, + 0xd9, 0x64, 0x64, 0x4f, 0x9e, 0x3b, 0xde, 0xf5, 0x42, 0x0a, + 0x5b, 0xcf, 0xb7, 0x46, 0x13, 0x5b, 0x43, 0xe9, 0xdb, 0x1f, + 0xf3, 0x9d, 0x91, 0xf6, 0x26, 0xa9, 0x09, 0xaa, 0xde, 0x26, + 0xdb, 0x4b, 0xa4, 0xca, 0xc6, 0xc8, 0xcf, 0x9a, 0xc4, 0x74, + 0x7e, 0x9b, 0x74, 0xc0, 0x8d, 0x2f, 0xcb, 0x2b, 0x6f, 0xba, + 0x0d, 0x33, 0xba, 0xb5, 0x9b, 0xb5, 0x9b, 0xdb, 0x76, 0xdd, + 0xee, 0xe6, 0xa6, 0x66, 0xdd, 0xe4, 0xcc, 0xd7, 0xa0, 0x9e, + 0xc4, 0x00, 0x4d, 0xa7, 0x65, 0x7d, 0x23, 0xea, 0x45, 0x8e, + 0x18, 0x88, 0x75, 0x7a, 0xc6, 0x9b, 0x51, 0x3f, 0x62, 0x60, + 0x62, 0xd7, 0x49, 0x19, 0xef, 0x48, 0xfd, 0x48, 0xd1, 0x17, + 0xa9, 0x3a, 0x35, 0xf3, 0x7d, 0xa8, 0x1f, 0xb9, 0xd2, 0x46, + 0xce, 0xf1, 0xe2, 0xd4, 0x8f, 0xa2, 0xf4, 0x86, 0x55, 0x6f, + 0xa4, 0xfa, 0x22, 0xd5, 0x8f, 0xdc, 0xf5, 0x52, 0xa7, 0xa2, + 0x3e, 0x51, 0xf5, 0xa3, 0xc2, 0x9e, 0xba, 0xea, 0xb4, 0xf4, + 0xb7, 0xab, 0x7e, 0xd4, 0xc8, 0x9b, 0x17, 0x63, 0x0a, 0x92, + 0x5b, 0x0c, 0x7f, 0x62, 0x50, 0xb9, 0x45, 0x7b, 0xca, 0x42, + 0xa7, 0x62, 0x79, 0xff, 0xea, 0x45, 0x89, 0xbc, 0xa4, 0xd5, + 0xa9, 0xa9, 0x2f, 0x63, 0xbd, 0x08, 0x5d, 0x18, 0x1d, 0x53, + 0x9f, 0xca, 0xfa, 0xb5, 0x86, 0x3c, 0xb8, 0xd5, 0x29, 0xbd, + 0x6e, 0x4e, 0x09, 0x3f, 0xc3, 0x15, 0xaf, 0x05, 0x84, 0x13, + 0xbb, 0x6d, 0x65, 0x2b, 0x79, 0xb7, 0x7c, 0xa5, 0x18, 0xbe, + 0xdb, 0x73, 0x6c, 0xa1, 0x9a, 0x4f, 0xaa, 0x7d, 0xc7, 0x96, + 0x1e, 0x80, 0x92, 0x17, 0x76, 0xe6, 0x21, 0xaf, 0xd4, 0xdf, + 0x88, 0x8a, 0x0f, 0xaa, 0x3b, 0x16, 0x7c, 0x27, 0x0e, 0xa5, + 0x2c, 0xe9, 0x0c, 0x0d, 0x5d, 0x65, 0x16, 0x30, 0xcd, 0x59, + 0x3e, 0x62, 0xcb, 0x7b, 0x3e, 0x3b, 0x7e, 0xcb, 0x5e, 0x33, + 0x72, 0x3e, 0x1c, 0x93, 0xa2, 0x3d, 0x2b, 0x8e, 0xc5, 0x67, + 0xaf, 0x1e, 0x55, 0xca, 0x67, 0x62, 0x6f, 0xc9, 0x83, 0x89, + 0x18, 0x02, 0xd9, 0xd9, 0x67, 0x43, 0x32, 0x62, 0x83, 0xbb, + 0x8d, 0x18, 0x5c, 0x83, 0x84, 0xaa, 0xf3, 0xae, 0x89, 0x62, + 0xdd, 0x9b, 0x25, 0x50, 0xdc, 0x59, 0xd4, 0x1c, 0x3c, 0xb4, + 0x2a, 0xad, 0x31, 0x0d, 0x2e, 0xae, 0x6d, 0x86, 0x5e, 0xc5, + 0xbe, 0xca, 0x6d, 0x6e, 0x35, 0x75, 0x8c, 0x3c, 0xed, 0x60, + 0xca, 0x7c, 0x0b, 0x06, 0x35, 0x2f, 0x83, 0x6e, 0x5d, 0x9f, + 0xdb, 0x48, 0x56, 0x4f, 0xd2, 0x66, 0x30, 0x44, 0x48, 0xb6, + 0xd4, 0x41, 0x6e, 0xa3, 0x95, 0x5d, 0x2d, 0x96, 0xd7, 0x19, + 0x7b, 0x77, 0x6d, 0xb5, 0xa7, 0xf8, 0xbe, 0xc8, 0xae, 0x7c, + 0x85, 0x7a, 0x64, 0x79, 0x85, 0x2a, 0x2e, 0xac, 0x5c, 0xaf, + 0xa9, 0x89, 0xd8, 0xe7, 0x4d, 0x73, 0x6b, 0x5f, 0x47, 0x6e, + 0xe5, 0xcb, 0xc0, 0xb6, 0x69, 0x5b, 0x96, 0x17, 0xd3, 0x0e, + 0x6c, 0xdb, 0x9e, 0xa7, 0xbd, 0xea, 0x76, 0x60, 0xb2, 0x17, + 0x40, 0x4e, 0xd9, 0x97, 0x46, 0x47, 0x87, 0x7b, 0x3b, 0x49, + 0xba, 0x13, 0x96, 0x21, 0x44, 0x0d, 0x93, 0xb2, 0x67, 0xe6, + 0xd8, 0x9e, 0xa9, 0xcb, 0x23, 0x88, 0x46, 0xad, 0x64, 0x59, + 0x12, 0xa6, 0x26, 0xbd, 0xc4, 0xee, 0x93, 0xa6, 0x5a, 0xe4, + 0x51, 0x95, 0x68, 0xa9, 0x51, 0xaf, 0x31, 0x69, 0xa5, 0xd1, + 0xca, 0xe5, 0xc5, 0xb1, 0xa6, 0xa4, 0xd3, 0xe0, 0x97, 0x90, + 0x5d, 0xdb, 0x8b, 0x03, 0x82, 0xee, 0xe2, 0x46, 0x3c, 0x57, + 0x8c, 0x1d, 0xf7, 0x76, 0x02, 0x25, 0x67, 0x42, 0x1e, 0x17, + 0xab, 0x79, 0x29, 0xd5, 0xdc, 0x98, 0xc7, 0xc4, 0x85, 0x20, + 0x9a, 0x24, 0xcb, 0x3b, 0x7c, 0x25, 0x4e, 0xdb, 0x0e, 0x0b, + 0x36, 0xdb, 0x6a, 0xa9, 0x23, 0xf3, 0xc0, 0x98, 0x1c, 0x0a, + 0x2a, 0x99, 0x9d, 0xd7, 0xe0, 0xa3, 0xd3, 0x17, 0x54, 0xf1, + 0x34, 0xa0, 0xdd, 0x92, 0x53, 0x6a, 0xac, 0x05, 0x54, 0xde, + 0x54, 0x52, 0x69, 0x59, 0xe2, 0x2c, 0xd1, 0x61, 0x26, 0x34, + 0xc7, 0x75, 0xbc, 0x45, 0x17, 0x3c, 0x19, 0x29, 0xc1, 0x30, + 0xcd, 0xd7, 0xae, 0xfc, 0x60, 0x11, 0xce, 0x68, 0xaf, 0xe7, + 0xf1, 0x22, 0x26, 0x81, 0xa7, 0x5c, 0x03, 0xac, 0x00, 0xb2, + 0xd7, 0x7a, 0x13, 0xd1, 0x14, 0x33, 0x64, 0xa3, 0xc6, 0x49, + 0x52, 0x58, 0x5e, 0xb3, 0x8f, 0x24, 0x2b, 0x21, 0xcc, 0xb2, + 0xfc, 0xbc, 0x34, 0x30, 0xdf, 0x97, 0x42, 0x13, 0x25, 0x08, + 0xd5, 0xe1, 0x53, 0xbc, 0xfa, 0x44, 0x6b, 0x80, 0x3e, 0xcc, + 0x7b, 0xa2, 0xea, 0x14, 0xe0, 0x1e, 0x94, 0x2e, 0x57, 0x4a, + 0x57, 0x83, 0x75, 0x86, 0xcd, 0xd4, 0x08, 0x06, 0x45, 0xfb, + 0xd9, 0x62, 0xae, 0x49, 0x58, 0xc5, 0x61, 0x7d, 0x26, 0x86, + 0x28, 0xa7, 0xa4, 0x9e, 0x66, 0xcb, 0x1b, 0x44, 0x7d, 0x37, + 0xcf, 0xa8, 0xc9, 0x8a, 0xfa, 0x3f, 0xe3, 0xbf, 0xd5, 0xae, + 0x91, 0xb1, 0x65, 0x5d, 0xa3, 0x10, 0x66, 0xd7, 0x08, 0xd8, + 0xfd, 0x76, 0xad, 0x90, 0x32, 0x36, 0x8e, 0x1b, 0xf7, 0xd1, + 0x0a, 0xfb, 0xcd, 0xb8, 0x12, 0x55, 0xa0, 0xb0, 0xa5, 0x92, + 0x65, 0x90, 0x71, 0x66, 0xf3, 0x4c, 0x83, 0x0c, 0xd3, 0x96, + 0x6d, 0x50, 0x34, 0x29, 0xb3, 0x98, 0x2e, 0xdb, 0xc1, 0x06, + 0xe9, 0xf4, 0x46, 0xbb, 0x17, 0x0c, 0x44, 0x6e, 0x3d, 0x4b, + 0x7b, 0x3e, 0x0f, 0x4e, 0x10, 0x2e, 0xf9, 0x21, 0x39, 0x3a, + 0x24, 0xdc, 0x81, 0xa5, 0x5e, 0xe8, 0x1b, 0xaa, 0x9b, 0x5d, + 0xc6, 0x11, 0x05, 0x91, 0x6d, 0x04, 0x92, 0x88, 0xcb, 0x5c, + 0x69, 0x10, 0x93, 0xa8, 0xc7, 0xdc, 0x8d, 0xb9, 0xa1, 0xd5, + 0xd1, 0x8b, 0xc4, 0xe8, 0x05, 0xaa, 0xdf, 0xb8, 0x93, 0x56, + 0xb7, 0x12, 0x6d, 0x93, 0xa8, 0x64, 0x26, 0x29, 0xa0, 0x06, + 0x89, 0x08, 0x60, 0xf1, 0xa1, 0xd7, 0x63, 0x6e, 0x88, 0x0f, + 0x5a, 0x66, 0x66, 0xf4, 0xdd, 0x7a, 0x7e, 0x30, 0x0b, 0xd8, + 0xf9, 0x41, 0xb9, 0x93, 0x83, 0xd8, 0x0d, 0xea, 0x96, 0xcd, + 0x5b, 0x64, 0x39, 0x42, 0x98, 0x44, 0xbd, 0x8f, 0x10, 0xf5, + 0xa8, 0xc6, 0x11, 0x42, 0x6f, 0xc9, 0x83, 0x89, 0x18, 0x85, + 0xaa, 0x23, 0x84, 0x18, 0x5f, 0x83, 0x84, 0x76, 0x84, 0x10, + 0xc5, 0xb7, 0x38, 0x42, 0x68, 0x8d, 0x69, 0x7e, 0x84, 0xa8, + 0x21, 0x60, 0x57, 0xae, 0xd5, 0x48, 0x87, 0xd5, 0x14, 0xec, + 0x9e, 0x9e, 0x10, 0x3b, 0xc3, 0x38, 0xc5, 0xb0, 0xbd, 0x4e, + 0x1c, 0x63, 0x24, 0xdf, 0x01, 0x57, 0x2d, 0xd5, 0xba, 0xc4, + 0x9a, 0x58, 0x65, 0x2a, 0xc3, 0x55, 0x9d, 0x61, 0x9a, 0xd7, + 0xd5, 0xaa, 0x5c, 0x97, 0x7e, 0xf7, 0xe4, 0x1a, 0xd7, 0x80, + 0xfc, 0xa6, 0x22, 0xaa, 0xc9, 0xb2, 0x64, 0x87, 0x05, 0x2a, + 0xb2, 0xed, 0xcc, 0x8a, 0x5d, 0x1b, 0x2d, 0x2c, 0x44, 0x94, + 0x03, 0xb4, 0x87, 0x75, 0x94, 0xcc, 0xa3, 0x64, 0x87, 0x41, + 0xf8, 0x70, 0x5f, 0xcb, 0xf6, 0x16, 0xcb, 0xbe, 0x42, 0x29, + 0x8a, 0x5d, 0xf2, 0x03, 0xde, 0x90, 0xa4, 0x0a, 0x92, 0xb4, + 0x88, 0xf3, 0x52, 0xae, 0x80, 0x4e, 0x90, 0xb8, 0x13, 0xc6, + 0x2e, 0x00, 0xe8, 0x9f, 0x9f, 0x82, 0x87, 0xea, 0xbd, 0xf0, + 0x1a, 0xf0, 0x13, 0x7d, 0xd6, 0x8f, 0x28, 0x50, 0x5a, 0xdb, + 0xe8, 0x23, 0xcf, 0xfc, 0x86, 0x41, 0xfa, 0x38, 0x13, 0xe6, + 0x9b, 0xa3, 0x77, 0x6f, 0x21, 0x91, 0xe6, 0xc6, 0x46, 0x5b, + 0xe1, 0x33, 0x48, 0x02, 0x18, 0x60, 0x30, 0x74, 0x3e, 0x79, + 0x59, 0x96, 0x79, 0x82, 0xf4, 0x98, 0xb8, 0xd3, 0xc6, 0x53, + 0xdb, 0xee, 0xb5, 0xaf, 0x92, 0xa8, 0x9c, 0x3d, 0x7f, 0x3c, + 0x58, 0x5e, 0x8f, 0xdb, 0x22, 0x19, 0xab, 0xe3, 0x3e, 0x18, + 0xed, 0x29, 0xe6, 0x70, 0xd0, 0xd1, 0xd0, 0x99, 0x48, 0x7d, + 0x34, 0x26, 0xb7, 0x91, 0x07, 0x4e, 0xd4, 0x51, 0x06, 0xce, + 0x37, 0x2b, 0xed, 0xf7, 0x59, 0xbb, 0x06, 0x67, 0x68, 0xe2, + 0xc0, 0xb1, 0xb1, 0x06, 0xcb, 0x58, 0xef, 0x6d, 0x62, 0x78, + 0xae, 0x41, 0x33, 0x16, 0x79, 0x1b, 0x87, 0xc2, 0x11, 0x02, + 0x5d, 0x1a, 0xa2, 0x17, 0xc3, 0x91, 0x32, 0x3a, 0x64, 0x51, + 0xcd, 0xe2, 0xe4, 0x7c, 0x56, 0x4e, 0x5a, 0x0f, 0xb7, 0xd0, + 0xd0, 0xb7, 0xc6, 0x15, 0x77, 0x89, 0xf2, 0xce, 0xc5, 0x22, + 0x43, 0xd9, 0x3d, 0x1c, 0x3c, 0x63, 0x46, 0x35, 0x8e, 0x0b, + 0x65, 0x9c, 0xc8, 0x6d, 0x11, 0x9f, 0xa8, 0x2d, 0x96, 0xb5, + 0xae, 0xe2, 0x4a, 0xc4, 0x15, 0xc6, 0xc9, 0x4e, 0xc0, 0x7a, + 0x0b, 0x62, 0x0d, 0xe9, 0xe4, 0x20, 0x60, 0x35, 0x47, 0x5b, + 0xc3, 0x2d, 0x39, 0x08, 0x90, 0xf8, 0x48, 0x26, 0x01, 0x3d, + 0xfa, 0x91, 0x03, 0x5d, 0x12, 0xfd, 0xce, 0xe8, 0x57, 0x0e, + 0x54, 0xdd, 0x36, 0xe0, 0x3c, 0x26, 0x63, 0xcc, 0xbb, 0x1d, + 0x93, 0xab, 0x03, 0x82, 0x1d, 0xcb, 0xc7, 0x64, 0xb9, 0xfd, + 0x92, 0xea, 0x70, 0x5c, 0x73, 0x52, 0x3e, 0x16, 0x27, 0xe5, + 0x63, 0xdb, 0x49, 0xf9, 0xf8, 0x5e, 0x4e, 0xca, 0xc7, 0xf7, + 0x72, 0x52, 0x36, 0xce, 0xc9, 0x4a, 0xe3, 0xfd, 0x6c, 0x30, + 0x30, 0x4c, 0x76, 0x1b, 0x8c, 0x52, 0xe2, 0x63, 0x83, 0x39, + 0xfe, 0x2e, 0x36, 0x18, 0xfe, 0x6a, 0xd1, 0xd2, 0xf3, 0xdb, + 0x58, 0x08, 0x8e, 0x6f, 0x71, 0x16, 0x73, 0xf0, 0xd6, 0xf7, + 0x30, 0x12, 0x1c, 0x7f, 0x03, 0x23, 0x01, 0x0f, 0xe3, 0xed, + 0x38, 0x4a, 0xd3, 0xee, 0x36, 0x33, 0x14, 0x1c, 0x37, 0x30, + 0x14, 0x1c, 0x7f, 0x53, 0x43, 0xc1, 0x7d, 0x75, 0xcf, 0x6e, + 0x2c, 0x38, 0x6e, 0x60, 0x2c, 0x38, 0xbe, 0x8d, 0xb1, 0xe0, + 0xb6, 0x0c, 0xfa, 0x3f, 0xde, 0x5e, 0x50, 0x2d, 0xa0, 0x6a, + 0xed, 0x05, 0xc7, 0xff, 0xd9, 0xf6, 0x02, 0xba, 0x5b, 0x76, + 0xaa, 0xc2, 0xdb, 0xf1, 0x78, 0x36, 0x24, 0x98, 0x8d, 0xb2, + 0x58, 0x60, 0x84, 0x44, 0xe1, 0x84, 0x47, 0xaa, 0xe1, 0x81, + 0xf5, 0x12, 0x1c, 0x0b, 0x45, 0xdd, 0x0d, 0x04, 0x82, 0x12, + 0x2c, 0x04, 0x41, 0x7f, 0x2a, 0xb7, 0x46, 0x1b, 0x34, 0x74, + 0x89, 0x1a, 0xd4, 0x02, 0x75, 0x51, 0x45, 0xfd, 0xdc, 0xba, + 0x42, 0xc0, 0x34, 0x00, 0x4a, 0x4b, 0x8e, 0xc3, 0x01, 0xdf, + 0x37, 0xb6, 0x67, 0xc9, 0xf2, 0x5d, 0x86, 0xa4, 0x99, 0x17, + 0x19, 0x01, 0x6d, 0x25, 0xb4, 0x9d, 0xa1, 0x2d, 0xd1, 0x9b, + 0x10, 0x81, 0xb6, 0x12, 0x6a, 0xd2, 0x35, 0x46, 0xea, 0x43, + 0x7c, 0x69, 0x12, 0x3b, 0xbc, 0x88, 0xcb, 0xe9, 0xcc, 0x8b, + 0x0e, 0x05, 0x3d, 0x59, 0x6f, 0x05, 0xa7, 0x37, 0x25, 0x6a, + 0x19, 0x0b, 0x8c, 0xcd, 0x89, 0xed, 0xce, 0xc3, 0x62, 0xf6, + 0xb1, 0xc0, 0x69, 0xb6, 0xea, 0xe9, 0x09, 0x68, 0x20, 0xf9, + 0x5f, 0x2d, 0x5b, 0x3f, 0x0f, 0x4b, 0xa4, 0x70, 0x78, 0xf7, + 0x92, 0x40, 0xeb, 0x0d, 0x54, 0x63, 0x9d, 0xf8, 0x8e, 0x5c, + 0x01, 0xa1, 0x4f, 0x6c, 0x5c, 0xc1, 0x29, 0x41, 0x8d, 0x7b, + 0x91, 0x1f, 0x21, 0x0a, 0xcb, 0xe8, 0xd8, 0x62, 0x2b, 0x59, + 0xf1, 0x8e, 0x77, 0x61, 0x8f, 0x6d, 0x9d, 0xf4, 0xac, 0xa5, + 0xef, 0x92, 0xf4, 0x43, 0xfc, 0xef, 0xd6, 0x89, 0x35, 0x6c, + 0xa0, 0x6b, 0xf1, 0xf1, 0x60, 0x52, 0x8e, 0xf5, 0x47, 0xcb, + 0x2d, 0x4b, 0x30, 0xba, 0x49, 0xdd, 0xab, 0x90, 0xa2, 0x29, + 0x0b, 0x71, 0x9e, 0x4d, 0x69, 0x7e, 0x48, 0xd7, 0x10, 0x51, + 0xac, 0xcf, 0x1c, 0x54, 0x7d, 0xe0, 0x6a, 0xad, 0x02, 0x75, + 0x3e, 0x2d, 0x97, 0x34, 0x43, 0xd8, 0x89, 0x6c, 0xd6, 0xc3, + 0x95, 0x62, 0x0f, 0xcf, 0x1d, 0x92, 0xc4, 0x14, 0x2b, 0xad, + 0xa0, 0xa4, 0x52, 0xe3, 0xdc, 0x73, 0x30, 0xeb, 0x8d, 0xc5, + 0x5b, 0x93, 0x28, 0xc0, 0xb9, 0xb5, 0x24, 0x97, 0xf5, 0xdd, + 0x24, 0x9e, 0x47, 0x87, 0x71, 0x39, 0x94, 0xb1, 0xc9, 0xc1, + 0xf2, 0xf9, 0x56, 0xbc, 0x18, 0x6b, 0x4f, 0x70, 0x14, 0xa3, + 0x4f, 0x6d, 0xed, 0xd8, 0x32, 0x78, 0xeb, 0xea, 0x87, 0x4f, + 0xcc, 0xfa, 0xa1, 0xca, 0xd5, 0xd2, 0x77, 0x90, 0x29, 0xa4, + 0xcc, 0xcd, 0xb3, 0x38, 0x5c, 0xfa, 0xa0, 0x62, 0x38, 0x19, + 0x71, 0x91, 0xa4, 0x1b, 0xbe, 0xc8, 0x08, 0xd6, 0xc0, 0xcf, + 0x8b, 0x22, 0xf1, 0xc1, 0xbd, 0x4a, 0xce, 0x12, 0x0c, 0x7b, + 0x22, 0xa9, 0xae, 0x5f, 0x12, 0xec, 0x1d, 0x13, 0x26, 0x69, + 0x61, 0xf2, 0x47, 0x2f, 0x68, 0x91, 0xe4, 0x91, 0x3c, 0xea, + 0x50, 0x4b, 0x7d, 0xb3, 0x02, 0x71, 0x5d, 0x37, 0x08, 0x08, + 0x7f, 0x5c, 0x61, 0xb7, 0xde, 0x6a, 0xd0, 0x1b, 0xe4, 0x21, + 0x85, 0x16, 0x25, 0xc9, 0xd2, 0x68, 0xbd, 0xfe, 0x93, 0xe0, + 0xef, 0x41, 0x4b, 0xfc, 0x84, 0xd7, 0xb4, 0xef, 0x71, 0x9a, + 0x4c, 0xf6, 0x85, 0x79, 0x49, 0x28, 0x8f, 0x4b, 0x59, 0xe5, + 0xc0, 0xee, 0xde, 0x55, 0xcb, 0x6b, 0x03, 0xd5, 0xea, 0x80, + 0xf8, 0x10, 0x23, 0xe5, 0x03, 0x18, 0xae, 0xbe, 0x69, 0xec, + 0x0b, 0x75, 0xd8, 0x46, 0x4d, 0x5d, 0xe3, 0xaf, 0x85, 0x80, + 0x81, 0x17, 0x49, 0x31, 0x25, 0x06, 0xf1, 0x37, 0xdb, 0x5a, + 0xf3, 0x2a, 0x1d, 0x4e, 0x99, 0xd6, 0x61, 0x67, 0x36, 0x0e, + 0x78, 0x72, 0xa2, 0x66, 0x2e, 0x8d, 0xe4, 0x1a, 0xdf, 0x6e, + 0xd7, 0x0f, 0x08, 0xda, 0x65, 0x4a, 0xec, 0x10, 0xae, 0x70, + 0x10, 0x92, 0x9f, 0x34, 0x4d, 0x23, 0x3a, 0xf3, 0x28, 0x79, + 0xd7, 0xb8, 0xff, 0xfb, 0x61, 0xb9, 0x00, 0xb7, 0x44, 0xeb, + 0x20, 0x93, 0x22, 0x4e, 0x71, 0x8d, 0xfa, 0xd8, 0x7e, 0x89, + 0xb1, 0xff, 0xd5, 0x17, 0x91, 0x05, 0xae, 0x23, 0x08, 0x3d, + 0x00, 0xb3, 0x21, 0x44, 0xf1, 0x79, 0x80, 0xd0, 0xdf, 0x66, + 0x61, 0x04, 0x6f, 0xa9, 0x64, 0xc3, 0xa2, 0x0c, 0x4a, 0x6b, + 0x90, 0x34, 0x3c, 0xfa, 0x65, 0x22, 0xa0, 0x94, 0xa7, 0x6c, + 0xac, 0x18, 0x1b, 0x27, 0xc5, 0xbb, 0x6a, 0x08, 0x2f, 0x8b, + 0xfa, 0x99, 0xad, 0xca, 0x8e, 0xba, 0x21, 0x74, 0x64, 0x28, + 0x1a, 0x19, 0x70, 0x8e, 0x1a, 0x85, 0x68, 0xe3, 0x13, 0xb9, + 0x50, 0x16, 0xbd, 0x89, 0xac, 0xf1, 0x7e, 0xa9, 0xa7, 0x67, + 0xc4, 0xd6, 0xbd, 0xad, 0xc1, 0x60, 0x20, 0x91, 0xfc, 0xda, + 0x7b, 0xa4, 0x7c, 0xf8, 0xaa, 0xf9, 0xeb, 0x60, 0xb5, 0x57, + 0x0c, 0x93, 0xfa, 0xfc, 0xb4, 0x58, 0x62, 0xd3, 0xe7, 0x06, + 0xe1, 0x2a, 0x48, 0x12, 0x89, 0xe6, 0xb8, 0x80, 0x97, 0x1d, + 0xf8, 0x95, 0x01, 0x2b, 0x17, 0xc9, 0x66, 0x75, 0xe3, 0x7c, + 0x0d, 0x11, 0x7a, 0x56, 0xb0, 0xd0, 0x91, 0x5b, 0x67, 0xdc, + 0x94, 0x49, 0xad, 0x54, 0x82, 0x30, 0x72, 0xa5, 0xbf, 0xd3, + 0xb5, 0x3f, 0x25, 0x77, 0xed, 0x72, 0x2c, 0x1c, 0x1e, 0x6c, + 0x72, 0x13, 0xe9, 0x6e, 0xc8, 0x19, 0x58, 0xaf, 0x9a, 0x88, + 0xfd, 0xa9, 0x85, 0xcd, 0xfa, 0x75, 0xc8, 0x17, 0x07, 0x9f, + 0x60, 0xc7, 0x84, 0xb0, 0x4c, 0xc0, 0x08, 0x43, 0x0b, 0x13, + 0xc7, 0x47, 0xcd, 0xca, 0x14, 0x62, 0xf9, 0xa9, 0xf7, 0x28, + 0xce, 0x75, 0xa4, 0xe4, 0x09, 0xbe, 0xdd, 0xfc, 0x7d, 0x5d, + 0xf3, 0xd2, 0x8f, 0x08, 0x41, 0xbb, 0x7a, 0x04, 0x11, 0xd5, + 0x4d, 0xbd, 0x88, 0x06, 0x49, 0x37, 0xd5, 0x22, 0x88, 0xf7, + 0xad, 0x1d, 0x4c, 0xe0, 0xd1, 0xc5, 0xf6, 0xae, 0xee, 0x6f, + 0x2f, 0xb6, 0x3e, 0x54, 0xfe, 0xb9, 0x85, 0x00, 0x34, 0x8d, + 0x93, 0xbe, 0x18, 0x81, 0x96, 0xbe, 0x0f, 0x45, 0xc6, 0xed, + 0x89, 0x8c, 0x55, 0x90, 0x72, 0x43, 0x59, 0xa5, 0x9f, 0xad, + 0x82, 0xd2, 0x86, 0x58, 0xa7, 0x46, 0xbe, 0x8f, 0x4b, 0x87, + 0x02, 0x89, 0x4a, 0xf4, 0xe1, 0x41, 0xfb, 0x97, 0x4d, 0x67, + 0x44, 0x90, 0xca, 0xc8, 0xc0, 0x36, 0xf7, 0xba, 0x9c, 0x7d, + 0x42, 0x9b, 0xbd, 0x55, 0x29, 0x40, 0xf0, 0x9f, 0x5b, 0x31, + 0x05, 0xc0, 0x5b, 0x16, 0xfe, 0x0b, 0xf6, 0x26, 0x84, 0x26, + 0x2b, 0xfa, 0x40, 0x29, 0x9a, 0x4d, 0x97, 0x6e, 0x32, 0xb8, + 0x14, 0xd3, 0xd8, 0x4f, 0x31, 0x85, 0xfd, 0xb3, 0x33, 0x9d, + 0x42, 0x52, 0x81, 0x9f, 0xa8, 0x8a, 0x0c, 0x80, 0xbf, 0x7b, + 0xb9, 0xed, 0x86, 0x5f, 0x84, 0x53, 0x03, 0x61, 0x11, 0x16, + 0x17, 0x55, 0x18, 0xa8, 0x54, 0x47, 0x39, 0xbf, 0x72, 0x23, + 0xa0, 0x32, 0x1d, 0x3c, 0x4a, 0x8b, 0x8a, 0x21, 0x48, 0x8b, + 0x06, 0xb3, 0xed, 0x5c, 0x11, 0xbc, 0xcc, 0x32, 0xeb, 0xf6, + 0x45, 0xc1, 0x31, 0xf4, 0xd9, 0x87, 0x38, 0xfb, 0x82, 0x01, + 0x6c, 0x8b, 0x83, 0xa3, 0x4a, 0x8c, 0x30, 0x36, 0x68, 0xd0, + 0xa9, 0xaf, 0x21, 0x40, 0x58, 0xc0, 0xc4, 0x16, 0x99, 0x01, + 0x4c, 0x9c, 0xc4, 0x8a, 0x41, 0x27, 0xd2, 0x81, 0x63, 0x9b, + 0x48, 0xc0, 0xc2, 0x73, 0xe9, 0xc0, 0x31, 0xe7, 0x12, 0xf7, + 0x2b, 0x2d, 0xdc, 0x28, 0xd2, 0x74, 0xca, 0x38, 0x30, 0x46, + 0x87, 0x87, 0x7b, 0x3b, 0x6e, 0x44, 0xa4, 0x57, 0x47, 0x36, + 0x4c, 0xc8, 0xa3, 0x2c, 0xcb, 0x19, 0x13, 0x73, 0xc5, 0x20, + 0x2c, 0xd8, 0x20, 0xd9, 0x0f, 0xe3, 0xfc, 0x52, 0x3c, 0x6c, + 0x33, 0xf1, 0x4b, 0x01, 0x63, 0xa1, 0x50, 0xfe, 0x56, 0x81, + 0xf9, 0x9b, 0x1d, 0x63, 0x3b, 0x8b, 0x62, 0x17, 0xc7, 0x0b, + 0x5c, 0x0c, 0x65, 0xc1, 0xaf, 0xcc, 0x2d, 0x31, 0x51, 0xc8, + 0xc8, 0xe9, 0x29, 0x9c, 0x84, 0x04, 0x27, 0x59, 0x91, 0xf7, + 0x96, 0x4e, 0x4c, 0x39, 0xcd, 0x84, 0x15, 0x17, 0xd2, 0x53, + 0x48, 0x76, 0x04, 0x98, 0x65, 0xae, 0x59, 0xc0, 0x87, 0x9d, + 0x37, 0xdb, 0x07, 0x1d, 0x2b, 0xc3, 0xcb, 0x50, 0x87, 0xa4, + 0x1d, 0x07, 0x1d, 0xe5, 0xf9, 0xb3, 0x6b, 0x92, 0xc1, 0xa3, + 0x42, 0xba, 0x7f, 0xd2, 0x82, 0x03, 0xec, 0xf0, 0x78, 0xf9, + 0xe6, 0xf1, 0xc9, 0x12, 0x48, 0xa0, 0xf2, 0xc4, 0x05, 0x6d, + 0x7b, 0x39, 0x87, 0x07, 0x64, 0x85, 0xa2, 0x45, 0x4a, 0xdf, + 0xdf, 0x67, 0x57, 0x9d, 0xae, 0x1a, 0x63, 0x4b, 0x3e, 0xdd, + 0xa1, 0x6e, 0xa1, 0xb3, 0x69, 0x94, 0x5c, 0xea, 0x87, 0x3b, + 0xb3, 0x7d, 0x48, 0xb1, 0x7d, 0x0b, 0xd0, 0xe4, 0xee, 0xa1, + 0xe3, 0xf1, 0x18, 0x55, 0xc7, 0x90, 0xd4, 0x23, 0x44, 0x39, + 0x9c, 0x1f, 0x96, 0x59, 0x1e, 0x9e, 0x43, 0x96, 0x99, 0x45, + 0x0c, 0x49, 0x72, 0xdf, 0x61, 0x67, 0x14, 0xe8, 0x88, 0x18, + 0x3e, 0xe8, 0x8a, 0x44, 0x44, 0xc3, 0x44, 0x42, 0x14, 0x12, + 0xb3, 0xd0, 0x7e, 0xb4, 0x78, 0x4e, 0x08, 0xa5, 0xa3, 0x06, + 0x89, 0x22, 0x2e, 0xc0, 0x52, 0x55, 0x47, 0xc4, 0x15, 0x5c, + 0x41, 0xa5, 0x25, 0x47, 0x05, 0x63, 0x31, 0x0d, 0x2c, 0xfd, + 0x10, 0x83, 0x4d, 0xae, 0x68, 0x6c, 0xe3, 0x2d, 0xf9, 0x51, + 0x31, 0x78, 0x74, 0x8c, 0xa8, 0x40, 0x90, 0x27, 0xc8, 0x0c, + 0xb8, 0x5c, 0x57, 0x9d, 0xea, 0x7b, 0xe5, 0x53, 0x1f, 0x69, + 0xe0, 0x9a, 0xd7, 0x5e, 0x78, 0x90, 0x67, 0xee, 0xcd, 0x50, + 0x14, 0xea, 0xbb, 0xe1, 0x12, 0x95, 0xd8, 0xb7, 0x43, 0x81, + 0xa3, 0x0c, 0x2a, 0x46, 0x00, 0xa1, 0x4f, 0x41, 0x1c, 0x1b, + 0x9a, 0xc0, 0xfe, 0x8c, 0x51, 0x14, 0xb9, 0xc6, 0x68, 0xec, + 0xe9, 0x5b, 0x9a, 0x8c, 0xa5, 0xed, 0x69, 0x0c, 0x47, 0xce, + 0x63, 0x6f, 0xab, 0x0b, 0x8a, 0xad, 0x75, 0x21, 0xb1, 0x9b, + 0x23, 0xac, 0xaa, 0x1a, 0x19, 0x88, 0xb5, 0xde, 0xd5, 0xe9, + 0x3c, 0x29, 0x66, 0x55, 0x55, 0x53, 0x08, 0x1b, 0x36, 0x2a, + 0x7b, 0x97, 0xa4, 0x3b, 0x31, 0x9a, 0xd8, 0x6a, 0x0a, 0x1c, + 0xca, 0x46, 0x05, 0xb6, 0xbe, 0x0a, 0x74, 0x10, 0x89, 0xae, + 0xda, 0x0f, 0xe3, 0x65, 0x98, 0x13, 0xd3, 0x9f, 0xf0, 0xbf, + 0xb0, 0xd4, 0xcf, 0xe1, 0x1c, 0x74, 0x5e, 0xd2, 0xa7, 0x59, + 0x75, 0x74, 0x38, 0x9c, 0x83, 0xce, 0x41, 0x58, 0xce, 0x5e, + 0x16, 0x1f, 0x32, 0xcc, 0x40, 0x95, 0x94, 0x24, 0x48, 0x07, + 0xad, 0x8f, 0xcc, 0xc8, 0x58, 0x49, 0xe7, 0xa3, 0x69, 0x60, + 0x94, 0x68, 0xec, 0x24, 0xe1, 0x79, 0x1d, 0x05, 0x0c, 0xe3, + 0xc0, 0xdf, 0x4f, 0x49, 0x06, 0xed, 0x3a, 0x1a, 0x1c, 0x4e, + 0xd0, 0x09, 0xd4, 0x81, 0x99, 0x87, 0x49, 0x4a, 0xe3, 0x9d, + 0x57, 0x8f, 0x0b, 0x07, 0x74, 0x91, 0xfa, 0x10, 0x83, 0x15, + 0x12, 0xdf, 0x78, 0x54, 0x52, 0xe2, 0x70, 0xb6, 0xbe, 0x5d, + 0xc4, 0xf1, 0xf2, 0xe5, 0x1c, 0xed, 0x92, 0x74, 0x8c, 0x5d, + 0xcc, 0xa7, 0xc2, 0xd9, 0x28, 0x95, 0xe4, 0x50, 0x7d, 0x74, + 0x48, 0x4d, 0x80, 0x22, 0x28, 0x89, 0x4e, 0x6b, 0xf1, 0xef, + 0xb2, 0x3c, 0xda, 0xe7, 0x80, 0x15, 0xc4, 0x76, 0x7c, 0x89, + 0xed, 0x78, 0x10, 0xc3, 0xae, 0x60, 0x8a, 0x7a, 0x63, 0xd2, + 0xa9, 0xc2, 0x97, 0xde, 0xb5, 0x57, 0x90, 0xc8, 0x10, 0x98, + 0x95, 0x4a, 0xba, 0x5a, 0xec, 0x66, 0xf9, 0x22, 0xb4, 0xab, + 0x78, 0x32, 0x1d, 0x01, 0x29, 0x5f, 0xda, 0xbc, 0xc2, 0x86, + 0x5d, 0x49, 0x6b, 0x82, 0x8f, 0x48, 0x9e, 0x50, 0xc9, 0xd5, + 0x31, 0x6e, 0x62, 0xcc, 0x4d, 0xe4, 0x5d, 0x71, 0xee, 0xdc, + 0x43, 0x78, 0x99, 0xbe, 0x85, 0x2c, 0x8a, 0x73, 0xfb, 0x0e, + 0xc2, 0x31, 0xa4, 0x0d, 0x04, 0x71, 0x28, 0x7c, 0x46, 0xdd, + 0xfd, 0x10, 0x87, 0x05, 0xce, 0x59, 0x7a, 0x49, 0x63, 0x5c, + 0x19, 0x6c, 0xca, 0xf1, 0x91, 0xc6, 0x12, 0xf2, 0x97, 0xa6, + 0x04, 0x78, 0x5c, 0x49, 0xf0, 0x15, 0x8d, 0xe3, 0xed, 0x47, + 0x91, 0x42, 0x57, 0x93, 0xdc, 0x89, 0x4b, 0xa2, 0x7d, 0xd7, + 0x50, 0x4c, 0xb3, 0x92, 0x80, 0x3a, 0xc9, 0x7d, 0x80, 0xec, + 0x04, 0xf5, 0x84, 0x70, 0x12, 0x03, 0x89, 0x4d, 0x14, 0x1a, + 0x72, 0x6c, 0xb0, 0x7a, 0x52, 0x32, 0xb4, 0x8b, 0xe2, 0xce, + 0xe1, 0xf0, 0xa9, 0x2f, 0xbd, 0xa8, 0x60, 0xb0, 0xce, 0x4e, + 0x42, 0xda, 0x9c, 0x7a, 0x42, 0x78, 0x41, 0x90, 0xc5, 0x63, + 0x93, 0x61, 0x74, 0x5d, 0x41, 0x08, 0x39, 0x4d, 0xf2, 0x54, + 0x51, 0x82, 0x7f, 0xd4, 0x5e, 0x1e, 0xec, 0x43, 0xc3, 0x74, + 0x49, 0x61, 0x90, 0x3a, 0xd8, 0x37, 0xbc, 0x0f, 0xe1, 0x0a, + 0xec, 0x60, 0x55, 0xcc, 0xf6, 0xd1, 0x61, 0xf0, 0xe5, 0xc1, + 0xde, 0x11, 0x5a, 0x61, 0xa9, 0xb3, 0x29, 0x80, 0xbf, 0x5c, + 0x62, 0x18, 0x3b, 0x05, 0xd8, 0xbf, 0x6b, 0x49, 0xac, 0x18, + 0x90, 0x9d, 0xc6, 0x11, 0xc4, 0x3e, 0xad, 0xc2, 0xc7, 0xc1, + 0x51, 0xc7, 0xfa, 0x5d, 0x0d, 0x02, 0x79, 0xbd, 0x40, 0x53, + 0xe6, 0x35, 0x10, 0x18, 0xd2, 0x3a, 0x16, 0xb8, 0xc4, 0xa2, + 0x86, 0xe8, 0xb8, 0xd0, 0x09, 0x0b, 0xe6, 0xc1, 0x55, 0x54, + 0x83, 0xb8, 0xbc, 0x8a, 0x2c, 0x78, 0x6f, 0xb2, 0xa2, 0xac, + 0x41, 0x9c, 0x21, 0x10, 0x5b, 0x8d, 0xa6, 0xba, 0x68, 0x54, + 0x29, 0xce, 0xac, 0x32, 0xe6, 0x87, 0x78, 0x9a, 0x2c, 0x93, + 0x38, 0xad, 0x43, 0xcf, 0x19, 0x9c, 0x85, 0x46, 0xf5, 0x64, + 0x11, 0x7c, 0x36, 0x5f, 0x04, 0xdb, 0xe5, 0xd8, 0x56, 0xa1, + 0xf9, 0xf3, 0x17, 0xf9, 0x76, 0xb9, 0x2d, 0x17, 0xeb, 0xa2, + 0x9b, 0x66, 0x7a, 0xb6, 0x4a, 0x6f, 0x19, 0xaf, 0x6b, 0x09, + 0xc0, 0x66, 0x02, 0x8d, 0x6b, 0x1a, 0x8a, 0x43, 0xf7, 0xb8, + 0xf7, 0x17, 0x51, 0x6a, 0xec, 0x30, 0x50, 0xe4, 0xd8, 0x63, + 0x04, 0x56, 0xd7, 0x12, 0x8d, 0x49, 0x07, 0xa9, 0xf6, 0x00, + 0x52, 0x62, 0x1b, 0xd4, 0x0f, 0xa8, 0x80, 0x72, 0x8c, 0xab, + 0xc8, 0xa0, 0xed, 0x1a, 0x5b, 0x41, 0xa2, 0xeb, 0x0e, 0x54, + 0xe4, 0x44, 0x19, 0x7b, 0x71, 0x86, 0x96, 0xbf, 0x4b, 0xef, + 0x08, 0x29, 0xb6, 0xf7, 0xc0, 0xde, 0x6e, 0x82, 0xc1, 0x37, + 0x75, 0x2d, 0x69, 0x89, 0x01, 0x48, 0x03, 0x44, 0x30, 0xad, + 0xc4, 0x9e, 0x7a, 0xa7, 0x1a, 0xa9, 0x6e, 0x09, 0x90, 0xdc, + 0xe2, 0xae, 0x09, 0x93, 0x4a, 0xf5, 0x6e, 0xca, 0x89, 0x9d, + 0xbb, 0xe6, 0x93, 0x6a, 0x9d, 0xfd, 0xa5, 0xc0, 0x09, 0x3a, + 0xc8, 0xd8, 0xe7, 0x89, 0x9a, 0xbd, 0xe5, 0xd2, 0x25, 0x9c, + 0x1a, 0xe0, 0x62, 0x96, 0x14, 0x3b, 0xfa, 0x6b, 0x3e, 0x6b, + 0x0f, 0x48, 0x61, 0x12, 0xb5, 0xa4, 0xa0, 0x86, 0xc4, 0x6e, + 0x47, 0x4a, 0xda, 0xba, 0xed, 0xd1, 0x4a, 0x9a, 0xba, 0x2e, + 0x4a, 0x31, 0xb4, 0xa5, 0xa0, 0x17, 0x36, 0x04, 0xf7, 0x43, + 0x73, 0x57, 0x15, 0x63, 0xc1, 0x32, 0xe6, 0xd3, 0xd0, 0xc0, + 0x7f, 0xae, 0x9d, 0x3c, 0x2d, 0x95, 0x5a, 0x47, 0xca, 0x3a, + 0xcb, 0x8c, 0xa1, 0xd5, 0xc0, 0x23, 0x46, 0x79, 0x8d, 0xf0, + 0xc0, 0x79, 0x87, 0x9d, 0x42, 0x43, 0x94, 0x1a, 0x4b, 0x4d, + 0x4a, 0x66, 0xdc, 0x35, 0x5d, 0xca, 0x0d, 0x11, 0x2c, 0xde, + 0x50, 0xe9, 0x20, 0xe3, 0xdb, 0xb8, 0x3d, 0x2a, 0xbe, 0x9f, + 0x0e, 0x0e, 0x54, 0x60, 0xac, 0xed, 0xb7, 0x71, 0xe0, 0xa5, + 0x0f, 0x07, 0xaa, 0xae, 0xa7, 0x1e, 0x1c, 0xe8, 0xe9, 0x66, + 0xef, 0xaa, 0x42, 0xe2, 0xc0, 0xe3, 0x1a, 0x0e, 0xac, 0x98, + 0x67, 0xb7, 0x4c, 0x15, 0xa5, 0xd6, 0x71, 0xb2, 0xce, 0xb0, + 0xcc, 0x7f, 0xb6, 0xe9, 0xd5, 0xf8, 0xcf, 0x9e, 0xa9, 0x91, + 0xa4, 0xbe, 0xfb, 0x74, 0xb4, 0x35, 0xe2, 0xcd, 0xca, 0x63, + 0xf0, 0x9a, 0xd8, 0xc9, 0xa6, 0x9d, 0xd6, 0xac, 0x2c, 0x97, + 0xcf, 0x37, 0x09, 0x4c, 0xab, 0x37, 0x1c, 0x0c, 0x7a, 0xf8, + 0xd6, 0xba, 0x27, 0xfb, 0xc9, 0xaf, 0x55, 0x93, 0xc6, 0x9e, + 0x85, 0x6e, 0xda, 0x45, 0xb9, 0xf0, 0x20, 0x6f, 0x1f, 0xd3, + 0xdd, 0xc3, 0x9d, 0x24, 0xd7, 0x32, 0x4c, 0xc2, 0xec, 0xf5, + 0x69, 0xd6, 0xe9, 0x4e, 0xfb, 0xf7, 0x56, 0x88, 0xa1, 0x5b, + 0xcf, 0x5b, 0x18, 0xbe, 0xf5, 0x55, 0xce, 0x72, 0x85, 0x3f, + 0x31, 0x0b, 0x1f, 0xe2, 0x50, 0x9c, 0xad, 0x49, 0x3c, 0x68, + 0xc9, 0xb2, 0xe5, 0x3f, 0x00, 0x62, 0x3b, 0x2d, 0x59, 0xdc, + 0xcb, 0x35, 0x0d, 0x05, 0xb1, 0x4b, 0x01, 0x77, 0xc7, 0xe4, + 0xb7, 0xdb, 0x95, 0x44, 0xa6, 0x25, 0xdc, 0x8f, 0x71, 0x0a, + 0xfa, 0x02, 0xf5, 0x61, 0x12, 0x48, 0x8d, 0xe7, 0x33, 0x7f, + 0x56, 0x44, 0x89, 0xe4, 0xaa, 0x81, 0xf3, 0x72, 0x61, 0x70, + 0xe2, 0x73, 0x23, 0xd3, 0x7c, 0x31, 0xd9, 0x1a, 0xc8, 0xde, + 0x1a, 0x00, 0x4b, 0x41, 0xcf, 0xe3, 0x34, 0x06, 0xd3, 0xdc, + 0x2e, 0x3a, 0x78, 0x61, 0x67, 0x02, 0x56, 0x22, 0x5e, 0x81, + 0x4e, 0xe7, 0x71, 0x98, 0xf3, 0x4e, 0x68, 0x5d, 0x14, 0x1e, + 0x2d, 0x66, 0xdf, 0x45, 0x76, 0x2b, 0xd7, 0x78, 0x71, 0xbf, + 0x10, 0x98, 0xdd, 0x81, 0xcf, 0xbe, 0xcc, 0x13, 0x4c, 0x43, + 0xbc, 0xb7, 0x1e, 0xfc, 0x82, 0xc5, 0xd8, 0xd5, 0x57, 0x4c, + 0xc0, 0xc6, 0xac, 0x43, 0xff, 0x39, 0x03, 0x57, 0xde, 0x4e, + 0x9b, 0x70, 0x15, 0x49, 0xe4, 0xda, 0xc3, 0x38, 0x04, 0x33, + 0x98, 0xc5, 0x61, 0x14, 0xe7, 0x05, 0xcf, 0x6a, 0xd1, 0xa6, + 0x42, 0x65, 0xe3, 0xe8, 0x66, 0x19, 0xb7, 0x9f, 0x07, 0x6d, + 0x74, 0x08, 0x9b, 0x27, 0x53, 0xec, 0x37, 0xb0, 0xf9, 0x2b, + 0x6a, 0x40, 0x9b, 0xb5, 0x9c, 0x26, 0x1c, 0x8b, 0xcb, 0x59, + 0x16, 0x21, 0xb8, 0x83, 0xfd, 0xc3, 0xa3, 0x36, 0xfd, 0x78, + 0x9a, 0x45, 0x37, 0xcf, 0x03, 0xd6, 0x48, 0x1a, 0x06, 0x1a, + 0xff, 0xd3, 0x2f, 0x67, 0x71, 0xda, 0xc9, 0x21, 0xeb, 0xd8, + 0x0b, 0x5a, 0x65, 0x10, 0x88, 0x47, 0x44, 0x7d, 0xa8, 0x81, + 0x04, 0x7d, 0xe6, 0x18, 0xa8, 0x6e, 0xd4, 0x83, 0x38, 0xcf, + 0x65, 0x14, 0xe8, 0x71, 0x36, 0x8f, 0xfb, 0xf3, 0xec, 0xbc, + 0xd3, 0xc6, 0xc9, 0x3f, 0x50, 0x13, 0x7a, 0x6d, 0xe8, 0x1e, + 0xfa, 0x03, 0x77, 0x73, 0xbd, 0x8d, 0xfe, 0x40, 0x68, 0x32, + 0xb5, 0x20, 0xe8, 0xd2, 0x7f, 0x69, 0x9d, 0x11, 0x6d, 0x9f, + 0x53, 0x10, 0x30, 0xb6, 0x9b, 0xeb, 0xd9, 0xa8, 0x7d, 0x47, + 0xfb, 0x7b, 0xf4, 0x3b, 0xb8, 0x63, 0xc7, 0xb1, 0x74, 0xfe, + 0x69, 0xb3, 0x98, 0xe6, 0xc9, 0xb2, 0x7c, 0x01, 0xbf, 0x7e, + 0xda, 0x84, 0x39, 0x7c, 0x01, 0x7f, 0xcc, 0xca, 0xc5, 0x1c, + 0x7f, 0xfb, 0x7f, 0x89, 0xd6, 0x2d, 0x7f, 0x44, 0x52, 0x02, + 0x00 }; static const unsigned char tfs____web_pages_stmupdate_html[] = { /* ../web_pages/stmupdate.html */ - 0x1f, 0x8b, 0x08, 0x08, 0xf3, 0xde, 0x9f, 0x65, 0x02, 0x03, + 0x1f, 0x8b, 0x08, 0x08, 0x96, 0x8d, 0xa4, 0x67, 0x02, 0x03, 0x73, 0x74, 0x6d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, - 0x68, 0x74, 0x6d, 0x6c, 0x00, 0xd5, 0x1a, 0x69, 0x6f, 0xea, - 0x48, 0xf2, 0x33, 0x23, 0xcd, 0x7f, 0xe8, 0xe7, 0xd1, 0x08, - 0x10, 0x04, 0x43, 0x08, 0x39, 0x48, 0xc8, 0x2c, 0x10, 0xc8, - 0x4d, 0x12, 0x20, 0xe4, 0x18, 0x8d, 0xb4, 0xc6, 0x6e, 0x43, - 0x27, 0xbe, 0xe2, 0x03, 0x43, 0xde, 0xe4, 0xbf, 0x6f, 0xf5, - 0x61, 0x63, 0x8e, 0x1c, 0xef, 0x8d, 0x56, 0xda, 0x25, 0x2f, - 0xb1, 0xbb, 0xbb, 0xee, 0xae, 0xaa, 0xae, 0x6a, 0xde, 0xc1, - 0xb7, 0xa3, 0xab, 0x66, 0xff, 0xe1, 0xba, 0x85, 0xc6, 0xbe, - 0x69, 0x1c, 0xfe, 0xfa, 0xcb, 0xaf, 0xbf, 0x1c, 0x78, 0xfe, - 0xcc, 0xc0, 0xf0, 0x9a, 0x2a, 0xa8, 0xd8, 0xf2, 0xb1, 0x8b, - 0xbe, 0xc3, 0x7b, 0x4a, 0x23, 0x9e, 0x63, 0x28, 0xb3, 0x2a, - 0xd2, 0x0d, 0x3c, 0xdd, 0xa7, 0x33, 0x4f, 0x81, 0xe7, 0x13, - 0x7d, 0xb6, 0xa1, 0xda, 0x00, 0x65, 0xf9, 0x55, 0xc4, 0xc1, - 0xe9, 0xda, 0xdb, 0x1c, 0xdb, 0xf8, 0x09, 0xf4, 0x94, 0xa9, - 0xb8, 0x23, 0x62, 0x55, 0x8b, 0xce, 0x14, 0xd1, 0xdf, 0x32, - 0xfd, 0xb3, 0x09, 0x7f, 0x96, 0x68, 0x3b, 0x3f, 0x43, 0xdb, - 0x51, 0x34, 0x8d, 0x58, 0xa3, 0x2a, 0x23, 0x88, 0x8a, 0x4b, - 0x24, 0xcd, 0x7f, 0x44, 0xb2, 0x54, 0x89, 0x48, 0x26, 0x55, - 0xd8, 0x62, 0x8c, 0x12, 0xac, 0xc6, 0x44, 0xc3, 0x0b, 0x7c, - 0x50, 0x15, 0x59, 0xb6, 0x85, 0x63, 0x80, 0x61, 0xe0, 0xfb, - 0xb6, 0xa5, 0x1a, 0x8a, 0xe7, 0x55, 0xc7, 0xf6, 0x24, 0xda, - 0x83, 0x98, 0x4f, 0xb1, 0xb0, 0x8d, 0x4d, 0xc6, 0x46, 0x07, - 0x71, 0x36, 0x42, 0x4c, 0x46, 0x63, 0x10, 0x69, 0x68, 0x1b, - 0x1a, 0x9b, 0x1d, 0x2a, 0xea, 0xf3, 0xc8, 0xb5, 0x03, 0x4b, - 0x03, 0x79, 0x0d, 0xdb, 0xad, 0xa2, 0xdf, 0x74, 0x5d, 0x67, - 0x4b, 0xd1, 0xb8, 0xa2, 0x0d, 0x77, 0xb5, 0xbd, 0x75, 0x1c, - 0x39, 0xaf, 0x2f, 0x13, 0x9e, 0x13, 0x4a, 0x2d, 0xf3, 0x12, - 0x36, 0x40, 0x25, 0xb1, 0x75, 0xeb, 0x14, 0xf8, 0x31, 0x4b, - 0xaf, 0x33, 0x10, 0x50, 0x50, 0x86, 0x06, 0xd6, 0x7e, 0x50, - 0x6e, 0xad, 0x84, 0x37, 0xf1, 0x70, 0x41, 0x6e, 0xb5, 0x48, - 0x7f, 0x22, 0x9b, 0x50, 0x3e, 0x8e, 0x6b, 0x8f, 0x5c, 0xec, - 0x79, 0x1b, 0x43, 0x85, 0xef, 0x01, 0x42, 0xab, 0xa4, 0xc2, - 0x31, 0xf1, 0x71, 0xcf, 0xb4, 0x9f, 0xd9, 0x06, 0x02, 0x84, - 0xed, 0x6a, 0xd8, 0xdd, 0x70, 0x15, 0x8d, 0x04, 0x1e, 0xf8, - 0x19, 0x57, 0x9e, 0xce, 0x4f, 0x37, 0xbc, 0xb1, 0xa2, 0xd9, - 0x21, 0x18, 0x80, 0x4e, 0xa3, 0x32, 0xfc, 0xba, 0xa3, 0xa1, - 0x92, 0x29, 0xe6, 0x91, 0xf8, 0x57, 0xd8, 0xac, 0x64, 0x11, - 0xb1, 0x3c, 0xec, 0x73, 0xa4, 0x90, 0x68, 0xfe, 0x18, 0x88, - 0x54, 0x8a, 0x11, 0x99, 0xb1, 0x50, 0x6e, 0x33, 0x9e, 0x71, - 0x6c, 0x8f, 0xf8, 0xc4, 0x06, 0x4b, 0xbb, 0xd8, 0x50, 0x7c, - 0x32, 0x11, 0x82, 0xc4, 0xb6, 0x1d, 0x1a, 0xb6, 0xfa, 0x2c, - 0xf4, 0xa2, 0x3f, 0xa9, 0x82, 0xe7, 0x10, 0xcb, 0x8a, 0xfd, - 0x2a, 0xc6, 0x57, 0x86, 0x9e, 0x6d, 0x04, 0x3e, 0xc3, 0x4f, - 0x19, 0x58, 0x07, 0x36, 0x95, 0xe2, 0xef, 0x6c, 0xe4, 0xdb, - 0xce, 0x7c, 0x20, 0x64, 0x28, 0x15, 0xa3, 0x9d, 0xe5, 0x62, - 0xce, 0xc7, 0x09, 0xf7, 0x57, 0x02, 0xdf, 0x66, 0x73, 0xb0, - 0x2d, 0xc3, 0x67, 0xe2, 0x6f, 0x28, 0x16, 0x31, 0x15, 0x21, - 0xaf, 0xed, 0xb3, 0x37, 0x54, 0xd8, 0xf6, 0x40, 0x6b, 0x9d, - 0x58, 0x60, 0x4a, 0x64, 0x10, 0x0b, 0x2b, 0x7c, 0xc3, 0x37, - 0x4c, 0xfb, 0xf5, 0xc7, 0x10, 0xec, 0x1f, 0x02, 0xff, 0x11, - 0x58, 0xb1, 0xaf, 0xcc, 0x2c, 0xd4, 0xa5, 0x11, 0xd8, 0x8a, - 0x68, 0xd1, 0x06, 0x96, 0x76, 0xb6, 0xf2, 0x9b, 0xe5, 0xbd, - 0x7c, 0xa1, 0x54, 0xc9, 0x26, 0xc1, 0x5d, 0x61, 0xa9, 0xaf, - 0xc2, 0x0f, 0x6d, 0x70, 0x6d, 0xf3, 0x07, 0x10, 0xe8, 0xc6, - 0x7c, 0x00, 0xbd, 0xbb, 0x28, 0x0d, 0x77, 0xca, 0xcd, 0x22, - 0xdf, 0x48, 0xe6, 0x0f, 0xa9, 0x7f, 0x45, 0x3b, 0xf3, 0x8c, - 0x67, 0xba, 0xab, 0x98, 0xd8, 0x9b, 0x1b, 0x83, 0x07, 0x95, - 0x6b, 0x43, 0x62, 0x8c, 0xa0, 0x7c, 0x57, 0xb1, 0x3c, 0xdd, - 0x76, 0x4d, 0x61, 0x33, 0x9c, 0x29, 0x6a, 0x78, 0x94, 0xdd, - 0x7f, 0xe3, 0x6e, 0xf2, 0x11, 0x60, 0xb9, 0xb2, 0x17, 0x83, - 0xbe, 0x31, 0xce, 0x74, 0x7f, 0x3f, 0x61, 0x4b, 0x41, 0x3e, - 0xe7, 0xb9, 0x1e, 0x6a, 0x95, 0xa1, 0xfd, 0x19, 0x3b, 0xfb, - 0x0b, 0xcc, 0xec, 0xaf, 0xb0, 0xfa, 0x98, 0xcf, 0xa7, 0x4c, - 0x3e, 0xe5, 0xc0, 0x36, 0xef, 0x40, 0x8e, 0xce, 0x6b, 0x78, - 0x17, 0x87, 0xf8, 0xc1, 0x18, 0x2b, 0x1a, 0x3d, 0xc1, 0x0f, - 0xc0, 0x7b, 0x9f, 0x69, 0x52, 0xa8, 0x49, 0x04, 0xd2, 0xa9, - 0x84, 0xc6, 0x2e, 0xd6, 0x6b, 0x92, 0xa6, 0xf8, 0x4a, 0x35, - 0x2f, 0x31, 0x08, 0x13, 0xfb, 0x0a, 0xb2, 0x40, 0xca, 0x9a, - 0x34, 0x21, 0x38, 0x74, 0x6c, 0xd7, 0x97, 0x90, 0x48, 0xbd, - 0x35, 0x89, 0x85, 0x75, 0x4d, 0xc3, 0x13, 0xa2, 0xe2, 0x0d, - 0x36, 0xc8, 0x23, 0x1a, 0x17, 0x44, 0x31, 0x36, 0x3c, 0x55, - 0x31, 0x70, 0xad, 0x24, 0x31, 0xd6, 0xa9, 0x03, 0x8d, 0x4c, - 0x28, 0xc1, 0xd4, 0x81, 0x4f, 0xb3, 0x31, 0x42, 0x2c, 0x39, - 0xd7, 0x24, 0x71, 0x52, 0x33, 0x66, 0x74, 0x51, 0x13, 0x2f, - 0xc4, 0x1c, 0x21, 0xcf, 0x55, 0x85, 0x30, 0x10, 0x84, 0x23, - 0x2c, 0x3b, 0xd6, 0x68, 0x7f, 0xa8, 0x78, 0x78, 0x7b, 0x2b, - 0x4f, 0x06, 0x8d, 0xab, 0x6e, 0x58, 0x3c, 0x3f, 0x1e, 0xd9, - 0x75, 0xf8, 0x74, 0x7a, 0xb7, 0xe3, 0xd6, 0xed, 0x08, 0xde, - 0x5a, 0x74, 0xd8, 0xa8, 0x37, 0xeb, 0x97, 0xf0, 0x6c, 0x6a, - 0xfe, 0xd6, 0x89, 0x47, 0x67, 0x76, 0xdb, 0x8d, 0xcb, 0x41, - 0xeb, 0xb6, 0x1e, 0x7d, 0x64, 0x39, 0x57, 0x1f, 0x9d, 0x36, - 0xe1, 0xb9, 0xbb, 0xd3, 0x7f, 0xae, 0xf8, 0xb3, 0xeb, 0xbd, - 0xd2, 0x44, 0xde, 0x6b, 0xf6, 0xdb, 0x83, 0x76, 0xbf, 0xdd, - 0x09, 0x42, 0x7d, 0xef, 0xa8, 0x67, 0x68, 0xb3, 0x50, 0xde, - 0x7b, 0x85, 0xf9, 0x10, 0xc6, 0xd3, 0xe9, 0xf5, 0xde, 0x51, - 0x7f, 0x70, 0x76, 0xdc, 0x33, 0x3a, 0x13, 0x98, 0x3f, 0xea, - 0x95, 0xba, 0xd3, 0x70, 0xb2, 0xd7, 0x86, 0x71, 0x08, 0xe3, - 0x56, 0xcf, 0x18, 0x4c, 0x29, 0x5e, 0xbf, 0xdd, 0x65, 0xf0, - 0xf0, 0xdb, 0x02, 0x5a, 0xad, 0x5e, 0x09, 0xe6, 0xa3, 0x75, - 0x0a, 0x5f, 0xea, 0xce, 0xc4, 0x78, 0x26, 0xe8, 0x84, 0x30, - 0x0f, 0xb0, 0x5d, 0xba, 0xd6, 0x62, 0x74, 0xf5, 0xbd, 0x19, - 0xcc, 0x71, 0x1e, 0x14, 0xb6, 0xd4, 0xa5, 0x74, 0x67, 0xe2, - 0x9d, 0xae, 0xb7, 0x19, 0x9e, 0xbc, 0xc7, 0xe7, 0x19, 0xdd, - 0x0e, 0x85, 0x65, 0x7c, 0x39, 0x9d, 0xc1, 0x34, 0x86, 0x9f, - 0xd0, 0x67, 0x27, 0xe4, 0x4f, 0xc6, 0x87, 0xce, 0x89, 0xf9, - 0x6e, 0x02, 0x66, 0xe5, 0x29, 0xde, 0x65, 0xf8, 0xec, 0x76, - 0x8c, 0xa7, 0xcb, 0x26, 0xb5, 0x5f, 0xff, 0xbe, 0xdb, 0xeb, - 0x1b, 0x60, 0xe3, 0x9b, 0x56, 0xb3, 0x3e, 0x2a, 0x5e, 0x1d, - 0x37, 0x3c, 0xe3, 0xac, 0xf7, 0x60, 0x9e, 0x37, 0x9f, 0x8b, - 0x9d, 0xbe, 0x5a, 0xbe, 0x6b, 0x8f, 0x1f, 0xef, 0x06, 0x8e, - 0x72, 0x57, 0xf2, 0x9f, 0x1e, 0xef, 0x1e, 0x4d, 0xed, 0x7e, - 0x50, 0xd6, 0xca, 0xe3, 0x1d, 0xfd, 0x7e, 0xb3, 0x3e, 0xb2, - 0xc9, 0x29, 0xd9, 0x9a, 0x5d, 0x3e, 0x39, 0xbd, 0x5b, 0xe3, - 0xf1, 0xee, 0xc1, 0x3c, 0x0b, 0x86, 0xd6, 0xd9, 0x6c, 0xe6, - 0x5f, 0x04, 0xb9, 0xd9, 0x6e, 0x59, 0x2d, 0x77, 0xca, 0x4f, - 0x95, 0xa0, 0x1c, 0xec, 0xc8, 0x47, 0xd3, 0x5d, 0xb9, 0xbf, - 0x23, 0x9f, 0xb5, 0xb4, 0xa7, 0x2e, 0xdd, 0xcf, 0x76, 0xbb, - 0x77, 0xdb, 0x6d, 0x0c, 0x4e, 0x9e, 0x94, 0x1d, 0x75, 0xeb, - 0xc8, 0x7b, 0xee, 0x34, 0x5a, 0xa7, 0xf7, 0x63, 0xcb, 0x36, - 0xfb, 0x8f, 0x7b, 0xc1, 0xe6, 0xb0, 0xd7, 0x79, 0xdd, 0x73, - 0x73, 0xc3, 0x97, 0x73, 0x6f, 0xbb, 0x6b, 0x60, 0xb5, 0x7c, - 0x24, 0x1f, 0xe7, 0xb0, 0xd2, 0x1b, 0x6c, 0x5d, 0x0e, 0xef, - 0x8c, 0x17, 0xb7, 0xec, 0xd9, 0x75, 0xe3, 0xce, 0x0a, 0x41, - 0xf8, 0xd2, 0xcd, 0xcb, 0xed, 0x30, 0x57, 0x7c, 0xd4, 0x6e, - 0xae, 0xeb, 0x5a, 0xee, 0x42, 0xd6, 0xca, 0xdb, 0x13, 0x65, - 0xe0, 0xde, 0x14, 0xbd, 0x7a, 0x7b, 0xf7, 0xa8, 0x7d, 0xa9, - 0x5d, 0xdf, 0x9c, 0xbc, 0x0e, 0x5a, 0x39, 0xf9, 0xe6, 0x7c, - 0x14, 0x80, 0x3f, 0x55, 0x6e, 0x8e, 0xd4, 0x46, 0x25, 0x78, - 0x9a, 0x84, 0x9d, 0x9b, 0x86, 0xd9, 0xbe, 0xb6, 0xca, 0x17, - 0x83, 0xeb, 0x66, 0xae, 0xef, 0x77, 0x07, 0xf5, 0x23, 0xcf, - 0xd4, 0x1a, 0x47, 0xbb, 0x04, 0x37, 0xfa, 0xa5, 0xd1, 0xab, - 0xd1, 0xb9, 0xc0, 0xdd, 0x91, 0x1f, 0x5e, 0x69, 0x7a, 0xce, - 0x38, 0xbb, 0xae, 0x38, 0x64, 0x72, 0x73, 0xa3, 0x87, 0xb9, - 0x87, 0xc7, 0xde, 0xab, 0x7c, 0x86, 0x1b, 0xb7, 0xaf, 0xaf, - 0x67, 0xa3, 0xab, 0xf0, 0xf2, 0xbc, 0x78, 0xf4, 0x68, 0x59, - 0xd7, 0x37, 0xad, 0x87, 0x87, 0x52, 0xd8, 0x36, 0xf5, 0xce, - 0xe9, 0x4d, 0x5d, 0x9e, 0x4e, 0xcb, 0x57, 0xa3, 0xfa, 0xd3, - 0xe8, 0xe4, 0xac, 0x9e, 0xb3, 0x4f, 0x76, 0x3a, 0xb3, 0xdb, - 0xf6, 0x43, 0x5d, 0xde, 0xb6, 0xeb, 0x8f, 0x5b, 0x97, 0xa7, - 0xe7, 0x0f, 0xcd, 0x5c, 0xfd, 0xb8, 0x5b, 0x0c, 0x1b, 0xd3, - 0x87, 0xfa, 0x6e, 0x63, 0xab, 0x7f, 0xe5, 0x35, 0xb0, 0x07, - 0xbe, 0x5e, 0x7e, 0xf1, 0xea, 0x1e, 0x51, 0xeb, 0xc3, 0x49, - 0x58, 0xdf, 0x69, 0x98, 0xf5, 0xf3, 0xd7, 0x5d, 0xa7, 0xde, - 0xaf, 0xdc, 0x9f, 0x38, 0xca, 0x2d, 0x55, 0x67, 0x9a, 0xc3, - 0x6e, 0xbd, 0xfb, 0xf8, 0xec, 0x86, 0xda, 0xc3, 0xf3, 0x45, - 0x11, 0x3f, 0xb4, 0x4e, 0x36, 0xb1, 0xdd, 0x6c, 0x87, 0x7b, - 0xe0, 0x5f, 0xe5, 0xdb, 0xfa, 0x7d, 0x43, 0x6d, 0x9c, 0x8c, - 0x1b, 0x9b, 0x3b, 0x2f, 0x6a, 0xf0, 0xd0, 0x39, 0xae, 0x74, - 0xb7, 0x5f, 0x9e, 0x8a, 0xb7, 0xb2, 0x55, 0x7a, 0x31, 0x9e, - 0x3d, 0x7c, 0x3f, 0x18, 0x5c, 0x06, 0xd3, 0xc9, 0xe9, 0x6e, - 0x7b, 0x47, 0x7b, 0x6d, 0x5b, 0xf7, 0xde, 0x85, 0x51, 0x7f, - 0xc4, 0xf7, 0xca, 0xa3, 0x95, 0x1b, 0x10, 0xd3, 0x9d, 0x1e, - 0xbf, 0x34, 0x77, 0xc8, 0xf5, 0xed, 0xe3, 0x33, 0x31, 0x77, - 0x02, 0xa7, 0x43, 0x3a, 0x95, 0x93, 0x70, 0xa2, 0xdc, 0x7b, - 0x44, 0x2f, 0x55, 0xf6, 0xee, 0x5b, 0x66, 0x6f, 0xf4, 0xd2, - 0x7b, 0xb8, 0xd2, 0x82, 0xf3, 0x0a, 0x0b, 0xbc, 0x96, 0xd1, - 0xee, 0x3f, 0xf7, 0x82, 0x1b, 0xb3, 0xd9, 0x8c, 0x62, 0x5e, - 0x8e, 0x83, 0x3e, 0x7e, 0x19, 0x97, 0x0e, 0x7b, 0xfd, 0xcb, - 0xf2, 0x26, 0xba, 0x75, 0x20, 0xfe, 0xf1, 0x81, 0x0c, 0x13, - 0x8b, 0xc0, 0xf0, 0x42, 0xf3, 0x08, 0xcb, 0x51, 0x32, 0xcf, - 0x2d, 0x00, 0xc5, 0xf3, 0x1a, 0xbc, 0x0e, 0x6d, 0x6d, 0x76, - 0x28, 0xd2, 0x0e, 0x22, 0x5a, 0x4d, 0x12, 0x05, 0x8d, 0x74, - 0x18, 0x41, 0x47, 0x89, 0x68, 0x4d, 0x1e, 0x3a, 0xf0, 0x5d, - 0xfe, 0xe0, 0x49, 0x92, 0x58, 0x4e, 0xe0, 0x23, 0x7f, 0xe6, - 0x40, 0x0e, 0xd4, 0x89, 0x81, 0x25, 0x46, 0x10, 0xe4, 0x6b, - 0xc3, 0xc0, 0x93, 0x90, 0xa2, 0xaa, 0xd8, 0x81, 0x64, 0x58, - 0x18, 0x12, 0x48, 0xa1, 0x82, 0x5e, 0xa2, 0x02, 0xe5, 0x34, - 0x63, 0xc1, 0xa3, 0x67, 0x92, 0x2c, 0x87, 0x5e, 0x8b, 0x8c, - 0x58, 0xfe, 0x86, 0x3c, 0x28, 0x8a, 0x35, 0xd6, 0x08, 0x70, - 0x11, 0x02, 0xc7, 0xb0, 0x15, 0x0d, 0x04, 0x69, 0x08, 0xf4, - 0x89, 0x62, 0x04, 0x00, 0x7a, 0xcb, 0xe6, 0x11, 0xb7, 0x20, - 0x97, 0xd8, 0x27, 0xbe, 0xb1, 0x6e, 0x05, 0xfa, 0x8a, 0x50, - 0x42, 0x94, 0x17, 0x51, 0x9f, 0x6b, 0x92, 0xe2, 0x38, 0x05, - 0xc8, 0xf8, 0x63, 0x5b, 0xf3, 0x0a, 0x9c, 0x7a, 0xc7, 0x0e, - 0x33, 0x59, 0x49, 0x8e, 0x6c, 0xae, 0x09, 0x5d, 0x5c, 0xf1, - 0x8c, 0xf7, 0x80, 0x1b, 0x93, 0x59, 0x1a, 0x43, 0xec, 0xf9, - 0x7d, 0x3a, 0x8e, 0x15, 0xa2, 0x1d, 0x0d, 0x3d, 0x36, 0x0c, - 0xcf, 0x51, 0xac, 0x9a, 0xb4, 0x99, 0x34, 0xf3, 0xdc, 0x22, - 0x86, 0x32, 0xc4, 0xc6, 0xe1, 0xb5, 0x81, 0x21, 0xc7, 0x23, - 0x4e, 0x06, 0x44, 0xc3, 0x4c, 0xd0, 0x2a, 0x87, 0x5c, 0xc2, - 0x10, 0x40, 0x94, 0x2d, 0x05, 0xea, 0xb1, 0x21, 0x98, 0x8c, - 0xbc, 0x82, 0xb2, 0x15, 0xee, 0x60, 0x08, 0x71, 0xd9, 0x39, - 0xec, 0x82, 0x22, 0xf0, 0xc2, 0x79, 0x2e, 0x10, 0x8d, 0x95, - 0x9a, 0x33, 0x9c, 0xbb, 0xe6, 0x02, 0xcf, 0xc0, 0xd1, 0x9a, - 0xb6, 0x69, 0x2a, 0x96, 0x16, 0xdb, 0xbe, 0x28, 0x2d, 0x7a, - 0x94, 0x21, 0xbc, 0x1c, 0x10, 0x6d, 0x87, 0x9d, 0xf1, 0x31, - 0xe0, 0x61, 0x07, 0x0e, 0x6f, 0xc5, 0x40, 0x8e, 0xe2, 0xfa, - 0xac, 0xbe, 0x3e, 0x90, 0x39, 0xc8, 0x3b, 0x18, 0x70, 0x94, - 0x36, 0x6c, 0xdb, 0x5f, 0x03, 0x8f, 0x84, 0x68, 0x49, 0x1d, - 0x93, 0x71, 0x25, 0xcf, 0xd5, 0x70, 0x57, 0x0e, 0xda, 0x2f, - 0xba, 0xa1, 0xd0, 0x17, 0xa2, 0x11, 0xbc, 0x27, 0xe1, 0x6a, - 0x74, 0x46, 0x38, 0x14, 0xf3, 0xa5, 0xd8, 0xd3, 0x96, 0x17, - 0xde, 0x71, 0x32, 0x0a, 0x96, 0x74, 0xb2, 0x75, 0x72, 0x27, - 0x1c, 0x2d, 0xb5, 0xb4, 0x7f, 0xb1, 0x27, 0x7e, 0xe0, 0x91, - 0xdc, 0x93, 0xd7, 0x78, 0xe4, 0xa2, 0x17, 0x8e, 0x45, 0xce, - 0x21, 0x1e, 0x62, 0x62, 0x41, 0x27, 0x0a, 0xf4, 0xc6, 0x49, - 0xfa, 0x4b, 0xf0, 0xcd, 0x31, 0x71, 0xd0, 0xa9, 0x26, 0xa0, - 0x90, 0xf8, 0x80, 0x6d, 0x19, 0x5b, 0x15, 0x56, 0x4f, 0x35, - 0xe9, 0x90, 0x89, 0x9c, 0x0a, 0xac, 0x67, 0x30, 0x83, 0xb5, - 0x26, 0x8e, 0xd6, 0x11, 0xed, 0x40, 0xc5, 0xf5, 0x01, 0x59, - 0xba, 0xfc, 0x39, 0xe1, 0xd4, 0x52, 0x90, 0x1d, 0x44, 0xed, - 0x2a, 0xa3, 0x13, 0x0d, 0x1a, 0x8a, 0x2b, 0x21, 0x93, 0x58, - 0xcc, 0x77, 0x4d, 0x65, 0x0a, 0x8e, 0x56, 0x2c, 0x26, 0xfc, - 0x19, 0x32, 0x66, 0x04, 0x7a, 0xb8, 0x92, 0x01, 0xd8, 0x63, - 0x59, 0xc2, 0x08, 0x7c, 0x40, 0x49, 0x48, 0x1c, 0x89, 0x6d, - 0xdc, 0x3b, 0x72, 0x25, 0x28, 0xfc, 0xf3, 0xa4, 0x48, 0xfb, - 0xef, 0x58, 0xfa, 0x03, 0xd4, 0x60, 0x43, 0xe1, 0x94, 0x74, - 0x80, 0xa0, 0x76, 0x1e, 0xdb, 0x60, 0xbe, 0xf5, 0x0e, 0x49, - 0xd1, 0xbf, 0x90, 0xf0, 0xe8, 0x3d, 0x98, 0xea, 0x12, 0xc7, - 0xa7, 0x9b, 0x40, 0x7f, 0xa0, 0x24, 0xf6, 0x7c, 0xea, 0x37, - 0x3d, 0x28, 0xc5, 0x03, 0x0f, 0xd5, 0xd0, 0x9f, 0x52, 0x07, - 0x82, 0xd5, 0xf3, 0x21, 0x5a, 0xb1, 0x26, 0xe5, 0xa5, 0x5e, - 0xfc, 0x76, 0x6a, 0xa1, 0xc8, 0x44, 0x30, 0x6a, 0xb9, 0x8a, - 0x07, 0xae, 0x06, 0x6f, 0x6d, 0xd0, 0x6d, 0xcc, 0x5f, 0x07, - 0xd8, 0x25, 0xfa, 0x4c, 0x4c, 0x43, 0x45, 0xed, 0x8d, 0x19, - 0x66, 0x17, 0x33, 0x7a, 0x0c, 0xcb, 0xb5, 0x5d, 0xe9, 0xaf, - 0xfd, 0x04, 0xe7, 0x08, 0x0e, 0x78, 0x6f, 0x27, 0xe7, 0x05, - 0x12, 0x4c, 0xef, 0x24, 0xa7, 0x19, 0x05, 0x98, 0xdc, 0xdd, - 0xe7, 0x1a, 0x4c, 0x14, 0x17, 0x8d, 0xb0, 0xcf, 0x03, 0x97, - 0x6b, 0x71, 0x4a, 0x33, 0x18, 0x98, 0x12, 0xa0, 0xac, 0xc0, - 0x30, 0xf6, 0x63, 0xa0, 0x76, 0x2f, 0x5a, 0x3a, 0x3d, 0x9a, - 0x2f, 0xca, 0x32, 0x5d, 0x36, 0x6c, 0xdb, 0x39, 0xa6, 0x20, - 0x4d, 0xe8, 0x10, 0x8a, 0x8c, 0x78, 0x8a, 0xce, 0x13, 0x2a, - 0x98, 0x1e, 0x58, 0x2a, 0x4d, 0x59, 0x19, 0x0c, 0xbd, 0x68, - 0x96, 0xf7, 0x3b, 0x74, 0xd1, 0xc5, 0x54, 0x3e, 0xcd, 0x56, - 0x03, 0x13, 0xd2, 0x66, 0x01, 0x58, 0xb4, 0x0c, 0x4c, 0x5f, - 0x1b, 0xb3, 0x53, 0x8d, 0x03, 0xb3, 0x36, 0x95, 0xe8, 0x99, - 0x6f, 0x00, 0x9b, 0x65, 0x88, 0x29, 0xaa, 0x8b, 0x6d, 0xe0, - 0x82, 0x61, 0x8f, 0x32, 0xe9, 0x8e, 0x8d, 0x30, 0xc7, 0x41, - 0x3a, 0xbd, 0x7e, 0x41, 0x21, 0xf1, 0xc7, 0x94, 0x6b, 0x1a, - 0xe5, 0xd0, 0x9c, 0x02, 0xeb, 0x9f, 0x80, 0x44, 0xe0, 0x5a, - 0x94, 0x2b, 0xeb, 0x72, 0xf7, 0xb9, 0x4f, 0xc2, 0xbf, 0xc8, - 0x3a, 0x34, 0x61, 0xd0, 0xe3, 0x1d, 0x84, 0x52, 0xbc, 0x99, - 0xa5, 0xa2, 0x0c, 0x3d, 0x5f, 0xb2, 0xa8, 0x76, 0xc8, 0x65, - 0x36, 0x40, 0xde, 0xc4, 0x41, 0x57, 0x23, 0x5a, 0x66, 0xe1, - 0xe0, 0xe3, 0xbc, 0x12, 0x33, 0x05, 0xe6, 0xb8, 0x34, 0x6e, - 0x81, 0x24, 0xcf, 0x3e, 0xfb, 0x11, 0xa1, 0xc0, 0xb9, 0x88, - 0xf2, 0x13, 0x23, 0x94, 0xcc, 0x57, 0x9c, 0x50, 0x02, 0xe2, - 0x3d, 0x42, 0xb2, 0x8c, 0x14, 0x4d, 0xe3, 0x87, 0x3a, 0xb8, - 0x78, 0x1b, 0xce, 0x96, 0x23, 0x68, 0x9d, 0x90, 0x3d, 0x7c, - 0x02, 0x19, 0xf8, 0x35, 0x16, 0xd5, 0x4d, 0xa7, 0xdb, 0x60, - 0xe1, 0x30, 0x86, 0xc8, 0x70, 0x16, 0xba, 0x56, 0x80, 0x38, - 0xc0, 0x96, 0x96, 0x49, 0x47, 0xa5, 0x4d, 0x3a, 0xcf, 0xc8, - 0x65, 0x23, 0xfa, 0x1e, 0xac, 0xa2, 0x7f, 0x5f, 0x5f, 0xf5, - 0xfa, 0xff, 0x06, 0xd3, 0xbd, 0x04, 0xe0, 0x57, 0xec, 0x8e, - 0x24, 0x54, 0x88, 0x8f, 0x32, 0xe2, 0xa1, 0x63, 0x5f, 0x1d, - 0x67, 0xd2, 0xb2, 0xce, 0xb5, 0xf8, 0x43, 0x23, 0x6e, 0xcd, - 0xf3, 0x4d, 0xa0, 0xc5, 0xf7, 0x8c, 0x07, 0x5a, 0x15, 0xa5, - 0x29, 0x9d, 0x74, 0x9e, 0xcd, 0xd1, 0x6a, 0xad, 0x0a, 0x92, - 0xb1, 0xfd, 0xc9, 0xd2, 0xbf, 0x05, 0x7f, 0x8c, 0xad, 0x0c, - 0x44, 0x08, 0xb5, 0x38, 0x3c, 0x0a, 0x4f, 0x1e, 0x38, 0x4d, - 0x36, 0xb1, 0x46, 0x27, 0xe8, 0x62, 0x32, 0x78, 0x47, 0x18, - 0x4a, 0x3c, 0xf0, 0x5e, 0x26, 0xfd, 0x05, 0x01, 0x6d, 0x19, - 0x98, 0x40, 0x53, 0x15, 0x2a, 0x19, 0x76, 0x5d, 0x8a, 0x16, - 0xb9, 0x0e, 0xa6, 0x51, 0x40, 0x27, 0x39, 0x10, 0xfb, 0xfb, - 0x16, 0xfb, 0x2c, 0x10, 0x07, 0x6b, 0x7d, 0x8f, 0xce, 0x1d, - 0x8d, 0x99, 0x4b, 0x28, 0x22, 0x7c, 0x88, 0x0f, 0xc0, 0x3c, - 0xef, 0xc5, 0x4e, 0x95, 0x85, 0x47, 0x3e, 0x01, 0xb6, 0x10, - 0x3d, 0x0b, 0xcb, 0xc9, 0xd8, 0x81, 0x95, 0x62, 0x8c, 0x35, - 0x4f, 0x2c, 0xd5, 0x2f, 0x27, 0x96, 0x44, 0xde, 0x10, 0xd9, - 0x82, 0x51, 0x7b, 0xe3, 0x61, 0x90, 0x67, 0x4a, 0x0a, 0xcb, - 0x55, 0x99, 0x1a, 0x6c, 0x33, 0x99, 0xb7, 0xf3, 0x84, 0x11, - 0xab, 0xca, 0xf6, 0x9e, 0x55, 0x3d, 0xcc, 0xbd, 0x58, 0x92, - 0x8e, 0x03, 0xd0, 0xe7, 0x63, 0xb0, 0x13, 0x49, 0xfa, 0x0e, - 0xf7, 0x9a, 0xc8, 0x2d, 0xf1, 0x84, 0xc6, 0xa5, 0x01, 0x5b, - 0x42, 0xb7, 0x88, 0xad, 0x30, 0xac, 0x02, 0x2c, 0xb6, 0xe8, - 0xda, 0x85, 0x58, 0xca, 0xa4, 0xd5, 0xb1, 0x62, 0x8d, 0x30, - 0xf8, 0x4b, 0x66, 0x1e, 0x6e, 0x11, 0x27, 0x7e, 0x06, 0x70, - 0x56, 0x2b, 0xe5, 0x6f, 0x76, 0x5f, 0xd4, 0x41, 0x1c, 0xaa, - 0xc0, 0xce, 0x88, 0x42, 0x74, 0x85, 0x0e, 0xc1, 0xc2, 0xae, - 0x39, 0x79, 0xb4, 0x50, 0x3f, 0xe3, 0x2f, 0xdc, 0x6d, 0xfd, - 0x31, 0xa1, 0xee, 0x03, 0x96, 0x3f, 0x22, 0x6e, 0x26, 0x96, - 0x9d, 0xfa, 0x80, 0xee, 0xc1, 0x14, 0xa4, 0x81, 0x05, 0xb8, - 0x33, 0xea, 0x8e, 0x92, 0xee, 0x81, 0x77, 0x4b, 0x31, 0x34, - 0xd1, 0xc1, 0xfd, 0x29, 0x74, 0x36, 0x82, 0x5b, 0x71, 0x47, - 0xbe, 0xcc, 0x11, 0xa2, 0x6c, 0x94, 0x9f, 0xdb, 0x1d, 0xcd, - 0x45, 0x10, 0x8a, 0x27, 0xd8, 0x3a, 0xb6, 0xe7, 0x37, 0x4d, - 0xb0, 0xf1, 0x77, 0x49, 0x61, 0x49, 0x54, 0xaa, 0x4a, 0x0c, - 0x5e, 0x7a, 0x8b, 0xac, 0x4d, 0x25, 0x58, 0x49, 0xcf, 0x3c, - 0x3f, 0x47, 0x04, 0x53, 0x8c, 0xd6, 0x82, 0xa3, 0xd5, 0xc4, - 0x77, 0x12, 0xa9, 0xd4, 0x6a, 0x6a, 0xf7, 0xb0, 0x1f, 0x8d, - 0x33, 0x5c, 0xc6, 0x38, 0x85, 0xc7, 0x14, 0x57, 0x49, 0xe6, - 0x72, 0x82, 0x20, 0xcb, 0x6f, 0x4c, 0x69, 0x14, 0x99, 0x70, - 0x31, 0x60, 0xd7, 0x59, 0x92, 0xeb, 0x11, 0x99, 0xf2, 0xef, - 0xbf, 0x51, 0x66, 0x85, 0xc1, 0x61, 0xad, 0x5c, 0xcc, 0xce, - 0x05, 0x48, 0x25, 0x4c, 0xff, 0x49, 0x42, 0x10, 0x3b, 0x90, - 0x8a, 0x30, 0x55, 0x68, 0x37, 0xdc, 0x58, 0xc5, 0x25, 0x03, - 0xc4, 0x02, 0xa5, 0xde, 0x3d, 0xf4, 0x52, 0xa9, 0xcf, 0x8c, - 0xca, 0x8f, 0x1c, 0x1a, 0x72, 0x50, 0x58, 0x15, 0x05, 0xc9, - 0xb7, 0x35, 0xbb, 0x9f, 0xe8, 0xb8, 0xd0, 0xf7, 0x2f, 0xc6, - 0x17, 0xb7, 0xe9, 0xfc, 0xc0, 0xca, 0xf0, 0xb0, 0xa2, 0x71, - 0xea, 0xfd, 0x59, 0xfc, 0xeb, 0x53, 0x27, 0x5f, 0x11, 0x21, - 0xae, 0xc7, 0x85, 0x08, 0x6c, 0x03, 0x79, 0x63, 0x25, 0xe2, - 0x2e, 0xd1, 0x69, 0x09, 0xf2, 0xfc, 0x10, 0xd3, 0xc0, 0x39, - 0xe3, 0xd0, 0x8c, 0x1b, 0xa3, 0x84, 0x67, 0x0a, 0x32, 0x05, - 0x56, 0x9c, 0xc5, 0x9b, 0x47, 0x57, 0xbe, 0x81, 0xa2, 0x3a, - 0x71, 0xcd, 0x4c, 0xba, 0xee, 0x62, 0x34, 0xb3, 0x03, 0xe4, - 0x05, 0xe2, 0x25, 0x54, 0xc0, 0x98, 0x70, 0xa0, 0x71, 0xc9, - 0x20, 0x33, 0x99, 0x50, 0xa2, 0xff, 0x91, 0xa6, 0x9b, 0xcf, - 0x33, 0xb0, 0xb0, 0xee, 0x52, 0xa0, 0x70, 0xb7, 0x02, 0x68, - 0xcd, 0xe6, 0x98, 0x52, 0x1e, 0xe2, 0x46, 0x35, 0x35, 0xa9, - 0x9a, 0xce, 0x71, 0x59, 0xb9, 0x1c, 0xb9, 0x74, 0x9e, 0x77, - 0xf5, 0x55, 0x29, 0x9d, 0x5b, 0x90, 0x30, 0x97, 0x9e, 0x07, - 0x56, 0xea, 0xfd, 0xca, 0x28, 0x24, 0x96, 0x66, 0x87, 0x85, - 0x64, 0xa0, 0x44, 0x86, 0x4e, 0x62, 0xe4, 0xd1, 0x66, 0x62, - 0xf7, 0xa1, 0x20, 0x81, 0x1e, 0x57, 0x31, 0x30, 0x4d, 0xb3, - 0x34, 0x9f, 0xd3, 0xba, 0x4f, 0x24, 0x59, 0x1c, 0x19, 0x6d, - 0x69, 0x6f, 0x96, 0x08, 0x26, 0x77, 0x28, 0x05, 0x8a, 0xde, - 0x46, 0x47, 0x44, 0xed, 0x83, 0x38, 0x03, 0x38, 0x50, 0xde, - 0x63, 0x70, 0xc9, 0xad, 0x49, 0xe2, 0xcf, 0x77, 0x06, 0x76, - 0x32, 0xd9, 0x25, 0x64, 0xb9, 0x5d, 0x68, 0x56, 0x48, 0x80, - 0x17, 0x1c, 0xec, 0xd2, 0x5e, 0x77, 0x7f, 0x15, 0x89, 0x37, - 0x00, 0xd9, 0x82, 0x8f, 0xa7, 0x7e, 0x93, 0xdf, 0x19, 0xbf, - 0x83, 0x9c, 0x93, 0xd0, 0xef, 0x48, 0x82, 0x42, 0x2d, 0x3e, - 0xe8, 0xfe, 0x5c, 0x00, 0xe3, 0x12, 0xff, 0x85, 0x12, 0x4c, - 0x44, 0x7b, 0xf5, 0x21, 0x75, 0x0e, 0xb3, 0x84, 0xc4, 0x9a, - 0xa7, 0x4f, 0xd1, 0x28, 0x14, 0x2f, 0x5e, 0xd7, 0x98, 0x48, - 0xc8, 0x53, 0xab, 0x45, 0x75, 0xf4, 0x3c, 0x15, 0x7d, 0xa2, - 0x7f, 0x4d, 0x9c, 0xc5, 0xc9, 0x4c, 0xf7, 0x8e, 0x6f, 0x7d, - 0xab, 0x2d, 0xe4, 0x6d, 0xfa, 0x25, 0x1a, 0xf3, 0xb4, 0x95, - 0x8c, 0xb5, 0x0e, 0x79, 0x21, 0x73, 0xad, 0x03, 0xa8, 0x25, - 0xf3, 0x57, 0x94, 0xa1, 0x3e, 0xd7, 0x36, 0x2a, 0x2a, 0x12, - 0x0a, 0xff, 0x2f, 0x69, 0xf0, 0x05, 0xf7, 0x8b, 0xae, 0x26, - 0xf4, 0xa8, 0x3c, 0x12, 0x98, 0x6b, 0x2a, 0x0c, 0xd6, 0x4b, - 0xc6, 0x65, 0xc5, 0x17, 0xeb, 0x8a, 0xcf, 0x6d, 0x28, 0x1a, - 0xb2, 0xff, 0x63, 0x13, 0x46, 0x7d, 0xe8, 0x7f, 0xc3, 0x74, - 0x8b, 0x27, 0x23, 0xef, 0xc7, 0x85, 0xfa, 0x71, 0x7f, 0x48, - 0x1b, 0x06, 0x41, 0x4c, 0x0d, 0x5c, 0x8f, 0xf5, 0xb1, 0x69, - 0x9a, 0xf5, 0xd2, 0x22, 0xa5, 0xd1, 0x76, 0x4c, 0xdc, 0xf8, - 0x66, 0x79, 0xc7, 0x44, 0x4f, 0x7f, 0x5a, 0x6d, 0x26, 0x16, - 0x38, 0x2c, 0x24, 0xee, 0x3e, 0x31, 0xb1, 0x1d, 0xf8, 0x99, - 0xd5, 0xd2, 0xe6, 0x3d, 0x42, 0x2e, 0x36, 0xed, 0x09, 0x5e, - 0xa1, 0x05, 0x05, 0xbc, 0xca, 0xbe, 0xc9, 0x2b, 0x00, 0x20, - 0x19, 0x59, 0x99, 0xf4, 0xd8, 0xf7, 0x9d, 0xaa, 0xfc, 0x1b, - 0xbd, 0x71, 0x88, 0xcf, 0x92, 0x8f, 0xd5, 0xd0, 0xb0, 0xae, - 0x04, 0x46, 0xa4, 0xc9, 0x5b, 0x7e, 0x8b, 0x1d, 0x1b, 0x8b, - 0xd5, 0xe2, 0xba, 0xba, 0x26, 0x7a, 0x4d, 0x1e, 0xdc, 0x9f, - 0xb7, 0xa8, 0xef, 0xf7, 0xa8, 0xd1, 0x8d, 0x78, 0xf2, 0x88, - 0xff, 0xac, 0x4f, 0x7d, 0xbf, 0x51, 0x5d, 0xa5, 0xc6, 0x19, - 0x37, 0xec, 0xe9, 0xbb, 0x65, 0x45, 0x38, 0xa6, 0xdd, 0x46, - 0x26, 0x06, 0x2c, 0xf0, 0xeb, 0x4e, 0x28, 0xb4, 0xb0, 0x35, - 0x82, 0xde, 0xfe, 0x10, 0x15, 0x41, 0x59, 0xb4, 0xf4, 0xe1, - 0x36, 0x9e, 0x23, 0x89, 0xad, 0x9a, 0x1f, 0xbd, 0x31, 0x50, - 0x6c, 0xb2, 0x82, 0x6e, 0xbb, 0x2d, 0x05, 0x9a, 0xc3, 0x0c, - 0xf1, 0xb1, 0x99, 0x6c, 0x3b, 0x78, 0x51, 0x4f, 0x67, 0x0b, - 0x3a, 0x55, 0xa5, 0xc0, 0xfc, 0xde, 0xbb, 0x23, 0xfe, 0x98, - 0x1d, 0xa6, 0xb2, 0x94, 0xa8, 0x42, 0xa9, 0x56, 0xd0, 0x59, - 0x5f, 0xf1, 0x5b, 0x5b, 0xde, 0x65, 0xf3, 0x41, 0x82, 0x42, - 0x7e, 0xfe, 0x1a, 0x87, 0xe7, 0x5c, 0x58, 0xea, 0xa0, 0x31, - 0x89, 0x7c, 0x60, 0x81, 0x33, 0x10, 0x0b, 0x6b, 0x11, 0xa4, - 0x2c, 0x8b, 0x18, 0x59, 0x5b, 0x20, 0x88, 0x06, 0x01, 0x65, - 0xa0, 0xcc, 0x79, 0xa7, 0x7f, 0xe0, 0x55, 0x00, 0x2d, 0x83, - 0xf2, 0x14, 0xe8, 0x3d, 0x2a, 0x0c, 0x8c, 0x7e, 0x39, 0x9c, - 0xa7, 0x23, 0x7a, 0x4b, 0x90, 0x9d, 0x3b, 0x15, 0xed, 0x82, - 0xe3, 0x6a, 0x7e, 0xa9, 0xed, 0xe7, 0xee, 0x9e, 0xce, 0x31, - 0x5c, 0x86, 0xc1, 0xf1, 0x10, 0xfd, 0x6a, 0x06, 0xbb, 0xa2, - 0xd1, 0x84, 0x4f, 0x5a, 0x64, 0x93, 0x8d, 0xfe, 0xcc, 0xc1, - 0xe9, 0x2a, 0x4a, 0x43, 0xb9, 0x62, 0x10, 0x1e, 0x3c, 0x32, - 0x6d, 0xda, 0xd3, 0x51, 0xd1, 0xcc, 0x9f, 0xeb, 0xae, 0x0d, - 0xc4, 0xbd, 0x41, 0x24, 0xa2, 0xb0, 0x0c, 0x7b, 0x2c, 0xdc, - 0x1f, 0x08, 0x11, 0x50, 0x7c, 0xeb, 0xe3, 0x2d, 0x80, 0x2e, - 0xdc, 0x0b, 0x44, 0xb0, 0x0b, 0x57, 0x4b, 0xec, 0xc8, 0x06, - 0xde, 0xf9, 0x34, 0xd5, 0x0b, 0x5e, 0x98, 0x7e, 0xb9, 0x34, - 0xbc, 0xd0, 0x9b, 0x83, 0x04, 0x35, 0x84, 0xb2, 0xe2, 0x29, - 0x98, 0x69, 0x42, 0x30, 0x66, 0xe4, 0xd4, 0x42, 0x31, 0x17, - 0x1b, 0xf9, 0x27, 0x6c, 0xfb, 0x25, 0x2d, 0xc5, 0xa5, 0xc9, - 0xcf, 0x2a, 0x8b, 0xfe, 0x99, 0xb6, 0x6f, 0xe2, 0x66, 0x0d, - 0x1e, 0xe2, 0xcc, 0xb2, 0x2d, 0xf6, 0xed, 0x53, 0x74, 0xa5, - 0xb6, 0x9c, 0x6d, 0x57, 0xcb, 0x56, 0x16, 0x6c, 0xbc, 0x51, - 0x11, 0x87, 0x93, 0xf8, 0x2f, 0x0d, 0xfc, 0xea, 0x95, 0x0f, - 0xc4, 0x57, 0x7d, 0x07, 0xb2, 0xf8, 0xdf, 0x0d, 0xff, 0x01, - 0x74, 0x7a, 0x28, 0x03, 0xb4, 0x28, 0x00, 0x00 + 0x68, 0x74, 0x6d, 0x6c, 0x00, 0xd5, 0x1a, 0x69, 0x53, 0x22, + 0xc9, 0xf2, 0x33, 0x1b, 0xb1, 0xff, 0xa1, 0xa6, 0x37, 0x36, + 0x80, 0x00, 0x69, 0x10, 0xf1, 0x40, 0x71, 0x1f, 0x20, 0x78, + 0xa3, 0x02, 0x32, 0xea, 0xc6, 0x46, 0xbc, 0xa6, 0xbb, 0x1a, + 0x4a, 0xfa, 0xb2, 0x0f, 0x1a, 0x9c, 0xf5, 0xbf, 0xbf, 0xac, + 0xa3, 0x9b, 0xe6, 0x70, 0x74, 0x66, 0xe3, 0x45, 0xbc, 0x87, + 0xa3, 0xdd, 0x55, 0x95, 0x77, 0x65, 0x66, 0x65, 0x16, 0x73, + 0xf4, 0xe5, 0xe4, 0xa6, 0xd9, 0x7f, 0xbc, 0x6d, 0xa1, 0xb1, + 0x6f, 0x1a, 0xc7, 0xbf, 0xfe, 0xf2, 0xeb, 0x2f, 0x47, 0x9e, + 0x3f, 0x37, 0x30, 0xbc, 0xa6, 0x0a, 0x2a, 0xb6, 0x7c, 0xec, + 0xa2, 0x6f, 0xf0, 0x9e, 0xd2, 0x88, 0xe7, 0x18, 0xca, 0xbc, + 0x8a, 0x74, 0x03, 0xcf, 0x0e, 0xe9, 0xcc, 0x73, 0xe0, 0xf9, + 0x44, 0x9f, 0x6f, 0xa9, 0x36, 0x40, 0x59, 0x7e, 0x15, 0x71, + 0x70, 0xba, 0xf6, 0xb6, 0xc0, 0x36, 0x7e, 0x02, 0x3d, 0x65, + 0x2a, 0xee, 0x88, 0x58, 0xd5, 0xa2, 0x33, 0x43, 0xf4, 0xb7, + 0x4c, 0xff, 0x6c, 0xc3, 0x9f, 0x15, 0xda, 0xce, 0xcf, 0xd0, + 0x76, 0x14, 0x4d, 0x23, 0xd6, 0xa8, 0xca, 0x08, 0xa2, 0xe2, + 0x0a, 0x49, 0xf3, 0x1f, 0x91, 0x2c, 0x55, 0x22, 0x92, 0x49, + 0x15, 0x76, 0x18, 0xa3, 0x04, 0xab, 0x31, 0xd1, 0xf0, 0x12, + 0x1f, 0x54, 0x45, 0x96, 0x6d, 0xe1, 0x18, 0x60, 0x18, 0xf8, + 0xbe, 0x6d, 0xa9, 0x86, 0xe2, 0x79, 0xd5, 0xb1, 0x3d, 0x8d, + 0xf6, 0x20, 0xe6, 0x53, 0x2c, 0xec, 0x62, 0x93, 0xb1, 0xd1, + 0x41, 0x9c, 0xad, 0x10, 0x93, 0xd1, 0x18, 0x44, 0x1a, 0xda, + 0x86, 0xc6, 0x66, 0x87, 0x8a, 0x3a, 0x19, 0xb9, 0x76, 0x60, + 0x69, 0x20, 0xaf, 0x61, 0xbb, 0x55, 0xf4, 0x9b, 0xae, 0xeb, + 0x6c, 0x29, 0x1a, 0x57, 0xb4, 0xe1, 0xbe, 0x76, 0xb0, 0x89, + 0x23, 0xe7, 0xf5, 0x69, 0xc2, 0x0b, 0x42, 0xa9, 0x55, 0x5e, + 0xc2, 0x06, 0xa8, 0x24, 0xb6, 0x6e, 0x93, 0x02, 0x3f, 0x66, + 0xe9, 0x4d, 0x06, 0x02, 0x0a, 0xca, 0xd0, 0xc0, 0xda, 0x0f, + 0xca, 0xad, 0x95, 0xf0, 0x36, 0x1e, 0x2e, 0xc9, 0xad, 0x16, + 0xe9, 0x4f, 0x64, 0x13, 0xca, 0xc7, 0x71, 0xed, 0x91, 0x8b, + 0x3d, 0x6f, 0x6b, 0xa8, 0xf0, 0x3d, 0x40, 0x68, 0x9d, 0x54, + 0x38, 0x26, 0x3e, 0xee, 0x99, 0xf6, 0x84, 0x6d, 0x20, 0x40, + 0xd8, 0xae, 0x86, 0xdd, 0x2d, 0x57, 0xd1, 0x48, 0xe0, 0x81, + 0x9f, 0x71, 0xe5, 0xe9, 0xfc, 0x6c, 0xcb, 0x1b, 0x2b, 0x9a, + 0x1d, 0x82, 0x01, 0xe8, 0x34, 0x2a, 0xc3, 0xaf, 0x3b, 0x1a, + 0x2a, 0x99, 0x62, 0x1e, 0x89, 0x7f, 0x85, 0xed, 0x4a, 0x16, + 0x11, 0xcb, 0xc3, 0x3e, 0x47, 0x0a, 0x89, 0xe6, 0x8f, 0x81, + 0x48, 0xa5, 0x18, 0x91, 0x19, 0x0b, 0xe5, 0xb6, 0xe3, 0x19, + 0xc7, 0xf6, 0x88, 0x4f, 0x6c, 0xb0, 0xb4, 0x8b, 0x0d, 0xc5, + 0x27, 0x53, 0x21, 0x48, 0x6c, 0xdb, 0xa1, 0x61, 0xab, 0x13, + 0xa1, 0x17, 0xfd, 0x49, 0x15, 0x3c, 0x87, 0x58, 0x56, 0xec, + 0x57, 0x31, 0xbe, 0x32, 0xf4, 0x6c, 0x23, 0xf0, 0x19, 0x7e, + 0xca, 0xc0, 0x3a, 0xb0, 0xa9, 0x14, 0x7f, 0x67, 0x23, 0xdf, + 0x76, 0x16, 0x03, 0x21, 0x43, 0xa9, 0x18, 0xed, 0x2c, 0x17, + 0x73, 0x31, 0x4e, 0xb8, 0xbf, 0x12, 0xf8, 0x36, 0x9b, 0x83, + 0x6d, 0x19, 0x4e, 0x88, 0xbf, 0xa5, 0x58, 0xc4, 0x54, 0x84, + 0xbc, 0xb6, 0xcf, 0xde, 0x50, 0x61, 0xd7, 0x03, 0xad, 0x75, + 0x62, 0x81, 0x29, 0x91, 0x41, 0x2c, 0xac, 0xf0, 0x0d, 0xdf, + 0x32, 0xed, 0xd7, 0x1f, 0x43, 0xb0, 0x7f, 0x08, 0xfc, 0x47, + 0x60, 0xc5, 0xbe, 0x32, 0xb3, 0x50, 0x97, 0x46, 0x60, 0x2b, + 0xa2, 0x45, 0x1b, 0x58, 0xda, 0xdb, 0xc9, 0x6f, 0x97, 0x0f, + 0xf2, 0x85, 0x52, 0x25, 0x9b, 0x04, 0x77, 0x85, 0xa5, 0x3e, + 0x0b, 0x3f, 0xb4, 0xc1, 0xb5, 0xcd, 0x1f, 0x40, 0xa0, 0x1b, + 0xf3, 0x1d, 0xe8, 0xfd, 0x65, 0x69, 0xb8, 0x53, 0x6e, 0x17, + 0xf9, 0x46, 0x32, 0x7f, 0x48, 0xfd, 0x2b, 0xda, 0x99, 0x09, + 0x9e, 0xeb, 0xae, 0x62, 0x62, 0x6f, 0x61, 0x0c, 0x1e, 0x54, + 0xae, 0x0d, 0x89, 0x31, 0x82, 0xf2, 0x5d, 0xc5, 0xf2, 0x74, + 0xdb, 0x35, 0x85, 0xcd, 0x70, 0xa6, 0xa8, 0xe1, 0x51, 0xf6, + 0xf0, 0x8d, 0xbb, 0xc9, 0xf7, 0x00, 0xcb, 0x95, 0x83, 0x18, + 0xf4, 0x8d, 0x71, 0xa6, 0xfb, 0xfb, 0x01, 0x5b, 0x0a, 0xf2, + 0x31, 0xcf, 0xcd, 0x50, 0xeb, 0x0c, 0xed, 0x8f, 0xd8, 0xd9, + 0x9f, 0x60, 0x66, 0x7f, 0x86, 0xd5, 0xf7, 0xf9, 0x7c, 0xc8, + 0xe4, 0x43, 0x0e, 0x6c, 0xf3, 0x8e, 0xe4, 0xe8, 0xbc, 0x86, + 0x77, 0x71, 0x88, 0x1f, 0x8d, 0xb1, 0xa2, 0xd1, 0x13, 0xfc, + 0x08, 0xbc, 0x77, 0x42, 0x93, 0x42, 0x4d, 0x22, 0x90, 0x4e, + 0x25, 0x34, 0x76, 0xb1, 0x5e, 0x93, 0x34, 0xc5, 0x57, 0xaa, + 0x79, 0x89, 0x41, 0x98, 0xd8, 0x57, 0x90, 0x05, 0x52, 0xd6, + 0xa4, 0x29, 0xc1, 0xa1, 0x63, 0xbb, 0xbe, 0x84, 0x44, 0xea, + 0xad, 0x49, 0x2c, 0xac, 0x6b, 0x1a, 0x9e, 0x12, 0x15, 0x6f, + 0xb1, 0x41, 0x1e, 0xd1, 0xb8, 0x20, 0x8a, 0xb1, 0xe5, 0xa9, + 0x8a, 0x81, 0x6b, 0x25, 0x89, 0xb1, 0x4e, 0x1d, 0x69, 0x64, + 0x4a, 0x09, 0xa6, 0x8e, 0x7c, 0x9a, 0x8d, 0x11, 0x62, 0xc9, + 0xb9, 0x26, 0x89, 0x93, 0x9a, 0x31, 0xa3, 0x8b, 0x9a, 0x78, + 0x21, 0xe6, 0x08, 0x79, 0xae, 0x2a, 0x84, 0x81, 0x20, 0x1c, + 0x61, 0xd9, 0xb1, 0x46, 0x87, 0x43, 0xc5, 0xc3, 0xbb, 0x3b, + 0x79, 0x32, 0x68, 0xdc, 0x74, 0xc3, 0xe2, 0xe5, 0xe9, 0xc8, + 0xae, 0xc3, 0xa7, 0xd3, 0xbb, 0x1f, 0xb7, 0xee, 0x47, 0xf0, + 0xd6, 0xa2, 0xc3, 0x46, 0xbd, 0x59, 0xbf, 0x86, 0x67, 0x53, + 0xf3, 0x77, 0xce, 0x3c, 0x3a, 0xb3, 0xdf, 0x6e, 0x5c, 0x0f, + 0x5a, 0xf7, 0xf5, 0xe8, 0x23, 0xcb, 0xb9, 0xfa, 0xe8, 0xbc, + 0x09, 0xcf, 0xfd, 0xbd, 0xfe, 0xa4, 0xe2, 0xcf, 0x6f, 0x0f, + 0x4a, 0x53, 0xf9, 0xa0, 0xd9, 0x6f, 0x0f, 0xda, 0xfd, 0x76, + 0x27, 0x08, 0xf5, 0x83, 0x93, 0x9e, 0xa1, 0xcd, 0x43, 0xf9, + 0xe0, 0x15, 0xe6, 0x43, 0x18, 0xcf, 0x66, 0xb7, 0x07, 0x27, + 0xfd, 0xc1, 0xc5, 0x69, 0xcf, 0xe8, 0x4c, 0x61, 0xfe, 0xa4, + 0x57, 0xea, 0xce, 0xc2, 0xe9, 0x41, 0x1b, 0xc6, 0x21, 0x8c, + 0x5b, 0x3d, 0x63, 0x30, 0xa3, 0x78, 0xfd, 0x76, 0x97, 0xc1, + 0xc3, 0x6f, 0x0b, 0x68, 0xb5, 0x7a, 0x25, 0x98, 0x8f, 0xd6, + 0x29, 0x7c, 0xa9, 0x3b, 0x17, 0xe3, 0xb9, 0xa0, 0x13, 0xc2, + 0x3c, 0xc0, 0x76, 0xe9, 0x5a, 0x8b, 0xd1, 0xd5, 0x0f, 0xe6, + 0x30, 0xc7, 0x79, 0x50, 0xd8, 0x52, 0x97, 0xd2, 0x9d, 0x8b, + 0x77, 0xba, 0xde, 0x66, 0x78, 0xf2, 0x01, 0x9f, 0x67, 0x74, + 0x3b, 0x14, 0x96, 0xf1, 0xe5, 0x74, 0x06, 0xb3, 0x18, 0x7e, + 0x4a, 0x9f, 0x9d, 0x90, 0x3f, 0x19, 0x1f, 0x3a, 0x27, 0xe6, + 0xbb, 0x09, 0x98, 0xb5, 0xa7, 0x78, 0x97, 0xe1, 0xb3, 0xdf, + 0x31, 0x9e, 0xaf, 0x9b, 0xd4, 0x7e, 0xfd, 0x87, 0x6e, 0xaf, + 0x6f, 0x80, 0x8d, 0xef, 0x5a, 0xcd, 0xfa, 0xa8, 0x78, 0x73, + 0xda, 0xf0, 0x8c, 0x8b, 0xde, 0xa3, 0x79, 0xd9, 0x9c, 0x14, + 0x3b, 0x7d, 0xb5, 0xfc, 0xb5, 0x3d, 0x7e, 0xfa, 0x3a, 0x70, + 0x94, 0xaf, 0x25, 0xff, 0xf9, 0xe9, 0xeb, 0x93, 0xa9, 0x3d, + 0x0c, 0xca, 0x5a, 0x79, 0xbc, 0xa7, 0x3f, 0x6c, 0xd7, 0x47, + 0x36, 0x39, 0x27, 0x3b, 0xf3, 0xeb, 0x67, 0xa7, 0x77, 0x6f, + 0x3c, 0x7d, 0x7d, 0x34, 0x2f, 0x82, 0xa1, 0x75, 0x31, 0x9f, + 0xfb, 0x57, 0x41, 0x6e, 0xbe, 0x5f, 0x56, 0xcb, 0x9d, 0xf2, + 0x73, 0x25, 0x28, 0x07, 0x7b, 0xf2, 0xc9, 0x6c, 0x5f, 0xee, + 0xef, 0xc9, 0x17, 0x2d, 0xed, 0xb9, 0x4b, 0xf7, 0xb3, 0xdd, + 0xee, 0xdd, 0x77, 0x1b, 0x83, 0xb3, 0x67, 0x65, 0x4f, 0xdd, + 0x39, 0xf1, 0x26, 0x9d, 0x46, 0xeb, 0xfc, 0x61, 0x6c, 0xd9, + 0x66, 0xff, 0xe9, 0x20, 0xd8, 0x1e, 0xf6, 0x3a, 0xaf, 0x07, + 0x6e, 0x6e, 0xf8, 0x72, 0xe9, 0xed, 0x76, 0x0d, 0xac, 0x96, + 0x4f, 0xe4, 0xd3, 0x1c, 0x56, 0x7a, 0x83, 0x9d, 0xeb, 0xe1, + 0x57, 0xe3, 0xc5, 0x2d, 0x7b, 0x76, 0xdd, 0xf8, 0x6a, 0x85, + 0x20, 0x7c, 0xe9, 0xee, 0xe5, 0x7e, 0x98, 0x2b, 0x3e, 0x69, + 0x77, 0xb7, 0x75, 0x2d, 0x77, 0x25, 0x6b, 0xe5, 0xdd, 0xa9, + 0x32, 0x70, 0xef, 0x8a, 0x5e, 0xbd, 0xbd, 0x7f, 0xd2, 0xbe, + 0xd6, 0x6e, 0xef, 0xce, 0x5e, 0x07, 0xad, 0x9c, 0x7c, 0x77, + 0x39, 0x0a, 0xc0, 0x9f, 0x2a, 0x77, 0x27, 0x6a, 0xa3, 0x12, + 0x3c, 0x4f, 0xc3, 0xce, 0x5d, 0xc3, 0x6c, 0xdf, 0x5a, 0xe5, + 0xab, 0xc1, 0x6d, 0x33, 0xd7, 0xf7, 0xbb, 0x83, 0xfa, 0x89, + 0x67, 0x6a, 0x8d, 0x93, 0x7d, 0x82, 0x1b, 0xfd, 0xd2, 0xe8, + 0xd5, 0xe8, 0x5c, 0xe1, 0xee, 0xc8, 0x0f, 0x6f, 0x34, 0x3d, + 0x67, 0x5c, 0xdc, 0x56, 0x1c, 0x32, 0xbd, 0xbb, 0xd3, 0xc3, + 0xdc, 0xe3, 0x53, 0xef, 0x55, 0xbe, 0xc0, 0x8d, 0xfb, 0xd7, + 0xd7, 0x8b, 0xd1, 0x4d, 0x78, 0x7d, 0x59, 0x3c, 0x79, 0xb2, + 0xac, 0xdb, 0xbb, 0xd6, 0xe3, 0x63, 0x29, 0x6c, 0x9b, 0x7a, + 0xe7, 0xfc, 0xae, 0x2e, 0xcf, 0x66, 0xe5, 0x9b, 0x51, 0xfd, + 0x79, 0x74, 0x76, 0x51, 0xcf, 0xd9, 0x67, 0x7b, 0x9d, 0xf9, + 0x7d, 0xfb, 0xb1, 0x2e, 0xef, 0xda, 0xf5, 0xa7, 0x9d, 0xeb, + 0xf3, 0xcb, 0xc7, 0x66, 0xae, 0x7e, 0xda, 0x2d, 0x86, 0x8d, + 0xd9, 0x63, 0x7d, 0xbf, 0xb1, 0xd3, 0xbf, 0xf1, 0x1a, 0xd8, + 0x03, 0x5f, 0x2f, 0xbf, 0x78, 0x75, 0x8f, 0xa8, 0xf5, 0xe1, + 0x34, 0xac, 0xef, 0x35, 0xcc, 0xfa, 0xe5, 0xeb, 0xbe, 0x53, + 0xef, 0x57, 0x1e, 0xce, 0x1c, 0xe5, 0x9e, 0xaa, 0x33, 0xcb, + 0x61, 0xb7, 0xde, 0x7d, 0x9a, 0xb8, 0xa1, 0xf6, 0x38, 0xb9, + 0x2a, 0xe2, 0xc7, 0xd6, 0xd9, 0x36, 0xb6, 0x9b, 0xed, 0xf0, + 0x00, 0xfc, 0xab, 0x7c, 0x5f, 0x7f, 0x68, 0xa8, 0x8d, 0xb3, + 0x71, 0x63, 0x7b, 0xef, 0x45, 0x0d, 0x1e, 0x3b, 0xa7, 0x95, + 0xee, 0xee, 0xcb, 0x73, 0xf1, 0x5e, 0xb6, 0x4a, 0x2f, 0xc6, + 0xc4, 0xc3, 0x0f, 0x83, 0xc1, 0x75, 0x30, 0x9b, 0x9e, 0xef, + 0xb7, 0xf7, 0xb4, 0xd7, 0xb6, 0xf5, 0xe0, 0x5d, 0x19, 0xf5, + 0x27, 0xfc, 0xa0, 0x3c, 0x59, 0xb9, 0x01, 0x31, 0xdd, 0xd9, + 0xe9, 0x4b, 0x73, 0x8f, 0xdc, 0xde, 0x3f, 0x4d, 0x88, 0xb9, + 0x17, 0x38, 0x1d, 0xd2, 0xa9, 0x9c, 0x85, 0x53, 0xe5, 0xc1, + 0x23, 0x7a, 0xa9, 0x72, 0xf0, 0xd0, 0x32, 0x7b, 0xa3, 0x97, + 0xde, 0xe3, 0x8d, 0x16, 0x5c, 0x56, 0x58, 0xe0, 0xb5, 0x8c, + 0x76, 0x7f, 0xd2, 0x0b, 0xee, 0xcc, 0x66, 0x33, 0x8a, 0x79, + 0x39, 0x0e, 0xfa, 0xf8, 0x65, 0x5c, 0x3a, 0xee, 0xf5, 0xaf, + 0xcb, 0xdb, 0xe8, 0xde, 0x81, 0xf8, 0xc7, 0x47, 0x32, 0x4c, + 0x2c, 0x03, 0xc3, 0x0b, 0xcd, 0x23, 0x2c, 0x47, 0xc9, 0x3c, + 0xb7, 0x00, 0x14, 0xcf, 0x6b, 0xf0, 0x3a, 0xb4, 0xb5, 0xf9, + 0xb1, 0x48, 0x3b, 0x88, 0x68, 0x35, 0x49, 0x14, 0x34, 0xd2, + 0x71, 0x04, 0x1d, 0x25, 0xa2, 0x0d, 0x79, 0xe8, 0xc8, 0x77, + 0xf9, 0x83, 0x27, 0x49, 0x62, 0x39, 0x81, 0x8f, 0xfc, 0xb9, + 0x03, 0x39, 0x50, 0x27, 0x06, 0x96, 0x18, 0x41, 0x90, 0xaf, + 0x0d, 0x03, 0x4f, 0x42, 0x8a, 0xaa, 0x62, 0x07, 0x92, 0x61, + 0x61, 0x48, 0x20, 0x85, 0x0a, 0x7a, 0x89, 0x0a, 0x94, 0xd3, + 0x8c, 0x05, 0x8f, 0x9e, 0x49, 0xb2, 0x1c, 0x7a, 0x23, 0x32, + 0x62, 0xf9, 0x1b, 0xf2, 0xa0, 0x28, 0xd6, 0x58, 0x23, 0xc0, + 0x45, 0x08, 0x1c, 0xc3, 0x56, 0x34, 0x10, 0xa4, 0x21, 0xd0, + 0xa7, 0x8a, 0x11, 0x00, 0xe8, 0x3d, 0x9b, 0x47, 0xdc, 0x82, + 0x5c, 0x62, 0x9f, 0xf8, 0xc6, 0xa6, 0x15, 0xe8, 0x2b, 0x42, + 0x09, 0x51, 0x5e, 0x44, 0x9d, 0xd4, 0x24, 0xc5, 0x71, 0x0a, + 0x90, 0xf1, 0xc7, 0xb6, 0xe6, 0x15, 0x38, 0xf5, 0x8e, 0x1d, + 0x66, 0xb2, 0x92, 0x1c, 0xd9, 0x5c, 0x13, 0xba, 0xb8, 0xe2, + 0x19, 0xef, 0x01, 0x37, 0x26, 0xb3, 0x34, 0x86, 0xd8, 0xf3, + 0xfb, 0x74, 0x1c, 0x2b, 0x44, 0x3b, 0x1a, 0x7a, 0x6c, 0x18, + 0x9e, 0xa3, 0x58, 0x35, 0x69, 0x3b, 0x69, 0xe6, 0x85, 0x45, + 0x0c, 0x65, 0x88, 0x8d, 0xe3, 0x5b, 0x03, 0x43, 0x8e, 0x47, + 0x9c, 0x0c, 0x88, 0x86, 0x99, 0xa0, 0x55, 0x0e, 0xb9, 0x82, + 0x21, 0x80, 0x28, 0x5b, 0x0a, 0xd4, 0x63, 0x43, 0x30, 0x19, + 0x79, 0x05, 0x65, 0x2b, 0xdc, 0xc1, 0x10, 0xe2, 0xb2, 0x73, + 0xd8, 0x25, 0x45, 0xe0, 0x85, 0xf3, 0x5c, 0x22, 0x1a, 0x2b, + 0xb5, 0x60, 0xb8, 0x70, 0xcd, 0x25, 0x9e, 0x81, 0xa3, 0x35, + 0x6d, 0xd3, 0x54, 0x2c, 0x2d, 0xb6, 0x7d, 0x51, 0x5a, 0xf6, + 0x28, 0x43, 0x78, 0x39, 0x20, 0xda, 0x0e, 0x3b, 0xe3, 0x63, + 0xc0, 0xe3, 0x0e, 0x1c, 0xde, 0x8a, 0x81, 0x1c, 0xc5, 0xf5, + 0x59, 0x7d, 0x7d, 0x24, 0x73, 0x90, 0x77, 0x30, 0xe0, 0x28, + 0x6d, 0xd8, 0xb6, 0xbf, 0x01, 0x1e, 0x09, 0xd1, 0x92, 0x3a, + 0x26, 0xe3, 0x4a, 0x5e, 0xa8, 0xe1, 0xae, 0x1d, 0xb4, 0x9f, + 0x74, 0x43, 0xa1, 0x2f, 0x44, 0x23, 0x78, 0x4f, 0xc2, 0xd5, + 0xe8, 0x8c, 0x70, 0x28, 0xe6, 0x4b, 0xb1, 0xa7, 0xad, 0x2e, + 0xbc, 0xe3, 0x64, 0x14, 0x2c, 0xe9, 0x64, 0x9b, 0xe4, 0x4e, + 0x38, 0x5a, 0x6a, 0x65, 0xff, 0x62, 0x4f, 0xfc, 0x8e, 0x47, + 0x72, 0x4f, 0xde, 0xe0, 0x91, 0xcb, 0x5e, 0x38, 0x16, 0x39, + 0x87, 0x78, 0x88, 0x89, 0x05, 0x9d, 0x28, 0xd0, 0x1b, 0x27, + 0xe9, 0xaf, 0xc0, 0x37, 0xc7, 0xc4, 0x41, 0xe7, 0x9a, 0x80, + 0x42, 0xe2, 0x03, 0xb6, 0x65, 0x6c, 0x55, 0x58, 0x3d, 0xd7, + 0xa4, 0x63, 0x26, 0x72, 0x2a, 0xb0, 0x26, 0x60, 0x06, 0x6b, + 0x43, 0x1c, 0x6d, 0x22, 0xda, 0x81, 0x8a, 0xeb, 0x3b, 0x64, + 0xe9, 0xf2, 0xc7, 0x84, 0x53, 0x2b, 0x41, 0x76, 0x14, 0xb5, + 0xab, 0x8c, 0x4e, 0x34, 0x68, 0x28, 0xae, 0x84, 0x4c, 0x62, + 0x31, 0xdf, 0x35, 0x95, 0x19, 0x38, 0x5a, 0xb1, 0x98, 0xf0, + 0x67, 0xc8, 0x98, 0x11, 0xe8, 0xf1, 0x5a, 0x06, 0x60, 0x8f, + 0x55, 0x09, 0x23, 0xf0, 0x01, 0x25, 0x21, 0x71, 0x24, 0xb6, + 0x71, 0xef, 0xc8, 0x95, 0xa0, 0xf0, 0xcf, 0x93, 0x22, 0xed, + 0xbf, 0x63, 0xe9, 0x8f, 0x50, 0x83, 0x0d, 0x85, 0x53, 0xd2, + 0x01, 0x82, 0xda, 0x79, 0x6c, 0x83, 0xf9, 0x36, 0x3b, 0x24, + 0x45, 0xff, 0x44, 0xc2, 0xa3, 0xf7, 0x60, 0xaa, 0x4b, 0x1c, + 0x9f, 0x6e, 0x02, 0xfd, 0x81, 0x92, 0xd8, 0xf3, 0xa9, 0xdf, + 0xf4, 0xa0, 0x14, 0x0f, 0x3c, 0x54, 0x43, 0x7f, 0x4a, 0x1d, + 0x08, 0x56, 0xcf, 0x87, 0x68, 0xc5, 0x9a, 0x94, 0x97, 0x7a, + 0xf1, 0xdb, 0xb9, 0x85, 0x22, 0x13, 0xc1, 0xa8, 0xe5, 0x2a, + 0x1e, 0xb8, 0x1a, 0xbc, 0xb5, 0x41, 0xb7, 0x31, 0x7f, 0x1d, + 0x60, 0x97, 0xe8, 0x73, 0x31, 0x0d, 0x15, 0xb5, 0x37, 0x66, + 0x98, 0x5d, 0xcc, 0xe8, 0x31, 0x2c, 0xd7, 0x76, 0xa5, 0xbf, + 0x0e, 0x13, 0x9c, 0x23, 0x38, 0xe0, 0xbd, 0x9b, 0x9c, 0x17, + 0x48, 0x30, 0xbd, 0x97, 0x9c, 0x66, 0x14, 0x60, 0x72, 0xff, + 0x90, 0x6b, 0x30, 0x55, 0x5c, 0x34, 0xc2, 0x3e, 0x0f, 0x5c, + 0xae, 0xc5, 0x39, 0xcd, 0x60, 0x60, 0x4a, 0x80, 0xb2, 0x02, + 0xc3, 0x38, 0x8c, 0x81, 0xda, 0xbd, 0x68, 0xe9, 0xfc, 0x64, + 0xb1, 0x28, 0xcb, 0x74, 0xd9, 0xb0, 0x6d, 0xe7, 0x94, 0x82, + 0x34, 0xa1, 0x43, 0x28, 0x32, 0xe2, 0x29, 0x3a, 0x4f, 0xa8, + 0x60, 0x7a, 0x60, 0xa9, 0x34, 0x65, 0x65, 0x30, 0xf4, 0xa2, + 0x59, 0xde, 0xef, 0xd0, 0x45, 0x17, 0x53, 0xf9, 0x34, 0x5b, + 0x0d, 0x4c, 0x48, 0x9b, 0x05, 0x60, 0xd1, 0x32, 0x30, 0x7d, + 0x6d, 0xcc, 0xcf, 0x35, 0x0e, 0xcc, 0xda, 0x54, 0xa2, 0x67, + 0xbe, 0x00, 0x6c, 0x96, 0x21, 0xa6, 0xa8, 0x2e, 0xb6, 0x81, + 0x0b, 0x86, 0x3d, 0xca, 0xa4, 0x3b, 0x36, 0xc2, 0x1c, 0x07, + 0xe9, 0xf4, 0xfa, 0x05, 0x85, 0xc4, 0x1f, 0x53, 0xae, 0x69, + 0x94, 0x43, 0x0b, 0x0a, 0xac, 0x7f, 0x02, 0x12, 0x81, 0x6b, + 0x51, 0xae, 0xac, 0xcb, 0x3d, 0xe4, 0x3e, 0x09, 0xff, 0x22, + 0xeb, 0xd0, 0x84, 0x41, 0x8f, 0x77, 0x10, 0x4a, 0xf1, 0xe6, + 0x96, 0x8a, 0x32, 0xf4, 0x7c, 0xc9, 0xa2, 0xda, 0x31, 0x97, + 0xd9, 0x00, 0x79, 0x13, 0x07, 0x5d, 0x8d, 0x68, 0x99, 0xa5, + 0x83, 0x8f, 0xf3, 0x4a, 0xcc, 0x14, 0x98, 0xe3, 0xd2, 0xb8, + 0x05, 0x92, 0x3c, 0xfb, 0x1c, 0x46, 0x84, 0x02, 0xe7, 0x2a, + 0xca, 0x4f, 0x8c, 0x50, 0x32, 0x5f, 0x71, 0x42, 0x09, 0x88, + 0xf7, 0x08, 0xc9, 0x32, 0x52, 0x34, 0x8d, 0x1f, 0xea, 0xe0, + 0xe2, 0x6d, 0x38, 0x5b, 0x4e, 0xa0, 0x75, 0x42, 0xf6, 0xf0, + 0x19, 0x64, 0xe0, 0xd7, 0x58, 0x54, 0x37, 0x9d, 0x6e, 0x83, + 0x85, 0xc3, 0x18, 0x22, 0xc3, 0x59, 0xe8, 0x5a, 0x01, 0xe2, + 0x00, 0x5b, 0x5a, 0x26, 0x1d, 0x95, 0x36, 0xe9, 0x3c, 0x23, + 0x97, 0x8d, 0xe8, 0x7b, 0xb0, 0x8a, 0xfe, 0x7d, 0x7b, 0xd3, + 0xeb, 0xff, 0x1b, 0x4c, 0xf7, 0x12, 0x80, 0x5f, 0xb1, 0x3b, + 0x92, 0x50, 0x21, 0x3e, 0xca, 0x88, 0x87, 0x8e, 0x7d, 0x75, + 0x9c, 0x49, 0xcb, 0x3a, 0xd7, 0xe2, 0x0f, 0x8d, 0xb8, 0x35, + 0xcf, 0x37, 0x81, 0x16, 0xdf, 0x33, 0x1e, 0x68, 0x55, 0x94, + 0xa6, 0x74, 0xd2, 0x79, 0x36, 0x47, 0xab, 0xb5, 0x2a, 0x48, + 0xc6, 0xf6, 0x27, 0x4b, 0xff, 0x16, 0xfc, 0x31, 0xb6, 0x32, + 0x10, 0x21, 0xd4, 0xe2, 0xf0, 0x28, 0x3c, 0x7b, 0xe0, 0x34, + 0xd9, 0xc4, 0x1a, 0x9d, 0xa0, 0x8b, 0xc9, 0xe0, 0x1d, 0x61, + 0x28, 0xf1, 0xc0, 0x7b, 0x99, 0xf4, 0x57, 0x04, 0xb4, 0x65, + 0x60, 0x02, 0x4d, 0x55, 0xa8, 0x64, 0xd8, 0x75, 0x29, 0x5a, + 0xe4, 0x3a, 0x98, 0x46, 0x01, 0x9d, 0xe4, 0x40, 0xec, 0xef, + 0x5b, 0xec, 0xb3, 0x40, 0x1c, 0xac, 0xf5, 0x2d, 0x3a, 0x77, + 0x34, 0x66, 0x2e, 0xa1, 0x88, 0xf0, 0x21, 0x3e, 0x00, 0xf3, + 0xbc, 0x17, 0x3b, 0x55, 0x16, 0x1e, 0xf9, 0x04, 0xd8, 0x52, + 0xf4, 0x2c, 0x2d, 0x27, 0x63, 0x07, 0x56, 0x8a, 0x31, 0xd6, + 0x22, 0xb1, 0x54, 0x3f, 0x9d, 0x58, 0x12, 0x79, 0x43, 0x64, + 0x0b, 0x46, 0xed, 0x8d, 0x87, 0x41, 0x9e, 0x29, 0x29, 0x2c, + 0x57, 0x65, 0x6a, 0xb0, 0xcd, 0x64, 0xde, 0xce, 0x13, 0x46, + 0xac, 0x2a, 0xdb, 0x7b, 0x56, 0xf5, 0x30, 0xf7, 0x62, 0x49, + 0x3a, 0x0e, 0x40, 0x9f, 0x8f, 0xc1, 0x4e, 0x24, 0xe9, 0x3b, + 0xdc, 0x6b, 0x22, 0xb7, 0xc4, 0x53, 0x1a, 0x97, 0x06, 0x6c, + 0x09, 0xdd, 0x22, 0xb6, 0xc2, 0xb0, 0x0a, 0xb0, 0xd8, 0xa2, + 0x6b, 0x57, 0x62, 0x29, 0x93, 0x56, 0xc7, 0x8a, 0x35, 0xc2, + 0xe0, 0x2f, 0x99, 0x45, 0xb8, 0x45, 0x9c, 0xf8, 0x19, 0xc0, + 0x59, 0xad, 0x95, 0xbf, 0xd9, 0x43, 0x51, 0x07, 0x71, 0xa8, + 0x02, 0x3b, 0x23, 0x0a, 0xd1, 0x15, 0x3a, 0x04, 0x0b, 0xbb, + 0xe6, 0xe4, 0xd1, 0x42, 0xfd, 0x8c, 0xbf, 0x70, 0xb7, 0xf5, + 0xc7, 0x84, 0xba, 0x0f, 0x58, 0xfe, 0x84, 0xb8, 0x99, 0x58, + 0x76, 0xea, 0x03, 0xba, 0x07, 0x53, 0x90, 0x06, 0x96, 0xe0, + 0x2e, 0xa8, 0x3b, 0x4a, 0xba, 0x07, 0xde, 0x2d, 0xc5, 0xd0, + 0x44, 0x07, 0xf7, 0xa7, 0xd0, 0xd9, 0x08, 0x6e, 0xcd, 0x1d, + 0xf9, 0x32, 0x47, 0x88, 0xb2, 0x51, 0x7e, 0x61, 0x77, 0xb4, + 0x10, 0x41, 0x28, 0x9e, 0x60, 0xeb, 0xd8, 0x9e, 0xdf, 0x34, + 0xc1, 0xc6, 0xdf, 0x24, 0x85, 0x25, 0x51, 0xa9, 0x2a, 0x31, + 0x78, 0xe9, 0x2d, 0xb2, 0x36, 0x95, 0x60, 0x2d, 0x3d, 0xf3, + 0xfc, 0x1c, 0x11, 0x4c, 0x31, 0x5a, 0x4b, 0x8e, 0x56, 0x13, + 0xdf, 0x49, 0xa4, 0x52, 0xeb, 0xa9, 0xdd, 0xc3, 0x7e, 0x34, + 0xce, 0x70, 0x19, 0xe3, 0x14, 0x1e, 0x53, 0x5c, 0x27, 0x99, + 0xcb, 0x09, 0x82, 0x2c, 0xbf, 0x31, 0xa5, 0x51, 0x64, 0xc2, + 0xe5, 0x80, 0xdd, 0x64, 0x49, 0xae, 0x47, 0x64, 0xca, 0xbf, + 0xff, 0x46, 0x99, 0x35, 0x06, 0xc7, 0xb5, 0x72, 0x31, 0xbb, + 0x10, 0x20, 0x95, 0x30, 0xfd, 0x07, 0x09, 0x41, 0xec, 0x40, + 0x2a, 0xc2, 0x54, 0xa1, 0xdd, 0x70, 0x63, 0x15, 0x57, 0x0c, + 0x10, 0x0b, 0x94, 0x7a, 0xf7, 0xd0, 0x4b, 0xa5, 0x3e, 0x32, + 0x2a, 0x3f, 0x72, 0x68, 0xc8, 0x41, 0x61, 0x55, 0x14, 0x24, + 0xdf, 0x36, 0xec, 0x7e, 0xa2, 0xe3, 0x42, 0xdf, 0x3e, 0x19, + 0x5f, 0xdc, 0xa6, 0x8b, 0x03, 0x2b, 0xc3, 0xc3, 0x8a, 0xc6, + 0xa9, 0xf7, 0x67, 0xf1, 0xaf, 0x0f, 0x9d, 0x7c, 0x4d, 0x84, + 0xb8, 0x1e, 0x17, 0x22, 0xb0, 0x0d, 0xe4, 0x8d, 0x95, 0x88, + 0xbb, 0x44, 0xa7, 0x25, 0xc8, 0xf3, 0x43, 0x4c, 0x03, 0xe7, + 0x8c, 0x43, 0x33, 0x6e, 0x8c, 0x12, 0x9e, 0x29, 0xc8, 0x14, + 0x58, 0x71, 0x16, 0x6f, 0x1e, 0x5d, 0xf9, 0x02, 0x8a, 0xea, + 0xc4, 0x35, 0x33, 0xe9, 0xba, 0x8b, 0xd1, 0xdc, 0x0e, 0x90, + 0x17, 0x88, 0x97, 0x50, 0x01, 0x63, 0xc2, 0x81, 0xc6, 0x25, + 0x83, 0xcc, 0x64, 0x42, 0x89, 0xfe, 0x47, 0x9a, 0x6e, 0x3e, + 0xcf, 0xc0, 0xc2, 0xba, 0x2b, 0x81, 0xc2, 0xdd, 0x0a, 0xa0, + 0x35, 0x9b, 0x63, 0x4a, 0x79, 0x88, 0x1b, 0xd5, 0xd4, 0xa4, + 0x6a, 0x3a, 0xc7, 0x65, 0xe5, 0x72, 0xe4, 0xd2, 0x79, 0xde, + 0xd5, 0x57, 0xa5, 0x74, 0x6e, 0x49, 0xc2, 0x5c, 0x7a, 0x11, + 0x58, 0xa9, 0xf7, 0x2b, 0xa3, 0x90, 0x58, 0x9a, 0x1d, 0x16, + 0x92, 0x81, 0x12, 0x19, 0x3a, 0x89, 0x91, 0x47, 0xdb, 0x89, + 0xdd, 0x87, 0x82, 0x04, 0x7a, 0x5c, 0xc5, 0xc0, 0x34, 0xcd, + 0xd2, 0x7c, 0x4e, 0xeb, 0x3e, 0x91, 0x64, 0x71, 0x64, 0xb4, + 0x95, 0xbd, 0x59, 0x21, 0x98, 0xdc, 0xa1, 0x14, 0x28, 0x7a, + 0x1f, 0x1d, 0x11, 0xb5, 0xef, 0xc4, 0x19, 0xc0, 0x81, 0xf2, + 0x1e, 0x83, 0x4b, 0x6e, 0x4d, 0x12, 0x7f, 0xb1, 0x33, 0xb0, + 0x93, 0xc9, 0x2e, 0x21, 0xcb, 0xed, 0x42, 0xb3, 0x42, 0x02, + 0xbc, 0xe0, 0x60, 0x97, 0xf6, 0xba, 0x87, 0xeb, 0x48, 0xbc, + 0x01, 0xc8, 0x16, 0x7c, 0x3c, 0xf3, 0x9b, 0xfc, 0xce, 0xf8, + 0x1d, 0xe4, 0x9c, 0x84, 0x7e, 0x47, 0x12, 0x14, 0x6a, 0xf1, + 0x41, 0xf7, 0xe7, 0x12, 0x18, 0x97, 0xf8, 0x2f, 0x94, 0x60, + 0x22, 0xda, 0xab, 0xef, 0x52, 0xe7, 0x30, 0x2b, 0x48, 0xac, + 0x79, 0xfa, 0x10, 0x8d, 0x42, 0xf1, 0xe2, 0x75, 0x83, 0x89, + 0x84, 0x3c, 0xb5, 0x5a, 0x54, 0x47, 0x2f, 0x52, 0xd1, 0x07, + 0xfa, 0xd7, 0xc4, 0x59, 0x9c, 0xcc, 0x74, 0xef, 0xf8, 0xd6, + 0x97, 0xda, 0x52, 0xde, 0xa6, 0x5f, 0xa2, 0x31, 0x4f, 0x5b, + 0xcb, 0x58, 0x9b, 0x90, 0x97, 0x32, 0xd7, 0x26, 0x80, 0x5a, + 0x32, 0x7f, 0x45, 0x19, 0xea, 0x63, 0x6d, 0xa3, 0xa2, 0x22, + 0xa1, 0xf0, 0xff, 0x92, 0x06, 0x9f, 0x70, 0xbf, 0xe8, 0x6a, + 0x42, 0x8f, 0xca, 0x23, 0x81, 0xb9, 0xa1, 0xc2, 0x60, 0xbd, + 0x64, 0x5c, 0x56, 0x7c, 0xb2, 0xae, 0xf8, 0xd8, 0x86, 0xa2, + 0x21, 0xfb, 0x3f, 0x36, 0x61, 0xd4, 0x87, 0xfe, 0x37, 0x4c, + 0xb7, 0x7c, 0x32, 0xf2, 0x7e, 0x5c, 0xa8, 0x1f, 0xf7, 0x87, + 0xb4, 0x61, 0x10, 0xc4, 0xd4, 0xc0, 0xf5, 0x58, 0x1f, 0x9b, + 0xa6, 0x59, 0x2f, 0x2d, 0x52, 0x1a, 0x6d, 0xc7, 0xc4, 0x8d, + 0x6f, 0x96, 0x77, 0x4c, 0xf4, 0xf4, 0xa7, 0xd5, 0x66, 0x62, + 0x81, 0xc3, 0x42, 0xe2, 0xee, 0x13, 0x13, 0xdb, 0x81, 0x9f, + 0x59, 0x2f, 0x6d, 0xde, 0x23, 0xe4, 0x62, 0xd3, 0x9e, 0xe2, + 0x35, 0x5a, 0x50, 0xc0, 0xab, 0xec, 0x9b, 0xbc, 0x02, 0x00, + 0x92, 0x91, 0x95, 0x49, 0x8f, 0x7d, 0xdf, 0xa9, 0xca, 0xbf, + 0xd1, 0x1b, 0x87, 0xf8, 0x2c, 0xf9, 0xbe, 0x1a, 0x1a, 0xd6, + 0x95, 0xc0, 0x88, 0x34, 0x79, 0xcb, 0xef, 0xb0, 0x63, 0x63, + 0xb9, 0x5a, 0xdc, 0x54, 0xd7, 0x44, 0xaf, 0xc9, 0x83, 0xfb, + 0xe3, 0x16, 0xf5, 0xfd, 0x1e, 0x35, 0xba, 0x11, 0x4f, 0x1e, + 0xf1, 0x1f, 0xf5, 0xa9, 0xef, 0x37, 0xaa, 0xeb, 0xd4, 0x38, + 0xe3, 0x86, 0x3d, 0x7b, 0xb7, 0xac, 0x08, 0xc7, 0xb4, 0xdb, + 0xc8, 0xc4, 0x80, 0x05, 0x7e, 0xdd, 0x09, 0x85, 0x16, 0xb6, + 0x46, 0xd0, 0xdb, 0x1f, 0xa3, 0x22, 0x28, 0x8b, 0x56, 0x3e, + 0xdc, 0xc6, 0x0b, 0x24, 0xb1, 0x55, 0x8b, 0xa3, 0x37, 0x06, + 0x8a, 0x4d, 0x56, 0xd0, 0x6d, 0xb7, 0xa5, 0x40, 0x73, 0x98, + 0x21, 0x3e, 0x36, 0x93, 0x6d, 0x07, 0x8d, 0x4c, 0x3a, 0x57, + 0xd0, 0xa9, 0x22, 0x05, 0x88, 0x3d, 0x3c, 0xbb, 0xd1, 0x33, + 0xfc, 0xae, 0x3f, 0x7b, 0x5c, 0x2b, 0x2e, 0x22, 0x93, 0xea, + 0x04, 0x7d, 0xf5, 0x0d, 0xbf, 0xb3, 0xe5, 0x3d, 0x36, 0x1f, + 0x24, 0x28, 0xe4, 0x17, 0xaf, 0x71, 0x70, 0x2e, 0x44, 0xa5, + 0xee, 0x19, 0x93, 0xc8, 0x07, 0xc0, 0x0c, 0x92, 0x14, 0xd6, + 0xb2, 0xcb, 0xf1, 0xb1, 0xb1, 0x38, 0x10, 0xcd, 0x01, 0xca, + 0x40, 0x89, 0xf3, 0x4e, 0xef, 0xc0, 0x2b, 0x00, 0x5a, 0x02, + 0xe5, 0x29, 0xd0, 0x7b, 0x54, 0x18, 0x18, 0xfd, 0x62, 0x38, + 0x4f, 0x47, 0xf4, 0x86, 0x20, 0xbb, 0x70, 0x28, 0xda, 0x01, + 0xc7, 0x95, 0xfc, 0x4a, 0xcb, 0xcf, 0x5d, 0x3d, 0x9d, 0x63, + 0xb8, 0x0c, 0x83, 0xe3, 0x21, 0xfa, 0xb5, 0x0c, 0x76, 0x45, + 0x93, 0x09, 0x9f, 0xb4, 0xc8, 0x24, 0x5b, 0xfd, 0xb9, 0x83, + 0xd3, 0x55, 0x94, 0x86, 0x52, 0xc5, 0x20, 0x3c, 0x70, 0x64, + 0xda, 0xb0, 0xa7, 0xa3, 0x82, 0x99, 0x3f, 0x37, 0x5d, 0x19, + 0x88, 0x3b, 0x83, 0x48, 0x44, 0x61, 0x19, 0xf6, 0x58, 0xba, + 0x3b, 0x10, 0x22, 0xa0, 0xf8, 0xc6, 0xc7, 0x5b, 0x02, 0x5d, + 0xba, 0x13, 0x88, 0x60, 0x97, 0xae, 0x95, 0xd8, 0x71, 0x0d, + 0xbc, 0xf3, 0x69, 0xaa, 0x17, 0xbc, 0x30, 0xfd, 0x72, 0x69, + 0x78, 0xa1, 0xb7, 0x06, 0x09, 0x6a, 0x08, 0x65, 0xc5, 0x53, + 0x30, 0xd3, 0x84, 0x60, 0xcc, 0xc8, 0xa9, 0xa5, 0x42, 0x2e, + 0x36, 0xf2, 0x4f, 0xd8, 0xf6, 0x53, 0x5a, 0x8a, 0x0b, 0x93, + 0x9f, 0x55, 0x16, 0xfd, 0x33, 0x6d, 0xdf, 0xc4, 0xad, 0x1a, + 0x3c, 0xc4, 0x79, 0x65, 0x5b, 0xec, 0x9b, 0xa7, 0xe8, 0x3a, + 0x6d, 0x35, 0xd3, 0xae, 0x97, 0xac, 0xec, 0x80, 0xe1, 0x4d, + 0x8a, 0x38, 0x98, 0xc4, 0x7f, 0x67, 0xe0, 0xd7, 0xae, 0x7c, + 0x20, 0xbe, 0xe6, 0x3b, 0x92, 0xc5, 0xff, 0x6c, 0xf8, 0x0f, + 0xd4, 0x2f, 0x92, 0xfe, 0xb0, 0x28, 0x00, 0x00 }; static const unsigned char tfs____web_pages_warning_red_png[] = { /* ../web_pages/warning_red.png */ - 0x1f, 0x8b, 0x08, 0x08, 0xbf, 0xfc, 0xe6, 0x65, 0x02, 0x03, + 0x1f, 0x8b, 0x08, 0x08, 0x96, 0x8d, 0xa4, 0x67, 0x02, 0x03, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x64, 0x2e, 0x70, 0x6e, 0x67, 0x00, 0x01, 0x6a, 0x03, 0x95, 0xfc, 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, @@ -3253,7 +3678,7 @@ static const unsigned char tfs____web_pages_warning_red_png[] = { static const unsigned char tfs____web_pages_warning_yellow_png[] = { /* ../web_pages/warning_yellow.png */ - 0x1f, 0x8b, 0x08, 0x08, 0xa3, 0xfc, 0xe6, 0x65, 0x02, 0x03, + 0x1f, 0x8b, 0x08, 0x08, 0x96, 0x8d, 0xa4, 0x67, 0x02, 0x03, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x2e, 0x70, 0x6e, 0x67, 0x00, 0x01, 0xc2, 0x03, 0x3d, 0xfc, 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, diff --git a/software_esp32/src/web.cpp b/software_esp32/src/web.cpp index 9ced596..9fc6828 100644 --- a/software_esp32/src/web.cpp +++ b/software_esp32/src/web.cpp @@ -147,6 +147,7 @@ String CWeb::getProtConfig (VDM_PROTOCOL_CONFIG protConfig) "\"pubPathAsRoot\":"+String(protConfig.protocolFlags.publishPathAsRoot)+","+ "\"pubUpTime\":"+String(protConfig.protocolFlags.publishUpTime)+","+ "\"pubDiag\":"+String(protConfig.protocolFlags.publishDiag)+","+ + "\"numFormat\":"+String(protConfig.mqttConfig.flags.numFormat)+","+ "\"keepAliveTime\":"+String(protConfig.keepAliveTime)+","+ "\"user\":\""+String(protConfig.userName)+"\"}"; return result; @@ -162,7 +163,8 @@ String CWeb::getValvesConfig (VDM_VALVES_CONFIG valvesConfig) result += "{\"name\":\""+String(valvesConfig.valveConfig[x].name) + "\"," + "\"active\":"+String(valvesConfig.valveConfig[x].active) + ","+ "\"tIdx1\":"+String(StmApp.actuators[x].tIdx1) + ","+ - "\"tIdx2\":"+String(StmApp.actuators[x].tIdx2) + "}"; + "\"tIdx2\":"+String(StmApp.actuators[x].tIdx2); + result+="}"; if (x0) { result += ",\"brokerStatus\":"+String(Mqtt.mqttState); @@ -353,14 +388,17 @@ String CWeb::getValvesStatus() if ((StmApp.stmInitState==STM_INIT_FINISHED) && StmApp.oneWireAllRead) { if (StmApp.actuators[x].tIdx1>0) { + result += ",\"tIdxName1\":\""+String(VdmConfig.configFlash.tempsConfig.tempConfig[StmApp.actuators[x].tIdx1-1].name)+"\""; if (StmApp.actuators[x].temp1>-500) { result +=",\"temp1\":" + String(((float)StmApp.actuators[x].temp1)/10,1); } else result +=",\"temp1\":\"failed\""; } if (StmApp.actuators[x].tIdx2>0) { + result += ",\"tIdxName2\":\""+String(VdmConfig.configFlash.tempsConfig.tempConfig[StmApp.actuators[x].tIdx2-1].name)+"\""; if (StmApp.actuators[x].temp2>-500) { result +=",\"temp2\":" + String(((float)StmApp.actuators[x].temp2)/10,1); } else result +=",\"temp2\":\"failed\""; + } } @@ -372,8 +410,7 @@ String CWeb::getValvesStatus() result +=",\"tTarget\":\"link #"+String(VdmConfig.configFlash.valvesControlConfig.valveControlConfig[x].link)+"\""; result +=",\"tValue\":\"link #"+String(VdmConfig.configFlash.valvesControlConfig.valveControlConfig[x].link)+"\""; } - } - + } if (VdmConfig.configFlash.valvesControlConfig.valveControlConfig[x].controlFlags.windowInstalled) { result +=",\"window\":"+String(PiControl[x].windowState); } @@ -407,7 +444,7 @@ String CWeb::getTempsStatus(VDM_TEMPS_CONFIG tempsConfig) String s; for (uint8_t i=0;i - - + + + + +

PushOver

+ + + + + + + + + + + + + +
API Token + +
User Token + +
Title + +
+ +
+ + +
+ +
+ + +

Email

+ + + + + + + + + + + + + + + + + + + + + + + + + +
User + +
Password + +
Host + +
Port + +
Recipient + +
Title + +
+
+ + +
+
+ + +

Are you sure you want to discover Home Assistant ?

+ + + + +
+ +
+
+ + +
+
+ + +

It is mandatory to enable strict seperate topics while you select homeassistant

+ + + +
Do you want to enable strict seperate topics now ? + +
+
+ + +
+
+ + +
- Home + Home @@ -497,16 +762,23 @@

VDMot Controller

Up Time - - - - - + +
+

WT32 Controller

- +
@@ -545,7 +817,7 @@

WT32 Controller

STM32 Controller

-
SW Version
+
@@ -554,6 +826,14 @@

STM32 Controller

+ + + + + + + +
Version Chip Id
@@ -563,7 +843,7 @@

STM32 Controller

Valves

- +
@@ -587,9 +867,14 @@

Miscellaneous

Temperature

- +
+
+

Sensors

+ +
+
@@ -812,6 +1097,7 @@

Protocol

@@ -883,10 +1169,11 @@

Protocol

- + - - - + +
+ Home Assistant + +
-

Valves

- +
@@ -955,11 +1253,10 @@

Motor

-
+
Assembly/Calibration -
-
+

Temperature sensor

-
- - -
+
+
- +
+ + + + + +
Detected sensors
- -

PushOver

- - - - - - - - - - - - - - - - - - - - -
API Token - -
User Token - -
Title - -
-
+
+

Voltage sensor

+
+
+ + + + + +
Detected sensors
+
+
- -

Email

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
User - -
Password - -
Host - -
Port - -
Recipient - -
Title - -
-
- -
+

Messenger

@@ -1093,7 +1328,7 @@

Messenger

-
+

Files

@@ -1119,7 +1354,7 @@

Files

-
+

System

@@ -1152,7 +1387,7 @@

System

Valves

-
+
@@ -1234,33 +1469,42 @@

About this VDMot controller

- + @@ -1747,10 +1991,22 @@

About this VDMot controller

var motorCharsHasChanged=false; var movCalibHasChanged=false; var emailPwdChanged=false; + if (localStorage.rememberMe!==null) + id("login-rememberMe").checked=localStorage.rememberMe==="true"; var showAllTabs=window.location.href.startsWith('file'); + if (localStorage.rememberMe==="true") { + if (localStorage.login!==null) showAllTabs=(localStorage.login==="true"); + } else { + if (sessionStorage.login!==null) showAllTabs=(sessionStorage.login==="true"); + } var getStatusInterval; var dataTempSensorsID=null; - const NoOfMaxSensors = 34; + const NoOfMaxTSensors = 34; + var dataVoltSensorsID=null; + const NoOfMaxVSensors = 8; + var valveWarnLevel = 0; + var tempWarning = false; + var sensorWarning = false; var stmInit = 0; const cfgVCKiCol= 12; var getFSIntervalID = null; @@ -1762,11 +2018,14 @@

About this VDMot controller

var stmLoaded=false; var activeSetValvesDisplay = "none"; var reconnectMQTT=false; + var stmTimeOut = false; var windowImageObjects = [null,null,null,null,null,null,null,null,null,null,null,null]; const tabImageSrc = ["","warning_yellow.png","warning_red.png"]; + const haDialog = id("haDialog"); + const enableStrictTopicsDialog = id("enableStrictTopicsDialog"); - // Get the modal - var modal = id("pwdModal"); + // Get the login modal + var loginModal = id("pwdModal"); // Get the element that closes the modal var span = document.getElementsByClassName("close")[0]; @@ -1798,6 +2057,12 @@

About this VDMot controller

tabLinks[i].style.display = "none"; } } + if (showAllTabs) { + activeSetValvesDisplay = "block"; + } else { + activeSetValvesDisplay = "none"; + } + id('activeSetValves').style.display=activeSetValvesDisplay; } function openPage(pageName,elmnt,color) { @@ -1845,6 +2110,10 @@

About this VDMot controller

id("cfgValvesTableFieldSet2").disabled=doDisable; id("valvesStartCalib").disabled=doDisable; id("valvesAssembly").disabled=doDisable; + id("protcfg-discoverHA").disabled=doDisable; + id("saveConfig").disabled=doDisable; + id("factoryRestore").disabled=doDisable; + id("resetConfig").disabled=doDisable; } window.onhashchange = function() { @@ -1876,13 +2145,18 @@

About this VDMot controller

async function OnStart() { stmLoaded=false; + setTimeout(function() { + checkStmTimeOut(); + },120000); disable_enable_ValvesCfg(true); fillTZList(); await getSystemConfig(); makeTempsTable(0); + makeVoltsTable(0); makeCfgValvesTable(); makeValvesControlTable(); makeCfgTempTable(); + makeCfgVoltTable(); await getValvesStatus(); await getSystemInfo(); await getSystemDynInfo(); @@ -1891,6 +2165,7 @@

About this VDMot controller

await getProtConfig(); await getMsgConfig(); await getTempsConfig(); + await getVoltsConfig(); await getValvesConfig(); await getValvesControlConfig(); @@ -1909,7 +2184,9 @@

About this VDMot controller

async function loadStmData() { await getMotorConfig(); await getTempSensorsID(); + await getVoltSensorsID(); await getTempsStatus(); + await getVoltsStatus(); await getSystemInfo(); await getValvesConfig(); } @@ -1924,10 +2201,20 @@

About this VDMot controller

case 1 : alert ("User name wrong"); break; case 2 : alert ("Password wrong"); break; case 3 : { + let rememberMe = id("login-rememberMe").checked; + localStorage.rememberMe=rememberMe===true; + if (localStorage.rememberMe==="true") { + localStorage.login=true; + sessionStorage.login=null; + } else { + sessionStorage.login=true; + localStorage.login=null; + } showAllTabs= true; showAllTabsNow(); activeSetValvesDisplay = "block"; id('activeSetValves').style.display="block"; + id("loginForm").submit(); break; } } @@ -2019,8 +2306,8 @@

About this VDMot controller

el.setAttribute('max' , '100'); el.setAttribute('style','height:15px'); el.setAttribute('readonly','true'); - thiscell.appendChild(el); + thiscell = valvesTable.rows[row].cells[6]; el = document.createElement('input'); el.setAttribute('type', 'button'); @@ -2032,6 +2319,29 @@

About this VDMot controller

thiscell.appendChild(el); valvesTable.rows[row].cells[0].innerHTML = row; thiscell.classList.add('hide'); + if (valveTempsExists===true) { + thiscell = valvesTable.rows[row].cells[11]; + let p = document.createElement('p'); + p.setAttribute('id', 'tNode1-' + row); + p.setAttribute('style','font-size:8px;margin-top:0px;'); + thiscell.appendChild(p); + + p = document.createElement('p'); + p.setAttribute('id', 'tp1-' + row); + p.setAttribute('style','margin-top:0px;'); + thiscell.appendChild(p); + + thiscell = valvesTable.rows[row].cells[12]; + p = document.createElement('p'); + p.setAttribute('id', 'tNode2-' + row); + p.setAttribute('style','font-size:8px;margin-top:0px;'); + thiscell.appendChild(p); + + p = document.createElement('p'); + p.setAttribute('id', 'tp2-' + row); + p.setAttribute('style','margin-top:0px;'); + thiscell.appendChild(p); + } } let thiscell = valvesTable.rows[0].cells[6]; thiscell.classList.add('hide'); @@ -2149,13 +2459,13 @@

About this VDMot controller

function makeCfgTempTable() { const cfgTempTable = id('cfgTSensorTable'); - for (let row=0; rowAbout this VDMot controller thiscell.appendChild(el); thiscell = cfgTempTable.rows[row].cells[3]; el = document.createElement('input'); - el.setAttribute('type', 'text'); + el.setAttribute('type', 'number'); el.setAttribute('name', 'cfgTOffset' + row); el.setAttribute('id', 'cfgTOffset' + row); el.setAttribute('size', '5'); el.setAttribute('maxlength' , '5'); - el.setAttribute('style','width:40px;'); + el.setAttribute('step' , '0.1'); + el.setAttribute('style','width:45px;'); thiscell.appendChild(el); thiscell = cfgTempTable.rows[row].cells[4]; el = document.createElement('input'); @@ -2186,7 +2497,7 @@

About this VDMot controller

el.setAttribute('name', 'cfgTID' + row); el.setAttribute('id', 'cfgTID' + row); el.setAttribute('style','width:150px;'); - el.setAttribute('onchange', 'fillSensorIDSelect()'); + el.setAttribute('onchange', 'fillTSensorIDSelect()'); thiscell.appendChild(el); el = document.createElement('input'); el.setAttribute('type', 'button'); @@ -2194,13 +2505,13 @@

About this VDMot controller

el.setAttribute('id', 'cfgTBtn' + row); el.setAttribute('style','width:20px;'); el.setAttribute('value','x'); - el.setAttribute('onclick', 'deleteID(this.id)'); + el.setAttribute('onclick', 'deleteTID(this.id)'); thiscell.appendChild(el); el = document.createElement('select'); el.setAttribute('name', 'cfgTSel' + row); el.setAttribute('id', 'cfgTSel' + row); el.setAttribute('style','width:20px;'); - el.setAttribute('onchange', 'copyIDFromSelect(this.id)'); + el.setAttribute('onchange', 'copyTIDFromSelect(this.id)'); thiscell.appendChild(el); } @@ -2210,12 +2521,99 @@

About this VDMot controller

cfgTempTable.rows[0].cells[3].textContent = 'Offset'; cfgTempTable.rows[0].cells[4].textContent = 'ID'; } + + function makeCfgVoltTable() { + const cfgVoltTable = id('cfgVSensorTable'); + for (let row=0; rowAbout this VDMot controller thiscell = valvesControlTable.rows[row].cells[2]; el = document.createElement('input'); + el.className = "alignTabCellCenter"; el.setAttribute('type', 'checkbox'); el.setAttribute('name', 'cfgVCActive' + row); el.setAttribute('id', 'cfgVCActive' + row); @@ -2231,6 +2630,7 @@

About this VDMot controller

thiscell = valvesControlTable.rows[row].cells[3]; el = document.createElement('select'); + el.className = "alignTabCellCenter"; el.setAttribute('name', 'cfgVCAllow' + row); el.setAttribute('id', 'cfgVCAllow' + row); el.setAttribute('style','width:90px;'); @@ -2245,6 +2645,7 @@

About this VDMot controller

thiscell = valvesControlTable.rows[row].cells[4]; el = document.createElement('select'); + el.className = "alignTabCellCenter"; el.setAttribute('name', 'cfgVCLink-' + row); el.setAttribute('id', 'cfgVCLink-' + row); el.setAttribute('style','width:60px;'); @@ -2264,6 +2665,7 @@

About this VDMot controller

thiscell = valvesControlTable.rows[row].cells[5]; el = document.createElement('select'); + el.className = "alignTabCellCenter"; el.setAttribute('name', 'cfgVCValue' + row); el.setAttribute('id', 'cfgVCValue' + row); el.setAttribute('style','width:60px;'); @@ -2280,6 +2682,7 @@

About this VDMot controller

thiscell = valvesControlTable.rows[row].cells[6]; el = document.createElement('select'); + el.className = "alignTabCellCenter"; el.setAttribute('name', 'cfgVCTarget' + row); el.setAttribute('id', 'cfgVCTarget' + row); el.setAttribute('style','width:60px;'); @@ -2289,9 +2692,20 @@

About this VDMot controller

option = new Option('json', 1); el.options[1] = option; thiscell.appendChild(el); + + el = document.createElement('input'); + el.className = "alignTabCellCenter"; + el.setAttribute('type', 'number'); + el.setAttribute('name', 'cfgInittTarget' + row); + el.setAttribute('id', 'cfgInittTarget' + row); + el.setAttribute('style','width:50px;'); + el.setAttribute('min','0'); + el.setAttribute('title','Initial target temperature value after boot'); + thiscell.appendChild(el); thiscell = valvesControlTable.rows[row].cells[7]; el = document.createElement('input'); + el.className = "alignTabCellCenter"; el.setAttribute('type', 'number'); el.setAttribute('name', 'cfgVCXp' + row); el.setAttribute('id', 'cfgVCXp' + row); @@ -2302,6 +2716,19 @@

About this VDMot controller

thiscell = valvesControlTable.rows[row].cells[8]; el = document.createElement('input'); + el.className = "alignTabCellCenter"; + el.setAttribute('type', 'number'); + el.setAttribute('name', 'cfgVCDB' + row); + el.setAttribute('id', 'cfgVCDB' + row); + el.setAttribute('min','0'); + el.setAttribute('step','0.1'); + el.setAttribute('style','width:50px;'); + el.setAttribute('title','Enter deadband'); + thiscell.appendChild(el); + + thiscell = valvesControlTable.rows[row].cells[9]; + el = document.createElement('input'); + el.className = "alignTabCellCenter"; el.setAttribute('type', 'number'); el.setAttribute('name', 'cfgVCOffs' + row); el.setAttribute('id', 'cfgVCOffs' + row); @@ -2309,8 +2736,9 @@

About this VDMot controller

el.setAttribute('title','Enter offset'); thiscell.appendChild(el); - thiscell = valvesControlTable.rows[row].cells[9]; + thiscell = valvesControlTable.rows[row].cells[10]; el = document.createElement('input'); + el.className = "alignTabCellCenter"; el.setAttribute('type', 'number'); el.setAttribute('name', 'cfgVCTi' + row); el.setAttribute('id', 'cfgVCTi' + row); @@ -2319,8 +2747,9 @@

About this VDMot controller

el.setAttribute('title','Enter integral time in seconds'); thiscell.appendChild(el); - thiscell = valvesControlTable.rows[row].cells[10]; + thiscell = valvesControlTable.rows[row].cells[11]; el = document.createElement('input'); + el.className = "alignTabCellCenter"; el.setAttribute('type', 'number'); el.setAttribute('name', 'cfgVCTs' + row); el.setAttribute('id', 'cfgVCTs' + row); @@ -2329,8 +2758,9 @@

About this VDMot controller

el.setAttribute('title','Enter sampling time in seconds'); thiscell.appendChild(el); - thiscell = valvesControlTable.rows[row].cells[11]; + thiscell = valvesControlTable.rows[row].cells[12]; el = document.createElement('select'); + el.className = "alignTabCellCenter"; el.setAttribute('name', 'cfgVCScheme-' + row); el.setAttribute('id', 'cfgVCScheme-' + row); el.setAttribute('style','width:90px;'); @@ -2342,8 +2772,9 @@

About this VDMot controller

el.setAttribute('title','Enter scheme for control calculation'); thiscell.appendChild(el); - thiscell = valvesControlTable.rows[row].cells[12]; + thiscell = valvesControlTable.rows[row].cells[13]; el = document.createElement('input'); + el.className = "alignTabCellCenter"; el.setAttribute('type', 'number'); el.setAttribute('step', 'any'); el.setAttribute('name', 'cfgVCKi' + row); @@ -2353,8 +2784,9 @@

About this VDMot controller

el.setAttribute('title','Value ki for constant integral control calculation'); thiscell.appendChild(el); - thiscell = valvesControlTable.rows[row].cells[13]; + thiscell = valvesControlTable.rows[row].cells[14]; el = document.createElement('input'); + el.className = "alignTabCellCenter"; el.setAttribute('type', 'number'); el.setAttribute('name', 'cfgVCSZ' + row); el.setAttribute('id', 'cfgVCSZ' + row); @@ -2365,6 +2797,7 @@

About this VDMot controller

thiscell.appendChild(el); el = document.createElement('input'); + el.className = "alignTabCellCenter"; el.setAttribute('type', 'number'); el.setAttribute('name', 'cfgVCEZ' + row); el.setAttribute('id', 'cfgVCEZ' + row); @@ -2374,12 +2807,14 @@

About this VDMot controller

el.setAttribute('title','Active zone (opened) of the valve (1-100%)'); thiscell.appendChild(el); - thiscell = valvesControlTable.rows[row].cells[14]; + thiscell = valvesControlTable.rows[row].cells[15]; el = document.createElement('input'); + el.className = "alignTabCellCenter"; el.setAttribute('type', 'checkbox'); el.setAttribute('name', 'cfgVCWindow' + row); el.setAttribute('id', 'cfgVCWindow' + row); el.setAttribute('onchange','setCfgVCWindow(this);'); + el.setAttribute('title','Activate window handling'); thiscell.appendChild(el); } let col=0; @@ -2396,6 +2831,8 @@

About this VDMot controller

valvesControlTable.rows[0].cells[col++].title = 'Select target source for this valve'; valvesControlTable.rows[0].cells[col].textContent = 'Xp'; valvesControlTable.rows[0].cells[col++].title = 'Enter band (xp). Kp=100/xp'; + valvesControlTable.rows[0].cells[col].textContent = 'Deadband'; + valvesControlTable.rows[0].cells[col++].title = 'Enter deadband'; valvesControlTable.rows[0].cells[col].textContent = 'Offset(%)'; valvesControlTable.rows[0].cells[col++].title = 'Enter offset'; valvesControlTable.rows[0].cells[col].textContent = 'Ti(s)'; @@ -2414,18 +2851,32 @@

About this VDMot controller

function showBrokerIP() { let x = id("protcfg-Broker"); + let xha=id("protcfg-BrokerDHA"); let div1=id("div-protcfg-Broker3"); let select = id("protcfg-dataProt").selectedIndex; - if (select === 0) { - x.style.display = "none"; - div1.classList.remove("tabpframe"); - } else { - x.style.display = "block"; - div1.classList.add("tabpframe"); + switch (select) { + case 0: { + x.style.display = "none"; + div1.classList.remove("tabpframe"); + xha.style.display = "none"; + break; + } + case 1: { + x.style.display = "block"; + div1.classList.add("tabpframe"); + xha.style.display = "none"; + break; + } + case 2: { + x.style.display = "block"; + div1.classList.add("tabpframe"); + xha.style.display = "block"; + break; + } } id("protcfg-Broker1").style.display=x.style.display; - id("protcfg-Broker2").style.display=x.style.display; - id("protcfg-Broker21").style.display=x.style.display; + id("protcfg-BrokerDPublish").style.display=x.style.display; + id("protcfg-BrokerDFailed").style.display=x.style.display; id("protcfg-Broker3").style.display=x.style.display; @@ -2500,7 +2951,7 @@

About this VDMot controller

show_hide_column('valvesTable',10, enabled); } - function generateOnClick() { + async function generateOnClick() { id("netcfg-EthWifi").onclick = function(){ showWifi(); } @@ -2569,6 +3020,14 @@

About this VDMot controller

id("login-button").onclick = function(){ doLogin(); }; + + id("logout-button").onclick = function(){ + localStorage.login=null; + sessionStorage.login=null; + showAllTabs=false; + showAllTabsNow(); + setLoginButton(); + }; id("fileDelete").onclick = function(){ fileDelete(); @@ -2622,15 +3081,15 @@

About this VDMot controller

// When the user clicks on (x), close the modal span.onclick = function() { - modal.style.display = "none"; + loginModal.style.display = "none"; } - id("dialogOk").onclick = function () { + id("loginDialogOk").onclick = function () { checkLogin(); - modal.style.display = "none"; + loginModal.style.display = "none"; }; - id("dialogCancel").onclick = function () { - modal.style.display = "none"; + id("loginDialogCancel").onclick = function () { + loginModal.style.display = "none"; }; id("saveVCtrlConfig").onclick = async function(){ @@ -2671,6 +3130,27 @@

About this VDMot controller

alert ("Caution : If this option is activated it is absolutely mandatory to ensure that the tValue is received within the time frame. Publish on change on server side is not recommended with this option"); } }); + + id("protcfg-discoverHA").addEventListener("click", () => { + haDialog.showModal(); + }); + + id("ha-Ok").addEventListener('click', () => haDialog.close("confirmed")); + id("ha-Cancel").addEventListener('click', () => haDialog.close("cancel")); + haDialog.addEventListener("close", async () => { + if (haDialog.returnValue==="confirmed") { + await postCmd('{"action":"discoveryHA","actionHA":'+id("HA_Action").selectedIndex+'}'); + } + }); + + id("enableScrictTopics-Yes").addEventListener('click', () => id("protcfg-pubSeparate").checked=true); + id("enableScrictTopics-Confirm").addEventListener('click', () => enableStrictTopicsDialog.close("confirm")); + id("enableScrictTopics-Cancel").addEventListener('click', () => enableStrictTopicsDialog.close("cancel")); + enableStrictTopicsDialog.addEventListener("close", async () => { + if (enableStrictTopicsDialog.returnValue==="confirm") { + await saveConfigNow(); + } + }); } async function testPushOver(){ @@ -2717,21 +3197,21 @@

About this VDMot controller

} } - function valvesStartCalib(){ + async function valvesStartCalib(){ if (confirm('Are you sure you want to start calibration of valve ?')) { - postCmd('{"action":"vCalib","valve":'+id("valvesAsmCalib-select").value+'}'); + await postCmd('{"action":"vCalib","valve":'+id("valvesAsmCalib-select").value+'}'); } } - function valvesAssembly(){ + async function valvesAssembly(){ if (confirm('Are you sure you want to set valve to assembly position ?')) { - postCmd('{"action":"vAssembly","valve":'+id("valvesAsmCalib-select").value+'}'); + await postCmd('{"action":"vAssembly","valve":'+id("valvesAsmCalib-select").value+'}'); } } - function valvesDetect(){ + async function valvesDetect(){ if (confirm('Are you sure you want to detect valves ?')) { - postCmd('{"action":"valvesDetect"}'); + await postCmd('{"action":"valvesDetect"}'); } } @@ -2747,7 +3227,7 @@

About this VDMot controller

async function formatFS() { if (confirm('Are you sure you want to format the file system ?')) { - postCmd('{"action":"clearFS"}'); + await postCmd('{"action":"clearFS"}'); reloadDoc("http:/#home",15000,true); } } @@ -2769,9 +3249,9 @@

About this VDMot controller

} } - function scanTSensors(){ + async function scanTSensors(){ if (confirm('Are you sure you want to scan temperature sensors ?')) { - postCmd('{"action":"scanTempSensors"}'); + await postCmd('{"action":"scanTempSensors"}'); setTimeout(function() { getTempSensorsID(); },5000); @@ -2779,7 +3259,8 @@

About this VDMot controller

} function doLogin() { - modal.style.display = "block"; + setLoginButton(); + loginModal.style.display = "block"; } function reloadDoc (path,timeOut,clear=false,reLoad=true) { @@ -2797,45 +3278,51 @@

About this VDMot controller

},timeOut); } - function factoryRestore(){ + async function factoryRestore(){ if (confirm('Are you sure you want to restore configuration to factory settings ?')) { - postCmd('{"action":"restoreCfg"}'); + await postCmd('{"action":"restoreCfg"}'); reloadDoc("http:/#home",4000,true); } } - function resetConfig(){ + async function resetConfig(){ if (confirm('Are you sure you want to reset configuration to factory settings except network ?')) { - postCmd('{"action":"resetCfg"}'); + await postCmd('{"action":"resetCfg"}'); reloadDoc("http:/#home",4000,true); } } - function reboot(){ + async function reboot(){ if (confirm('Are you sure you want to reboot ?')) { - postCmd('{"action":"reboot"}'); + await postCmd('{"action":"reboot"}'); reloadDoc("http:/#home",4000,true); } } - + async function saveConfig(){ - if (confirm('Are you sure you want to save configuration ?')) { + if (!(id("protcfg-pubSeparate").checked) && (id("protcfg-dataProt").selectedIndex===2)) { + enableStrictTopicsDialog.showModal(); + } else { + if (confirm('Are you sure you want to save configuration ?')) { + await saveConfigNow(); + } + } + } + + async function saveConfigNow() { if (!(await postNetCfg())) return; if (!(await postProtCfg())) return; await postMessengerCfg(); await postSystemConfig(); await postValvesCfg(); await postValvesControlCfg(); - //await postTempsCfg(1,11); - //await postTempsCfg(12,23); - //await postTempsCfg(24,34); - postTempsCfg(1,34); + await postTempsCfg(1,34); + await postVoltsCfg(); await postCmd('{"action":"saveCfg"}'); WifiPwdHasChanged=false; UserPwdHasChanged=false; brokerPwdHasChanged=false; reloadDoc("http:/#home",4000,true); - } } async function postSystemConfig() { @@ -2884,7 +3371,7 @@

About this VDMot controller

async function postProtCfg() { let protCfg = {}; protCfg.prot = id("protcfg-dataProt").selectedIndex; - if (id("protcfg-dataProt").selectedIndex==1) { + if (id("protcfg-dataProt").selectedIndex!=0) { protCfg.ip = id("protcfg-Ip").value; protCfg.port = id("protcfg-Port").value; protCfg.interval = id("protcfg-Interval").value; @@ -2904,6 +3391,7 @@

About this VDMot controller

protCfg.mqttTODSActive= id("protcfg-timeOutDSActive").checked ? 1 : 0; protCfg.mqttTO= id("protcfg-timeOutValue").value; protCfg.mqttToPos= id("protcfg-timeOutPosition").value; + protCfg.numFormat= id("protcfg-numFormat").selectedIndex; } if (brokerPwdHasChanged===true) { protCfg.pwd = id("protcfg-Pwd").value; @@ -3028,7 +3516,9 @@

About this VDMot controller

valveValues.link = id('cfgVCLink-'+row).value; valveValues.vSource = id('cfgVCValue'+row).value; valveValues.tSource = id('cfgVCTarget'+row).value; + valveValues.inittTarget = id('cfgInittTarget'+row).value; valveValues.xp = id('cfgVCXp'+row).value; + valveValues.deadband = id('cfgVCDB'+row).value; valveValues.offset = id('cfgVCOffs'+row).value; valveValues.ti = id('cfgVCTi'+row).value; valveValues.ts = id('cfgVCTs'+row).value; @@ -3069,6 +3559,30 @@

About this VDMot controller

await postJson("tempsconfig",JSON.stringify(tempsCfg)); } + async function postVoltsCfg() { + const cfgVoltsTable = id('cfgVSensorTable'); + let voltsItemsCfg = []; + for (let row = 1; rowAbout this VDMot controller function setCfgVCScheme(thisLink){ const linkId= thisLink.id; let linkNo = linkId.slice(linkId.indexOf("-")+1); - let display = 'block'; - if (thisLink.value==0) { - display = 'none'; - } - id('cfgVCKi'+linkNo).style.display=display; + let display = thisLink.value==0 ? 'hidden' : 'visible'; + id('cfgVCKi'+linkNo).style.visibility=display; } - + function setCfgVCLink(thisLink){ const linkId= thisLink.id; let linkNo = linkId.slice(linkId.indexOf("-")+1); - let display = 'block'; - if (thisLink.value>0) { - display = 'none'; - } - id('cfgVCValue'+linkNo).style.display=display; - id('cfgVCTarget'+linkNo).style.display=display; - id('cfgVCXp'+linkNo).style.display=display; - id('cfgVCOffs'+linkNo).style.display=display; - id('cfgVCTi'+linkNo).style.display=display; - id('cfgVCTs'+linkNo).style.display=display; - id('cfgVCScheme-'+linkNo).style.display=display; - id('cfgVCKi'+linkNo).style.display=display; - id('cfgVCSZ'+linkNo).style.display=display; - id('cfgVCEZ'+linkNo).style.display=display; - id('cfgVCWindow'+linkNo).style.display=display; - if (display=='block') setCfgVCScheme(id('cfgVCScheme-'+linkNo)); + let display = thisLink.value>0 ? 'hidden' : 'visible'; + + id('cfgVCValue'+linkNo).style.visibility=display; + id('cfgVCTarget'+linkNo).style.visibility=display; + id('cfgInittTarget'+linkNo).style.visibility=display; + id('cfgVCXp'+linkNo).style.visibility=display; + id('cfgVCDB'+linkNo).style.visibility=display; + id('cfgVCOffs'+linkNo).style.visibility=display; + id('cfgVCTi'+linkNo).style.visibility=display; + id('cfgVCTs'+linkNo).style.visibility=display; + id('cfgVCScheme-'+linkNo).style.visibility=display; + id('cfgVCKi'+linkNo).style.visibility=display; + id('cfgVCSZ'+linkNo).style.visibility=display; + id('cfgVCEZ'+linkNo).style.visibility=display; + id('cfgVCWindow'+linkNo).style.visibility=display; + + if (display=='visible') setCfgVCScheme(id('cfgVCScheme-'+linkNo)); } function setCfgVCWindow(thisLink){ @@ -3144,8 +3656,39 @@

About this VDMot controller

await getSystemDynInfo(); await getValvesStatus(); await getTempsStatus(); + await getVoltsStatus(); } + function showHomeWarningIcon(homeWarning,minStmVersion) + { + if (homeWarning == 0) { + id("homeImg").style.visibility="hidden"; + id("homeImg").src=tabImageSrc[0]; + id("sysSTM32-Info").style.visibility="hidden"; + } else { + id("homeImg").style.visibility="visible"; + id("homeImg").src=tabImageSrc[2]; + id("sysSTM32-Info").style.visibility="visible"; + id("sysSTM32-Info").style.background="red"; + id("sysSTM32-InfoText").textContent="Stm32 version incompatible, min. version should be "+minStmVersion+". Please update STM32"; + } + } + + function showStmFailedWarningIcon(stmFailed) + { + if (stmFailed == 0) { + id("homeImg").style.visibility="hidden"; + id("homeImg").src=tabImageSrc[0]; + id("sysSTM32-Error").style.visibility="hidden"; + } else { + id("homeImg").style.visibility="visible"; + id("homeImg").src=tabImageSrc[2]; + id("sysSTM32-Error").style.visibility="visible"; + id("sysSTM32-Error").style.background="red"; + id("sysSTM32-ErrorText").textContent="Stm32 not responding ! Try reset."; + } + } + function checkValvesConnected (valvesJson){ const cfgValvesTable = id('cfgValvesTable'); const cfgValvesControlTable = id('cfgValvesControlTable'); @@ -3169,8 +3712,10 @@

About this VDMot controller

} const States = ["---","idle","opens","closes","failed","unknown","no valve","full open","connected","blocked"]; let thisImg=null; - let statusWarning = 0; + valveWarnLevel = 0; + valvesJson.forEach(function(item, index){ + valvesTable.rows[index+1].cells[0].title=""; valvesTable.rows[index+1].cells[0].textContent = item.idx; switch (item.controlActive) { case 0: @@ -3178,7 +3723,7 @@

About this VDMot controller

case 4: case 6: { - valvesTable.rows[index+1].cells[0].style.backgroundColor="gray"; + valvesTable.rows[index+1].cells[0].style.backgroundColor=""; //gray"; valvesTable.rows[index+1].cells[0].style.color="white"; break; } @@ -3187,6 +3732,7 @@

About this VDMot controller

{ valvesTable.rows[index+1].cells[0].style.backgroundColor="yellow"; valvesTable.rows[index+1].cells[0].style.color="blue"; + valvesTable.rows[index+1].cells[0].title="Control disabled"; break; } case 3: { @@ -3197,6 +3743,7 @@

About this VDMot controller

case 7: { valvesTable.rows[index+1].cells[0].style.backgroundColor="red"; valvesTable.rows[index+1].cells[0].style.color="white"; + valvesTable.rows[index+1].cells[0].title="Valve failed"; break; } } @@ -3212,25 +3759,29 @@

About this VDMot controller

if (item.link>0) thisImg.src="blank.png"; valvesTable.rows[index+1].cells[3].textContent = item.meanCur; if ('calibration' in item) { - windowImageObjects[index].childNodes[0].nodeValue="calibration"; + windowImageObjects[index].childNodes[0].nodeValue="calibration "+States[item.state]; } else windowImageObjects[index].childNodes[0].nodeValue = States[item.state]; + valvesTable.rows[index+1].cells[4].title=""; + switch (item.state) { case 4 : case 9 : { valvesTable.rows[index+1].cells[4].style.backgroundColor="red"; valvesTable.rows[index+1].cells[4].style.color="white"; - statusWarning=2; + valvesTable.rows[index+1].cells[4].title="Error : all calibration repetitions failed"; + valveWarnLevel=2; break; } default : { if (item.cr>0) { valvesTable.rows[index+1].cells[4].style.backgroundColor="yellow"; valvesTable.rows[index+1].cells[4].style.color="blue"; - statusWarning=1; + valvesTable.rows[index+1].cells[4].title="Warning : "+item.cr.toString()+" calibration failed"; + valveWarnLevel=1; } else { - valvesTable.rows[index+1].cells[4].style.backgroundColor="gray"; + valvesTable.rows[index+1].cells[4].style.backgroundColor=""; //gray"; valvesTable.rows[index+1].cells[4].style.color="white"; } break; @@ -3244,15 +3795,17 @@

About this VDMot controller

let colIdx=11; if (valveTempsExists===true) { if (item.temp1) { - valvesTable.rows[index+1].cells[colIdx].textContent = item.temp1; - if (item.temp1==="failed") valvesTable.rows[index+1].cells[colIdx].style.backgroundColor="red"; else valvesTable.rows[index+1].cells[colIdx].style.backgroundColor="gray"; + id("tp1-"+(index+1)).textContent=item.temp1; + id("tNode1-"+(index+1)).textContent=item.tIdxName1; + if (item.temp1==="failed") valvesTable.rows[index+1].cells[colIdx].style.backgroundColor="red"; else valvesTable.rows[index+1].cells[colIdx].style.backgroundColor=""; //gray"; colIdx++; } else valvesTable.rows[index+1].cells[colIdx++].textContent = ""; if (item.temp2) { - valvesTable.rows[index+1].cells[colIdx].textContent = item.temp2; - if (item.temp2==="failed") valvesTable.rows[index+1].cells[colIdx].style.backgroundColor="red"; else valvesTable.rows[index+1].cells[colIdx].style.backgroundColor="gray"; + id("tp2-"+(index+1)).textContent=item.temp2; + id("tNode2-"+(index+1)).textContent=item.tIdxName2; + if (item.temp2==="failed") valvesTable.rows[index+1].cells[colIdx].style.backgroundColor="red"; else valvesTable.rows[index+1].cells[colIdx].style.backgroundColor=""; //gray"; colIdx++; } else valvesTable.rows[index+1].cells[colIdx++].textContent = ""; @@ -3264,7 +3817,7 @@

About this VDMot controller

if ('tValue' in item) { valvesTable.rows[index+1].cells[colIdx].textContent = item.tValue; if ('tValueFailed' in item) valvesTable.rows[index+1].cells[colIdx].style.backgroundColor="red"; - else valvesTable.rows[index+1].cells[colIdx].style.backgroundColor="gray"; + else valvesTable.rows[index+1].cells[colIdx].style.backgroundColor=""; //gray"; } else valvesTable.rows[index+1].cells[colIdx].textContent = ""; } @@ -3273,8 +3826,16 @@

About this VDMot controller

id('setValveP'+(index+1)).value=item.targetPos; } }); + showWarningIcon(); + } + + function showWarningIcon() + { + let statusWarning = 0; + if (valveWarnLevel>0) statusWarning=valveWarnLevel; + if (tempWarning || sensorWarning) statusWarning = 2; if (statusWarning == 0) id("statusImg").style.visibility="hidden"; else id("statusImg").style.visibility="visible"; - id("statusImg").src=tabImageSrc[statusWarning]; + id("statusImg").src=tabImageSrc[statusWarning]; } function fillCfgValvesTable (cfgValvesJson) { @@ -3333,7 +3894,9 @@

About this VDMot controller

id('cfgVCLink-'+row).value = cfgValvesControlJson.valves[row-1].link; id('cfgVCValue'+row).value = cfgValvesControlJson.valves[row-1].vSource; id('cfgVCTarget'+row).value = cfgValvesControlJson.valves[row-1].tSource; + id('cfgInittTarget'+row).value = cfgValvesControlJson.valves[row-1].inittTarget; id('cfgVCXp'+row).value = cfgValvesControlJson.valves[row-1].xp; + id('cfgVCDB'+row).value = cfgValvesControlJson.valves[row-1].deadband; id('cfgVCOffs'+row).value = cfgValvesControlJson.valves[row-1].offset; id('cfgVCTi'+row).value = cfgValvesControlJson.valves[row-1].ti; id('cfgVCTs'+row).value = cfgValvesControlJson.valves[row-1].ts; @@ -3348,7 +3911,8 @@

About this VDMot controller

function fillTempsTable (tempsJson) { const tempsTable = id('tempsTable'); - const tempStatusTabFrame = id("tempStatusTabFrame") + const tempStatusTabFrame = id("tempStatusTabFrame"); + tempWarning =false; if (tempsJson.length==0) { tempStatusTabFrame.style.display="none"; } else { @@ -3358,15 +3922,21 @@

About this VDMot controller

} tempsJson.forEach(function (item, index) { tempsTable.rows[index+1].cells[1].textContent = item.name; - if (item.temp==="failed") tempsTable.rows[index+1].cells[2].style.backgroundColor="red"; else tempsTable.rows[index+1].cells[2].style.backgroundColor="gray"; + if (item.temp==="failed") { + tempsTable.rows[index+1].cells[2].style.backgroundColor="red"; + tempWarning =true; + } else { + tempsTable.rows[index+1].cells[2].style.backgroundColor=""; //gray"; + } tempsTable.rows[index+1].cells[2].textContent = item.temp; }); } + showWarningIcon(); } function fillCfgTempsTable (cfgTempsJson) { const cfgTempsTable = id('cfgTSensorTable'); - for (let row = 1; rowAbout this VDMot controller } } - function findTID(TId){ + function findTSIDinData(TId){ let retVal=false; if (dataTempSensorsID) { dataTempSensorsID.forEach(function(item) { @@ -3389,10 +3959,10 @@

About this VDMot controller

function checkCfgTempsID () { var result=true; - for (let row = 1; rowAbout this VDMot controller return result; } - function findID (SensorID) { - for (let row = 1; row 0) { selectElement.remove(0); @@ -3435,7 +4005,7 @@

About this VDMot controller

selectElement.options[0] = option; let i=1; dataTempSensorsID.forEach(function (item, index) { - if (!findID(item.id)) { + if (!findTSIDinTable(item.id)) { option = new Option(item.id, item.id); selectElement.options[i] = option; i++; @@ -3445,6 +4015,139 @@

About this VDMot controller

checkCfgTempsID(); } + function fillVoltsTable (voltsJson) { + const voltsTable = id('voltsTable'); + const voltStatusTabFrame = id("voltStatusTabFrame"); + sensorWarning = false; + if (voltsJson.length==0) { + voltStatusTabFrame.style.display="none"; + } else { + voltStatusTabFrame.style.display="block"; + if (voltsJson.length!=voltsTable.rows.length-1) { + makeVoltsTable(voltsJson.length); + } + voltsJson.forEach(function (item, index) { + voltsTable.rows[index+1].cells[1].textContent = item.name; + voltsTable.rows[index+1].cells[2].textContent = item.value; + voltsTable.rows[index+1].cells[3].textContent = item.unit; + if (item.value==="failed") { + voltsTable.rows[index+1].style.backgroundColor = "red"; + sensorWarning = true; + } else { + voltsTable.rows[index+1].style.backgroundColor = ""; + } + }); + } + showWarningIcon(); + } + + function makeVoltsTable(NoOfSensors) { + const voltsTable = id('voltsTable'); + while (voltsTable.rows.length>0) { + voltsTable.deleteRow(0); + } + for (row=0; row12) voltsTable.style.height="430px"; + } + + function fillCfgVoltsTable (cfgVoltsJson) { + const cfgVoltsTable = id('cfgVSensorTable'); + for (let row = 1; row 0) { + selectElement.remove(0); + } + let option = new Option(' -Select-', 0); + selectElement.options[0] = option; + let i=1; + dataVoltSensorsID.forEach(function (item, index) { + if (!findVSIDinTable(item.id)) { + option = new Option(item.id, item.id); + selectElement.options[i] = option; + i++; + } + }); + } + checkCfgVoltsID(); + } + async function getSystemInfo() { const dataSystemInfo=await getJson("sysinfo"); if (dataSystemInfo) { @@ -3457,6 +4160,7 @@

About this VDMot controller

id("wt32-ChipStack").textContent = dataSystemInfo["wt32ChipStack"]+" bytes"; id("sysSTM32-Version").textContent = dataSystemInfo["stm32version"]; id("sysSTM32-ChipId").textContent = dataSystemInfo["stm32ChipId"]; + showHomeWarningIcon(dataSystemInfo["stm32VFalse"],dataSystemInfo["stm32MinReq"]); } } @@ -3486,28 +4190,44 @@

About this VDMot controller

id ("miscStatusHC").textContent=id("VCtrlConfigHeatControl").options[dataSystemDynInfo["heatControl"]].value; id("miscStatusLC").textContent=dataSystemDynInfo["lastCalib"]; - let newStmInit=dataSystemDynInfo["stmInit"]; - disable_enable_ValvesCfg((newStmInit!=2) || (!stmLoaded)); - if (newStmInit!=stmInit) { - stmInit=newStmInit; - if (stmInit===2) { - setTimeout(async function() { - await loadStmData(); - stmLoaded=true; - },5000); + if (stmTimeOut===false) { + let newStmInit=dataSystemDynInfo["stmInit"]; + disable_enable_ValvesCfg((newStmInit!=2) || (!stmLoaded)); + if (newStmInit!=stmInit) { + stmInit=newStmInit; + if (stmInit===2) { + setTimeout(async function() { + await loadStmData(); + setTimeout(async function() { + stmLoaded=true; + },3000); + },5000); + } + } + if (!stmLoaded) { + id("spinner-Config").classList.add("spinner"); + } else { + id("spinner-Config").classList.remove("spinner"); + } + if (!checkCfgTempsID()) { + await getTempSensorsID(); } } - if (!stmLoaded) { - id("spinner-Config").classList.add("spinner"); - } else { - id("spinner-Config").classList.remove("spinner"); - } - if (!checkCfgTempsID()) { - await getTempSensorsID(); + if (dataSystemDynInfo["stmFailed"]===1) { + showStmFailedWarningIcon(dataSystemDynInfo["stmFailed"]); } } } + function checkStmTimeOut() { + if (!stmLoaded) { + alert ("Stm not responding"); + stmLoaded=true; + stmTimeOut = true; + disable_enable_ValvesCfg(false); + id("spinner-Config").classList.remove("spinner"); + } + } async function getSystemConfig() { const dataSysCfg=await getJson("sysconfig"); @@ -3556,7 +4276,28 @@

About this VDMot controller

id('activeSetValves').style.display="block"; showAllTabs=true; showAllTabsNow(); - } else id("login-button").style.display = "block"; + } else { + id("login-div").style.display = "block"; + setLoginButton(); + } + } + } + + function setLoginButton() { + if (localStorage.rememberMe==="true") { + showLoginButton (localStorage.getItem("login")); + } else { + showLoginButton (sessionStorage.getItem("login")); + } + } + + function showLoginButton (state) { + if (state==="true") { + id("login-button").style.display = "none"; + id("logout-button").style.display = "block"; + } else { + id("login-button").style.display = "block"; + id("logout-button").style.display = "none"; } } @@ -3583,7 +4324,7 @@

About this VDMot controller

id("protcfg-timeOutDSActive").checked=dataProtConfig["mqttTODSActive"]; id("protcfg-timeOutValue").value=dataProtConfig["mqttTO"]; id("protcfg-timeOutPosition").value=dataProtConfig["mqttToPos"]; - + id("protcfg-numFormat").selectedIndex=dataProtConfig["numFormat"]; showBrokerIP(); showMinPublish(); } @@ -3647,9 +4388,10 @@

About this VDMot controller

async function getTempSensorsID() { const thisDataTempSensorsID=await getJson("tempsensorsid"); + id('tcfg-sensors').textContent = thisDataTempSensorsID.length.toString(); if (thisDataTempSensorsID) { dataTempSensorsID = thisDataTempSensorsID; - fillSensorIDSelect(); + fillTSensorIDSelect(); } } @@ -3657,6 +4399,26 @@

About this VDMot controller

const dataTempsStatus=await getJson("temps"); if (dataTempsStatus) fillTempsTable(dataTempsStatus); } + + async function getVoltsConfig() { + const dataVoltsConfig=await getJson("voltsconfig"); + if (dataVoltsConfig) fillCfgVoltsTable(dataVoltsConfig); + checkCfgVoltsID(); + } + + async function getVoltSensorsID() { + const thisDataVoltSensorsID=await getJson("voltsensorsid"); + id('vcfg-sensors').textContent = thisDataVoltSensorsID.length.toString(); + if (thisDataVoltSensorsID) { + dataVoltSensorsID = thisDataVoltSensorsID; + fillVSensorIDSelect(); + } + } + + async function getVoltsStatus() { + const dataVoltsStatus=await getJson("volts"); + if (dataVoltsStatus) fillVoltsTable(dataVoltsStatus); + } async function updateWT32() { reloadDoc("http:/update",100,false,false); diff --git a/software_esp32/web_pages_source/h/stmupdate.html b/software_esp32/web_pages_source/h/stmupdate.html index 055f35d..5524f74 100644 --- a/software_esp32/web_pages_source/h/stmupdate.html +++ b/software_esp32/web_pages_source/h/stmupdate.html @@ -346,10 +346,10 @@

STM32 Update

selectBox.remove(0); } filesList.forEach((item) => { - //if (item.fName.startsWith("stm/")) { + if (item.fName.indexOf(".bin")>=0) { let newOption = new Option(item.fName,item.fName); selectBox.add(newOption,undefined); - //} + } }); } , diff --git a/software_esp32/web_pages_source/h/warning_red.png b/software_esp32/web_pages_source/h/warning_red.png new file mode 100644 index 0000000..991ae2c Binary files /dev/null and b/software_esp32/web_pages_source/h/warning_red.png differ diff --git a/software_esp32/web_pages_source/h/warning_yellow.png b/software_esp32/web_pages_source/h/warning_yellow.png new file mode 100644 index 0000000..8a60fa7 Binary files /dev/null and b/software_esp32/web_pages_source/h/warning_yellow.png differ diff --git a/software_stm32/ChangeLog.md b/software_stm32/ChangeLog.md index d8cf9c2..dacf092 100644 --- a/software_stm32/ChangeLog.md +++ b/software_stm32/ChangeLog.md @@ -11,6 +11,18 @@ All notable changes to this project will be documented in this file. ### Removed +## [1.4.9] +### Fixed +- System : valves detection went sometimes wrong + +## [1.4.8] +### Changed +- System : set the valves to previous % state after calibration + +## [1.4.0] +### Changed +- System : add DS2438 for voltage sensors + ## [1.3.7] ### Fixed - Config : fix bug valve 12 set tIdx1 and tIdx2 was not saved diff --git a/software_stm32/include/DS2438.h b/software_stm32/include/DS2438.h new file mode 100644 index 0000000..cc5eb1e --- /dev/null +++ b/software_stm32/include/DS2438.h @@ -0,0 +1,140 @@ +#pragma once +// +// FILE: DS2438.h +// AUTHOR: Rob Tillaart +// VERSION: 0.1.1 +// DATE: 2023-07-28 +// PURPOSE: Arduino Library for DS2438 battery monitor +// URL: https://github.com/RobTillaart/DS2438 +// +// DS2438 +// +------------------+ +// | 1 GND | +// | 2 Vsense+ | +// | 3 Vsense- | +// | 4 VAD | +// | 5 VDD | +// | 6 NC | +// | 7 NC | +// | 8 DQ | +// +------------------+ +// +// | Pin | Description | Connect to | +// |:--------:|:------------------------------------|:-------------| +// | DQ | Data In/Out | processor | +// | VAD | General A/D input | | +// | VSENS+ | Battery current monitor input (+) | Battery | +// | VSENS- | Battery current monitor input (-) | Battery | +// | VDD | Power Supply (2.4V to 10.0V) | +5V | +// | GND | Ground | processor | +// | NC | No connect | - | + + +#include "Arduino.h" +#include "OneWire.h" + +#define DS2438_LIB_VERSION (F("0.1.1")) + +#define DS2438_INVALID -999 + + +//typedef uint8_t DeviceAddress[8]; + + +class DS2438 +{ +public: + DS2438(OneWire * ow); + + bool begin(uint8_t retries = 3); + bool isConnected(uint8_t retries = 3); + void setAddress (uint8_t* DeviceAddress); + bool checkScratchpad(); + + // TEMPERATURE + // unit is degrees Celsius + float readTemperature(); + float getTemperature(); + + + // VOLTAGE + // unit is Volts + float readVDD(); + float getVDD(); + float readVAD(); + float getVAD(); + + + // CURRENT + void setResistor(float resistor = 0.01); // in OHM + void enableCurrentMeasurement(); + void disableCurrentMeasurement(); + // unit is Ampere + float readCurrent(); + float getCurrent(); + void writeCurrentOffset(int value); + int readCurrentOffset(); + + + // ICA + THRESHOLD + // Integrated Current Accumulator. + float readRemaining(); + void writeThreshold(uint8_t value); + uint8_t readThreshold(); + + // only 4 values used. + // | value | THRESHOLD | + // |:-------:|:----------------:| + // | 0x00 | None (default) | + // | 0x40 | ±2 LSB | + // | 0x80 | ±4 LSB | + // | 0xC0 | ±8 LSB | + + + // TIME + void writeElapsedTimeMeter(uint32_t seconds); + uint32_t readElapsedTimeMeter(); + uint32_t readDisconnectTime(); + uint32_t readEndOfChargeTime(); + + + // EEPROM + void writeEEPROM(uint8_t address, uint8_t value); + uint8_t readEEPROM(uint8_t address); + + + // CCA / DCA + // Charging + Discharge Current Accumulator + // unit = mVHr + void enableCCA(); + void disableCCA(); + float readCCA(); + float readDCA(); + + + // CONFIG REGISTER + void setConfigBit(uint8_t bit); + void clearConfigBit(uint8_t bit); + uint8_t getConfigRegister(); + + +private: + + OneWire * _oneWire; + uint8_t _scratchPad[9]; + uint8_t _address[8]; + bool _addressFound; + + float _temperature; + float _vad; + float _vdd; + float _current; + float _inverseR; // 1/(4096*resistor) optimized. + + void readScratchPad(uint8_t page); + void writeScratchPad(uint8_t page); +}; + + +// -- END OF FILE -- + diff --git a/software_stm32/include/communication.h b/software_stm32/include/communication.h index 450a70f..993bda0 100644 --- a/software_stm32/include/communication.h +++ b/software_stm32/include/communication.h @@ -44,6 +44,8 @@ extern int16_t communication_loop (void); #define APP_PRE_SETTARGETPOS "stgtp" // doc #define APP_PRE_GETONEWIRECNT "gonec" // doc #define APP_PRE_GETONEWIREDATA "goned" // doc +#define APP_PRE_GETOWVOLTCNT "gowvc" // doc +#define APP_PRE_GETOWVOLTDATA "gowvd" // doc #define APP_PRE_SET1STSENSORINDEX "stsnx" // doc #define APP_PRE_SET2NDSENSORINDEX "stsny" // doc #define APP_PRE_SETALLVLVOPEN "staop" // doc diff --git a/software_stm32/include/compile_time.h b/software_stm32/include/compile_time.h index da07569..ede0915 100644 --- a/software_stm32/include/compile_time.h +++ b/software_stm32/include/compile_time.h @@ -54,7 +54,8 @@ (month == 8 ? 0 : 31 + \ (month == 9 ? 0 : 30 + \ (month == 10 ? 0 : 31 + \ - (month == 11 ? 0 : 30)))))))))))) \ + (month == 11 ? 0 : 30 + \ + (month == 12 ? 0 : 31))))))))))))) \ #define GET_LEAP_DAYS ((__TIME_YEARS__-1968)/4 - (__TIME_MONTH__ <=2 ? 1 : 0)) @@ -68,14 +69,19 @@ #define __TIME_MONTH__ GET_MONTH(__DATE__, 0) #define __TIME_YEARS__ CONV_STR2DEC_4(__DATE__, 7) + #define __TIME_UNIX__ ((__TIME_YEARS__-UNIX_START_YEAR)*SEC_PER_YEAR+ \ GET_LEAP_DAYS*SEC_PER_DAY+ \ + SEC_PER_DAY+ \ GET_MONTH2DAYS(__TIME_MONTH__)*SEC_PER_DAY+ \ __TIME_DAYS__*SEC_PER_DAY-SEC_PER_DAY+ \ __TIME_HOURS__*SEC_PER_HOUR+ \ __TIME_MINUTES__*SEC_PER_MIN+ \ __TIME_SECONDS__) - + + + #endif /* COMPILE_TIME_H_ */ + diff --git a/software_stm32/include/hardware.h b/software_stm32/include/hardware.h index 1561acd..de0edc4 100644 --- a/software_stm32/include/hardware.h +++ b/software_stm32/include/hardware.h @@ -136,10 +136,12 @@ // MUX pin definition for C1-sample #define MUX_ON() digitalWrite(CTRL_MUX, HIGH) #define MUX_OFF() digitalWrite(CTRL_MUX, LOW) + #define WAIT_MUX 2*50 #elif HARDWARE_REVISION_C2 // MUX pin definition for C2-sample #define MUX_ON() digitalWrite(CTRL_MUX, LOW) #define MUX_OFF() digitalWrite(CTRL_MUX, HIGH) + #define WAIT_MUX 2*50 #endif #define PSU_ON() digitalWrite(POWER_ENA, LOW); // enable PSU for valves @@ -149,10 +151,10 @@ // defines -#define ACTUATOR_COUNT 12 // how many valves are supported -#define ADDITIONAL_SENSOR_COUNT 10 // some additional sensors for x +#define ACTUATOR_COUNT 12 // how many valves are supported +#define ADDITIONAL_SENSOR_COUNT 10 // some additional sensors for x #define MAXONEWIRECNT (ACTUATOR_COUNT*2)+ADDITIONAL_SENSOR_COUNT // max count of usable 1-wire sensors - +#define MAXDS2438CNT 8 #define SYSTEM_NAME "VdMot Controller" #define EEPROM_MARK_ADD 0 // address 4 byte mark: 0x1F2F3F4F diff --git a/software_stm32/include/motor.h b/software_stm32/include/motor.h index 4c80815..c56a328 100644 --- a/software_stm32/include/motor.h +++ b/software_stm32/include/motor.h @@ -78,7 +78,7 @@ extern valvemotor myvalvemots[ACTUATOR_COUNT]; enum ASTATE { A_INIT, A_IDLE, A_CLOSE, A_OPEN1, A_OPEN2, A_LEARN1, -A_LEARN2, A_LEARN3, A_LEARN4, A_CLOSE1, A_CLOSE2, A_TEST }; +A_LEARN2, A_LEARN3, A_LEARN4, A_SET, A_SET1, A_SET2, A_CLOSE1, A_CLOSE2, A_TEST }; extern enum ASTATE valvestate; @@ -91,7 +91,7 @@ void valve_loop (); byte valve_setup (); enum ASTATE valve_getstate (); -int16_t appsetaction(char cmd, unsigned int valveindex, byte pos); +int16_t appsetaction(char cmd, unsigned int valveindex, byte pos, bool force=false); extern uint8_t currentbound_low_fac; // lower current limit factor for detection of end stop extern uint8_t currentbound_high_fac; // upper current limit factor for detection of end stop diff --git a/software_stm32/include/temperature.h b/software_stm32/include/owDevices.h similarity index 89% rename from software_stm32/include/temperature.h rename to software_stm32/include/owDevices.h index b314394..135739b 100644 --- a/software_stm32/include/temperature.h +++ b/software_stm32/include/owDevices.h @@ -28,14 +28,14 @@ Copyright (C) 2021 Lenti84 https://github.com/Lenti84/VdMot_Controller *END************************************************************************/ -#ifndef _TEMPERATURE_H - #define _TEMPERATURE_H +#pragma once #include #include extern void temperature_setup(); +extern void setDeviceAddress(); extern void temperature_loop(); extern void get_sensordata (unsigned int index, char *buffer, int buflen); extern void temp_command(int command); @@ -51,15 +51,21 @@ void printAddress(DeviceAddress deviceAddress); #define TEMP_CMD_UNLOCK 0x03 typedef struct { - int temperature; + int temperature; DeviceAddress address; } tempsensor; extern tempsensor tempsensors[]; -extern uint8_t numberOfDevices; extern DallasTemperature sensors; +typedef struct { + int vad; + DeviceAddress address; +} voltsensor; -#endif //_TEMPERATURE_H +extern voltsensor voltsensors[]; +extern uint8_t noOfDevices; +extern uint8_t noOfDS18Devices; +extern uint8_t noOfDS2438Devices; \ No newline at end of file diff --git a/software_stm32/platformio.ini b/software_stm32/platformio.ini index 616ece1..d99e21e 100644 --- a/software_stm32/platformio.ini +++ b/software_stm32/platformio.ini @@ -12,39 +12,39 @@ default_envs = STM32_release_C1, STM32_release_C2 [version] -firmware_version = '"1.3.7"' -firmware_version_dev = '"1.3.7_Dev"' +firmware_version = '"1.4.9"' +firmware_version_dev = '"1.4.9_Dev"' hardware_version_c1 = '"C1"' hardware_version_c2 = '"C2"' [env] platform = ststm32 framework = arduino -debug_tool = stlink -upload_protocol = stlink +debug_tool = jlink +upload_protocol = jlink build_flags = -O2 -Wl,-Map,output.map debug_build_flags = -O0 -g -ggdb lib_deps = neu-rah/ArduinoMenu library@^4.21.3 - ;mathertel/LiquidCrystal_PCF8574@^1.2.0 khoih-prog/STM32_TimerInterrupt@^1.2.0 bblanchon/ArduinoJson@^6.17.3 - ;seeed-studio/CAN_BUS_Shield @ ^1.20 vermut/ModbusSerial @ ^1.0.1 paulstoffregen/OneWire@^2.3.7 robtillaart/I2C_EEPROM@^1.5.2 + ;robtillaart/DS2438@^0.1.1 [env:STM32_development_C1] board = blackpill_f401cc +board_build.f_cpu = 100000000L build_flags = -DFIRMWARE_VERSION=${version.firmware_version_dev} -DHARDWARE_VERSION=${version.hardware_version_C1} -DHARDWARE_REVISION_C1 - ;-DmotDebug -DcommDebug -DappDebug - + ;-DtempDebug + ;-DmotDebug [env:STM32_development_C2] board = blackpill_f401cc @@ -52,9 +52,10 @@ build_flags = -DFIRMWARE_VERSION=${version.firmware_version_dev} -DHARDWARE_VERSION=${version.hardware_version_C2} -DHARDWARE_REVISION_C2 - ;-DmotDebug -DcommDebug -DappDebug + ;-DtempDebug + ;-DmotDebug [env:STM32_release_C1] board = blackpill_f401cc @@ -65,6 +66,7 @@ build_flags = -DHARDWARE_REVISION_C1 -DcommDebug -DappDebug + [env:STM32_release_C2] board = blackpill_f401cc @@ -84,11 +86,9 @@ build_flags = -DFIRMWARE_VERSION=${version.firmware_version_dev} -DHARDWARE_VERSION=${version.hardware_version_C2} -DHARDWARE_REVISION_C2 - ;-DmotDebug -DcommDebug -DappDebug - [env:STM32F411_development_C1] board = blackpill_f411ce board_build.mcu = stm32f411ceu6 @@ -97,7 +97,6 @@ build_flags = -DFIRMWARE_VERSION=${version.firmware_version_dev} -DHARDWARE_VERSION=${version.hardware_version_C1} -DHARDWARE_REVISION_C1 - ;-DmotDebug -DcommDebug -DappDebug diff --git a/software_stm32/src/DS2438.cpp b/software_stm32/src/DS2438.cpp new file mode 100644 index 0000000..5e7779b --- /dev/null +++ b/software_stm32/src/DS2438.cpp @@ -0,0 +1,462 @@ +// +// FILE: DS2438.cpp +// AUTHOR: Rob Tillaart +// VERSION: 0.1.1 +// DATE: 2023-07-28 +// PURPOSE: Arduino Library for DS2438 battery monitor +// URL: https://github.com/RobTillaart/DS2438 + + +#include "DS2438.h" +#include "hardware.h" + +// OneWire commands +#define DS2438_READ_TEMPERATURE 0x44 +#define DS2438_READ_VOLTAGE 0xB4 + +#define DS2438_RECALL_SCRATCH 0xB8 +#define DS2438_READ_SCRATCH 0xBE +#define DS2438_WRITE_SCRATCH 0x4E +#define DS2438_COPY_SCRATCH 0x48 + + +#define DS2438_CONVERSION_DELAY 10 + +// bits configuration register +#define DS2438_CFG_IAD 0 +#define DS2438_CFG_CA 1 +#define DS2438_CFG_EE 2 +#define DS2438_CFG_AD 3 + + +DS2438::DS2438(OneWire * ow) +{ + _oneWire = ow; + // no sensor found yet + _addressFound = false; + + // no data read yet + _temperature = DS2438_INVALID; + _vad = DS2438_INVALID; + _vdd = DS2438_INVALID; + _current = DS2438_INVALID; + _inverseR = DS2438_INVALID; +} + + +bool DS2438::begin(uint8_t retries) +{ + return isConnected(retries); +} + + +bool DS2438::isConnected(uint8_t retries) +{ + if (_oneWire == NULL) return false; + _addressFound = false; + for (uint8_t rtr = retries; (rtr > 0) && (_addressFound == false); rtr--) + { + _oneWire->reset(); + _oneWire->reset_search(); + _address[0] = 0x00; + _oneWire->search(_address); + _addressFound = (_address[0] != 0x00) && (_oneWire->crc8(_address, 7) == _address[7]); + } + return _addressFound; +} + +void DS2438::setAddress (uint8_t* DeviceAddress) +{ + memcpy(_address,DeviceAddress,8); + _addressFound=true; +} + +/////////////////////////////////////////////////////////// +// +// TEMPERATURE +// +float DS2438::readTemperature() +{ + // requestTemperature() + _oneWire->reset(); + _oneWire->select(_address); + _oneWire->write(DS2438_READ_TEMPERATURE, 0); + + // async version should return here + delay(DS2438_CONVERSION_DELAY); + readScratchPad(0); + + // sign MSB LSB step >> 3 + _temperature = (int(_scratchPad[2]) * 256 + _scratchPad[1]) * 0.03125 * 0.125; + + return _temperature; +} + + +float DS2438::getTemperature() +{ + return _temperature; +} + + +/////////////////////////////////////////////////////////// +// +// VOLTAGE +// +float DS2438::readVDD() +{ + setConfigBit(3); + + // requestVoltage + _oneWire->reset(); + _oneWire->select(_address); + _oneWire->write(DS2438_READ_VOLTAGE, 0); + delay(DS2438_CONVERSION_DELAY); + readScratchPad(0); + + // 10 mV resolution + _vdd = ((_scratchPad[4] & 0x03) * 256 + _scratchPad[3]) * 0.01; + + return _vdd; +} + + +float DS2438::getVDD() +{ + return _vdd; +} + +bool DS2438::checkScratchpad() +{ + uint8_t x=0; + for (uint8_t i = 0; i < 4; i++) + { + if (_scratchPad[i]==0xff) x++; + } + return(x!=4); +} + +float DS2438::readVAD() +{ + clearConfigBit(3); + + // requestVoltage + _oneWire->reset(); + _oneWire->select(_address); + _oneWire->write(DS2438_READ_VOLTAGE, 0); + delay(DS2438_CONVERSION_DELAY); + readScratchPad(0); +/* + COMM_DBG.print("scrp {"); + for (uint8_t i = 0; i < 9; i++) + { + COMM_DBG.print(" "); + if (_scratchPad[i] < 16) COMM_DBG.print("0"); + COMM_DBG.print(_scratchPad[i], HEX); + if (i<8) COMM_DBG.print(", "); + + } + COMM_DBG.print(" }"); +*/ + if (!checkScratchpad()) _vad=-10; + else + _vad = ((_scratchPad[4] & 0x03) * 256 + _scratchPad[3]) * 0.01; // 10 mV resolution + + return _vad; +} + + +float DS2438::getVAD() +{ + return _vad; +} + + + +/////////////////////////////////////////////////////////// +// +// CURRENT +// +void DS2438::setResistor(float resistor) +{ + _inverseR = 1.0 / (4096.0 * resistor); +} + + +void DS2438::enableCurrentMeasurement() +{ + // The DS2438 will only perform current A/D measurements + // if the IAD bit is set to “1” in the status/Configuration Register. + // The current A/D measures at a rate of 36.41 times per second, or once every 27.46 ms. + readScratchPad(0); + if ((_scratchPad[0] & 0x01) == 0x01) return; // already 1 + _scratchPad[0] |= 0x01; + writeScratchPad(0); +} + + +void DS2438::disableCurrentMeasurement() +{ + readScratchPad(0); + if ((_scratchPad[0] & 0x01) == 0x00) return; // already 0 + _scratchPad[0] &= ~0x01; + writeScratchPad(0); +} + + +float DS2438::readCurrent() +{ + readScratchPad(0); + int voltageSense = (int(_scratchPad[6]) * 256 + _scratchPad[5]); + _current = voltageSense * _inverseR; // I = V / (4096 * R) + return _current; +} + + +float DS2438::getCurrent() +{ + return _current; +} + + +void DS2438::writeCurrentOffset(int value) +{ + value *= 8; + readScratchPad(1); + _scratchPad[6] = value / 8; + _scratchPad[5] = value % 8; + writeScratchPad(1); +} + + +int DS2438::readCurrentOffset() +{ + readScratchPad(1); + int offset = (int(_scratchPad[6]) * 256 + _scratchPad[5]); + return offset / 8; +} + + +/////////////////////////////////////////////////////////// +// +// ICA + THRESHOLD +// +float DS2438::readRemaining() +{ + readScratchPad(1); + // factor 2 from optimization + float remaining = _scratchPad[4] * _inverseR * (2 * 0.4882); // mVhr + return remaining; +} + + +void DS2438::writeThreshold(uint8_t value) +{ + clearConfigBit(0); + readScratchPad(0); + _scratchPad[7] = value & 0xC0; // zero lower 6 bits. + writeScratchPad(0); + setConfigBit(0); +} + + +uint8_t DS2438::readThreshold() +{ + readScratchPad(0); + return _scratchPad[7]; +} + + +/////////////////////////////////////////////////////////// +// +// TIME +// +void DS2438::writeElapsedTimeMeter(uint32_t seconds) +{ + readScratchPad(1); + _scratchPad[0] = seconds & 0xFF; + seconds >>= 8; + _scratchPad[1] = seconds & 0xFF; + seconds >>= 8; + _scratchPad[2] = seconds & 0xFF; + seconds >>= 8; + _scratchPad[3] = seconds & 0xFF; + writeScratchPad(1); +} + + +uint32_t DS2438::readElapsedTimeMeter() +{ + readScratchPad(1); + uint32_t seconds = _scratchPad[3]; + seconds <<= 8; + seconds += _scratchPad[2]; + seconds <<= 8; + seconds += _scratchPad[1]; + seconds <<= 8; + seconds += _scratchPad[0]; + return seconds; +} + +uint32_t DS2438::readDisconnectTime() +{ + readScratchPad(2); + uint32_t seconds = _scratchPad[3]; + seconds <<= 8; + seconds += _scratchPad[2]; + seconds <<= 8; + seconds += _scratchPad[1]; + seconds <<= 8; + seconds += _scratchPad[0]; + return seconds; +} + + +uint32_t DS2438::readEndOfChargeTime() +{ + readScratchPad(2); + uint32_t seconds = _scratchPad[7]; + seconds <<= 8; + seconds += _scratchPad[6]; + seconds <<= 8; + seconds += _scratchPad[5]; + seconds <<= 8; + seconds += _scratchPad[4]; + return seconds; +} + + +/////////////////////////////////////////////////////////// +// +// EEPROM +// +void DS2438::writeEEPROM(uint8_t address, uint8_t value) +{ + if (address > 39) return; // 0..39 + uint8_t page = address / 8; + uint8_t index = address % 8; + + readScratchPad(page); + if (_scratchPad[index] == value) return; // no need to write. + _scratchPad[index] = value; + writeScratchPad(page); +} + + +uint8_t DS2438::readEEPROM(uint8_t address) +{ + if (address > 39) return 0; // 0..39 + uint8_t page = address / 8; + uint8_t index = address % 8; + + readScratchPad(page); + return _scratchPad[index]; +} + + +/////////////////////////////////////////////////////////// +// +// Charging + Discharging Current Accumulator +// +void DS2438::enableCCA() +{ + readScratchPad(0); + if ((_scratchPad[0] & 0x02) == 0x02) return; // already 1 + _scratchPad[0] |= 0x02; + writeScratchPad(0); +} + + +void DS2438::disableCCA() +{ + readScratchPad(0); + if ((_scratchPad[0] & 0x02) != 0x02) return; // already 0 + _scratchPad[0] &= ~0x02; + writeScratchPad(0); +} + + +float DS2438::readCCA() +{ + readScratchPad(7); + uint16_t raw = (_scratchPad[5] * 256 + _scratchPad[4]); + return raw * 15.625; +} + + +float DS2438::readDCA() +{ + readScratchPad(7); + uint16_t raw = (_scratchPad[7] * 256 + _scratchPad[6]); + return raw * 15.625; +} + + +/////////////////////////////////////////////////////////// +// +// CONFIG REGISTER +// +void DS2438::setConfigBit(uint8_t bit) +{ + uint8_t mask = (0x01 << bit); + readScratchPad(0); + if ((_scratchPad[0] & mask) == mask) return; // already 1 + _scratchPad[0] |= mask; + writeScratchPad(0); +} + + +void DS2438::clearConfigBit(uint8_t bit) +{ + uint8_t mask = (0x01 << bit); + readScratchPad(0); + if ((_scratchPad[0] & mask) == 0x00) return; // already 0 + _scratchPad[0] &= ~mask; + writeScratchPad(0); +} + + +uint8_t DS2438::getConfigRegister() +{ + readScratchPad(0); + return _scratchPad[0]; +} + + +/////////////////////////////////////////////////////////// +// +// PRIVATE +// +void DS2438::readScratchPad(uint8_t page) +{ + if (page > 7) return; + _oneWire->reset(); + _oneWire->select(_address); + _oneWire->write(DS2438_RECALL_SCRATCH, 0); + _oneWire->write(page, 0); + _oneWire->reset(); + _oneWire->select(_address); + _oneWire->write(DS2438_READ_SCRATCH, 0); + _oneWire->write(page, 0); + for (uint8_t i = 0; i < 8; i++) _scratchPad[i] = _oneWire->read(); + // skip crc for now. +} + + +void DS2438::writeScratchPad(uint8_t page) +{ + if (page > 7) return; + _oneWire->reset(); + _oneWire->select(_address); + _oneWire->write(DS2438_WRITE_SCRATCH, 0); + _oneWire->write(page, 0); + for (uint8_t i = 0; i < 8; i++) _oneWire->write(_scratchPad[i], 0); + _oneWire->reset(); + _oneWire->select(_address); + _oneWire->write(DS2438_COPY_SCRATCH, 0); + _oneWire->write(page, 0); +} + + +// -- END OF FILE -- + diff --git a/software_stm32/src/app.cpp b/software_stm32/src/app.cpp index b00478f..35e2bca 100644 --- a/software_stm32/src/app.cpp +++ b/software_stm32/src/app.cpp @@ -32,7 +32,7 @@ #include "app.h" #include "hardware.h" #include "motor.h" -#include "temperature.h" +#include "owDevices.h" #include "eeprom.h" @@ -124,7 +124,9 @@ int16_t app_loop (void) { { #ifdef appDebug COMM_DBG.print("App: target pos changed for valve "); - COMM_DBG.println(lastvalve, 10); + COMM_DBG.print(lastvalve, 10); + COMM_DBG.print(" target = "); + COMM_DBG.println(myvalvemots[lastvalve].target_position, 10); #endif firstchange = 1; @@ -204,12 +206,14 @@ byte app_10s_loop () { for (x=0; x< ACTUATOR_COUNT; x++) { // timeout for calibration if (myvalvemots[x].connected) { - if (myvalvemots[x].calibTime>0) myvalvemots[x].calibTime--; - if (myvalvemots[x].calibTime==0) { - myvalvemots[x].calibration=false; - myvalvemots[x].calibState=calibIdle; + if (myvalvemots[x].calibState==calibInProgress) { + if (myvalvemots[x].calibTime>0) + myvalvemots[x].calibTime--; + else { + myvalvemots[x].calibration=false; + myvalvemots[x].calibState=calibIdle; + } } - if((myvalves[x].learn_movements == 0) && (myvalvemots[x].calibState == calibIdle)) { myvalvemots[x].calibration=true; myvalvemots[x].calibTime=10; @@ -285,7 +289,7 @@ int16_t app_set_valvelearning(uint16_t valve) { } else if (valve == 255) { // update all valves - for(unsigned int xx=0;xx @@ -244,7 +244,11 @@ int16_t communication_loop (void) { // **************************************************************************************** // clear sendbuffer, otherwise there is something from older commands memset (sendbuffer,0x0,sizeof(sendbuffer)); - + /* #ifdef commDebug + COMM_DBG.print("cmd "); + COMM_DBG.println(cmd); + #endif + */ // set target position // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ if(memcmp(APP_PRE_SETTARGETPOS,&cmd[0],5) == 0) { @@ -261,7 +265,7 @@ int16_t communication_loop (void) { #endif if (y >= 0 && y <= 100 && x < ACTUATOR_COUNT) { - if (!myvalvemots[x].calibration) + if (!myvalvemots[x].calibration) // wdu ??? myvalvemots[x].target_position = (byte) y; COMM_SER.println(APP_PRE_SETTARGETPOS); } @@ -407,31 +411,30 @@ int16_t communication_loop (void) { COMM_SER.println(" "); } - // get onewire sensor count + // get temp onewire sensor count // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ else if(memcmp(APP_PRE_GETONEWIRECNT,&cmd[0],5) == 0) { if(argcnt == 0) { COMM_SER.print(APP_PRE_GETONEWIRECNT); COMM_SER.print(" "); - COMM_SER.print(sensors.getDeviceCount(), DEC); + COMM_SER.print(noOfDS18Devices, DEC); COMM_SER.println(" "); } if(argcnt == 1) { x = atoi(argptr[0]); if (x==255) { // get all onewire detected sensor - uint8_t nDevices = sensors.getDeviceCount(); COMM_SER.print(APP_PRE_GETONEWIRECNT); COMM_SER.print(" "); - COMM_SER.print(nDevices, DEC); - if (nDevices>0) COMM_SER.print(" "); - for (uint8_t i=0;i0) COMM_SER.print(" "); + for (uint8_t i=0;i0) COMM_SER.print(" "); + for (uint8_t i=0;i= 0 && x < ACTUATOR_COUNT && y < MAXONEWIRECNT) { - numberOfDevices = sensors.getDeviceCount(); - if (numberOfDevices > 0) + if (noOfDS18Devices > 0) { // write sensor address code to eeprom layout mirror sensors.getAddress(currAddress, y); @@ -690,8 +753,7 @@ int16_t communication_loop (void) { #endif if (x >= 0 && x < ACTUATOR_COUNT && y < MAXONEWIRECNT) { - numberOfDevices = sensors.getDeviceCount(); - if (numberOfDevices > 0) + if (noOfDS18Devices > 0) { // write sensor address code to eeprom layout mirror sensors.getAddress(currAddress, y); diff --git a/software_stm32/src/main.cpp b/software_stm32/src/main.cpp index 08d0aa4..be3ef57 100644 --- a/software_stm32/src/main.cpp +++ b/software_stm32/src/main.cpp @@ -36,7 +36,7 @@ #include "app.h" #include "terminal.h" #include "communication.h" -#include "temperature.h" +#include "owDevices.h" #include "eeprom.h" #include "otasupport.h" #include "STM32TimerInterrupt.h" diff --git a/software_stm32/src/motor.cpp b/software_stm32/src/motor.cpp index 01f9d8b..0c62502 100644 --- a/software_stm32/src/motor.cpp +++ b/software_stm32/src/motor.cpp @@ -36,7 +36,7 @@ #include "terminal.h" #include "app.h" #include "eeprom.h" -#include "temperature.h" +#include "owDevices.h" @@ -51,8 +51,8 @@ #define TIMEOUT_NORMALCURRENT 120*100 // 120 seconds timeout with 10 ms cycle time #define TIMEOUT_OVERCURRENT 1 // cycles of "byte motorcycle (byte valvenr, byte cmd)" -#define TIMEOUT_UNDERCURRENT 50 // cycles of "byte motorcycle (byte valvenr, byte cmd)" -#define TIMEOUT_UNDERCURRENTTEST 20 // cycles of "byte motorcycle (byte valvenr, byte cmd)" +#define TIMEOUT_UNDERCURRENT 4*50 // cycles of "byte motorcycle (byte valvenr, byte cmd)" +#define TIMEOUT_UNDERCURRENTTEST 4*20 // cycles of "byte motorcycle (byte valvenr, byte cmd)" #define THRESHOLD_UNDERCURRENT 20 // threshold for detecting undercurrent in 1/10 mA @@ -78,6 +78,9 @@ #define M_RES_TEST 10 #define M_RES_ERROR 11 +#define WAIT_TIMER100 2*100 +#define WAIT_TIMER50 2*50 +#define WAIT_TIMER20 2*20 void set_motor (int smvalvenr, int dir); void ena_motor (int emvalvenr, int state); @@ -136,6 +139,9 @@ uint8_t calibRetries = 0; //volatile uint32_t revcounter; +static int undercurrcnt = 0; +static int overcurrcnt = 0; + // call from setup function in main byte valve_setup () { @@ -201,16 +207,9 @@ byte valve_setup () { return 0; } - void valve_loop () { - byte temp = 0; - //byte stateresult; - - //static int cyclecnt = 0; - //static int debouncecnt = 0; - byte result = 0; - + static byte pos_change = 0; static unsigned int closing_count = 0; @@ -258,7 +257,7 @@ void valve_loop () { #endif valvestate = A_OPEN1; PSU_ON(); - waittimer = 50; + waittimer = WAIT_TIMER50; psuofftimer = 0; pos_change = poschangecmd; } @@ -269,7 +268,7 @@ void valve_loop () { #endif valvestate = A_CLOSE1; PSU_ON(); - waittimer = 50; + waittimer = WAIT_TIMER50; psuofftimer = 0; pos_change = poschangecmd; } @@ -280,7 +279,7 @@ void valve_loop () { #endif valvestate = A_OPEN1; PSU_ON(); - waittimer = 50; + waittimer = WAIT_TIMER50; psuofftimer = 0; pos_change = 255; } @@ -291,7 +290,7 @@ void valve_loop () { #endif valvestate = A_CLOSE1; PSU_ON(); - waittimer = 50; + waittimer = WAIT_TIMER50; psuofftimer = 0; pos_change = 255; } @@ -303,7 +302,7 @@ void valve_loop () { valvestate = A_LEARN1; PSU_ON(); psuofftimer = 0; - waittimer = 50; + waittimer = WAIT_TIMER50; calibRetries = 0; myvalvemots[valveindex].calibRetries=0; } @@ -314,7 +313,7 @@ void valve_loop () { #endif valvestate = A_TEST; PSU_ON(); - waittimer = 100; + waittimer = WAIT_TIMER100; psuofftimer = 0; } else { @@ -347,20 +346,7 @@ void valve_loop () { else { if (locktimer<50) locktimer++; else temp_command(TEMP_CMD_UNLOCK); - } - - // // measure idle current for offset (drift) compensation - // if (idlecurrenttimer < 10) - // { - // idlecurrenttimer++; - // } - // else - // { - // idlecurrenttimer = 0; - // idlecurrent = (unsigned int) ((uint32_t) (analogRead(ANINREFHALF) * 200 + (uint32_t) idlecurrent_old * 800) / 1000); - // idlecurrent_old = idlecurrent; - // } - + } command = '\0'; // clear command for next loop call, prevents reevaluating break; @@ -404,7 +390,7 @@ void valve_loop () { } else if (temp == M_RES_NOCURRENT) { #ifdef motDebug - COMM_DBG.println("A: undercurrent"); + COMM_DBG.println("A: (A_OPEN2) undercurrent"); #endif myvalvemots[valveindex].status = VLV_STATE_OPENCIR; myvalvemots[valveindex].actual_position = myvalvemots[valveindex].target_position; @@ -471,7 +457,7 @@ void valve_loop () { } else if (temp == M_RES_NOCURRENT) { #ifdef motDebug - COMM_DBG.println("A: undercurrent"); + COMM_DBG.println("A: (A_CLOSE2) undercurrent"); #endif myvalvemots[valveindex].status = VLV_STATE_OPENCIR; myvalvemots[valveindex].actual_position = myvalvemots[valveindex].target_position; @@ -504,10 +490,12 @@ void valve_loop () { COMM_DBG.println("A: try learning valve"); #endif // first: closing completely + undercurrcnt = 0; + overcurrcnt = 0; motorcycle (valveindex, CMD_M_CLOSE); myvalvemots[valveindex].status = VLV_STATE_CLOSING; valvestate = A_LEARN2; - waittimer = 20; + waittimer = WAIT_TIMER20; m_meancurrent = myvalvemots[valveindex].meancurrent; isr_target = 65535; // max value to disable stopping break; @@ -527,11 +515,11 @@ void valve_loop () { isr_target = 65535; // max value to disable stopping valvestate = A_LEARN3; m_meancurrent = myvalvemots[valveindex].meancurrent; - waittimer = 20; + waittimer = WAIT_TIMER20; } else if (temp == M_RES_NOCURRENT) { #ifdef motDebug - COMM_DBG.println("A: undercurrent"); + COMM_DBG.println("A: (A_LEARN2) undercurrent"); #endif myvalvemots[valveindex].status = VLV_STATE_OPENCIR; myvalvemots[valveindex].target_position = myvalvemots[valveindex].actual_position; @@ -572,11 +560,11 @@ void valve_loop () { isr_target = 65535; // max value to disable stopping m_meancurrent = 20; valvestate = A_LEARN4; - waittimer = 20; + waittimer = WAIT_TIMER20; } else if (temp == M_RES_NOCURRENT) { #ifdef motDebug - COMM_DBG.println("A: undercurrent"); + COMM_DBG.println("A: (A_LEARN3) undercurrent"); #endif myvalvemots[valveindex].status = VLV_STATE_OPENCIR; myvalvemots[valveindex].target_position = myvalvemots[valveindex].actual_position; @@ -638,22 +626,27 @@ void valve_loop () { valvestate = A_LEARN1; PSU_ON(); psuofftimer = 0; - waittimer = 50; + waittimer = WAIT_TIMER50; COMM_DBG.print("A: calibration retry = "); COMM_DBG.println(calibRetries); break; } } else myvalvemots[valveindex].status = VLV_STATE_IDLE; - COMM_DBG.println(myvalvemots[valveindex].status); + + #ifdef motDebug + COMM_DBG.println(myvalvemots[valveindex].status); + #endif + /* myvalvemots[valveindex].calibration = false; myvalvemots[valveindex].calibState=calibIdle; valveindex = 255; - valvestate = A_IDLE; + valvestate = A_IDLE;*/ + valvestate = A_SET; } else if (temp == M_RES_NOCURRENT) { #ifdef motDebug - COMM_DBG.println("A: undercurrent"); + COMM_DBG.println("A: (A_LEARN4) undercurrent"); #endif myvalvemots[valveindex].status = VLV_STATE_OPENCIR; myvalvemots[valveindex].target_position = myvalvemots[valveindex].actual_position; @@ -673,13 +666,109 @@ void valve_loop () { } break; + case A_SET: // set to previous % + valveindex = valvenr; + #ifdef motDebug + COMM_DBG.print("A_SET: set position "); COMM_DBG.println(myvalvemots[valveindex].target_position); + #endif + myvalvemots[valveindex].actual_position=0; + if (myvalvemots[valveindex].target_position==0) { + myvalvemots[valveindex].calibration = false; + myvalvemots[valveindex].calibState=calibIdle; + valveindex = 255; + valvestate = A_IDLE; + } else { + valvestate = A_SET1; + PSU_ON(); + waittimer = WAIT_TIMER50; + psuofftimer = 0; + pos_change = myvalvemots[valveindex].target_position; + } + break; + + case A_SET1: // start valve opening + if (!waittimer) { + if(pos_change==255) isr_target = 65535; + else isr_target = myvalvemots[valveindex].scaler * pos_change; + m_meancurrent = myvalvemots[valveindex].meancurrent; + + if (motorcycle (valveindex, CMD_M_OPEN) == M_RES_OPENS) { + #ifdef motDebug + COMM_DBG.print("A_SET1: begin opening by "); + COMM_DBG.println(pos_change); + #endif + myvalvemots[valveindex].status = VLV_STATE_OPENING; + valvestate = A_SET2; + isr_counter=0; + } + else { + #ifdef motDebug + COMM_DBG.print("A_SET1: cant open valve"); + #endif + valvestate = A_IDLE; + } + } + break; + + case A_SET2: // wait for finish opening + temp = motorcycle (valveindex, 0); + if (temp == M_RES_STOP) { + #ifdef motDebug + COMM_DBG.println("A_SET2: opened valve"); + #endif + myvalvemots[valveindex].actual_position += pos_change; + #ifdef motDebug + COMM_DBG.print("A_SET2: new position "); COMM_DBG.println(myvalvemots[valveindex].actual_position); + #endif + myvalvemots[valveindex].status = VLV_STATE_IDLE; + myvalvemots[valveindex].calibration = false; + myvalvemots[valveindex].calibState=calibIdle; + valveindex = 255; + valvestate = A_IDLE; + } + else if (temp == M_RES_NOCURRENT) { + #ifdef motDebug + COMM_DBG.println("A_SET2: (A_OPEN2) undercurrent"); + #endif + myvalvemots[valveindex].status = VLV_STATE_OPENCIR; + myvalvemots[valveindex].actual_position = myvalvemots[valveindex].target_position; + myvalvemots[valveindex].calibration = false; + myvalvemots[valveindex].calibState=calibIdle; + valvestate = A_IDLE; + isr_counter=0; + } + else if (temp == M_RES_ENDSTOP) { + #ifdef motDebug + COMM_DBG.println("A_SET2: opened valve to end stop"); + #endif + valvestate = A_IDLE; + myvalvemots[valveindex].status = VLV_STATE_IDLE; + myvalvemots[valveindex].actual_position = 100; + myvalvemots[valveindex].calibration = false; + myvalvemots[valveindex].calibState=calibIdle; + #ifdef motDebug + COMM_DBG.print("A_SET2: new position "); COMM_DBG.println(myvalvemots[valveindex].actual_position); + #endif + } + else if (temp == M_RES_ERROR) { + #ifdef motDebug + COMM_DBG.println("A_SET2: opening valve failed, timeout"); + #endif + valvestate = A_IDLE; + myvalvemots[valveindex].status = VLV_STATE_FAILED; + myvalvemots[valveindex].actual_position = myvalvemots[valveindex].target_position; + myvalvemots[valveindex].calibration = false; + myvalvemots[valveindex].calibState=calibIdle; + } + break; + case A_TEST: // test if a valve is connected if (!waittimer) { temp = motorcycle (valveindex, CMD_M_TEST); if (temp != M_RES_TEST) { #ifdef motDebug - COMM_DBG.print("A: test valve "); + COMM_DBG.print("A: (A_TEST) test valve "); COMM_DBG.print(valveindex, DEC); #endif if(temp == M_RES_NOCURRENT) { @@ -705,15 +794,9 @@ void valve_loop () { break; } if (valveindex<12) myvalvemots[valveindex].connected= (myvalvemots[valveindex].status != VLV_STATE_OPENCIR); - result = 0; - - //return result; } - - - byte motorcycle (int mvalvenr, byte cmd) { #define M_INIT 0 #define M_IDLE 1 @@ -732,14 +815,9 @@ byte motorcycle (int mvalvenr, byte cmd) { static int cyclecnt = 0; static int debouncecnt = 0; static int testcnt = 0; - static int undercurrcnt = 0; - static int overcurrcnt = 0; + static int normalcurrcnt = 0; - // static int currentbound_low; // lower current limit for detection of end stop - // static int currentbound_high; // upper current limit for detection of end stop - - static unsigned int meancurrent_cnt = 0; // counts meancurrent values static long meancurrent_mem = 0; // memory for meancurrent values byte result = 0; @@ -803,9 +881,8 @@ byte motorcycle (int mvalvenr, byte cmd) { COMM_DBG.println("M: state open"); #endif set_motor(mvalvenr, DIR_OPEN); - //digitalWrite(POWER_ENA, 0); // enable PSU for vlaves - //ena_motor(valvenr, 1); - + undercurrcnt = 0; + overcurrcnt = 0; motorstate = M_TURNON; isr_valvenr = mvalvenr; isr_counter=0; @@ -821,9 +898,8 @@ byte motorcycle (int mvalvenr, byte cmd) { COMM_DBG.println("M: state close"); #endif set_motor(mvalvenr, DIR_CLOSE); - //digitalWrite(POWER_ENA, 0); // enable PSU for vlaves - //ena_motor(mvalvenr, 1); - + undercurrcnt = 0; + overcurrcnt = 0; motorstate = M_TURNON; isr_valvenr = mvalvenr; isr_counter=0; @@ -860,7 +936,6 @@ byte motorcycle (int mvalvenr, byte cmd) { break; case M_TURNING: - //isr_turning = 1; result = M_RES_TURNING; if (cmd == CMD_M_STOP) { @@ -871,105 +946,45 @@ byte motorcycle (int mvalvenr, byte cmd) { if(debouncecnt<255) debouncecnt++; if(testcnt<255) testcnt++; - if (debouncecnt > 3) { - // if(1) { - - // // calc current in 1/10 mA - // analog_current = (int) ((( (int32_t) analogRead(ANINCURRENT) - (int32_t) analogRead(ANINREFHALF)) * ANINCURRENTGAIN) / 100); - // // COMM_DBG.print(analog_current,DEC); - // // COMM_DBG.print(" "); - // // COMM_DBG.print(idlecurrent,DEC); - // // COMM_DBG.println(" analog_current"); - - // // filter - // analog_current = (int) (((int32_t) analog_current_old * 800 + (int32_t) analog_current * 200) / 1000); - // analog_current_old = analog_current; - - // current_mA = analog_current; - - // if (testcnt > 40) { - // testcnt = 0; - // COMM_DBG.print("A0 current "); - // COMM_DBG.print(analog_current,DEC); - // COMM_DBG.print(" idle "); - // COMM_DBG.print(idlecurrent,DEC); - // COMM_DBG.println(" digits"); - // } - - // // under current detection - // if(current_mA < THRESHOLD_UNDERCURRENT && current_mA > -THRESHOLD_UNDERCURRENT) - // { - // undercurrcnt++; - // if (undercurrcnt > TIMEOUT_UNDERCURRENT) - // { - // undercurrcnt = 0; - // motorstate = M_UNDERCURR; - // } - // } - - // // overcurrent detection - // if(current_mA > currentbound_high || current_mA < currentbound_low || - // current_mA > 1000 || current_mA < -1000) // safety mechanism, limit at +- 100 mA - // { - // overcurrcnt++; - // if (overcurrcnt > TIMEOUT_OVERCURRENT) - // { - // //motorstate = M_STOP; - // detachInterrupt(digitalPinToInterrupt(REVINPIN)); - // overcurrcnt = 0; - // motorstate = M_IDLE; - // result = M_RES_ENDSTOP; - // ena_motor(0, 0); - // isr_turning = 0; - // //MUX_OFF(); - - // if (meancurrent_cnt > 0) m_meancurrent = abs(meancurrent_mem) / meancurrent_cnt / 10; - // else m_meancurrent = 0; - // #ifdef motDebug - // COMM_DBG.print("M: Current: "); COMM_DBG.print(current_mA/10,10); COMM_DBG.println(" mA"); - // //#warning fixme - // //COMM_DBG.print("M: Current: "); COMM_DBG.print(current_mA,10); COMM_DBG.println(" 1/10 mA"); - // COMM_DBG.print("M: Cnt: "); COMM_DBG.println(isr_counter, DEC); - // COMM_DBG.println("M: Autostop, reached end stop"); - // #endif - // } - // } - - + if (debouncecnt > 3) { // overcurrent detection if(isr_overcurrentevent) - { - // overcurrcnt++; - // if (overcurrcnt > TIMEOUT_OVERCURRENT) - // { - //motorstate = M_STOP; + { detachInterrupt(digitalPinToInterrupt(REVINPIN)); - // overcurrcnt = 0; motorstate = M_IDLE; result = M_RES_ENDSTOP; ena_motor(0, 0); isr_turning = 0; isr_overcurrentevent = 0; - //MUX_OFF(); if (meancurrent_cnt > 0) m_meancurrent = abs(meancurrent_mem) / meancurrent_cnt / 10; else m_meancurrent = 0; #ifdef motDebug COMM_DBG.print("M: Current: "); COMM_DBG.print(current_mA/10,10); COMM_DBG.println(" mA"); - //#warning fixme - //COMM_DBG.print("M: Current: "); COMM_DBG.print(current_mA,10); COMM_DBG.println(" 1/10 mA"); COMM_DBG.print("M: Cnt: "); COMM_DBG.println(isr_counter, DEC); COMM_DBG.println("M: Autostop, reached end stop"); #endif - // } } // under current detection else if(current_mA < THRESHOLD_UNDERCURRENT && current_mA > -THRESHOLD_UNDERCURRENT) - { + { undercurrcnt++; + #ifdef motDebug + COMM_DBG.print("M: (M_TURNING) under current detection: undercurrcnt="); + COMM_DBG.print(undercurrcnt); + COMM_DBG.print(" current="); + COMM_DBG.print(current_mA/10,10); COMM_DBG.println(" mA"); + #endif + if (undercurrcnt > TIMEOUT_UNDERCURRENT) { + #ifdef motDebug + COMM_DBG.print("M: (M_TURNING) under current detected: undercurrcnt="); + COMM_DBG.print(undercurrcnt); + COMM_DBG.print(" current="); + COMM_DBG.print(current_mA/10,10); COMM_DBG.println(" mA. set motorstate to M_UNDERCURR"); + #endif undercurrcnt = 0; motorstate = M_UNDERCURR; } @@ -977,13 +992,11 @@ byte motorcycle (int mvalvenr, byte cmd) { // normal turning else { - //COMM_DBG.print("M: Current: "); COMM_DBG.print(current_mA/10, 10); COMM_DBG.println(" mA"); normalcurrcnt++; if(normalcurrcnt > TIMEOUT_NORMALCURRENT) { #ifdef motDebug COMM_DBG.println("M: normal turning timeout"); #endif - detachInterrupt(digitalPinToInterrupt(REVINPIN)); normalcurrcnt = 0; motorstate = M_IDLE; @@ -992,29 +1005,20 @@ byte motorcycle (int mvalvenr, byte cmd) { isr_turning = 0; } } - //cyclecnt=0; - - - - // testmode + // output position and current - if(testmode) { - #ifdef motDebug + #ifdef motDebugPosAndCurrent COMM_DBG.print("tm;"); COMM_DBG.print(current_mA,10); COMM_DBG.print(";"); COMM_DBG.println(isr_counter); #endif - - } } if (debouncecnt > 50 && cyclecnt > 50) { cyclecnt=0; #ifdef motDebug COMM_DBG.print("M: Current: "); COMM_DBG.print(current_mA/10, 10); COMM_DBG.println(" mA"); - //#warning fixme - //COMM_DBG.print("M: Current: "); COMM_DBG.print(current_mA, 10); COMM_DBG.println(" 1/10 mA"); #endif meancurrent_mem += current_mA; meancurrent_cnt++; @@ -1022,14 +1026,11 @@ byte motorcycle (int mvalvenr, byte cmd) { break; case M_STOP: - //detachInterrupt(digitalPinToInterrupt(REVINPIN)); #ifdef motDebug COMM_DBG.println("M: state stop"); #endif ena_motor(0, 0); - //digitalWrite(POWER_ENA, 1); // disable PSU for vlaves isr_turning = 0; - //MUX_OFF(); #ifdef motDebug COMM_DBG.print("M: Cnt: "); COMM_DBG.println(isr_counter, DEC); @@ -1050,13 +1051,10 @@ byte motorcycle (int mvalvenr, byte cmd) { case M_UNDERCURR: detachInterrupt(digitalPinToInterrupt(REVINPIN)); #ifdef motDebug - COMM_DBG.println("M: state undercurrent detected, stopped"); + COMM_DBG.println("M: state undercurrent detected (M_UNDERCURR), stopped"); #endif ena_motor(0, 0); - //digitalWrite(POWER_ENA, 1); // disable PSU for vlaves - isr_turning = 0; - //MUX_OFF(); - + isr_turning = 0; motorstate = M_IDLE; result = M_RES_NOCURRENT; @@ -1088,14 +1086,7 @@ byte motorcycle (int mvalvenr, byte cmd) { COMM_DBG.print("M: testing"); #endif result = M_RES_TEST; - - // // calc current in 1/10 mA - // analog_current = (int) ((( (int32_t) analogRead(ANINCURRENT) - (int32_t) analogRead(ANINREFHALF)) * ANINCURRENTGAIN) / 100); - - // analog_current = (int) (((int32_t) analog_current_old * 800 + (int32_t) analog_current * 200) / 1000); - // analog_current_old = analog_current; - - // current_mA = analog_current; + // calc current in 1/10 mA #ifdef motDebug COMM_DBG.print(" - current: "); COMM_DBG.println (analog_current,DEC); @@ -1111,7 +1102,7 @@ byte motorcycle (int mvalvenr, byte cmd) { if (undercurrcnt > TIMEOUT_UNDERCURRENTTEST) { #ifdef motDebug - COMM_DBG.println("test: undercurrent!"); + COMM_DBG.println("test: (M_TEST) undercurrent!"); #endif undercurrcnt = 0; motorstate = M_IDLE; @@ -1121,24 +1112,15 @@ byte motorcycle (int mvalvenr, byte cmd) { } // overcurrent detection - // overcurrent detection else if(isr_overcurrentevent) - //else if(current_mA > currentbound_high || current_mA < currentbound_low || - // current_mA > 1000 || current_mA < -1000) // safety mechanism, limit at +- 100 mA { isr_overcurrentevent = 0; - // overcurrcnt++; - // if (overcurrcnt > TIMEOUT_OVERCURRENT) - // { - #ifdef motDebug - COMM_DBG.println("test: overcurrent!"); - #endif - //overcurrcnt = 0; - motorstate = M_IDLE; - result = M_RES_ENDSTOP; - ena_motor(0, 0); - - // } + #ifdef motDebug + COMM_DBG.println("test: overcurrent!"); + #endif + motorstate = M_IDLE; + result = M_RES_ENDSTOP; + ena_motor(0, 0); } // normal turning @@ -1162,7 +1144,6 @@ byte motorcycle (int mvalvenr, byte cmd) { break; } - //} return result; } @@ -1172,7 +1153,7 @@ void set_motor (int smvalvenr, int dir) { if (smvalvenr % 2) { MUX_OFF(); } else { MUX_ON(); } - delay(50); // wait for relay settling + delay(WAIT_MUX); // wait for relay settling, depending on revision if (dir == DIR_OPEN) { DIR_OFF(); } else { DIR_ON(); } @@ -1218,9 +1199,9 @@ enum ASTATE valve_getstate () { } -int16_t appsetaction(char cmd, unsigned int valveindex, byte posdelta) { +int16_t appsetaction(char cmd, unsigned int valveindex, byte posdelta, bool force) { - if(valvestate == A_IDLE && valveindex < ACTUATOR_COUNT) { + if(((valvestate == A_IDLE) || force) && (valveindex < ACTUATOR_COUNT)) { valvenr = (int) valveindex; command = cmd; poschangecmd = posdelta; diff --git a/software_stm32/src/temperature.cpp b/software_stm32/src/owDevices.cpp similarity index 67% rename from software_stm32/src/temperature.cpp rename to software_stm32/src/owDevices.cpp index 7d9d306..3b8e66f 100644 --- a/software_stm32/src/temperature.cpp +++ b/software_stm32/src/owDevices.cpp @@ -34,23 +34,26 @@ #include "..\lib\OneWire\OneWire.cpp" #include #include // library https://github.com/bblanchon/ArduinoJson -#include "temperature.h" +#include "owDevices.h" +#include "DS2438.h" tempsensor tempsensors[MAXONEWIRECNT]; -uint8_t numberOfDevices = 0; +voltsensor voltsensors[MAXDS2438CNT]; +uint8_t noOfDevices = 0; +uint8_t noOfDS18Devices = 0; +uint8_t noOfDS2438Devices = 0; -//OneWire oneWire; OneWire oneWire(ONEW_PIN); DallasTemperature sensors(&oneWire); +DS2438 bm(&oneWire); -enum t_state {T_INIT, T_IDLE, T_REQUEST, T_OUTPUT, T_WAIT, T_SEARCH}; +enum t_state {T_INIT, T_IDLE, T_REQUEST, T_OUTPUT, T_READVAD, T_WAIT, T_SEARCH}; volatile int temp_cmd = 0; volatile int lock = 0; -//#define COMM_DBG Serial3 // serial port for debugging #define COMM_DBG Serial6 // serial port for debugging @@ -59,10 +62,7 @@ void printAddress(DeviceAddress deviceAddress) #if defined tempDebug || defined appDebug COMM_DBG.print("{"); for (uint8_t i = 0; i < 8; i++) - { - // zero pad the address if necessary - //COMM_DBG.print("0x"); - + { COMM_DBG.print(" "); if (deviceAddress[i] < 16) COMM_DBG.print("0"); COMM_DBG.print(deviceAddress[i], HEX); @@ -73,8 +73,50 @@ void printAddress(DeviceAddress deviceAddress) #endif } +void setDeviceAddress() { + uint8_t thisSensorAddress[8]; + + noOfDevices = sensors.getDeviceCount(); + #ifdef tempDebug + COMM_DBG.print("Found "); + COMM_DBG.print(noOfDevices, 10); + COMM_DBG.println(" one wire sensors:"); + #endif + for (unsigned int i=0; i0) { + tempstate = T_READVAD; + devDS2438Cnt = 0; + } + else tempstate = T_IDLE; + } devcnt++; + break; - //get_sensordata(); - + case T_READVAD: + if (devDS2438Cnt0) { @@ -346,8 +345,7 @@ int16_t Terminal_Serve (void) { COMM_DBG.println("comm: set 1st sensor index"); if (x >= 0 && x < ACTUATOR_COUNT && y < MAXONEWIRECNT) { - numberOfDevices = sensors.getDeviceCount(); - if (numberOfDevices > 0) + if (noOfDS18Devices > 0) { // write sensor address code to eeprom layout mirror sensors.getAddress(currAddress, y); @@ -381,8 +379,7 @@ int16_t Terminal_Serve (void) { COMM_DBG.println("comm: set 2nd sensor index"); if (x >= 0 && x < ACTUATOR_COUNT && y < MAXONEWIRECNT) { - numberOfDevices = sensors.getDeviceCount(); - if (numberOfDevices > 0) + if (noOfDS18Devices > 0) { // write sensor address code to eeprom layout mirror sensors.getAddress(currAddress, y);