diff --git a/requirements.txt b/requirements.txt index c3ed11fc..06b2d535 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,7 +8,7 @@ aiofiles==0.6.0 # via platformio ajsonrpc==1.1.0 # via platformio -bottle==0.12.19 +bottle==0.12.20 # via platformio certifi==2020.12.5 # via requests diff --git a/usermods/Animated_Staircase/Animated_Staircase.h b/usermods/Animated_Staircase/Animated_Staircase.h index eed40b7c..5aa64631 100644 --- a/usermods/Animated_Staircase/Animated_Staircase.h +++ b/usermods/Animated_Staircase/Animated_Staircase.h @@ -406,6 +406,14 @@ class Animated_Staircase : public Usermod { } } + void appendConfigData() { + //oappend(SET_F("dd=addDropdown('staircase','selectfield');")); + //oappend(SET_F("addOption(dd,'1st value',0);")); + //oappend(SET_F("addOption(dd,'2nd value',1);")); + //oappend(SET_F("addInfo('staircase:selectfield',1,'additional info');")); // 0 is field type, 1 is actual field + } + + /* * Writes the configuration to internal flash memory. */ @@ -458,15 +466,11 @@ class Animated_Staircase : public Usermod { useUSSensorTop = top[FPSTR(_useTopUltrasoundSensor)] | useUSSensorTop; topPIRorTriggerPin = top[FPSTR(_topPIRorTrigger_pin)] | topPIRorTriggerPin; -// topPIRorTriggerPin = min(33,max(-1,(int)topPIRorTriggerPin)); // bounds check topEchoPin = top[FPSTR(_topEcho_pin)] | topEchoPin; -// topEchoPin = min(39,max(-1,(int)topEchoPin)); // bounds check useUSSensorBottom = top[FPSTR(_useBottomUltrasoundSensor)] | useUSSensorBottom; bottomPIRorTriggerPin = top[FPSTR(_bottomPIRorTrigger_pin)] | bottomPIRorTriggerPin; -// bottomPIRorTriggerPin = min(33,max(-1,(int)bottomPIRorTriggerPin)); // bounds check bottomEchoPin = top[FPSTR(_bottomEcho_pin)] | bottomEchoPin; -// bottomEchoPin = min(39,max(-1,(int)bottomEchoPin)); // bounds check topMaxDist = top[FPSTR(_topEchoCm)] | topMaxDist; topMaxDist = min(150,max(30,(int)topMaxDist)); // max distnace ~1.5m (a lag of 9ms may be expected) @@ -504,22 +508,22 @@ class Animated_Staircase : public Usermod { * tab of the web-UI. */ void addToJsonInfo(JsonObject& root) { - JsonObject staircase = root["u"]; - if (staircase.isNull()) { - staircase = root.createNestedObject("u"); + JsonObject user = root["u"]; + if (user.isNull()) { + user = root.createNestedObject("u"); } - JsonArray usermodEnabled = staircase.createNestedArray(F("Staircase")); // name - String btn = F(""); - usermodEnabled.add(btn); // value + JsonArray infoArr = user.createNestedArray(FPSTR(_name)); // name + + String uiDomString = F(""); + infoArr.add(uiDomString); } }; diff --git a/usermods/PIR_sensor_switch/usermod_PIR_sensor_switch.h b/usermods/PIR_sensor_switch/usermod_PIR_sensor_switch.h index e5a6a96f..d7abb847 100644 --- a/usermods/PIR_sensor_switch/usermod_PIR_sensor_switch.h +++ b/usermods/PIR_sensor_switch/usermod_PIR_sensor_switch.h @@ -275,20 +275,9 @@ public: JsonObject user = root["u"]; if (user.isNull()) user = root.createNestedObject("u"); - String uiDomString = F(""); - JsonArray infoArr = user.createNestedArray(uiDomString); // timer value + JsonArray infoArr = user.createNestedArray(FPSTR(_name)); + String uiDomString; if (enabled) { if (offTimerStart > 0) { @@ -322,6 +311,20 @@ public: infoArr.add(F("disabled")); } + uiDomString = F(" "); + infoArr.add(uiDomString); + JsonObject sensor = root[F("sensor")]; if (sensor.isNull()) sensor = root.createNestedObject(F("sensor")); sensor[F("motion")] = sensorPinState || offTimerStart>0 ? true : false; diff --git a/usermods/audioreactive/audio_reactive.h b/usermods/audioreactive/audio_reactive.h new file mode 100644 index 00000000..1aebf5db --- /dev/null +++ b/usermods/audioreactive/audio_reactive.h @@ -0,0 +1,1220 @@ +#pragma once + +#include "wled.h" +#include + +#ifndef ESP32 + #error This audio reactive usermod does not support the ESP8266. +#endif + +/* + * Usermods allow you to add own functionality to WLED more easily + * See: https://github.com/Aircoookie/WLED/wiki/Add-own-functionality + * + * This is an audioreactive v2 usermod. + * .... + */ + +// Comment/Uncomment to toggle usb serial debugging +// #define SR_DEBUG +#ifdef SR_DEBUG + #define DEBUGSR_PRINT(x) Serial.print(x) + #define DEBUGSR_PRINTLN(x) Serial.println(x) + #define DEBUGSR_PRINTF(x...) Serial.printf(x) +#else + #define DEBUGSR_PRINT(x) + #define DEBUGSR_PRINTLN(x) + #define DEBUGSR_PRINTF(x...) +#endif + +#include "audio_source.h" + +constexpr i2s_port_t I2S_PORT = I2S_NUM_0; +constexpr int BLOCK_SIZE = 128; +constexpr int SAMPLE_RATE = 10240; // Base sample rate in Hz + +// #define MIC_LOGGER +// #define MIC_SAMPLING_LOG +// #define FFT_SAMPLING_LOG + +//#define MAJORPEAK_SUPPRESS_NOISE // define to activate a dirty hack that ignores the lowest + hightest FFT bins + +// globals +static uint8_t inputLevel = 128; // UI slider value +static uint8_t soundSquelch = 10; // squelch value for volume reactive routines (config value) +static uint8_t sampleGain = 1; // sample gain (config value) +static uint8_t soundAgc = 0; // Automagic gain control: 0 - none, 1 - normal, 2 - vivid, 3 - lazy (config value) +static uint8_t audioSyncEnabled = 0; // bit field: bit 0 - send, bit 1 - receive (config value) + +// +// AGC presets +// Note: in C++, "const" implies "static" - no need to explicitly declare everything as "static const" +// +#define AGC_NUM_PRESETS 3 // AGC presets: normal, vivid, lazy +const double agcSampleDecay[AGC_NUM_PRESETS] = { 0.9994f, 0.9985f, 0.9997f}; // decay factor for sampleMax, in case the current sample is below sampleMax +const float agcZoneLow[AGC_NUM_PRESETS] = { 32, 28, 36}; // low volume emergency zone +const float agcZoneHigh[AGC_NUM_PRESETS] = { 240, 240, 248}; // high volume emergency zone +const float agcZoneStop[AGC_NUM_PRESETS] = { 336, 448, 304}; // disable AGC integrator if we get above this level +const float agcTarget0[AGC_NUM_PRESETS] = { 112, 144, 164}; // first AGC setPoint -> between 40% and 65% +const float agcTarget0Up[AGC_NUM_PRESETS] = { 88, 64, 116}; // setpoint switching value (a poor man's bang-bang) +const float agcTarget1[AGC_NUM_PRESETS] = { 220, 224, 216}; // second AGC setPoint -> around 85% +const double agcFollowFast[AGC_NUM_PRESETS] = { 1/192.f, 1/128.f, 1/256.f}; // quickly follow setpoint - ~0.15 sec +const double agcFollowSlow[AGC_NUM_PRESETS] = {1/6144.f,1/4096.f,1/8192.f}; // slowly follow setpoint - ~2-15 secs +const double agcControlKp[AGC_NUM_PRESETS] = { 0.6f, 1.5f, 0.65f}; // AGC - PI control, proportional gain parameter +const double agcControlKi[AGC_NUM_PRESETS] = { 1.7f, 1.85f, 1.2f}; // AGC - PI control, integral gain parameter +const float agcSampleSmooth[AGC_NUM_PRESETS] = { 1/12.f, 1/6.f, 1/16.f}; // smoothing factor for sampleAgc (use rawSampleAgc if you want the non-smoothed value) +// AGC presets end + +static AudioSource *audioSource = nullptr; + +//static uint16_t micData; // Analog input for FFT +static uint16_t micDataSm; // Smoothed mic data, as it's a bit twitchy +static float micDataReal = 0.0f; // future support - this one has the full 24bit MicIn data - lowest 8bit after decimal point +static float multAgc = 1.0f; // sample * multAgc = sampleAgc. Our AGC multiplier + +//////////////////// +// Begin FFT Code // +//////////////////// +#include "arduinoFFT.h" + +// FFT Variables +constexpr uint16_t samplesFFT = 512; // Samples in an FFT batch - This value MUST ALWAYS be a power of 2 + +static double FFT_MajorPeak = 0; +static double FFT_Magnitude = 0; + +// These are the input and output vectors. Input vectors receive computed results from FFT. +static double vReal[samplesFFT]; +static double vImag[samplesFFT]; +static float fftBin[samplesFFT]; + +// Try and normalize fftBin values to a max of 4096, so that 4096/16 = 256. +// Oh, and bins 0,1,2 are no good, so we'll zero them out. +static float fftCalc[16]; +static uint8_t fftResult[16]; // Our calculated result table, which we feed to the animations. +#ifdef SR_DEBUG +static float fftResultMax[16]; // A table used for testing to determine how our post-processing is working. +#endif +static float fftAvg[16]; + +// Table of linearNoise results to be multiplied by soundSquelch in order to reduce squelch across fftResult bins. +static uint8_t linearNoise[16] = { 34, 28, 26, 25, 20, 12, 9, 6, 4, 4, 3, 2, 2, 2, 2, 2 }; + +// Table of multiplication factors so that we can even out the frequency response. +static float fftResultPink[16] = { 1.70f, 1.71f, 1.73f, 1.78f, 1.68f, 1.56f, 1.55f, 1.63f, 1.79f, 1.62f, 1.80f, 2.06f, 2.47f, 3.35f, 6.83f, 9.55f }; + +// Create FFT object +static arduinoFFT FFT = arduinoFFT(vReal, vImag, samplesFFT, SAMPLE_RATE); +static TaskHandle_t FFT_Task; + +float fftAdd(int from, int to) { + float result = 0.0f; + for (int i = from; i <= to; i++) { + result += fftBin[i]; + } + return result; +} + +// FFT main code +void FFTcode(void * parameter) +{ + DEBUGSR_PRINT("FFT running on core: "); DEBUGSR_PRINTLN(xPortGetCoreID()); +#ifdef MAJORPEAK_SUPPRESS_NOISE + static double xtemp[24] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; +#endif + + for(;;) { + delay(1); // DO NOT DELETE THIS LINE! It is needed to give the IDLE(0) task enough time and to keep the watchdog happy. + // taskYIELD(), yield(), vTaskDelay() and esp_task_wdt_feed() didn't seem to work. + + // Only run the FFT computing code if we're not in Receive mode + if (audioSyncEnabled & 0x02) continue; + + if (audioSource) audioSource->getSamples(vReal, samplesFFT); + + // old code - Last sample in vReal is our current mic sample + //micDataSm = (uint16_t)vReal[samplesFFT - 1]; // will do a this a bit later + //micDataSm = ((micData * 3) + micData)/4; + + const int halfSamplesFFT = samplesFFT / 2; // samplesFFT divided by 2 + float maxSample1 = 0.0f; // max sample from first half of FFT batch + float maxSample2 = 0.0f; // max sample from second half of FFT batch + for (int i=0; i < halfSamplesFFT; i++) { + // set imaginary parts to 0 + vImag[i] = 0; + // pick our our current mic sample - we take the max value from all samples that go into FFT + if ((vReal[i] <= (INT16_MAX - 1024)) && (vReal[i] >= (INT16_MIN + 1024))) //skip extreme values - normally these are artefacts + if (fabsf((float)vReal[i]) > maxSample1) maxSample1 = fabsf((float)vReal[i]); + } + for (int i=halfSamplesFFT; i < samplesFFT; i++) { + // set imaginary parts to 0 + vImag[i] = 0; + // pick our our current mic sample - we take the max value from all samples that go into FFT + if ((vReal[i] <= (INT16_MAX - 1024)) && (vReal[i] >= (INT16_MIN + 1024))) //skip extreme values - normally these are artefacts + if (fabsf((float)vReal[i]) > maxSample2) maxSample2 = fabsf((float)vReal[i]); + } + // release first sample to volume reactive effects + micDataSm = (uint16_t)maxSample1; + micDataReal = maxSample1; + + FFT.DCRemoval(); // let FFT lib remove DC component, so we don't need to care about this in getSamples() + + //FFT.Windowing( FFT_WIN_TYP_HAMMING, FFT_FORWARD ); // Weigh data - standard Hamming window + //FFT.Windowing( FFT_WIN_TYP_BLACKMAN, FFT_FORWARD ); // Blackman window - better side freq rejection + //FFT.Windowing( FFT_WIN_TYP_BLACKMAN_HARRIS, FFT_FORWARD );// Blackman-Harris - excellent sideband rejection + FFT.Windowing( FFT_WIN_TYP_FLT_TOP, FFT_FORWARD ); // Flat Top Window - better amplitude accuracy + FFT.Compute( FFT_FORWARD ); // Compute FFT + FFT.ComplexToMagnitude(); // Compute magnitudes + + // + // vReal[3 .. 255] contain useful data, each a 20Hz interval (60Hz - 5120Hz). + // There could be interesting data at bins 0 to 2, but there are too many artifacts. + // +#ifdef MAJORPEAK_SUPPRESS_NOISE + // teporarily reduce signal strength in the highest + lowest bins + xtemp[0] = vReal[0]; vReal[0] *= 0.005; + xtemp[1] = vReal[1]; vReal[1] *= 0.005; + xtemp[2] = vReal[2]; vReal[2] *= 0.005; + xtemp[3] = vReal[3]; vReal[3] *= 0.02; + xtemp[4] = vReal[4]; vReal[4] *= 0.02; + xtemp[5] = vReal[5]; vReal[5] *= 0.02; + xtemp[6] = vReal[6]; vReal[6] *= 0.05; + xtemp[7] = vReal[7]; vReal[7] *= 0.08; + xtemp[8] = vReal[8]; vReal[8] *= 0.1; + xtemp[9] = vReal[9]; vReal[9] *= 0.2; + xtemp[10] = vReal[10]; vReal[10] *= 0.2; + xtemp[11] = vReal[11]; vReal[11] *= 0.25; + xtemp[12] = vReal[12]; vReal[12] *= 0.3; + xtemp[13] = vReal[13]; vReal[13] *= 0.3; + xtemp[14] = vReal[14]; vReal[14] *= 0.4; + xtemp[15] = vReal[15]; vReal[15] *= 0.4; + xtemp[16] = vReal[16]; vReal[16] *= 0.4; + xtemp[17] = vReal[17]; vReal[17] *= 0.5; + xtemp[18] = vReal[18]; vReal[18] *= 0.5; + xtemp[19] = vReal[19]; vReal[19] *= 0.6; + xtemp[20] = vReal[20]; vReal[20] *= 0.7; + xtemp[21] = vReal[21]; vReal[21] *= 0.8; + + xtemp[22] = vReal[samplesFFT-2]; vReal[samplesFFT-2] =0.0; + xtemp[23] = vReal[samplesFFT-1]; vReal[samplesFFT-1] =0.0; +#endif + + FFT.MajorPeak(&FFT_MajorPeak, &FFT_Magnitude); // let the effects know which freq was most dominant + +#ifdef MAJORPEAK_SUPPRESS_NOISE + // dirty hack: limit suppressed channel intensities to FFT_Magnitude + for (int k=0; k < 24; k++) if(xtemp[k] > FFT_Magnitude) xtemp[k] = FFT_Magnitude; + // restore bins + vReal[0] = xtemp[0]; + vReal[1] = xtemp[1]; + vReal[2] = xtemp[2]; + vReal[3] = xtemp[3]; + vReal[4] = xtemp[4]; + vReal[5] = xtemp[5]; + vReal[6] = xtemp[6]; + vReal[7] = xtemp[7]; + vReal[8] = xtemp[8]; + vReal[9] = xtemp[9]; + vReal[10] = xtemp[10]; + vReal[11] = xtemp[11]; + vReal[12] = xtemp[12]; + vReal[13] = xtemp[13]; + vReal[14] = xtemp[14]; + vReal[15] = xtemp[15]; + vReal[16] = xtemp[16]; + vReal[17] = xtemp[17]; + vReal[18] = xtemp[18]; + vReal[19] = xtemp[19]; + vReal[20] = xtemp[20]; + vReal[21] = xtemp[21]; + vReal[samplesFFT-2] = xtemp[22]; + vReal[samplesFFT-1] = xtemp[23]; +#endif + + for (int i = 0; i < samplesFFT; i++) { // Values for bins 0 and 1 are WAY too large. Might as well start at 3. + float t = fabs(vReal[i]); // just to be sure - values in fft bins should be positive any way + fftBin[i] = t / 16.0; // Reduce magnitude. Want end result to be linear and ~4096 max. + } // for() + + +/* This FFT post processing is a DIY endeavour. What we really need is someone with sound engineering expertise to do a great job here AND most importantly, that the animations look GREAT as a result. + * + * + * Andrew's updated mapping of 256 bins down to the 16 result bins with Sample Freq = 10240, samplesFFT = 512 and some overlap. + * Based on testing, the lowest/Start frequency is 60 Hz (with bin 3) and a highest/End frequency of 5120 Hz in bin 255. + * Now, Take the 60Hz and multiply by 1.320367784 to get the next frequency and so on until the end. Then detetermine the bins. + * End frequency = Start frequency * multiplier ^ 16 + * Multiplier = (End frequency/ Start frequency) ^ 1/16 + * Multiplier = 1.320367784 + */ + // Range + fftCalc[0] = (fftAdd(3,4)) /2; // 60 - 100 + fftCalc[1] = (fftAdd(4,5)) /2; // 80 - 120 + fftCalc[2] = (fftAdd(5,7)) /3; // 100 - 160 + fftCalc[3] = (fftAdd(7,9)) /3; // 140 - 200 + fftCalc[4] = (fftAdd(9,12)) /4; // 180 - 260 + fftCalc[5] = (fftAdd(12,16)) /5; // 240 - 340 + fftCalc[6] = (fftAdd(16,21)) /6; // 320 - 440 + fftCalc[7] = (fftAdd(21,28)) /8; // 420 - 600 + fftCalc[8] = (fftAdd(29,37)) /10; // 580 - 760 + fftCalc[9] = (fftAdd(37,48)) /12; // 740 - 980 + fftCalc[10] = (fftAdd(48,64)) /17; // 960 - 1300 + fftCalc[11] = (fftAdd(64,84)) /21; // 1280 - 1700 + fftCalc[12] = (fftAdd(84,111)) /28; // 1680 - 2240 + fftCalc[13] = (fftAdd(111,147)) /37; // 2220 - 2960 + fftCalc[14] = (fftAdd(147,194)) /48; // 2940 - 3900 + fftCalc[15] = (fftAdd(194, 255)) /62; // 3880 - 5120 + + for (int i=0; i < 16; i++) { + // Noise supression of fftCalc bins using soundSquelch adjustment for different input types. + fftCalc[i] = (fftCalc[i] < ((float)soundSquelch * (float)linearNoise[i] / 4.0f)) ? 0 : fftCalc[i]; + // Adjustment for frequency curves. + fftCalc[i] *= fftResultPink[i]; + // Manual linear adjustment of gain using sampleGain adjustment for different input types. + fftCalc[i] *= soundAgc ? multAgc : ((float)sampleGain/40.0f * (float)inputLevel/128.0f + 1.0f/16.0f); //with inputLevel adjustment + + // Now, let's dump it all into fftResult. Need to do this, otherwise other routines might grab fftResult values prematurely. + fftResult[i] = constrain((int)fftCalc[i], 0, 254); + fftAvg[i] = (float)fftResult[i]*0.05f + 0.95f*fftAvg[i]; + } + + // release second sample to volume reactive effects. + // The FFT process currently takes ~20ms, so releasing a second sample now effectively doubles the "sample rate" + micDataSm = (uint16_t)maxSample2; + micDataReal = maxSample2; + +#ifdef SR_DEBUG + // Looking for fftResultMax for each bin using Pink Noise + for (int i=0; i<16; i++) { + fftResultMax[i] = ((fftResultMax[i] * 63.0) + fftResult[i]) / 64.0; + DEBUGSR_PRINT(fftResultMax[i]*fftResultPink[i]); DEBUGSR_PRINT("\t"); + } + DEBUGSR_PRINTLN(); +#endif + } // for(;;) +} // FFTcode() + + +//class name. Use something descriptive and leave the ": public Usermod" part :) +class AudioReactive : public Usermod { + + private: + #ifndef AUDIOPIN + int8_t audioPin = 36; + #else + int8_t audioPin = AUDIOPIN; + #endif + #ifndef DMTYPE // I2S mic type + uint8_t dmType = 0; // none/disabled/analog + #else + uint8_t dmType = DMTYPE; + #endif + #ifndef I2S_SDPIN // aka DOUT + int8_t i2ssdPin = 32; + #else + int8_t i2ssdPin = I2S_SDPIN; + #endif + #ifndef I2S_WSPIN // aka LRCL + int8_t i2swsPin = 15; + #else + int8_t i2swsPin = I2S_WSPIN; + #endif + #ifndef I2S_CKPIN // aka BCLK + int8_t i2sckPin = 14; + #else + int8_t i2sckPin = I2S_CKPIN; + #endif + #ifndef ES7243_SDAPIN + int8_t sdaPin = -1; + #else + int8_t sdaPin = ES7243_SDAPIN; + #endif + #ifndef ES7243_SCLPIN + int8_t sclPin = -1; + #else + int8_t sclPin = ES7243_SCLPIN; + #endif + #ifndef MCLK_PIN + int8_t mclkPin = -1; + #else + int8_t mclkPin = MLCK_PIN; + #endif + + struct audioSyncPacket { + char header[6]; + uint8_t myVals[32]; // 32 Bytes + int sampleAgc; // 04 Bytes + int sample; // 04 Bytes + float sampleAvg; // 04 Bytes + bool samplePeak; // 01 Bytes + uint8_t fftResult[16]; // 16 Bytes + double FFT_Magnitude; // 08 Bytes + double FFT_MajorPeak; // 08 Bytes + }; + + WiFiUDP fftUdp; + + // set your config variables to their boot default value (this can also be done in readFromConfig() or a constructor if you prefer) + bool enabled = true; + bool initDone = false; + + const uint16_t delayMs = 10; // I don't want to sample too often and overload WLED + // variables used in effects + uint8_t maxVol = 10; // Reasonable value for constant volume for 'peak detector', as it won't always trigger + uint8_t binNum = 8; // Used to select the bin for FFT based beat detection. + uint8_t myVals[32]; // Used to store a pile of samples because WLED frame rate and WLED sample rate are not synchronized. Frame rate is too low. + bool samplePeak = 0; // Boolean flag for peak. Responding routine must reset this flag + int16_t sample; // either sampleRaw or rawSampleAgc depending on soundAgc + float sampleSmth; // either sampleAvg or sampleAgc depending on soundAgc; smoothed sample + + #ifdef MIC_SAMPLING_LOG + uint8_t targetAgc = 60; // This is our setPoint at 20% of max for the adjusted output (used only in logAudio()) + #endif + bool udpSamplePeak = 0; // Boolean flag for peak. Set at the same tiem as samplePeak, but reset by transmitAudioData + int16_t micIn = 0; // Current sample starts with negative values and large values, which is why it's 16 bit signed + int16_t sampleRaw; // Current sample. Must only be updated ONCE!!! (amplified mic value by sampleGain and inputLevel; smoothed over 16 samples) + float sampleMax = 0.0f; // Max sample over a few seconds. Needed for AGC controler. + float sampleReal = 0.0f; // "sampleRaw" as float, to provide bits that are lost otherwise (before amplification by sampleGain or inputLevel). Needed for AGC. + float sampleAvg = 0.0f; // Smoothed Average sampleRaw + float sampleAgc = 0.0f; // Our AGC sample + int16_t rawSampleAgc = 0; // Our AGC sample - raw + uint32_t timeOfPeak = 0; + uint32_t lastTime = 0; + float micLev = 0.0f; // Used to convert returned value to have '0' as minimum. A leveller + float expAdjF = 0.0f; // Used for exponential filter. + + bool udpSyncConnected = false; + uint16_t audioSyncPort = 11988; + + // used for AGC + uint8_t lastMode = 0; // last known effect mode + int last_soundAgc = -1; + float control_integrated = 0.0f; // persistent across calls to agcAvg(); "integrator control" = accumulated error + unsigned long last_update_time = 0; + unsigned long last_kick_time = 0; + uint8_t last_user_inputLevel = 0; + + // strings to reduce flash memory usage (used more than twice) + static const char _name[]; + static const char _enabled[]; + static const char _analogmic[]; + static const char _digitalmic[]; + static const char UDP_SYNC_HEADER[]; + + + // private methods + void logAudio() + { + #ifdef MIC_LOGGER + //Serial.print("micData:"); Serial.print(micData); Serial.print("\t"); + //Serial.print("micDataSm:"); Serial.print(micDataSm); Serial.print("\t"); + //Serial.print("micIn:"); Serial.print(micIn); Serial.print("\t"); + //Serial.print("micLev:"); Serial.print(micLev); Serial.print("\t"); + //Serial.print("sample:"); Serial.print(sample); Serial.print("\t"); + //Serial.print("sampleAvg:"); Serial.print(sampleAvg); Serial.print("\t"); + Serial.print("sampleReal:"); Serial.print(sampleReal); Serial.print("\t"); + //Serial.print("sampleMax:"); Serial.print(sampleMax); Serial.print("\t"); + Serial.print("multAgc:"); Serial.print(multAgc, 4); Serial.print("\t"); + Serial.print("sampleAgc:"); Serial.print(sampleAgc); Serial.print("\t"); + Serial.println(); + #endif + + #ifdef MIC_SAMPLING_LOG + //------------ Oscilloscope output --------------------------- + Serial.print(targetAgc); Serial.print(" "); + Serial.print(multAgc); Serial.print(" "); + Serial.print(sampleAgc); Serial.print(" "); + + Serial.print(sample); Serial.print(" "); + Serial.print(sampleAvg); Serial.print(" "); + Serial.print(micLev); Serial.print(" "); + Serial.print(samplePeak); Serial.print(" "); //samplePeak = 0; + Serial.print(micIn); Serial.print(" "); + Serial.print(100); Serial.print(" "); + Serial.print(0); Serial.print(" "); + Serial.println(); + #endif + + #ifdef FFT_SAMPLING_LOG + #if 0 + for(int i=0; i<16; i++) { + Serial.print(fftResult[i]); + Serial.print("\t"); + } + Serial.println(); + #endif + + // OPTIONS are in the following format: Description \n Option + // + // Set true if wanting to see all the bands in their own vertical space on the Serial Plotter, false if wanting to see values in Serial Monitor + const bool mapValuesToPlotterSpace = false; + // Set true to apply an auto-gain like setting to to the data (this hasn't been tested recently) + const bool scaleValuesFromCurrentMaxVal = false; + // prints the max value seen in the current data + const bool printMaxVal = false; + // prints the min value seen in the current data + const bool printMinVal = false; + // if !scaleValuesFromCurrentMaxVal, we scale values from [0..defaultScalingFromHighValue] to [0..scalingToHighValue], lower this if you want to see smaller values easier + const int defaultScalingFromHighValue = 256; + // Print values to terminal in range of [0..scalingToHighValue] if !mapValuesToPlotterSpace, or [(i)*scalingToHighValue..(i+1)*scalingToHighValue] if mapValuesToPlotterSpace + const int scalingToHighValue = 256; + // set higher if using scaleValuesFromCurrentMaxVal and you want a small value that's also the current maxVal to look small on the plotter (can't be 0 to avoid divide by zero error) + const int minimumMaxVal = 1; + + int maxVal = minimumMaxVal; + int minVal = 0; + for(int i = 0; i < 16; i++) { + if(fftResult[i] > maxVal) maxVal = fftResult[i]; + if(fftResult[i] < minVal) minVal = fftResult[i]; + } + for(int i = 0; i < 16; i++) { + Serial.print(i); Serial.print(":"); + Serial.printf("%04d ", map(fftResult[i], 0, (scaleValuesFromCurrentMaxVal ? maxVal : defaultScalingFromHighValue), (mapValuesToPlotterSpace*i*scalingToHighValue)+0, (mapValuesToPlotterSpace*i*scalingToHighValue)+scalingToHighValue-1)); + } + if(printMaxVal) { + Serial.printf("maxVal:%04d ", maxVal + (mapValuesToPlotterSpace ? 16*256 : 0)); + } + if(printMinVal) { + Serial.printf("%04d:minVal ", minVal); // printed with value first, then label, so negative values can be seen in Serial Monitor but don't throw off y axis in Serial Plotter + } + if(mapValuesToPlotterSpace) + Serial.printf("max:%04d ", (printMaxVal ? 17 : 16)*256); // print line above the maximum value we expect to see on the plotter to avoid autoscaling y axis + else + Serial.printf("max:%04d ", 256); + Serial.println(); + #endif // FFT_SAMPLING_LOG + } // logAudio() + + + /* + * A "PI controller" multiplier to automatically adjust sound sensitivity. + * + * A few tricks are implemented so that sampleAgc does't only utilize 0% and 100%: + * 0. don't amplify anything below squelch (but keep previous gain) + * 1. gain input = maximum signal observed in the last 5-10 seconds + * 2. we use two setpoints, one at ~60%, and one at ~80% of the maximum signal + * 3. the amplification depends on signal level: + * a) normal zone - very slow adjustment + * b) emergency zome (<10% or >90%) - very fast adjustment + */ + void agcAvg() + { + const int AGC_preset = (soundAgc > 0)? (soundAgc-1): 0; // make sure the _compiler_ knows this value will not change while we are inside the function + + float lastMultAgc = multAgc; // last muliplier used + float multAgcTemp = multAgc; // new multiplier + float tmpAgc = sampleReal * multAgc; // what-if amplified signal + + float control_error; // "control error" input for PI control + + if (last_soundAgc != soundAgc) + control_integrated = 0.0f; // new preset - reset integrator + + // For PI controller, we need to have a constant "frequency" + // so let's make sure that the control loop is not running at insane speed + static unsigned long last_time = 0; + unsigned long time_now = millis(); + if (time_now - last_time > 2) { + last_time = time_now; + + if((fabs(sampleReal) < 2.0f) || (sampleMax < 1.0f)) { + // MIC signal is "squelched" - deliver silence + //multAgcTemp = multAgc; // keep old control value (no change) + tmpAgc = 0; + // we need to "spin down" the intgrated error buffer + if (fabs(control_integrated) < 0.01f) control_integrated = 0.0f; + else control_integrated *= 0.91f; + } else { + // compute new setpoint + if (tmpAgc <= agcTarget0Up[AGC_preset]) + multAgcTemp = agcTarget0[AGC_preset] / sampleMax; // Make the multiplier so that sampleMax * multiplier = first setpoint + else + multAgcTemp = agcTarget1[AGC_preset] / sampleMax; // Make the multiplier so that sampleMax * multiplier = second setpoint + } + // limit amplification + //multAgcTemp = constrain(multAgcTemp, 0.015625f, 32.0f); // 1/64 < multAgcTemp < 32 + if (multAgcTemp > 32.0f) multAgcTemp = 32.0f; + if (multAgcTemp < 1.0f/64.0f) multAgcTemp = 1.0f/64.0f; + + // compute error terms + control_error = multAgcTemp - lastMultAgc; + + if (((multAgcTemp > 0.085f) && (multAgcTemp < 6.5f)) //integrator anti-windup by clamping + && (multAgc*sampleMax < agcZoneStop[AGC_preset])) //integrator ceiling (>140% of max) + control_integrated += control_error * 0.002f * 0.25f; // 2ms = intgration time; 0.25 for damping + else + control_integrated *= 0.9f; // spin down that beasty integrator + + // apply PI Control + tmpAgc = sampleReal * lastMultAgc; // check "zone" of the signal using previous gain + if ((tmpAgc > agcZoneHigh[AGC_preset]) || (tmpAgc < soundSquelch + agcZoneLow[AGC_preset])) { // upper/lower emergy zone + multAgcTemp = lastMultAgc + agcFollowFast[AGC_preset] * agcControlKp[AGC_preset] * control_error; + multAgcTemp += agcFollowFast[AGC_preset] * agcControlKi[AGC_preset] * control_integrated; + } else { // "normal zone" + multAgcTemp = lastMultAgc + agcFollowSlow[AGC_preset] * agcControlKp[AGC_preset] * control_error; + multAgcTemp += agcFollowSlow[AGC_preset] * agcControlKi[AGC_preset] * control_integrated; + } + + // limit amplification again - PI controler sometimes "overshoots" + //multAgcTemp = constrain(multAgcTemp, 0.015625f, 32.0f); // 1/64 < multAgcTemp < 32 + if (multAgcTemp > 32.0f) multAgcTemp = 32.0f; + if (multAgcTemp < 1.0f/64.0f) multAgcTemp = 1.0f/64.0f; + } + + // NOW finally amplify the signal + tmpAgc = sampleReal * multAgcTemp; // apply gain to signal + if (fabs(sampleReal) < 2.0f) tmpAgc = 0; // apply squelch threshold + //tmpAgc = constrain(tmpAgc, 0, 255); + if (tmpAgc > 255) tmpAgc = 255; // limit to 8bit + if (tmpAgc < 1) tmpAgc = 0; // just to be sure + + // update global vars ONCE - multAgc, sampleAGC, rawSampleAgc + multAgc = multAgcTemp; + rawSampleAgc = 0.8f * tmpAgc + 0.2f * (float)rawSampleAgc; + // update smoothed AGC sample + if (fabs(tmpAgc) < 1.0f) + sampleAgc = 0.5f * tmpAgc + 0.5f * sampleAgc; // fast path to zero + else + sampleAgc += agcSampleSmooth[AGC_preset] * (tmpAgc - sampleAgc); // smooth path + + //userVar0 = sampleAvg * 4; + //if (userVar0 > 255) userVar0 = 255; + + last_soundAgc = soundAgc; + } // agcAvg() + + + void getSample() + { + float sampleAdj; // Gain adjusted sample value + float tmpSample; // An interim sample variable used for calculatioins. + const float weighting = 0.2f; // Exponential filter weighting. Will be adjustable in a future release. + const int AGC_preset = (soundAgc > 0)? (soundAgc-1): 0; // make sure the _compiler_ knows this value will not change while we are inside the function + + #ifdef WLED_DISABLE_SOUND + micIn = inoise8(millis(), millis()); // Simulated analog read + micDataReal = micIn; + #else + micIn = micDataSm; // micDataSm = ((micData * 3) + micData)/4; + //DEBUGSR_PRINT("micIn:\tmicData:\tmicIn>>2:\tmic_In_abs:\tsample:\tsampleAdj:\tsampleAvg:\n"); + //DEBUGSR_PRINT(micIn); DEBUGSR_PRINT("\t"); DEBUGSR_PRINT(micData); + #endif + + // Note to self: the next line kills 80% of sample - "miclev" filter runs at "full arduino loop" speed, following the signal almost instantly! + //micLev = ((micLev * 31) + micIn) / 32; // Smooth it out over the last 32 samples for automatic centering + micLev = ((micLev * 8191.0f) + micDataReal) / 8192.0f; // takes a few seconds to "catch up" with the Mic Input + if(micIn < micLev) micLev = ((micLev * 31.0f) + micDataReal) / 32.0f; // align MicLev to lowest input signal + + micIn -= micLev; // Let's center it to 0 now + DEBUGSR_PRINT("\t\t"); DEBUGSR_PRINT(micIn); + + // Using an exponential filter to smooth out the signal. We'll add controls for this in a future release. + float micInNoDC = fabs(micDataReal - micLev); + expAdjF = (weighting * micInNoDC + (1.0-weighting) * expAdjF); + expAdjF = (expAdjF <= soundSquelch) ? 0: expAdjF; // simple noise gate + + expAdjF = fabs(expAdjF); // Now (!) take the absolute value + tmpSample = expAdjF; + + DEBUGSR_PRINT("\t\t"); DEBUGSR_PRINT(tmpSample); + + micIn = abs(micIn); // And get the absolute value of each sample + + sampleAdj = tmpSample * sampleGain / 40 * inputLevel/128 + tmpSample / 16; // Adjust the gain. with inputLevel adjustment + //sampleReal = sampleAdj; + sampleReal = tmpSample; + + sampleAdj = fmax(fmin(sampleAdj, 255), 0); // Question: why are we limiting the value to 8 bits ??? + sampleRaw = (int16_t)sampleAdj; // ONLY update sample ONCE!!!! + + // keep "peak" sample, but decay value if current sample is below peak + if ((sampleMax < sampleReal) && (sampleReal > 0.5f)) { + sampleMax = sampleMax + 0.5f * (sampleReal - sampleMax); // new peak - with some filtering + } else { + if ((multAgc*sampleMax > agcZoneStop[AGC_preset]) && (soundAgc > 0)) + sampleMax += 0.5f * (sampleReal - sampleMax); // over AGC Zone - get back quickly + else + sampleMax *= agcSampleDecay[AGC_preset]; // signal to zero --> 5-8sec + } + if (sampleMax < 0.5f) sampleMax = 0.0f; + + sampleAvg = ((sampleAvg * 15.0f) + sampleAdj) / 16.0f; // Smooth it out over the last 16 samples. + + DEBUGSR_PRINT("\t"); DEBUGSR_PRINT(sampleRaw); + DEBUGSR_PRINT("\t\t"); DEBUGSR_PRINT(sampleAvg); DEBUGSR_PRINT("\n\n"); + + // Fixes private class variable compiler error. Unsure if this is the correct way of fixing the root problem. -THATDONFC + uint16_t MinShowDelay = strip.getMinShowDelay(); + + if (millis() - timeOfPeak > MinShowDelay) { // Auto-reset of samplePeak after a complete frame has passed. + samplePeak = 0; + udpSamplePeak = 0; + } + + //if (userVar1 == 0) samplePeak = 0; + // Poor man's beat detection by seeing if sample > Average + some value. + // Serial.print(binNum); Serial.print("\t"); + // Serial.print(fftBin[binNum]); + // Serial.print("\t"); + // Serial.print(fftAvg[binNum/16]); + // Serial.print("\t"); + // Serial.print(maxVol); + // Serial.print("\t"); + // Serial.println(samplePeak); + if ((fftBin[binNum] > maxVol) && (millis() > (timeOfPeak + 100))) { // This goes through ALL of the 255 bins + // if (sample > (sampleAvg + maxVol) && millis() > (timeOfPeak + 200)) { + // Then we got a peak, else we don't. The peak has to time out on its own in order to support UDP sound sync. + samplePeak = 1; + timeOfPeak = millis(); + udpSamplePeak = 1; + //userVar1 = samplePeak; + } + } // getSample() + + + void transmitAudioData() + { + if (!udpSyncConnected) return; + //DEBUGSR_PRINTLN("Transmitting UDP Mic Packet"); + + audioSyncPacket transmitData; + strncpy_P(transmitData.header, PSTR(UDP_SYNC_HEADER), 6); + + for (int i = 0; i < 32; i++) { + transmitData.myVals[i] = myVals[i]; + } + + transmitData.sampleAgc = sampleAgc; + transmitData.sample = sampleRaw; + transmitData.sampleAvg = sampleAvg; + transmitData.samplePeak = udpSamplePeak; + udpSamplePeak = 0; // Reset udpSamplePeak after we've transmitted it + + for (int i = 0; i < 16; i++) { + transmitData.fftResult[i] = (uint8_t)constrain(fftResult[i], 0, 254); + } + + transmitData.FFT_Magnitude = FFT_Magnitude; + transmitData.FFT_MajorPeak = FFT_MajorPeak; + + fftUdp.beginMulticastPacket(); + fftUdp.write(reinterpret_cast(&transmitData), sizeof(transmitData)); + fftUdp.endPacket(); + return; + } // transmitAudioData() + + + bool isValidUdpSyncVersion(const char *header) { + return strncmp_P(header, PSTR(UDP_SYNC_HEADER), 6) == 0; + } + + + void receiveAudioData() + { + if (!udpSyncConnected) return; + //DEBUGSR_PRINTLN("Checking for UDP Microphone Packet"); + + size_t packetSize = fftUdp.parsePacket(); + if (packetSize) { + //DEBUGSR_PRINTLN("Received UDP Sync Packet"); + uint8_t fftBuff[packetSize]; + fftUdp.read(fftBuff, packetSize); + + // VERIFY THAT THIS IS A COMPATIBLE PACKET + if (packetSize == sizeof(audioSyncPacket) && !(isValidUdpSyncVersion((const char *)fftBuff))) { + audioSyncPacket *receivedPacket = reinterpret_cast(fftBuff); + + for (int i = 0; i < 32; i++) myVals[i] = receivedPacket->myVals[i]; + + sampleAgc = receivedPacket->sampleAgc; + rawSampleAgc = receivedPacket->sampleAgc; + sampleRaw = receivedPacket->sample; + sampleAvg = receivedPacket->sampleAvg; + + // Only change samplePeak IF it's currently false. + // If it's true already, then the animation still needs to respond. + if (!samplePeak) samplePeak = receivedPacket->samplePeak; + + //These values are only available on the ESP32 + for (int i = 0; i < 16; i++) fftResult[i] = receivedPacket->fftResult[i]; + + FFT_Magnitude = receivedPacket->FFT_Magnitude; + FFT_MajorPeak = receivedPacket->FFT_MajorPeak; + //DEBUGSR_PRINTLN("Finished parsing UDP Sync Packet"); + } + } + } + + + public: + //Functions called by WLED or other usermods + + /* + * setup() is called once at boot. WiFi is not yet connected at this point. + * You can use it to initialize variables, sensors or similar. + * It is called *AFTER* readFromConfig() + */ + void setup() + { + if (!initDone) { + // usermod exchangeable data + // we will assign all usermod exportable data here as pointers to original variables or arrays and allocate memory for pointers + um_data = new um_data_t; + um_data->u_size = 18; + um_data->u_type = new um_types_t[um_data->u_size]; + um_data->u_data = new void*[um_data->u_size]; + um_data->u_data[ 0] = &sampleAvg; //*used (2D Swirl, 2D Waverly, Gravcenter, Gravcentric, Gravimeter, Midnoise, Noisefire, Noisemeter, Plasmoid, Binmap, Freqmap, Freqpixels, Freqwave, Gravfreq, Rocktaves, Waterfall) + um_data->u_type[ 0] = UMT_FLOAT; + um_data->u_data[ 1] = &soundAgc; //*used (2D Swirl, 2D Waverly, Gravcenter, Gravcentric, Gravimeter, Matripix, Midnoise, Noisefire, Noisemeter, Pixelwave, Plasmoid, Puddles, Binmap, Freqmap, Freqpixels, Freqwave, Gravfreq, Rocktaves, Waterfall) + um_data->u_type[ 1] = UMT_BYTE; + um_data->u_data[ 2] = &sampleAgc; //*used (can be calculated as: sampleReal * multAgc) (..., Juggles, ..., Pixels, Puddlepeak, Freqmatrix) + um_data->u_type[ 2] = UMT_FLOAT; + um_data->u_data[ 3] = &sampleRaw; //*used (Matripix, Noisemeter, Pixelwave, Puddles, 2D Swirl, for debugging Gravimeter) + um_data->u_type[ 3] = UMT_INT16; + um_data->u_data[ 4] = &rawSampleAgc; //*used (Matripix, Noisemeter, Pixelwave, Puddles, 2D Swirl) + um_data->u_type[ 4] = UMT_INT16; + um_data->u_data[ 5] = &samplePeak; //*used (Puddlepeak, Ripplepeak, Waterfall) + um_data->u_type[ 5] = UMT_BYTE; + um_data->u_data[ 6] = &FFT_MajorPeak; //*used (Ripplepeak, Freqmap, Freqmatrix, Freqpixels, Freqwave, Gravfreq, Rocktaves, Waterfall) + um_data->u_type[ 6] = UMT_DOUBLE; + um_data->u_data[ 7] = &FFT_Magnitude; //*used (Binmap, Freqmap, Freqpixels, Rocktaves, Waterfall) + um_data->u_type[ 7] = UMT_DOUBLE; + um_data->u_data[ 8] = fftResult; //*used (Blurz, DJ Light, Noisemove, GEQ_base, 2D Funky Plank, Akemi) + um_data->u_type[ 8] = UMT_BYTE_ARR; + um_data->u_data[ 9] = &maxVol; // assigned in effect function from UI element!!! (Puddlepeak, Ripplepeak, Waterfall) + um_data->u_type[ 9] = UMT_BYTE; + um_data->u_data[10] = &binNum; // assigned in effect function from UI element!!! (Puddlepeak, Ripplepeak, Waterfall) + um_data->u_type[10] = UMT_BYTE; + um_data->u_data[11] = &multAgc; //*used (for debugging) (Gravimeter, Binmap, Freqmap, Freqpixels, Rocktaves, Waterfall,) + um_data->u_type[11] = UMT_FLOAT; + um_data->u_data[12] = &sampleReal; //*used (for debugging) (Gravimeter) + um_data->u_type[12] = UMT_FLOAT; + um_data->u_data[13] = &sampleGain; //*used (for debugging) (Gravimeter, Binmap) + um_data->u_type[13] = UMT_FLOAT; + um_data->u_data[14] = myVals; //*used (only once, Pixels) + um_data->u_type[14] = UMT_UINT16_ARR; + um_data->u_data[15] = &soundSquelch; //*used (for debugging) (only once, Binmap) + um_data->u_type[15] = UMT_BYTE; + um_data->u_data[16] = fftBin; //*used (for debugging) (only once, Binmap) + um_data->u_type[16] = UMT_FLOAT_ARR; + um_data->u_data[17] = &inputLevel; // global UI element!!! (Gravimeter, Binmap) + um_data->u_type[17] = UMT_BYTE; + } + + // Reset I2S peripheral for good measure + i2s_driver_uninstall(I2S_NUM_0); + periph_module_reset(PERIPH_I2S0_MODULE); + + delay(100); // Give that poor microphone some time to setup. + switch (dmType) { + case 1: + DEBUGSR_PRINTLN(F("AS: Generic I2S Microphone.")); + audioSource = new I2SSource(SAMPLE_RATE, BLOCK_SIZE, 0, 0xFFFFFFFF); + delay(100); + if (audioSource) audioSource->initialize(i2swsPin, i2ssdPin, i2sckPin); + break; + case 2: + DEBUGSR_PRINTLN(F("AS: ES7243 Microphone.")); + audioSource = new ES7243(SAMPLE_RATE, BLOCK_SIZE, 0, 0xFFFFFFFF); + delay(100); + if (audioSource) audioSource->initialize(sdaPin, sclPin, i2swsPin, i2ssdPin, i2sckPin, mclkPin); + break; + case 3: + DEBUGSR_PRINTLN(F("AS: SPH0645 Microphone")); + audioSource = new SPH0654(SAMPLE_RATE, BLOCK_SIZE, 0, 0xFFFFFFFF); + delay(100); + audioSource->initialize(i2swsPin, i2ssdPin, i2sckPin); + break; + case 4: + DEBUGSR_PRINTLN(F("AS: Generic I2S Microphone with Master Clock")); + audioSource = new I2SSource(SAMPLE_RATE, BLOCK_SIZE, 0, 0xFFFFFFFF); + delay(100); + if (audioSource) audioSource->initialize(i2swsPin, i2ssdPin, i2sckPin, mclkPin); + break; + case 5: + DEBUGSR_PRINTLN(F("AS: I2S PDM Microphone")); + audioSource = new I2SSource(SAMPLE_RATE, BLOCK_SIZE, 0, 0xFFFFFFFF); + delay(100); + if (audioSource) audioSource->initialize(i2swsPin, i2ssdPin); + break; + case 0: + default: + DEBUGSR_PRINTLN(F("AS: Analog Microphone.")); + // we don't do the down-shift by 16bit any more + //audioSource = new I2SAdcSource(SAMPLE_RATE, BLOCK_SIZE, -4, 0x0FFF); // request upscaling to 16bit - still produces too much noise + audioSource = new I2SAdcSource(SAMPLE_RATE, BLOCK_SIZE, 0, 0x0FFF); // keep at 12bit - less noise + delay(100); + if (audioSource) audioSource->initialize(audioPin); + break; + } + delay(250); // give mictophone enough time to initialise + + if (!audioSource) enabled = false; // audio failed to initialise + if (enabled) onUpdateBegin(false); // create FFT task + + initDone = true; + } + + + /* + * connected() is called every time the WiFi is (re)connected + * Use it to initialize network interfaces + */ + void connected() + { + if (audioSyncPort > 0 || (audioSyncEnabled & 0x03)) { + #ifndef ESP8266 + udpSyncConnected = fftUdp.beginMulticast(IPAddress(239, 0, 0, 1), audioSyncPort); + #else + udpSyncConnected = fftUdp.beginMulticast(WiFi.localIP(), IPAddress(239, 0, 0, 1), audioSyncPort); + #endif + } + } + + + /* + * loop() is called continuously. Here you can check for events, read sensors, etc. + * + * Tips: + * 1. You can use "if (WLED_CONNECTED)" to check for a successful network connection. + * Additionally, "if (WLED_MQTT_CONNECTED)" is available to check for a connection to an MQTT broker. + * + * 2. Try to avoid using the delay() function. NEVER use delays longer than 10 milliseconds. + * Instead, use a timer check as shown here. + */ + void loop() + { + if (!enabled || strip.isUpdating()) return; + + if (!(audioSyncEnabled & 0x02)) { // Only run the sampling code IF we're not in Receive mode + bool agcEffect = false; + + if (soundAgc > AGC_NUM_PRESETS) soundAgc = 0; // make sure that AGC preset is valid (to avoid array bounds violation) + + getSample(); // Sample the microphone + agcAvg(); // Calculated the PI adjusted value as sampleAvg + + myVals[millis()%32] = sampleAgc; // filling values semi randomly (why?) + + uint8_t knownMode = strip.getFirstSelectedSeg().mode; // 1st selected segment is more appropriate than main segment + + if (lastMode != knownMode) { // only execute if mode changes + char lineBuffer[4]; + extractModeName(knownMode, JSON_mode_names, lineBuffer, 3); // use of JSON_mode_names is deprecated, use nullptr + agcEffect = (lineBuffer[1] == 226 && lineBuffer[2] == 153); // && (lineBuffer[3] == 170 || lineBuffer[3] == 171 ) encoding of ♪ or ♫ + // agcEffect = (lineBuffer[4] == 240 && lineBuffer[5] == 159 && lineBuffer[6] == 142 && lineBuffer[7] == 154 ); //encoding of 🎚 No clue why as not found here https://www.iemoji.com/view/emoji/918/objects/level-slider + lastMode = knownMode; + } + + // update inputLevel Slider based on current AGC gain + if ((soundAgc>0) && agcEffect) { + unsigned long now_time = millis(); + + // "user kick" feature - if user has moved the slider by at least 32 units, we "kick" AGC gain by 30% (up or down) + // only once in 3.5 seconds + if ( (lastMode == knownMode) + && (abs(last_user_inputLevel - inputLevel) > 31) + && (now_time - last_kick_time > 3500)) { + if (last_user_inputLevel > inputLevel) multAgc *= 0.60; // down -> reduce gain + if (last_user_inputLevel < inputLevel) multAgc *= 1.50; // up -> increase gain + last_kick_time = now_time; + } + + int new_user_inputLevel = 128.0f * multAgc; // scale AGC multiplier so that "1" is at 128 + if (multAgc > 1.0f) new_user_inputLevel = 128.0f * (((multAgc - 1.0f) / 4.0f) +1.0f); // compress range so we can show values up to 4 + new_user_inputLevel = MIN(MAX(new_user_inputLevel, 0),255); + + // update user interfaces - restrict frequency to avoid flooding UI's with small changes + if ( (((now_time - last_update_time > 3500) && (abs(new_user_inputLevel - inputLevel) > 2)) // small change - every 3.5 sec (max) + || ((now_time - last_update_time > 2200) && (abs(new_user_inputLevel - inputLevel) > 15)) // medium change + || ((now_time - last_update_time > 1200) && (abs(new_user_inputLevel - inputLevel) > 31))) ) // BIG change - every second + { + inputLevel = new_user_inputLevel; // change of least 3 units -> update user variable + updateInterfaces(CALL_MODE_WS_SEND); // is this the correct way to notify UIs ? Yes says blazoncek + last_update_time = now_time; + last_user_inputLevel = new_user_inputLevel; + } + } + + #if defined(MIC_LOGGER) || defined(MIC_SAMPLING_LOG) || defined(FFT_SAMPLING_LOG) + EVERY_N_MILLIS(20) { + logAudio(); + } + #endif + } + + // Begin UDP Microphone Sync + if ((audioSyncEnabled & 0x02) && millis() - lastTime > delayMs) // Only run the audio listener code if we're in Receive mode + receiveAudioData(); + + if (millis() - lastTime > 20) { + if (audioSyncEnabled & 0x01) { // Only run the transmit code IF we're in Transmit mode + transmitAudioData(); + } + lastTime = millis(); + } + } + + + bool getUMData(um_data_t **data) + { + if (!data || !enabled) return false; // no pointer provided by caller or not enabled -> exit + *data = um_data; + return true; + } + + + void onUpdateBegin(bool init) + { + if (init) vTaskDelete(FFT_Task); // update is about to begin, remove task to prevent crash + else { // update has failed or create task requested + // Define the FFT Task and lock it to core 0 + xTaskCreatePinnedToCore( + FFTcode, // Function to implement the task + "FFT", // Name of the task + 5000, // Stack size in words + NULL, // Task input parameter + 1, // Priority of the task + &FFT_Task, // Task handle + 0); // Core where the task should run + } + } + + + /** + * handleButton() can be used to override default button behaviour. Returning true + * will prevent button working in a default way. + */ + bool handleButton(uint8_t b) { + yield(); + // crude way of determining if audio input is analog + // better would be for AudioSource to implement getType() + if (enabled + && dmType == 0 && audioPin>=0 + && (buttonType[b] == BTN_TYPE_ANALOG || buttonType[b] == BTN_TYPE_ANALOG_INVERTED) + ) { + return true; + } + return false; + } + + + /* + * addToJsonInfo() can be used to add custom entries to the /json/info part of the JSON API. + * Creating an "u" object allows you to add custom key/value pairs to the Info section of the WLED web UI. + * Below it is shown how this could be used for e.g. a light sensor + */ + void addToJsonInfo(JsonObject& root) + { + JsonObject user = root["u"]; + if (user.isNull()) user = root.createNestedObject("u"); + + JsonArray infoArr = user.createNestedArray(FPSTR(_name)); + + String uiDomString = F(""); + infoArr.add(uiDomString); + } + + + /* + * addToJsonState() can be used to add custom entries to the /json/state part of the JSON API (state object). + * Values in the state object may be modified by connected clients + */ + /* + void addToJsonState(JsonObject& root) + { + //root["user0"] = userVar0; + } + */ + + + /* + * readFromJsonState() can be used to receive data clients send to the /json/state part of the JSON API (state object). + * Values in the state object may be modified by connected clients + */ + void readFromJsonState(JsonObject& root) + { + if (!initDone) return; // prevent crash on boot applyPreset() + bool prevEnabled = enabled; + JsonObject usermod = root[FPSTR(_name)]; + if (!usermod.isNull()) { + if (usermod[FPSTR(_enabled)].is()) { + enabled = usermod[FPSTR(_enabled)].as(); + if (prevEnabled != enabled) onUpdateBegin(!enabled); + } + } + } + + + /* + * addToConfig() can be used to add custom persistent settings to the cfg.json file in the "um" (usermod) object. + * It will be called by WLED when settings are actually saved (for example, LED settings are saved) + * If you want to force saving the current state, use serializeConfig() in your loop(). + * + * CAUTION: serializeConfig() will initiate a filesystem write operation. + * It might cause the LEDs to stutter and will cause flash wear if called too often. + * Use it sparingly and always in the loop, never in network callbacks! + * + * addToConfig() will make your settings editable through the Usermod Settings page automatically. + * + * Usermod Settings Overview: + * - Numeric values are treated as floats in the browser. + * - If the numeric value entered into the browser contains a decimal point, it will be parsed as a C float + * before being returned to the Usermod. The float data type has only 6-7 decimal digits of precision, and + * doubles are not supported, numbers will be rounded to the nearest float value when being parsed. + * The range accepted by the input field is +/- 1.175494351e-38 to +/- 3.402823466e+38. + * - If the numeric value entered into the browser doesn't contain a decimal point, it will be parsed as a + * C int32_t (range: -2147483648 to 2147483647) before being returned to the usermod. + * Overflows or underflows are truncated to the max/min value for an int32_t, and again truncated to the type + * used in the Usermod when reading the value from ArduinoJson. + * - Pin values can be treated differently from an integer value by using the key name "pin" + * - "pin" can contain a single or array of integer values + * - On the Usermod Settings page there is simple checking for pin conflicts and warnings for special pins + * - Red color indicates a conflict. Yellow color indicates a pin with a warning (e.g. an input-only pin) + * - Tip: use int8_t to store the pin value in the Usermod, so a -1 value (pin not set) can be used + * + * See usermod_v2_auto_save.h for an example that saves Flash space by reusing ArduinoJson key name strings + * + * If you need a dedicated settings page with custom layout for your Usermod, that takes a lot more work. + * You will have to add the setting to the HTML, xml.cpp and set.cpp manually. + * See the WLED Soundreactive fork (code and wiki) for reference. https://github.com/atuline/WLED + * + * I highly recommend checking out the basics of ArduinoJson serialization and deserialization in order to use custom settings! + */ + void addToConfig(JsonObject& root) + { + JsonObject top = root.createNestedObject(FPSTR(_name)); + top[FPSTR(_enabled)] = enabled; + + JsonObject amic = top.createNestedObject(FPSTR(_analogmic)); + amic["pin"] = audioPin; + + JsonObject dmic = top.createNestedObject(FPSTR(_digitalmic)); + dmic[F("type")] = dmType; + JsonArray pinArray = dmic.createNestedArray("pin"); + pinArray.add(i2ssdPin); + pinArray.add(i2swsPin); + pinArray.add(i2sckPin); + pinArray.add(mclkPin); + pinArray.add(sdaPin); + pinArray.add(sclPin); + + JsonObject cfg = top.createNestedObject("cfg"); + cfg[F("squelch")] = soundSquelch; + cfg[F("gain")] = sampleGain; + cfg[F("AGC")] = soundAgc; + + JsonObject sync = top.createNestedObject("sync"); + sync[F("port")] = audioSyncPort; + sync[F("send")] = (bool) (audioSyncEnabled & 0x01); + sync[F("receive")] = (bool) (audioSyncEnabled & 0x02); + } + + + /* + * readFromConfig() can be used to read back the custom settings you added with addToConfig(). + * This is called by WLED when settings are loaded (currently this only happens immediately after boot, or after saving on the Usermod Settings page) + * + * readFromConfig() is called BEFORE setup(). This means you can use your persistent values in setup() (e.g. pin assignments, buffer sizes), + * but also that if you want to write persistent values to a dynamic buffer, you'd need to allocate it here instead of in setup. + * If you don't know what that is, don't fret. It most likely doesn't affect your use case :) + * + * Return true in case the config values returned from Usermod Settings were complete, or false if you'd like WLED to save your defaults to disk (so any missing values are editable in Usermod Settings) + * + * getJsonValue() returns false if the value is missing, or copies the value into the variable provided and returns true if the value is present + * The configComplete variable is true only if the "exampleUsermod" object and all values are present. If any values are missing, WLED will know to call addToConfig() to save them + * + * This function is guaranteed to be called on boot, but could also be called every time settings are updated + */ + bool readFromConfig(JsonObject& root) + { + JsonObject top = root[FPSTR(_name)]; + bool configComplete = !top.isNull(); + + configComplete &= getJsonValue(top[FPSTR(_enabled)], enabled); + + configComplete &= getJsonValue(top[FPSTR(_analogmic)]["pin"], audioPin); + + configComplete &= getJsonValue(top[FPSTR(_digitalmic)]["type"], dmType); + configComplete &= getJsonValue(top[FPSTR(_digitalmic)]["pin"][0], i2ssdPin); + configComplete &= getJsonValue(top[FPSTR(_digitalmic)]["pin"][1], i2swsPin); + configComplete &= getJsonValue(top[FPSTR(_digitalmic)]["pin"][2], i2sckPin); + configComplete &= getJsonValue(top[FPSTR(_digitalmic)]["pin"][3], mclkPin); + configComplete &= getJsonValue(top[FPSTR(_digitalmic)]["pin"][4], sdaPin); + configComplete &= getJsonValue(top[FPSTR(_digitalmic)]["pin"][5], sclPin); + + configComplete &= getJsonValue(top["cfg"][F("squelch")], soundSquelch); + configComplete &= getJsonValue(top["cfg"][F("gain")], sampleGain); + configComplete &= getJsonValue(top["cfg"][F("AGC")], soundAgc); + + configComplete &= getJsonValue(top["sync"][F("port")], audioSyncPort); + + bool send = audioSyncEnabled & 0x01; + bool receive = audioSyncEnabled & 0x02; + configComplete &= getJsonValue(top["sync"][F("send")], send); + configComplete &= getJsonValue(top["sync"][F("receive")], receive); + audioSyncEnabled = send | (receive << 1); + + return configComplete; + } + + + void appendConfigData() + { + oappend(SET_F("dd=addDropdown('AudioReactive','digitalmic:type');")); + oappend(SET_F("addOption(dd,'Generic Analog',0);")); + oappend(SET_F("addOption(dd,'Generic I2S',1);")); + oappend(SET_F("addOption(dd,'ES7243',2);")); + oappend(SET_F("addOption(dd,'SPH0654',3);")); + oappend(SET_F("addOption(dd,'Generic I2S with Mclk',4);")); + oappend(SET_F("addOption(dd,'Generic I2S PDM',5);")); + oappend(SET_F("dd=addDropdown('AudioReactive','cfg:AGC');")); + oappend(SET_F("addOption(dd,'Off',0);")); + oappend(SET_F("addOption(dd,'Normal',1);")); + oappend(SET_F("addOption(dd,'Vivid',2);")); + oappend(SET_F("addOption(dd,'Lazy',3);")); + oappend(SET_F("addInfo('AudioReactive:digitalmic:type',1,'requires reboot!');")); // 0 is field type, 1 is actual field + oappend(SET_F("addInfo('AudioReactive:digitalmic:pin[]',0,'I2S SD');")); + oappend(SET_F("addInfo('AudioReactive:digitalmic:pin[]',1,'I2S WS');")); + oappend(SET_F("addInfo('AudioReactive:digitalmic:pin[]',2,'I2S SCK');")); + oappend(SET_F("addInfo('AudioReactive:digitalmic:pin[]',3,'I2S Master CLK');")); + oappend(SET_F("addInfo('AudioReactive:digitalmic:pin[]',4,'I2C SDA');")); + oappend(SET_F("addInfo('AudioReactive:digitalmic:pin[]',5,'I2C SCL');")); + } + + + /* + * handleOverlayDraw() is called just before every show() (LED strip update frame) after effects have set the colors. + * Use this to blank out some LEDs or set them to a different color regardless of the set effect mode. + * Commonly used for custom clocks (Cronixie, 7 segment) + */ + //void handleOverlayDraw() + //{ + //strip.setPixelColor(0, RGBW32(0,0,0,0)) // set the first pixel to black + //} + + + /* + * getId() allows you to optionally give your V2 usermod an unique ID (please define it in const.h!). + * This could be used in the future for the system to determine whether your usermod is installed. + */ + uint16_t getId() + { + return USERMOD_ID_AUDIOREACTIVE; + } +}; + +// strings to reduce flash memory usage (used more than twice) +const char AudioReactive::_name[] PROGMEM = "AudioReactive"; +const char AudioReactive::_enabled[] PROGMEM = "enabled"; +const char AudioReactive::_analogmic[] PROGMEM = "analogmic"; +const char AudioReactive::_digitalmic[] PROGMEM = "digitalmic"; +const char AudioReactive::UDP_SYNC_HEADER[] PROGMEM = "00001"; diff --git a/usermods/audioreactive/audio_source.h b/usermods/audioreactive/audio_source.h new file mode 100644 index 00000000..00c702c5 --- /dev/null +++ b/usermods/audioreactive/audio_source.h @@ -0,0 +1,426 @@ +#pragma once + +#include +#include "wled.h" +#include + +/* ToDo: remove. ES7243 is controlled via compiler defines + Until this configuration is moved to the webinterface +*/ + +// data type requested from the I2S driver - currently we always use 32bit +//#define I2S_USE_16BIT_SAMPLES // (experimental) define this to request 16bit - more efficient but possibly less compatible +#ifdef I2S_USE_16BIT_SAMPLES +#define I2S_SAMPLE_RESOLUTION I2S_BITS_PER_SAMPLE_16BIT +#define I2S_datatype int16_t +#undef I2S_SAMPLE_DOWNSCALE_TO_16BIT +#else +#define I2S_SAMPLE_RESOLUTION I2S_BITS_PER_SAMPLE_32BIT +#define I2S_datatype int32_t +#define I2S_SAMPLE_DOWNSCALE_TO_16BIT +#endif + + +/* Interface class + AudioSource serves as base class for all microphone types + This enables accessing all microphones with one single interface + which simplifies the caller code +*/ +class AudioSource { + public: + /* All public methods are virtual, so they can be overridden + Everything but the destructor is also removed, to make sure each mic + Implementation provides its version of this function + */ + virtual ~AudioSource() {}; + + /* Initialize + This function needs to take care of anything that needs to be done + before samples can be obtained from the microphone. + */ + virtual void initialize(int8_t = I2S_PIN_NO_CHANGE, int8_t = I2S_PIN_NO_CHANGE, int8_t = I2S_PIN_NO_CHANGE, int8_t = I2S_PIN_NO_CHANGE, int8_t = I2S_PIN_NO_CHANGE, int8_t = I2S_PIN_NO_CHANGE) = 0; + + /* Deinitialize + Release all resources and deactivate any functionality that is used + by this microphone + */ + virtual void deinitialize() = 0; + + /* getSamples + Read num_samples from the microphone, and store them in the provided + buffer + */ + virtual void getSamples(double *buffer, uint16_t num_samples) = 0; + + /* Get an up-to-date sample without DC offset */ + virtual int getSampleWithoutDCOffset() { return _sampleNoDCOffset; }; + + protected: + // Private constructor, to make sure it is not callable except from derived classes + AudioSource(int sampleRate, int blockSize, int16_t lshift, uint32_t mask) : + _sampleRate(sampleRate), + _blockSize(blockSize), + _sampleNoDCOffset(0), + _dcOffset(0.0f), + _shift(lshift), + _mask(mask), + _initialized(false) + {}; + + int _sampleRate; // Microphone sampling rate + int _blockSize; // I2S block size + volatile int _sampleNoDCOffset; // Up-to-date sample without DCOffset + float _dcOffset; // Rolling average DC offset + int16_t _shift; // Shift obtained samples to the right (positive) or left(negative) by this amount + uint32_t _mask; // Bitmask for sample data after shifting. Bitmask 0X0FFF means that we need to convert 12bit ADC samples from unsigned to signed + bool _initialized; // Gets set to true if initialization is successful +}; + +/* Basic I2S microphone source + All functions are marked virtual, so derived classes can replace them +*/ +class I2SSource : public AudioSource { + public: + I2SSource(int sampleRate, int blockSize, int16_t lshift, uint32_t mask) : + AudioSource(sampleRate, blockSize, lshift, mask) { + _config = { + .mode = i2s_mode_t(I2S_MODE_MASTER | I2S_MODE_RX), + .sample_rate = _sampleRate, + .bits_per_sample = I2S_SAMPLE_RESOLUTION, + .channel_format = I2S_CHANNEL_FMT_ONLY_LEFT, + .communication_format = i2s_comm_format_t(I2S_COMM_FORMAT_I2S | I2S_COMM_FORMAT_I2S_MSB), + .intr_alloc_flags = ESP_INTR_FLAG_LEVEL1, + .dma_buf_count = 8, + .dma_buf_len = _blockSize + }; + } + + virtual void initialize(int8_t i2swsPin = I2S_PIN_NO_CHANGE, int8_t i2ssdPin = I2S_PIN_NO_CHANGE, int8_t i2sckPin = I2S_PIN_NO_CHANGE, int8_t mclkPin = I2S_PIN_NO_CHANGE, int8_t = I2S_PIN_NO_CHANGE, int8_t = I2S_PIN_NO_CHANGE) { + if (i2swsPin != I2S_PIN_NO_CHANGE && i2ssdPin != I2S_PIN_NO_CHANGE) { + if (!pinManager.allocatePin(i2swsPin, true, PinOwner::UM_Audioreactive) || + !pinManager.allocatePin(i2ssdPin, false, PinOwner::UM_Audioreactive)) { // #206 + return; + } + } + + // i2ssckPin needs special treatment, since it might be unused on PDM mics + if (i2sckPin != I2S_PIN_NO_CHANGE) { + if (!pinManager.allocatePin(i2sckPin, true, PinOwner::UM_Audioreactive)) return; + } else { + // This is an I2S PDM microphone, these microphones only use a clock and + // data line, to make it simpler to debug, use the WS pin as CLK and SD + // pin as DATA + _config.mode = i2s_mode_t(I2S_MODE_MASTER | I2S_MODE_RX | I2S_MODE_PDM); // Change mode to pdm if clock pin not provided + } + + // Reserve the master clock pin if provided + _mclkPin = mclkPin; + if (mclkPin != I2S_PIN_NO_CHANGE) { + if(!pinManager.allocatePin(mclkPin, true, PinOwner::UM_Audioreactive)) return; + _routeMclk(mclkPin); + } + + _pinConfig = { + .bck_io_num = i2sckPin, + .ws_io_num = i2swsPin, + .data_out_num = I2S_PIN_NO_CHANGE, + .data_in_num = i2ssdPin + }; + + esp_err_t err = i2s_driver_install(I2S_NUM_0, &_config, 0, nullptr); + if (err != ESP_OK) { + DEBUGSR_PRINTF("Failed to install i2s driver: %d\n", err); + return; + } + + err = i2s_set_pin(I2S_NUM_0, &_pinConfig); + if (err != ESP_OK) { + DEBUGSR_PRINTF("Failed to set i2s pin config: %d\n", err); + return; + } + + _initialized = true; + } + + virtual void deinitialize() { + _initialized = false; + esp_err_t err = i2s_driver_uninstall(I2S_NUM_0); + if (err != ESP_OK) { + DEBUGSR_PRINTF("Failed to uninstall i2s driver: %d\n", err); + return; + } + if (_pinConfig.ws_io_num != I2S_PIN_NO_CHANGE) pinManager.deallocatePin(_pinConfig.ws_io_num, PinOwner::UM_Audioreactive); + if (_pinConfig.data_in_num != I2S_PIN_NO_CHANGE) pinManager.deallocatePin(_pinConfig.data_in_num, PinOwner::UM_Audioreactive); + if (_pinConfig.bck_io_num != I2S_PIN_NO_CHANGE) pinManager.deallocatePin(_pinConfig.bck_io_num, PinOwner::UM_Audioreactive); + // Release the master clock pin + if (_mclkPin != I2S_PIN_NO_CHANGE) pinManager.deallocatePin(_mclkPin, PinOwner::UM_Audioreactive); + } + + virtual void getSamples(double *buffer, uint16_t num_samples) { + if (_initialized) { + esp_err_t err; + size_t bytes_read = 0; /* Counter variable to check if we actually got enough data */ + I2S_datatype newSamples[num_samples]; /* Intermediary sample storage */ + + // Reset dc offset + _dcOffset = 0.0f; + + err = i2s_read(I2S_NUM_0, (void *)newSamples, sizeof(newSamples), &bytes_read, portMAX_DELAY); + if (err != ESP_OK) { + DEBUGSR_PRINTF("Failed to get samples: %d\n", err); + return; + } + + // For correct operation, we need to read exactly sizeof(samples) bytes from i2s + if (bytes_read != sizeof(newSamples)) { + DEBUGSR_PRINTF("Failed to get enough samples: wanted: %d read: %d\n", sizeof(newSamples), bytes_read); + return; + } + + // Store samples in sample buffer and update DC offset + for (int i = 0; i < num_samples; i++) { + // pre-shift samples down to 16bit +#ifdef I2S_SAMPLE_DOWNSCALE_TO_16BIT + if (_shift != 0) + newSamples[i] >>= 16; +#endif + double currSample = 0.0; + if(_shift > 0) + currSample = (double) (newSamples[i] >> _shift); + else { + if(_shift < 0) + currSample = (double) (newSamples[i] << (- _shift)); // need to "pump up" 12bit ADC to full 16bit as delivered by other digital mics + else +#ifdef I2S_SAMPLE_DOWNSCALE_TO_16BIT + currSample = (double) newSamples[i] / 65536.0; // _shift == 0 -> use the chance to keep lower 16bits +#else + currSample = (double) newSamples[i]; +#endif + } + buffer[i] = currSample; + _dcOffset = ((_dcOffset * 31) + currSample) / 32; + } + + // Update no-DC sample + _sampleNoDCOffset = buffer[num_samples - 1] - _dcOffset; + } + } + + protected: + void _routeMclk(int8_t mclkPin) { + /* Enable the mclk routing depending on the selected mclk pin + Only I2S_NUM_0 is supported + */ + if (mclkPin == GPIO_NUM_0) { + PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO0_U, FUNC_GPIO0_CLK_OUT1); + WRITE_PERI_REG(PIN_CTRL,0xFFF0); + } else if (mclkPin == GPIO_NUM_1) { + PIN_FUNC_SELECT(PERIPHS_IO_MUX_U0TXD_U, FUNC_U0TXD_CLK_OUT3); + WRITE_PERI_REG(PIN_CTRL, 0xF0F0); + } else { + PIN_FUNC_SELECT(PERIPHS_IO_MUX_U0RXD_U, FUNC_U0RXD_CLK_OUT2); + WRITE_PERI_REG(PIN_CTRL, 0xFF00); + } + } + + i2s_config_t _config; + i2s_pin_config_t _pinConfig; + int8_t _mclkPin; +}; + +/* ES7243 Microphone + This is an I2S microphone that requires ininitialization over + I2C before I2S data can be received +*/ +class ES7243 : public I2SSource { + private: + // I2C initialization functions for ES7243 + void _es7243I2cBegin() { + Wire.begin(pin_ES7243_SDA, pin_ES7243_SCL, 100000U); + } + + void _es7243I2cWrite(uint8_t reg, uint8_t val) { +#ifndef ES7243_ADDR + Wire.beginTransmission(0x13); +#else + Wire.beginTransmission(ES7243_ADDR); +#endif + Wire.write((uint8_t)reg); + Wire.write((uint8_t)val); + Wire.endTransmission(); + } + + void _es7243InitAdc() { + _es7243I2cBegin(); + _es7243I2cWrite(0x00, 0x01); + _es7243I2cWrite(0x06, 0x00); + _es7243I2cWrite(0x05, 0x1B); + _es7243I2cWrite(0x01, 0x00); // 0x00 for 24 bit to match INMP441 - not sure if this needs adjustment to get 16bit samples from I2S + _es7243I2cWrite(0x08, 0x43); + _es7243I2cWrite(0x05, 0x13); + } + +public: + ES7243(int sampleRate, int blockSize, int16_t lshift, uint32_t mask) : + I2SSource(sampleRate, blockSize, lshift, mask) { + _config.channel_format = I2S_CHANNEL_FMT_ONLY_RIGHT; + }; + + void initialize(int8_t sdaPin, int8_t sclPin, int8_t i2swsPin, int8_t i2ssdPin, int8_t i2sckPin, int8_t mclkPin) { + // Reserve SDA and SCL pins of the I2C interface + if (!pinManager.allocatePin(sdaPin, true, PinOwner::HW_I2C) || + !pinManager.allocatePin(sclPin, true, PinOwner::HW_I2C)) { + return; + } + + pin_ES7243_SDA = sdaPin; + pin_ES7243_SCL = sclPin; + + // First route mclk, then configure ADC over I2C, then configure I2S + _es7243InitAdc(); + I2SSource::initialize(i2swsPin, i2ssdPin, i2sckPin, mclkPin); + } + + void deinitialize() { + // Release SDA and SCL pins of the I2C interface + pinManager.deallocatePin(pin_ES7243_SDA, PinOwner::HW_I2C); + pinManager.deallocatePin(pin_ES7243_SCL, PinOwner::HW_I2C); + I2SSource::deinitialize(); + } + + private: + int8_t pin_ES7243_SDA; + int8_t pin_ES7243_SCL; +}; + +/* ADC over I2S Microphone + This microphone is an ADC pin sampled via the I2S interval + This allows to use the I2S API to obtain ADC samples with high sample rates + without the need of manual timing of the samples +*/ +class I2SAdcSource : public I2SSource { + public: + I2SAdcSource(int sampleRate, int blockSize, int16_t lshift, uint32_t mask) : + I2SSource(sampleRate, blockSize, lshift, mask) { + _config = { + .mode = i2s_mode_t(I2S_MODE_MASTER | I2S_MODE_RX | I2S_MODE_ADC_BUILT_IN), + .sample_rate = _sampleRate, + .bits_per_sample = I2S_SAMPLE_RESOLUTION, + .channel_format = I2S_CHANNEL_FMT_ONLY_LEFT, + .communication_format = i2s_comm_format_t(I2S_COMM_FORMAT_I2S | I2S_COMM_FORMAT_I2S_MSB), + .intr_alloc_flags = ESP_INTR_FLAG_LEVEL2, + .dma_buf_count = 8, + .dma_buf_len = _blockSize + }; + } + + void initialize(int8_t audioPin, int8_t = I2S_PIN_NO_CHANGE, int8_t = I2S_PIN_NO_CHANGE, int8_t = I2S_PIN_NO_CHANGE, int8_t = I2S_PIN_NO_CHANGE, int8_t = I2S_PIN_NO_CHANGE) { + if(!pinManager.allocatePin(audioPin, false, PinOwner::UM_Audioreactive)) { + return; + } + _audioPin = audioPin; + + // Determine Analog channel. Only Channels on ADC1 are supported + int8_t channel = digitalPinToAnalogChannel(_audioPin); + if (channel > 9) { + DEBUGSR_PRINTF("Incompatible GPIO used for audio in: %d\n", _audioPin); + return; + } else { + adc_gpio_init(ADC_UNIT_1, adc_channel_t(channel)); + } + + // Install Driver + esp_err_t err = i2s_driver_install(I2S_NUM_0, &_config, 0, nullptr); + if (err != ESP_OK) { + DEBUGSR_PRINTF("Failed to install i2s driver: %d\n", err); + return; + } + + // Enable I2S mode of ADC + err = i2s_set_adc_mode(ADC_UNIT_1, adc1_channel_t(channel)); + if (err != ESP_OK) { + DEBUGSR_PRINTF("Failed to set i2s adc mode: %d\n", err); + return; + } + +#if defined(ARDUINO_ARCH_ESP32) + // according to docs from espressif, the ADC needs to be started explicitly + // fingers crossed + err = i2s_adc_enable(I2S_NUM_0); + if (err != ESP_OK) { + DEBUGSR_PRINTF("Failed to enable i2s adc: %d\n", err); + //return; + } +#endif + + _initialized = true; + } + + void getSamples(double *buffer, uint16_t num_samples) { + /* Enable ADC. This has to be enabled and disabled directly before and + * after sampling, otherwise Wifi dies + */ + if (_initialized) { +#if !defined(ARDUINO_ARCH_ESP32) + // old code - works for me without enable/disable, at least on ESP32. + esp_err_t err = i2s_adc_enable(I2S_NUM_0); + //esp_err_t err = i2s_start(I2S_NUM_0); + if (err != ESP_OK) { + DEBUGSR_PRINTF("Failed to enable i2s adc: %d\n", err); + return; + } +#endif + I2SSource::getSamples(buffer, num_samples); + +#if !defined(ARDUINO_ARCH_ESP32) + // old code - works for me without enable/disable, at least on ESP32. + err = i2s_adc_disable(I2S_NUM_0); + //err = i2s_stop(I2S_NUM_0); + if (err != ESP_OK) { + DEBUGSR_PRINTF("Failed to disable i2s adc: %d\n", err); + return; + } +#endif + } + } + + void deinitialize() { + pinManager.deallocatePin(_audioPin, PinOwner::UM_Audioreactive); + _initialized = false; + esp_err_t err; +#if defined(ARDUINO_ARCH_ESP32) + // according to docs from espressif, the ADC needs to be stopped explicitly + // fingers crossed + err = i2s_adc_disable(I2S_NUM_0); + if (err != ESP_OK) { + DEBUGSR_PRINTF("Failed to disable i2s adc: %d\n", err); + //return; + } +#endif + err = i2s_driver_uninstall(I2S_NUM_0); + if (err != ESP_OK) { + DEBUGSR_PRINTF("Failed to uninstall i2s driver: %d\n", err); + return; + } + } + + private: + int8_t _audioPin; +}; + +/* SPH0645 Microphone + This is an I2S microphone with some timing quirks that need + special consideration. +*/ +class SPH0654 : public I2SSource { + public: + SPH0654(int sampleRate, int blockSize, int16_t lshift, uint32_t mask) : + I2SSource(sampleRate, blockSize, lshift, mask) + {} + + void initialize(uint8_t i2swsPin, uint8_t i2ssdPin, uint8_t i2sckPin, int8_t = I2S_PIN_NO_CHANGE, int8_t = I2S_PIN_NO_CHANGE, int8_t = I2S_PIN_NO_CHANGE) { + I2SSource::initialize(i2swsPin, i2ssdPin, i2sckPin); + REG_SET_BIT(I2S_TIMING_REG(I2S_NUM_0), BIT(9)); + REG_SET_BIT(I2S_CONF_REG(I2S_NUM_0), I2S_RX_MSB_SHIFT); + } +}; diff --git a/usermods/audioreactive/readme.md b/usermods/audioreactive/readme.md new file mode 100644 index 00000000..ac13bb57 --- /dev/null +++ b/usermods/audioreactive/readme.md @@ -0,0 +1,34 @@ +# Audioreactive usermod + +This usermod allows controlling LEDs using audio input. Audio input can be either microphone or analog-in (AUX) using appropriate adapter. +Supported microphones range from analog (MAX4466, MAX9814, ...) to digital (INMP441, ICS-43434, ...). + +The usermod does audio processing and provides data structure that specially written effect can use. + +The usermod **does not** provide effects or draws anything to LED strip/matrix. + +## Installation + +Add `-D USERMOD_AUDIOREACTIVE` to your PlatformIO environment as well as `arduinoFFT @ 1.5.6` to your `lib_deps`. +If you are not using PlatformIO (which you should) try adding `#define USERMOD_AUDIOREACTIVE` to *my_config.h* and make sure you have _arduinoFFT_ library downloaded and installed. + +## Configuration + +All parameters are runtime configurable though some may require hard boot after change (I2S microphone or selected GPIOs). + +If you want to define default GPIOs during compile time use the following (default values in parentheses): + +- `DMTYPE=x` : defines digital microphone type: 0=analog, 1=generic I2S, 2=ES7243 I2S, 3=SPH0645 I2S, 4=generic I2S with master clock, 5=PDM I2S +- `AUDIOPIN=x` : GPIO for analog microphone/AUX-in (36) +- `I2S_SDPIN=x` : GPIO for SD pin on digital mcrophone (32) +- `I2S_WSPIN=x` : GPIO for WS pin on digital mcrophone (15) +- `I2S_CKPIN=x` : GPIO for SCK pin on digital mcrophone (14) +- `ES7243_SDAPIN` : GPIO for I2C SDA pin on ES7243 microphone (-1) +- `ES7243_SCLPIN` : GPIO for I2C SCL pin on ES7243 microphone (-1) +- `MCLK_PIN=x` : GPIO for master clock pin on digital mcrophone (-1) + +**NOTE** Due to the fact that usermod uses I2S peripherial for analog audio sampling, use of analog *buttons* (i.e. potentiometers) is disabled while running this usermod with analog microphone. + +## Release notes + +2022-06 Ported from [soundreactive](https://github.com/atuline/WLED) by @blazoncek (AKA Blaz Kristan) diff --git a/usermods/multi_relay/usermod_multi_relay.h b/usermods/multi_relay/usermod_multi_relay.h index b38c8a25..75258608 100644 --- a/usermods/multi_relay/usermod_multi_relay.h +++ b/usermods/multi_relay/usermod_multi_relay.h @@ -468,13 +468,17 @@ class MultiRelay : public Usermod { if (user.isNull()) user = root.createNestedObject("u"); - JsonArray infoArr = user.createNestedArray(F("Number of relays")); //name + JsonArray infoArr = user.createNestedArray(FPSTR(_name)); //name infoArr.add(String(getActiveRelayCount())); + infoArr.add(F(" relays")); String uiDomString; for (uint8_t i=0; i"); - uiDomString += F("Relay "); - uiDomString += i; - uiDomString += F(" "); - JsonArray infoArr = user.createNestedArray(uiDomString); // timer value - - infoArr.add(_relay[i].state ? "on" : "off"); + uiDomString += F(""); + infoArr.add(uiDomString); } } } diff --git a/usermods/usermod_v2_four_line_display_ALT/usermod_v2_four_line_display_ALT.h b/usermods/usermod_v2_four_line_display_ALT/usermod_v2_four_line_display_ALT.h index 383accc5..4b179ee8 100644 --- a/usermods/usermod_v2_four_line_display_ALT/usermod_v2_four_line_display_ALT.h +++ b/usermods/usermod_v2_four_line_display_ALT/usermod_v2_four_line_display_ALT.h @@ -581,6 +581,10 @@ class FourLineDisplayUsermod : public Usermod { // remove "* " from dynamic palettes for (byte i=2; i<=printedChars; i++) lineBuffer[i-2] = lineBuffer[i]; //include '\0' printedChars -= 2; + } else if ((lineBuffer[0]==' ' && lineBuffer[1]>127)) { + // remove note symbol from effect names + for (byte i=5; i<=printedChars; i++) lineBuffer[i-5] = lineBuffer[i]; //include '\0' + printedChars -= 5; } if (lineHeight == 2) { // use this code for 8 line display char smallBuffer1[MAX_MODE_LINE_SPACE]; @@ -941,6 +945,23 @@ class FourLineDisplayUsermod : public Usermod { // if (!initDone) return; // prevent crash on boot applyPreset() //} + void appendConfigData() { + oappend(SET_F("dd=addDropdown('4LineDisplay','type');")); + oappend(SET_F("addOption(dd,'None',0);")); + oappend(SET_F("addOption(dd,'SSD1306',1);")); + oappend(SET_F("addOption(dd,'SH1106',2);")); + oappend(SET_F("addOption(dd,'SSD1306 128x64',3);")); + oappend(SET_F("addOption(dd,'SSD1305',4);")); + oappend(SET_F("addOption(dd,'SSD1305 128x64',5);")); + oappend(SET_F("addOption(dd,'SSD1306 SPI',6);")); + oappend(SET_F("addOption(dd,'SSD1306 SPI 128x64',7);")); + oappend(SET_F("addInfo('4LineDisplay:pin[]',0,'I2C/SPI CLK');")); + oappend(SET_F("addInfo('4LineDisplay:pin[]',1,'I2C/SPI DTA');")); + oappend(SET_F("addInfo('4LineDisplay:pin[]',2,'SPI CS');")); + oappend(SET_F("addInfo('4LineDisplay:pin[]',3,'SPI DC');")); + oappend(SET_F("addInfo('4LineDisplay:pin[]',4,'SPI RST');")); + } + /* * addToConfig() can be used to add custom persistent settings to the cfg.json file in the "um" (usermod) object. * It will be called by WLED when settings are actually saved (for example, LED settings are saved) @@ -960,9 +981,7 @@ class FourLineDisplayUsermod : public Usermod { top[FPSTR(_enabled)] = enabled; JsonArray io_pin = top.createNestedArray("pin"); for (byte i=0; i<5; i++) io_pin.add(ioPin[i]); - top["help4Pins"] = F("Clk,Data,CS,DC,RST"); // help for Settings page top["type"] = type; - top["help4Type"] = F("1=SSD1306,2=SH1106,3=SSD1306_128x64,4=SSD1305,5=SSD1305_128x64,6=SSD1306_SPI,7=SSD1306_SPI_128x64"); // help for Settings page top[FPSTR(_flip)] = (bool) flip; top[FPSTR(_contrast)] = contrast; top[FPSTR(_contrastFix)] = (bool) contrastFix; diff --git a/usermods/usermod_v2_rotary_encoder_ui_ALT/usermod_v2_rotary_encoder_ui_ALT.h b/usermods/usermod_v2_rotary_encoder_ui_ALT/usermod_v2_rotary_encoder_ui_ALT.h index 0f918484..34cace3c 100644 --- a/usermods/usermod_v2_rotary_encoder_ui_ALT/usermod_v2_rotary_encoder_ui_ALT.h +++ b/usermods/usermod_v2_rotary_encoder_ui_ALT/usermod_v2_rotary_encoder_ui_ALT.h @@ -186,7 +186,7 @@ private: */ void sortModesAndPalettes() { //modes_qstrings = re_findModeStrings(JSON_mode_names, strip.getModeCount()); - modes_qstrings = WS2812FX::_modeData; + modes_qstrings = strip.getModeDataSrc(); modes_alpha_indexes = re_initIndexArray(strip.getModeCount()); re_sortModes(modes_qstrings, modes_alpha_indexes, strip.getModeCount(), MODE_SORT_SKIP_COUNT); @@ -286,7 +286,7 @@ public: if (!initDone) sortModesAndPalettes(); -#ifdef USERMOD_FOUR_LINE_DISPLAY +#ifdef USERMOD_FOUR_LINE_DISPLAY // This Usermod uses FourLineDisplayUsermod for the best experience. // But it's optional. But you want it. display = (FourLineDisplayUsermod*) usermods.lookup(USERMOD_ID_FOUR_LINE_DISP); diff --git a/usermods/wizlights/readme.md b/usermods/wizlights/readme.md index 271c3076..802a3798 100644 --- a/usermods/wizlights/readme.md +++ b/usermods/wizlights/readme.md @@ -6,8 +6,30 @@ The mod takes the colors from the first few pixels and sends them to the lights. ## Configuration -First, enter how often the data will be sent to the lights (in ms). - -Then enter the IPs for the lights to be controlled, in order. There is currently a limit of 10 devices that can be controled, but that number +- Interval (ms) + - How frequently to update the WiZ lights, in milliseconds. + - Setting too low may causse ESP to become unresponsive. +- Send Delay (ms) + - An optional millisecond delay after updating each WiZ light. + - Can help smooth out effects when using a larger number of WiZ lights +- Use Enhanced White + - Enables using the WiZ lights onboard white LEDs instead of sending maximum RGB values. + - Tunable with warm and cool LEDs as supported by WiZ bulbs + - Note: Only sent when max RGB value is set, need to have automatic brightness limiter disabled + - ToDo: Have better logic for white value mixing to better take advantage of the lights capabilities +- Always Force Update + - Can be enabled to always send update message to light, even when color matches what was previously sent. +- Force update every x minutes + - Configuration option to allow adjusting the default force update timeout of 5 minutes. + - Setting to 0 has the same impact as enabling Always Force Update + - +Then enter the IPs for the lights to be controlled, in order. There is currently a limit of 15 devices that can be controled, but that number can be easily changed by updating _MAX_WIZ_LIGHTS_. + + + +## Related project + +If you use these lights and python, make sure to check out the [pywizlight](https://github.com/sbidy/pywizlight) project. I learned how to +format the messages to control the lights from that project. diff --git a/usermods/wizlights/wizlights.h b/usermods/wizlights/wizlights.h index 230a7a8a..c588f00e 100644 --- a/usermods/wizlights/wizlights.h +++ b/usermods/wizlights/wizlights.h @@ -4,117 +4,134 @@ #include // Maximum number of lights supported -#define MAX_WIZ_LIGHTS 10 +#define MAX_WIZ_LIGHTS 15 -// UDP object, to send messages WiFiUDP UDP; -// Function to send a color to a light -void sendColor(IPAddress ip, uint32_t color) { - UDP.beginPacket(ip, 38899); - if (color == 0) { - UDP.print("{\"method\":\"setPilot\",\"params\":{\"state\":false}}"); - } else { - UDP.print("{\"method\":\"setPilot\",\"params\":{\"state\":true, \"r\":"); - UDP.print(R(color)); - UDP.print(",\"g\":"); - UDP.print(G(color)); - UDP.print(",\"b\":"); - UDP.print(B(color)); - UDP.print("}}"); - } - UDP.endPacket(); -} -// Create label for the usermode page (I cannot make it work with JSON arrays...) -String getJsonLabel(uint8_t i) { - return "ip_light_" + String(i); -} + class WizLightsUsermod : public Usermod { + private: - // Keep track of the last time the lights were updated unsigned long lastTime = 0; - - // Specify how often WLED sends data to the Wiz lights long updateInterval; + long sendDelay; - // Save the IP of the lights - IPAddress lightsIP[MAX_WIZ_LIGHTS]; - bool lightsValid[MAX_WIZ_LIGHTS]; + long forceUpdateMinutes; + bool forceUpdate; + + bool useEnhancedWhite; + long warmWhite; + long coldWhite; + + IPAddress lightsIP[MAX_WIZ_LIGHTS]; // Stores Light IP addresses + bool lightsValid[MAX_WIZ_LIGHTS]; // Stores Light IP address validity + uint32_t colorsSent[MAX_WIZ_LIGHTS]; // Stores last color sent for each light + - // Variable that keeps track of RBG values for the lights - uint32_t colorsSent[MAX_WIZ_LIGHTS]; public: - //Functions called by WLED - /* - * loop() is called continuously. Here you can check for events, read sensors, etc. - */ - void loop() { - // Calculate how long since the last update - unsigned long ellapsedTime = millis() - lastTime; - if (ellapsedTime > updateInterval) { - // Keep track of whether we are updating any of the lights - bool update = false; - // Loop through the lights - for (uint8_t i = 0; i < MAX_WIZ_LIGHTS; i++) { - // Check if we have a valid IP - if (!lightsValid[i]) { continue; } + // Send JSON blob to WiZ Light over UDP + // RGB or C/W white + // TODO: + // Better utilize WLED existing white mixing logic + void wizSendColor(IPAddress ip, uint32_t color) { + UDP.beginPacket(ip, 38899); - // Get the first colors in the strip - uint32_t new_color = strip.getPixelColor(i); + // If no LED color, turn light off. Note wiz light setting for "Off fade-out" will be applied by the light itself. + if (color == 0) { + UDP.print("{\"method\":\"setPilot\",\"params\":{\"state\":false}}"); - // Check if the color has changed from the last one sent - // Force an update every 5 minutes, in case the colors don't change - // (the lights could have been reset by turning off and on) - if ((new_color != colorsSent[i]) | (ellapsedTime > 5*60000)) { - // It has changed, send the new color to the light - update = true; - sendColor(lightsIP[i], new_color); - colorsSent[i] = new_color; - } - } - - // We sent an update, wait until we do this again - if (update) { - lastTime = millis(); - } + // If color is WHITE, try and use the lights WHITE LEDs instead of mixing RGB LEDs + } else if (color == 16777215 && useEnhancedWhite){ + + // set cold white light only + if (coldWhite > 0 && warmWhite == 0){ + UDP.print("{\"method\":\"setPilot\",\"params\":{\"c\":"); UDP.print(coldWhite) ;UDP.print("}}");} + + // set warm white light only + if (warmWhite > 0 && coldWhite == 0){ + UDP.print("{\"method\":\"setPilot\",\"params\":{\"w\":"); UDP.print(warmWhite) ;UDP.print("}}");} + + // set combination of warm and cold white light + if (coldWhite > 0 && warmWhite > 0){ + UDP.print("{\"method\":\"setPilot\",\"params\":{\"c\":"); UDP.print(coldWhite) ;UDP.print(",\"w\":"); UDP.print(warmWhite); UDP.print("}}");} + + // Send color as RGB + } else { + UDP.print("{\"method\":\"setPilot\",\"params\":{\"r\":"); + UDP.print(R(color)); + UDP.print(",\"g\":"); + UDP.print(G(color)); + UDP.print(",\"b\":"); + UDP.print(B(color)); + UDP.print("}}"); } + + UDP.endPacket(); } - /* - * addToConfig() can be used to add custom persistent settings to the cfg.json file in the "um" (usermod) object. - * It will be called by WLED when settings are actually saved (for example, LED settings are saved) - * If you want to force saving the current state, use serializeConfig() in your loop(). - */ + + + // TODO: Check millis() rollover + void loop() { + + // Make sure we are connected first + if (!WLED_CONNECTED) return; + + unsigned long ellapsedTime = millis() - lastTime; + if (ellapsedTime > updateInterval) { + bool update = false; + for (uint8_t i = 0; i < MAX_WIZ_LIGHTS; i++) { + if (!lightsValid[i]) { continue; } + uint32_t newColor = strip.getPixelColor(i); + if (forceUpdate || (newColor != colorsSent[i]) || (ellapsedTime > forceUpdateMinutes*60000)){ + wizSendColor(lightsIP[i], newColor); + colorsSent[i] = newColor; + update = true; + delay(sendDelay); + } + } + if (update) lastTime = millis(); + } + } + + + void addToConfig(JsonObject& root) { JsonObject top = root.createNestedObject("wizLightsUsermod"); - top["interval_ms"] = updateInterval; + top["Interval (ms)"] = updateInterval; + top["Send Delay (ms)"] = sendDelay; + top["Use Enhanced White *"] = useEnhancedWhite; + top["* Warm White Value (0-255)"] = warmWhite; + top["* Cold White Value (0-255)"] = coldWhite; + top["Always Force Update"] = forceUpdate; + top["Force Update Every x Minutes"] = forceUpdateMinutes; + for (uint8_t i = 0; i < MAX_WIZ_LIGHTS; i++) { top[getJsonLabel(i)] = lightsIP[i].toString(); } } - /* - * readFromConfig() can be used to read back the custom settings you added with addToConfig(). - * This is called by WLED when settings are loaded (currently this only happens immediately after boot, or after saving on the Usermod Settings page) - */ + + bool readFromConfig(JsonObject& root) { - // default settings values could be set here (or below using the 3-argument getJsonValue()) instead of in the class definition or constructor - // setting them inside readFromConfig() is slightly more robust, handling the rare but plausible use case of single value being missing after boot (e.g. if the cfg.json was manually edited and a value was removed) - JsonObject top = root["wizLightsUsermod"]; - bool configComplete = !top.isNull(); - // Read interval to update the lights - configComplete &= getJsonValue(top["interval_ms"], updateInterval, 1000); + configComplete &= getJsonValue(top["Interval (ms)"], updateInterval, 1000); // How frequently to update the wiz lights + configComplete &= getJsonValue(top["Send Delay (ms)"], sendDelay, 0); // Optional delay after sending each UDP message + configComplete &= getJsonValue(top["Use Enhanced White *"], useEnhancedWhite, false); // When color is white use wiz white LEDs instead of mixing RGB + configComplete &= getJsonValue(top["* Warm White Value (0-255)"], warmWhite, 0); // Warm White LED value for Enhanced White + configComplete &= getJsonValue(top["* Cold White Value (0-255)"], coldWhite, 50); // Cold White LED value for Enhanced White + configComplete &= getJsonValue(top["Always Force Update"], forceUpdate, false); // Update wiz light every loop, even if color value has not changed + configComplete &= getJsonValue(top["Force Update Every x Minutes"], forceUpdateMinutes, 5); // Update wiz light if color value has not changed, every x minutes // Read list of IPs String tempIp; @@ -123,20 +140,15 @@ class WizLightsUsermod : public Usermod { lightsValid[i] = lightsIP[i].fromString(tempIp); // If the IP is not valid, force the value to be empty - if (!lightsValid[i]) { - lightsIP[i].fromString("0.0.0.0"); + if (!lightsValid[i]){lightsIP[i].fromString("0.0.0.0");} } - } return configComplete; } - - /* - * getId() allows you to optionally give your V2 usermod an unique ID (please define it in const.h!). - * This could be used in the future for the system to determine whether your usermod is installed. - */ - uint16_t getId() - { - return USERMOD_ID_WIZLIGHTS; - } -}; \ No newline at end of file + + + // Create label for the usermod page (I cannot make it work with JSON arrays...) + String getJsonLabel(uint8_t i) {return "WiZ Light IP #" + String(i+1);} + + uint16_t getId(){return USERMOD_ID_WIZLIGHTS;} +}; diff --git a/wled00/FX.cpp b/wled00/FX.cpp index 59ae4be9..f2b47685 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -26,6 +26,7 @@ #include "FX.h" #include "wled.h" +#include "fcn_declare.h" #define IBN 5100 #define PALETTE_SOLID_WRAP (paletteBlend == 1 || paletteBlend == 3) @@ -722,15 +723,15 @@ uint16_t WS2812FX::mode_android(void) { if (a + SEGENV.aux1 < SEGLEN) { - for(int i = a; i < a+SEGENV.aux1; i++) { + for(uint16_t i = a; i < a+SEGENV.aux1; i++) { setPixelColor(i, SEGCOLOR(0)); } } else { - for(int i = a; i < SEGLEN; i++) { + for(uint16_t i = a; i < SEGLEN; i++) { setPixelColor(i, SEGCOLOR(0)); } - for(int i = 0; i < SEGENV.aux1 - (SEGLEN -a); i++) { + for(uint16_t i = 0; i < SEGENV.aux1 - (SEGLEN -a); i++) { setPixelColor(i, SEGCOLOR(0)); } } @@ -1053,7 +1054,7 @@ static const char *_data_FX_MODE_CANDY_CANE PROGMEM = "Candy Cane@!,Width;;"; uint16_t WS2812FX::mode_halloween(void) { return running(PURPLE, ORANGE); } -static const char *_data_FX_MODE_HALLOWEEN PROGMEM = "Halloween"; +static const char *_data_FX_MODE_HALLOWEEN PROGMEM = "Halloween@!,Width;;"; /* @@ -1140,7 +1141,7 @@ uint16_t WS2812FX::larson_scanner(bool dual) { */ uint16_t WS2812FX::mode_comet(void) { uint16_t counter = now * ((SEGMENT.speed >>2) +1); - uint16_t index = counter * SEGLEN >> 16; + uint16_t index = (counter * SEGLEN) >> 16; if (SEGENV.call == 0) SEGENV.aux0 = index; fade_out(SEGMENT.intensity); @@ -1159,7 +1160,7 @@ uint16_t WS2812FX::mode_comet(void) { return FRAMETIME; } -static const char *_data_FX_MODE_COMET PROGMEM = "Lighthouse"; +static const char *_data_FX_MODE_COMET PROGMEM = "Lighthouse@!,Fade rate;!,!,!;!"; /* @@ -1594,7 +1595,7 @@ uint16_t WS2812FX::mode_tricolor_wipe(void) return FRAMETIME; } -static const char *_data_FX_MODE_TRICOLOR_WIPE PROGMEM = "Tri Wipe@!,Width;1,2,3;0"; +static const char *_data_FX_MODE_TRICOLOR_WIPE PROGMEM = "Tri Wipe@!,;1,2,3;0"; /* @@ -2196,7 +2197,7 @@ uint16_t WS2812FX::mode_colortwinkle() fract8 fadeUpAmount = _brightness>28 ? 8 + (SEGMENT.speed>>2) : 68-_brightness, fadeDownAmount = _brightness>28 ? 8 + (SEGMENT.speed>>3) : 68-_brightness; for (uint16_t i = 0; i < rows*cols; i++) { - uint16_t j = i % rows, k = i / rows; + uint16_t j = i % cols, k = i / cols; fastled_col = col_to_crgb(isMatrix ? getPixelColorXY(j, k) : getPixelColor(i)); prev = fastled_col; uint16_t index = i >> 3; @@ -2232,7 +2233,7 @@ uint16_t WS2812FX::mode_colortwinkle() if (random8() <= SEGMENT.intensity) { for (uint8_t times = 0; times < 5; times++) { //attempt to spawn a new pixel 5 times uint16_t i = random16(rows*cols); - uint16_t j = i % rows, k = i / rows; + uint16_t j = i % cols, k = i / cols; uint32_t col = isMatrix ? getPixelColorXY(j, k) : getPixelColor(i); if (col == 0) { fastled_col = ColorFromPalette(currentPalette, random8(), 64, NOBLEND); @@ -2984,7 +2985,7 @@ uint16_t WS2812FX::mode_popcorn(void) { uint16_t ledIndex = popcorn[i].pos; if (ledIndex < rows) { - if (isMatrix) setPixelColorXY(popcorn[i].posX, rows - 1 - ledIndex, col); + if (isMatrix) setPixelColorXY(uint16_t(popcorn[i].posX), rows - 1 - ledIndex, col); else setPixelColor(ledIndex, col); } } @@ -3256,7 +3257,7 @@ uint16_t WS2812FX::mode_exploding_fireworks(void) Spark* sparks = reinterpret_cast(SEGENV.data); Spark* flare = sparks; //first spark is flare data - float gravity = -0.0004 - (SEGMENT.speed/800000.0); // m/s/s + float gravity = -0.0004f - (SEGMENT.speed/800000.0f); // m/s/s gravity *= rows; if (SEGENV.aux0 < 2) { //FLARE @@ -3265,7 +3266,7 @@ uint16_t WS2812FX::mode_exploding_fireworks(void) flare->posX = isMatrix ? random16(2,cols-1) : (SEGMENT.intensity > random8()); // will enable random firing side on 1D uint16_t peakHeight = 75 + random8(180); //0-255 peakHeight = (peakHeight * (rows -1)) >> 8; - flare->vel = sqrt(-2.0 * gravity * peakHeight); + flare->vel = sqrt(-2.0f * gravity * peakHeight); flare->velX = isMatrix ? (random8(8)-4)/32.f : 0; // no X velocity on 1D flare->col = 255; //brightness SEGENV.aux0 = 1; @@ -3274,7 +3275,7 @@ uint16_t WS2812FX::mode_exploding_fireworks(void) // launch if (flare->vel > 12 * gravity) { // flare - if (isMatrix) setPixelColorXY(flare->posX, rows - uint16_t(flare->pos) - 1, flare->col, flare->col, flare->col); + if (isMatrix) setPixelColorXY(int(flare->posX), rows - uint16_t(flare->pos) - 1, flare->col, flare->col, flare->col); else setPixelColor(int(flare->posX) ? rows - int(flare->pos) - 1 : int(flare->pos), flare->col, flare->col, flare->col); flare->pos += flare->vel; flare->posX += flare->velX; @@ -3301,7 +3302,7 @@ uint16_t WS2812FX::mode_exploding_fireworks(void) sparks[i].pos = flare->pos; sparks[i].posX = flare->posX; sparks[i].vel = (float(random16(0, 20000)) / 10000.0f) - 0.9f; // from -0.9 to 1.1 - sparks[i].vel *= rows<32 ? 0.5 : 1; // reduce velocity for smaller strips + sparks[i].vel *= rows<32 ? 0.5f : 1; // reduce velocity for smaller strips sparks[i].velX = isMatrix ? (float(random16(0, 4000)) / 10000.0f) - 0.2f : 0; // from -0.2 to 0.2 sparks[i].col = 345;//abs(sparks[i].vel * 750.0); // set colors before scaling velocity to keep them bright //sparks[i].col = constrain(sparks[i].col, 0, 345); @@ -3336,12 +3337,12 @@ uint16_t WS2812FX::mode_exploding_fireworks(void) c.g = qsub8(c.g, cooling); c.b = qsub8(c.b, cooling * 2); } - if (isMatrix) setPixelColorXY(sparks[i].posX, rows - int(sparks[i].pos) - 1, c.red, c.green, c.blue); + if (isMatrix) setPixelColorXY(int(sparks[i].posX), rows - int(sparks[i].pos) - 1, c.red, c.green, c.blue); else setPixelColor(int(sparks[i].posX) ? rows - int(sparks[i].pos) - 1 : int(sparks[i].pos), c.red, c.green, c.blue); } } blur(16); - *dying_gravity *= .8; // as sparks burn out they fall slower + *dying_gravity *= .8f; // as sparks burn out they fall slower } else { SEGENV.aux0 = 6 + random8(10); //wait for this many frames } @@ -4474,6 +4475,65 @@ uint16_t WS2812FX::mode_aurora(void) { } static const char *_data_FX_MODE_AURORA PROGMEM = "Aurora@!=24,!;1,2,3;!=50"; +// WLED-SR effects + +///////////////////////// +// Perlin Move // +///////////////////////// +// 16 bit perlinmove. Use Perlin Noise instead of sinewaves for movement. By Andrew Tuline. +// Controls are speed, # of pixels, faderate. +uint16_t WS2812FX::mode_perlinmove(void) { + + fade_out(255-SEGMENT.custom1); + for (uint16_t i = 0; i < SEGMENT.intensity/16 + 1; i++) { + uint16_t locn = inoise16(millis()*128/(260-SEGMENT.speed)+i*15000, millis()*128/(260-SEGMENT.speed)); // Get a new pixel location from moving noise. + uint16_t pixloc = map(locn, 50*256, 192*256, 0, SEGLEN-1); // Map that to the length of the strand, and ensure we don't go over. + setPixelColor(pixloc, color_from_palette(pixloc%255, false, PALETTE_SOLID_WRAP, 0)); + } + + return FRAMETIME; +} // mode_perlinmove() +static const char *_data_FX_MODE_PERLINMOVE PROGMEM = "Perlin Move@!,# of pixels,fade rate;,!;!"; + + +///////////////////////// +// Waveins // +///////////////////////// +// Uses beatsin8() + phase shifting. By: Andrew Tuline +uint16_t WS2812FX::mode_wavesins(void) { + + for (uint16_t i = 0; i < SEGLEN; i++) { + uint8_t bri = sin8(millis()/4 + i * SEGMENT.intensity); + setPixelColor(i, ColorFromPalette(currentPalette, beatsin8(SEGMENT.speed, SEGMENT.custom1, SEGMENT.custom1+SEGMENT.custom2, 0, i * SEGMENT.custom3), bri, LINEARBLEND)); + } + + return FRAMETIME; +} // mode_waveins() +static const char *_data_FX_MODE_WAVESINS PROGMEM = "Wavesins@Speed,Brightness variation,Starting Color,Range of Colors,Color variation;;!"; + + +////////////////////////////// +// Flow Stripe // +////////////////////////////// +// By: ldirko https://editor.soulmatelights.com/gallery/392-flow-led-stripe , modifed by: Andrew Tuline +uint16_t WS2812FX::mode_FlowStripe(void) { + + const uint16_t hl = SEGLEN * 10 / 13; + uint8_t hue = millis() / (SEGMENT.speed+1); + uint32_t t = millis() / (SEGMENT.intensity/8+1); + + for (uint16_t i = 0; i < SEGLEN; i++) { + int c = (abs(i - hl) / hl) * 127; + c = sin8(c); + c = sin8(c / 2 + t); + byte b = sin8(c + t/8); + setPixelColor(i, CHSV(b + hue, 255, 255)); + } + + return FRAMETIME; +} // mode_FlowStripe() +static const char *_data_FX_MODE_FLOWSTRIPE PROGMEM = "Flow Stripe@Hue speed,Effect speed;;"; + /////////////////////////////////////////////////////////////////////////////// //*************************** 2D routines *********************************** @@ -4519,7 +4579,7 @@ uint16_t WS2812FX::mode_2DBlackHole(void) { // By: Stepko https://edi setPixels(leds); return FRAMETIME; } // mode_2DBlackHole() -static const char *_data_FX_MODE_BLACK_HOLE PROGMEM = "2D Black Hole@Fade rate,Outer Y freq.,Outer X freq.,Inner X freq.,Inner Y freq.;;"; +static const char *_data_FX_MODE_2DBLACKHOLE PROGMEM = "2D Black Hole@Fade rate,Outer Y freq.,Outer X freq.,Inner X freq.,Inner Y freq.;;"; //////////////////////////// @@ -4578,7 +4638,7 @@ uint16_t WS2812FX::mode_2DColoredBursts() { // By: ldirko https:/ setPixels(leds); // Use this ONLY if we're going to display via leds[x] method. return FRAMETIME; } // mode_2DColoredBursts() -static const char *_data_FX_MODE_COLORED_BURSTS PROGMEM = "2D Colored Bursts@Speed,# of lines;;!"; +static const char *_data_FX_MODE_2DCOLOREDBURSTS PROGMEM = "2D Colored Bursts@Speed,# of lines;;!"; ///////////////////// @@ -4607,7 +4667,7 @@ uint16_t WS2812FX::mode_2Ddna(void) { // dna originally by by ldirko at setPixels(leds); return FRAMETIME; } // mode_2Ddna() -static const char *_data_FX_MODE_DNA PROGMEM = "2D DNA@Scroll speed,Blur;;!"; +static const char *_data_FX_MODE_2DDNA PROGMEM = "2D DNA@Scroll speed,Blur;;!"; ///////////////////////// @@ -4655,7 +4715,7 @@ uint16_t WS2812FX::mode_2DDNASpiral() { // By: ldirko https://edi setPixels(leds); // Use this ONLY if we're going to display via leds[x] method. return FRAMETIME; } // mode_2DDNASpiral() -static const char *_data_FX_MODE_DNA_SPIRAL PROGMEM = "2D DNA Spiral@Scroll speed,Blur;;!"; +static const char *_data_FX_MODE_2DDNASPIRAL PROGMEM = "2D DNA Spiral@Scroll speed,Blur;;!"; ///////////////////////// @@ -4690,7 +4750,7 @@ uint16_t WS2812FX::mode_2DDrift() { // By: Stepko https://editor. setPixels(leds); return FRAMETIME; } // mode_2DDrift() -static const char *_data_FX_MODE_DRIFT PROGMEM = "2D Drift@Rotation speed,Blur amount;;!"; +static const char *_data_FX_MODE_2DDRIFT PROGMEM = "2D Drift@Rotation speed,Blur amount;;!"; ////////////////////////// @@ -4727,7 +4787,7 @@ uint16_t WS2812FX::mode_2Dfirenoise(void) { // firenoise2d. By And setPixels(leds); return FRAMETIME; } // mode_2Dfirenoise() -static const char *_data_FX_MODE_FIRENOISE PROGMEM = "2D Firenoise@X scale,Y scale;;"; +static const char *_data_FX_MODE_2DFIRENOISE PROGMEM = "2D Firenoise@X scale,Y scale;;"; ////////////////////////////// @@ -4754,7 +4814,7 @@ uint16_t WS2812FX::mode_2DFrizzles(void) { // By: Stepko https:/ setPixels(leds); return FRAMETIME; } // mode_2DFrizzles() -static const char *_data_FX_MODE_FRIZZLES PROGMEM = "2D Frizzles@X frequency,Y frequency;;!"; +static const char *_data_FX_MODE_2DFRIZZLES PROGMEM = "2D Frizzles@X frequency,Y frequency;;!"; /////////////////////////////////////////// @@ -4857,7 +4917,7 @@ uint16_t WS2812FX::mode_2Dgameoflife(void) { // Written by Ewoud Wijma, inspired setPixels(leds); return (SEGMENT.getOption(SEG_OPTION_TRANSITIONAL)) ? FRAMETIME : FRAMETIME_FIXED * (128-(SEGMENT.speed>>1)); // update only when appropriate time passes (in 42 FPS slots) } // mode_2Dgameoflife() -static const char *_data_FX_MODE_GAMEOFLIFE PROGMEM = "2D Game Of Life@!,;!,!;!"; +static const char *_data_FX_MODE_2DGAMEOFLIFE PROGMEM = "2D Game Of Life@!,;!,!;!"; ///////////////////////// @@ -4878,7 +4938,7 @@ uint16_t WS2812FX::mode_2DHiphotic() { // By: ldirko ht return FRAMETIME; } // mode_2DHiphotic() -static const char *_data_FX_MODE_HIPNOTIC PROGMEM = "2D Hipnotic@X scale,Y scale;;!"; +static const char *_data_FX_MODE_2DHIPHOTIC PROGMEM = "2D Hiphotic@X scale,Y scale;;!"; ///////////////////////// @@ -4995,7 +5055,7 @@ uint16_t WS2812FX::mode_2DJulia(void) { // An animated return FRAMETIME; } // mode_2DJulia() -static const char *_data_FX_MODE_JULIA PROGMEM = "2D Julia@,Max iterations per pixel,X center,Y center,Area size;;!"; +static const char *_data_FX_MODE_2DJULIA PROGMEM = "2D Julia@,Max iterations per pixel,X center,Y center,Area size;;!"; ////////////////////////////// @@ -5007,31 +5067,23 @@ uint16_t WS2812FX::mode_2DLissajous(void) { // By: Andrew Tuline const uint16_t cols = SEGMENT.virtualWidth(); const uint16_t rows = SEGMENT.virtualHeight(); - //uint16_t dataSize = sizeof(CRGB) * rows * cols; - - //if (!SEGENV.allocateData(dataSize)) return mode_static(); //allocation failed - //CRGB *leds = reinterpret_cast(SEGENV.data); - - //if (SEGENV.call == 0) fill_solid(leds, CRGB::Black); - - //fadeToBlackBy(leds, SEGMENT.intensity); - fade_out(SEGMENT.intensity); + fadeToBlackBy(SEGMENT.intensity); + //fade_out(SEGMENT.intensity); + //for (int i=0; i < 4*(cols+rows); i ++) { for (int i=0; i < 256; i ++) { - uint8_t xlocn = sin8(now/2+i*SEGMENT.speed/64); - uint8_t ylocn = cos8(now/2+i*128/64); - + //float xlocn = float(sin8(now/4+i*(SEGMENT.speed>>5))) / 255.0f; + //float ylocn = float(cos8(now/4+i*2)) / 255.0f; + uint8_t xlocn = sin8(now/2+i*(SEGMENT.speed>>5)); + uint8_t ylocn = cos8(now/2+i*2); xlocn = map(xlocn,0,255,0,cols-1); ylocn = map(ylocn,0,255,0,rows-1); - //leds[XY(xlocn,ylocn)] = ColorFromPalette(currentPalette, now/100+i, 255, LINEARBLEND); - //setPixelColorXY(xlocn, ylocn, crgb_to_col(ColorFromPalette(currentPalette, now/100+i, 255, LINEARBLEND))); setPixelColorXY(xlocn, ylocn, color_from_palette(now/100+i, false, PALETTE_SOLID_WRAP, 0)); } - //setPixels(leds); return FRAMETIME; } // mode_2DLissajous() -static const char *_data_FX_MODE_LISSAJOUS PROGMEM = "2D Lissajous@X frequency,Fadetime;!,!,!;!"; +static const char *_data_FX_MODE_2DLISSAJOUS PROGMEM = "2D Lissajous@X frequency,Fade rate;!,!,!;!"; /////////////////////// @@ -5098,7 +5150,7 @@ uint16_t WS2812FX::mode_2Dmatrix(void) { // Matrix2D. By Jeremy return FRAMETIME; } // mode_2Dmatrix() -static const char *_data_FX_MODE_MATRIX PROGMEM = "2D Matrix@Falling speed,Spawning rate,Trail,Custom color;Spawn,Trail;"; +static const char *_data_FX_MODE_2DMATRIX PROGMEM = "2D Matrix@Falling speed,Spawning rate,Trail,Custom color;Spawn,Trail;"; ///////////////////////// @@ -5158,7 +5210,7 @@ uint16_t WS2812FX::mode_2Dmetaballs(void) { // Metaballs by Stefan Petrick. Ca //setPixels(leds); return FRAMETIME; } // mode_2Dmetaballs() -static const char *_data_FX_MODE_MEATBALS PROGMEM = "2D Metaballs@Speed;!,!,!;!"; +static const char *_data_FX_MODE_2DMETABALLS PROGMEM = "2D Metaballs@Speed;!,!,!;!"; ////////////////////// @@ -5200,7 +5252,7 @@ uint16_t WS2812FX::mode_2DPlasmaball(void) { // By: Stepko htt if (SEGENV.call == 0) fill_solid(leds, CRGB::Black); fadeToBlackBy(leds, 64); - double t = millis() / (33 - SEGMENT.speed/8); + float t = millis() / (33 - SEGMENT.speed/8); for (uint16_t i = 0; i < cols; i++) { uint16_t thisVal = inoise8(i * 30, t, t); uint16_t thisMax = map(thisVal, 0, 255, 0, cols-1); @@ -5225,7 +5277,7 @@ uint16_t WS2812FX::mode_2DPlasmaball(void) { // By: Stepko htt setPixels(leds); return FRAMETIME; } // mode_2DPlasmaball() -static const char *_data_FX_MODE_PLASMA_BALL PROGMEM = "2D Plasma Ball@Speed;!,!,!;!"; +static const char *_data_FX_MODE_2DPLASMABALL PROGMEM = "2D Plasma Ball@Speed;!,!,!;!"; //////////////////////////////// @@ -5284,7 +5336,7 @@ uint16_t WS2812FX::mode_2DPolarLights(void) { // By: Kostyantyn Matviyevs setPixels(leds); return FRAMETIME; } // mode_2DPolarLights() -static const char *_data_FX_MODE_POLAR_LIGHTS PROGMEM = "2D Polar Lights@Speed,Scale;;"; +static const char *_data_FX_MODE_2DPOLARLIGHTS PROGMEM = "2D Polar Lights@Speed,Scale;;"; ///////////////////////// @@ -5314,7 +5366,7 @@ uint16_t WS2812FX::mode_2DPulser(void) { // By: ldirko h setPixels(leds); // Use this ONLY if we're going to display via leds[x] method. return FRAMETIME; } // mode_2DPulser() -static const char *_data_FX_MODE_PULSER PROGMEM = "2D Pulser@Speed,Blur;;!"; +static const char *_data_FX_MODE_2DPULSER PROGMEM = "2D Pulser@Speed,Blur;;!"; ///////////////////////// @@ -5345,7 +5397,7 @@ uint16_t WS2812FX::mode_2DSindots(void) { // By: ldi setPixels(leds); // Use this ONLY if we're going to display via leds[x] method. return FRAMETIME; } // mode_2DSindots() -static const char *_data_FX_MODE_SINDOTS PROGMEM = "2D Sindots@Speed,Dot distance;;!"; +static const char *_data_FX_MODE_2DSINDOTS PROGMEM = "2D Sindots@Speed,Dot distance;;!"; ////////////////////////////// @@ -5388,7 +5440,7 @@ uint16_t WS2812FX::mode_2Dsquaredswirl(void) { // By: Mark Kriegsman. setPixels(leds); return FRAMETIME; } // mode_2Dsquaredswirl() -static const char *_data_FX_MODE_SQUARED_SWIRL PROGMEM = "2D Squared Swirl@,,,,Blur;,,;!"; +static const char *_data_FX_MODE_2DSQUAREDSWIRL PROGMEM = "2D Squared Swirl@,,,,Blur;,,;!"; ////////////////////////////// @@ -5439,7 +5491,7 @@ uint16_t WS2812FX::mode_2DSunradiation(void) { // By: ldirko h setPixels(leds); return FRAMETIME; } // mode_2DSunradiation() -static const char *_data_FX_MODE_SUN_RADIATION PROGMEM = "2D Sun Radiation@Variance,Brightness;;"; +static const char *_data_FX_MODE_2DSUNRADIATION PROGMEM = "2D Sun Radiation@Variance,Brightness;;"; ///////////////////////// @@ -5474,138 +5526,7 @@ uint16_t WS2812FX::mode_2Dtartan(void) { // By: Elliott Kember https:/ setPixels(leds); // Use this ONLY if we're going to display via leds[x] method. return FRAMETIME; } // mode_2DTartan() -static const char *_data_FX_MODE_TARTAN PROGMEM = "2D Tartan@X scale,Y scale;;!"; - - -///////////////////////// -// * 2D Waverly // -///////////////////////// -uint16_t WS2812FX::mode_2DWaverly(void) { // By: Stepko, https://editor.soulmatelights.com/gallery/652-wave , modified by Andrew Tuline - if (!isMatrix) return mode_static(); // not a 2D set-up - - const uint16_t cols = SEGMENT.virtualWidth(); - const uint16_t rows = SEGMENT.virtualHeight(); - const uint16_t dataSize = sizeof(CRGB) * SEGMENT.width() * SEGMENT.height(); // using width*height prevents reallocation if mirroring is enabled - - if (!SEGENV.allocateData(dataSize)) return mode_static(); //allocation failed - CRGB *leds = reinterpret_cast(SEGENV.data); - - if (SEGENV.call == 0) fill_solid(leds, CRGB::Black); - - fadeToBlackBy(leds, SEGMENT.speed); - - long t = now / 2; - for (uint16_t i = 0; i < cols; i++) { - //uint8_t tmpSound = (soundAgc) ? sampleAgc : sampleAvg; - - uint16_t thisVal = /*tmpSound*/((SEGMENT.intensity>>2)+1) * inoise8(i * 45 , t , t)/64; - uint16_t thisMax = map(thisVal, 0, 512, 0, rows); - - for (uint16_t j = 0; j < thisMax; j++) { - leds[XY(i, j)] += ColorFromPalette(currentPalette, map(j, 0, thisMax, 250, 0), 255, LINEARBLEND); - leds[XY((cols - 1) - i, (rows - 1) - j)] += ColorFromPalette(currentPalette, map(j, 0, thisMax, 250, 0), 255, LINEARBLEND); - } - } - blur2d(leds, 16); - - setPixels(leds); - return FRAMETIME; -} // mode_2DWaverly() -static const char *_data_FX_MODE_WAVERLY PROGMEM = "2D Waverly@Fade rate,Sensitivity;;!"; - - -///////////////////////// -// 2D Akemi // -///////////////////////// -uint16_t WS2812FX::mode_2DAkemi(void) { - if (!isMatrix) return mode_static(); // not a 2D set-up - - const uint16_t cols = SEGMENT.virtualWidth(); - const uint16_t rows = SEGMENT.virtualHeight(); - - uint16_t counter = (now * ((SEGMENT.speed >> 2) +2)) & 0xFFFF; - counter = counter >> 8; - - //Akemi - uint8_t akemi[32][32]={ - {0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0,0,0,0,2,2,3,3,3,3,3,3,2,2,0,0,0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0,0,0,2,3,3,0,0,0,0,0,0,3,3,2,0,0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0,0,2,3,0,0,0,6,5,5,4,0,0,0,3,2,0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0,2,3,0,0,6,6,5,5,5,5,4,4,0,0,3,2,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0,2,3,0,6,5,5,5,5,5,5,5,5,4,0,3,2,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,2,3,0,6,5,5,5,5,5,5,5,5,5,5,4,0,3,2,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,3,2,0,6,5,5,5,5,5,5,5,5,5,5,4,0,2,3,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,3,2,3,6,5,5,7,7,5,5,5,5,7,7,5,5,4,3,2,3,0,0,0,0,0,0}, - {0,0,0,0,0,2,3,1,3,6,5,1,7,7,7,5,5,1,7,7,7,5,4,3,1,3,2,0,0,0,0,0}, - {0,0,0,0,0,8,3,1,3,6,5,1,7,7,7,5,5,1,7,7,7,5,4,3,1,3,8,9,0,0,0,0}, - {0,0,0,0,0,8,3,1,3,6,5,5,1,1,5,5,5,5,1,1,5,5,4,3,1,3,8,0,0,0,0,0}, - {0,0,0,0,0,2,3,1,3,6,5,5,5,5,5,5,5,5,5,5,5,5,4,3,1,3,2,0,0,0,0,0}, - {0,0,0,0,0,0,3,2,3,6,5,5,5,5,5,5,5,5,5,5,5,5,4,3,2,3,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0,0,6,5,5,5,5,5,7,7,5,5,5,5,5,4,0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0,0,6,5,5,5,5,5,5,5,5,5,5,5,5,4,0,0,0,0,0,0,0,0,0}, - {1,0,0,0,0,0,0,0,0,6,5,5,5,5,5,5,5,5,5,5,5,5,4,0,0,0,0,0,0,0,0,2}, - {0,2,2,2,0,0,0,0,0,6,5,5,5,5,5,5,5,5,5,5,5,5,4,0,0,0,0,0,2,2,2,0}, - {0,0,0,3,2,0,0,0,6,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,0,0,2,2,0,0,0}, - {0,0,0,3,2,0,0,0,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,0,0,0,2,3,0,0,0}, - {0,0,0,0,3,2,0,0,0,0,3,3,0,3,3,0,0,3,3,0,3,3,0,0,0,0,2,2,0,0,0,0}, - {0,0,0,0,3,2,0,0,0,0,3,2,0,3,2,0,0,3,2,0,3,2,0,0,0,0,2,3,0,0,0,0}, - {0,0,0,0,0,3,2,0,0,3,2,0,0,3,2,0,0,3,2,0,0,3,2,0,0,2,3,0,0,0,0,0}, - {0,0,0,0,0,3,2,2,2,2,0,0,0,3,2,0,0,3,2,0,0,0,3,2,2,2,3,0,0,0,0,0}, - {0,0,0,0,0,0,3,3,3,0,0,0,0,3,2,0,0,3,2,0,0,0,0,3,3,3,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0,0,0,0,0,0,3,2,0,0,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0,0,0,0,0,0,3,2,0,0,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0,0,0,0,0,0,3,2,0,0,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0,0,0,0,0,0,3,2,0,0,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0,0,0,0,0,0,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, - {0,0,0,0,0,0,0,0,0,0,0,0,0,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, - }; - - //draw and color Akemi - for (uint16_t y=0; y < rows; y++) for (uint16_t x=0; x < cols; x++) { - CRGB color = BLACK; - CRGB faceColor = color_wheel(counter); - CRGB armsAndLegsColor = SEGCOLOR(1) > 0 ? SEGCOLOR(1) : 0xFFE0A0; //default warmish white 0xABA8FF; //0xFF52e5;// - CRGB soundColor = ORANGE; - float lightFactor = 0.15; - float normalFactor = 0.4; - float base = 0.0; //fftResult[0]/255.0; - switch (akemi[(y * 32)/rows][(x * 32)/cols]) { - case 0: color = BLACK; break; - case 3: armsAndLegsColor.r *= lightFactor; armsAndLegsColor.g *= lightFactor; armsAndLegsColor.b *= lightFactor; color = armsAndLegsColor; break; //light arms and legs 0x9B9B9B - case 2: armsAndLegsColor.r *= normalFactor; armsAndLegsColor.g *= normalFactor; armsAndLegsColor.b *= normalFactor; color = armsAndLegsColor; break; //normal arms and legs 0x888888 - case 1: color = armsAndLegsColor; break; //dark arms and legs 0x686868 - case 6: faceColor.r *= lightFactor; faceColor.g *= lightFactor; faceColor.b *= lightFactor; color=faceColor; break; //light face 0x31AAFF - case 5: faceColor.r *= normalFactor; faceColor.g *= normalFactor; faceColor.b *= normalFactor; color=faceColor; break; //normal face 0x0094FF - case 4: color = faceColor; break; //dark face 0x007DC6 - case 7: color = SEGCOLOR(2) > 0 ? SEGCOLOR(2) : 0xFFFFFF; break; //eyes and mouth default white - case 8: if (base > 0.4) {soundColor.r *= base; soundColor.g *= base; soundColor.b *= base; color=soundColor;} else color = armsAndLegsColor; break; - default: color = BLACK; - } - - if (SEGMENT.intensity > 128 /*&& fftResult[0] > 128*/) { //dance if base is high - setPixelColorXY(x, 0, BLACK); - setPixelColorXY(x, y+1, color); - } else - setPixelColorXY(x, y, color); - } - - //add geq left and right - /* - for (uint16_t x=0; x < cols/8; x++) { - uint16_t band = x * cols/8; - uint16_t barHeight = map(fftResult[band], 0, 255, 0, 17*rows/32); - CRGB color = color_from_palette((band * 35), false, PALETTE_SOLID_WRAP, 0); - - for (uint16_t y=0; y < barHeight; y++) { - setPixelColorXY(x, rows/2-y, color); - setPixelColorXY(cols-1-x, rows/2-y, color); - } - } - */ - return FRAMETIME; -} // mode_2DAkemi -static const char *_data_FX_MODE_AKEMI PROGMEM = "2D Akemi@Color speed,Dance;Head palette,Arms & Legs,Eyes & Mouth;Face palette"; +static const char *_data_FX_MODE_2DTARTAN PROGMEM = "2D Tartan@X scale,Y scale;;!"; ///////////////////////// @@ -5937,14 +5858,14 @@ uint16_t WS2812FX::mode_2Dscrollingtext(void) { const uint16_t cols = SEGMENT.virtualWidth(); const uint16_t rows = SEGMENT.virtualHeight(); - const int letterWidth = 6; + const int letterWidth = SEGMENT.custom2 > 128 ? 6 : 5; const int letterHeight = 8; const int yoffset = map(SEGMENT.intensity, 0, 255, -rows/2, rows/2) + (rows-letterHeight)/2; - const char *text = PSTR("Use segment name"); // fallback if empty segment name + const char *text = nullptr; if (SEGMENT.name && strlen(SEGMENT.name)) text = SEGMENT.name; char lineBuffer[17], sec[3]; - if (strstr_P(text, PSTR("#DATETIME"))) { + if (!text) { // fallback if empty segment name: display date and time byte AmPmHour = hour(localTime); boolean isitAM = true; if (useAMPM) { @@ -5960,7 +5881,7 @@ uint16_t WS2812FX::mode_2Dscrollingtext(void) { if (SEGENV.step < millis()) { if ((numberOfLetters * letterWidth) > cols) ++SEGENV.aux0 %= (numberOfLetters * letterWidth) + cols; // offset - else SEGENV.aux0 = (cols - (numberOfLetters * letterWidth))/2; + else SEGENV.aux0 = (cols + (numberOfLetters * letterWidth))/2; ++SEGENV.aux1 &= 0xFF; // color shift SEGENV.step = millis() + map(SEGMENT.speed, 0, 255, 10*FRAMETIME_FIXED, 2*FRAMETIME_FIXED); } @@ -5970,12 +5891,12 @@ uint16_t WS2812FX::mode_2Dscrollingtext(void) { for (uint16_t i = 0; i < numberOfLetters; i++) { if (int(cols) - int(SEGENV.aux0) + letterWidth*(i+1) < 0) continue; // don't draw characters off-screen if (text[i]<32 || text[i]>126) continue; // skip non-ANSII characters (may add UTF translation at some point) - drawCharacter(text[i], int(cols) - int(SEGENV.aux0) + letterWidth*i, yoffset, color_from_palette(SEGENV.aux1, false, PALETTE_SOLID_WRAP, 0)); + drawCharacter(text[i], int(cols) - int(SEGENV.aux0) + letterWidth*i, yoffset, letterWidth, letterHeight, color_from_palette(SEGENV.aux1, false, PALETTE_SOLID_WRAP, 0)); } return FRAMETIME; } -static const char *_data_FX_MODE_SCROLL_TEXT PROGMEM = "2D Scrolling Text@!,Y Offset,Trail;!,!;!"; +static const char *_data_FX_MODE_SCROLL_TEXT PROGMEM = "2D Scrolling Text@!,Y Offset,Trail=0,Font size;!,!;!"; //////////////////////////// @@ -6014,155 +5935,1926 @@ uint16_t WS2812FX::mode_2Ddriftrose(void) { static const char *_data_FX_MODE_DRIFT_ROSE PROGMEM = "2D Drift Rose@Fade,Blur;;"; -////////////////////////////////////////////////////////////////////////////////////////// -// mode data -const char *WS2812FX::_modeData[MODE_COUNT] = { - _data_FX_MODE_STATIC, - _data_FX_MODE_BLINK, - _data_FX_MODE_BREATH, - _data_FX_MODE_COLOR_WIPE, - _data_FX_MODE_COLOR_WIPE_RANDOM, - _data_FX_MODE_RANDOM_COLOR, - _data_FX_MODE_COLOR_SWEEP, - _data_FX_MODE_DYNAMIC, - _data_FX_MODE_RAINBOW, - _data_FX_MODE_RAINBOW_CYCLE, - _data_FX_MODE_SCAN, - _data_FX_MODE_DUAL_SCAN, - _data_FX_MODE_FADE, - _data_FX_MODE_THEATER_CHASE, - _data_FX_MODE_THEATER_CHASE_RAINBOW, - _data_FX_MODE_RUNNING_LIGHTS, - _data_FX_MODE_SAW, - _data_FX_MODE_TWINKLE, - _data_FX_MODE_DISSOLVE, - _data_FX_MODE_DISSOLVE_RANDOM, - _data_FX_MODE_SPARKLE, - _data_FX_MODE_FLASH_SPARKLE, - _data_FX_MODE_HYPER_SPARKLE, - _data_FX_MODE_STROBE, - _data_FX_MODE_STROBE_RAINBOW, - _data_FX_MODE_MULTI_STROBE, - _data_FX_MODE_BLINK_RAINBOW, - _data_FX_MODE_ANDROID, - _data_FX_MODE_CHASE_COLOR, - _data_FX_MODE_CHASE_RANDOM, - _data_FX_MODE_CHASE_RAINBOW, - _data_FX_MODE_CHASE_FLASH, - _data_FX_MODE_CHASE_FLASH_RANDOM, - _data_FX_MODE_CHASE_RAINBOW_WHITE, - _data_FX_MODE_COLORFUL, - _data_FX_MODE_TRAFFIC_LIGHT, - _data_FX_MODE_COLOR_SWEEP_RANDOM, - _data_FX_MODE_RUNNING_COLOR, - _data_FX_MODE_AURORA, - _data_FX_MODE_RUNNING_RANDOM, - _data_FX_MODE_LARSON_SCANNER, - _data_FX_MODE_COMET, - _data_FX_MODE_FIREWORKS, - _data_FX_MODE_RAIN, - _data_FX_MODE_TETRIX, - _data_FX_MODE_FIRE_FLICKER, - _data_FX_MODE_GRADIENT, - _data_FX_MODE_LOADING, - _data_FX_MODE_POLICE, - _data_FX_MODE_FAIRY, - _data_FX_MODE_TWO_DOTS, - _data_FX_MODE_FAIRYTWINKLE, - _data_FX_MODE_RUNNING_DUAL, - _data_FX_MODE_HALLOWEEN, - _data_FX_MODE_TRICOLOR_CHASE, - _data_FX_MODE_TRICOLOR_WIPE, - _data_FX_MODE_TRICOLOR_FADE, - _data_FX_MODE_LIGHTNING, - _data_FX_MODE_ICU, - _data_FX_MODE_MULTI_COMET, - _data_FX_MODE_DUAL_LARSON_SCANNER, - _data_FX_MODE_RANDOM_CHASE, - _data_FX_MODE_OSCILLATE, - _data_FX_MODE_PRIDE_2015, - _data_FX_MODE_JUGGLE, - _data_FX_MODE_PALETTE, - _data_FX_MODE_FIRE_2012, - _data_FX_MODE_COLORWAVES, - _data_FX_MODE_BPM, - _data_FX_MODE_FILLNOISE8, - _data_FX_MODE_NOISE16_1, - _data_FX_MODE_NOISE16_2, - _data_FX_MODE_NOISE16_3, - _data_FX_MODE_NOISE16_4, - _data_FX_MODE_COLORTWINKLE, - _data_FX_MODE_LAKE, - _data_FX_MODE_METEOR, - _data_FX_MODE_METEOR_SMOOTH, - _data_FX_MODE_RAILWAY, - _data_FX_MODE_RIPPLE, - _data_FX_MODE_TWINKLEFOX, - _data_FX_MODE_TWINKLECAT, - _data_FX_MODE_HALLOWEEN_EYES, - _data_FX_MODE_STATIC_PATTERN, - _data_FX_MODE_TRI_STATIC_PATTERN, - _data_FX_MODE_SPOTS, - _data_FX_MODE_SPOTS_FADE, - _data_FX_MODE_GLITTER, - _data_FX_MODE_CANDLE, - _data_FX_MODE_STARBURST, - _data_FX_MODE_EXPLODING_FIREWORKS, - _data_FX_MODE_BOUNCINGBALLS, - _data_FX_MODE_SINELON, - _data_FX_MODE_SINELON_DUAL, - _data_FX_MODE_SINELON_RAINBOW, - _data_FX_MODE_POPCORN, - _data_FX_MODE_DRIP, - _data_FX_MODE_PLASMA, - _data_FX_MODE_PERCENT, - _data_FX_MODE_RIPPLE_RAINBOW, - _data_FX_MODE_HEARTBEAT, - _data_FX_MODE_PACIFICA, - _data_FX_MODE_CANDLE_MULTI, - _data_FX_MODE_SOLID_GLITTER, - _data_FX_MODE_SUNRISE, - _data_FX_MODE_PHASED, - _data_FX_MODE_TWINKLEUP, - _data_FX_MODE_NOISEPAL, - _data_FX_MODE_SINEWAVE, - _data_FX_MODE_PHASEDNOISE, - _data_FX_MODE_FLOW, - _data_FX_MODE_CHUNCHUN, - _data_FX_MODE_DANCING_SHADOWS, - _data_FX_MODE_WASHING_MACHINE, - _data_FX_MODE_CANDY_CANE, - _data_FX_MODE_BLENDS, - _data_FX_MODE_TV_SIMULATOR, - _data_FX_MODE_DYNAMIC_SMOOTH, - _data_FX_MODE_BLACK_HOLE, - _data_FX_MODE_DNA, - _data_FX_MODE_DNA_SPIRAL, - _data_FX_MODE_DRIFT, - _data_FX_MODE_FIRENOISE, - _data_FX_MODE_FRIZZLES, - _data_FX_MODE_HIPNOTIC, - _data_FX_MODE_LISSAJOUS, - _data_FX_MODE_MATRIX, - _data_FX_MODE_AKEMI, - _data_FX_MODE_COLORED_BURSTS, - _data_FX_MODE_GAMEOFLIFE, - _data_FX_MODE_JULIA, - _data_FX_MODE_MEATBALS, - _data_FX_MODE_2DNOISE, - _data_FX_MODE_PLASMA_BALL, - _data_FX_MODE_POLAR_LIGHTS, - _data_FX_MODE_PULSER, - _data_FX_MODE_SINDOTS, - _data_FX_MODE_SQUARED_SWIRL, - _data_FX_MODE_SUN_RADIATION, - _data_FX_MODE_TARTAN, - _data_FX_MODE_WAVERLY, - _data_FX_MODE_SPACESHIPS, - _data_FX_MODE_CRAZYBEES, - _data_FX_MODE_GHOST_RIDER, - _data_FX_MODE_BLOBS, - _data_FX_MODE_SCROLL_TEXT, - _data_FX_MODE_DRIFT_ROSE +/////////////////////////////////////////////////////////////////////////////// +/******************** audio enhanced routines ************************/ +/////////////////////////////////////////////////////////////////////////////// + + +/* use the following code to pass AudioReactive usermod variables to effect + + uint8_t *binNum = (uint8_t*)&SEGENV.aux1, *maxVol = (uint8_t*)(&SEGENV.aux1+1); // just in case assignment + uint16_t sample = 0; + uint8_t soundAgc = 0, soundSquelch = 10; + bool samplePeak = false; + float sampleAgc = 0.0f, sampleAgv = 0.0f, multAgc = 0.0f, sampleReal = 0.0f; + double FFT_MajorPeak = 0.0, FFT_Magnitude = 0.0; + uint8_t *fftResult = nullptr; + uint16_t *myVals = nullptr; + float *fftBin = nullptr; + um_data_t *um_data; + if (usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) { + sampleAvg = *(float*) um_data->u_data[ 0]; + soundAgc = *(uint8_t*) um_data->u_data[ 1]; + sampleAgc = *(float*) um_data->u_data[ 2]; + sample = *(uint16_t*)um_data->u_data[ 3]; + rawSampleAgc = *(uint16_t*)um_data->u_data[ 4]; + samplePeak = *(uint8_t*) um_data->u_data[ 5]; + FFT_MajorPeak = *(double*) um_data->u_data[ 6]; + FFT_Magnitude = *(double*) um_data->u_data[ 7]; + fftResult = (uint8_t*) um_data->u_data[ 8]; + maxVol = (uint8_t*) um_data->u_data[ 9]; // requires UI element (SEGMENT.customX?), changes source element + binNum = (uint8_t*) um_data->u_data[10]; // requires UI element (SEGMENT.customX?), changes source element + multAgc = *(float*) um_data->u_data[11]; + sampleReal = *(float*) um_data->u_data[12]; + sampleGain = *(float*) um_data->u_data[13]; + myVals = (uint16_t*)um_data->u_data[14]; + soundSquelch = *(uint8_t*) um_data->u_data[15]; + fftBin = (float*) um_data->u_data[16]; + inputLevel = (uint8_t*) um_data->u_data[17]; // requires UI element (SEGMENT.customX?), changes source element + } else { + // add support for no audio data + uint32_t ms = millis(); + sample = inoise8(beatsin8(120, 10, 30)*10 + (ms>>14), ms>>3); + sample = map(sample, 50, 190, 0, 224); + sampleAvg = inoise8(beatsin8(90, 0, 200)*15 + (ms>>10), ms>>3); + samplePeak = random8() > 250; // or use: sample==224 + FFT_MajorPeak = inoise8(beatsin8(90, 0, 200)*15 + (ms>>10), ms>>3); + } + if (!myVals || !fftBin || ...) return mode_static(); +*/ + + +///////////////////////////////// +// * Ripple Peak // +///////////////////////////////// +uint16_t WS2812FX::mode_ripplepeak(void) { // * Ripple peak. By Andrew Tuline. + // This currently has no controls. + #define maxsteps 16 // Case statement wouldn't allow a variable. + + uint16_t maxRipples = 16; + uint16_t dataSize = sizeof(Ripple) * maxRipples; + if (!SEGENV.allocateData(dataSize)) return mode_static(); //allocation failed + Ripple* ripples = reinterpret_cast(SEGENV.data); + + uint8_t *binNum, *maxVol; // just in case assignment + uint8_t samplePeak = 0; // actually a bool + double FFT_MajorPeak = 0.0; + um_data_t *um_data; + if (usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) { + FFT_MajorPeak = *(double*) um_data->u_data[6]; + binNum = (uint8_t*)um_data->u_data[10]; + maxVol = (uint8_t*)um_data->u_data[9]; + samplePeak = *(uint8_t*)um_data->u_data[5]; + } else { + // add support for no audio data + uint32_t ms = millis(); + samplePeak = random8() > 250; + FFT_MajorPeak = inoise8(beatsin8(90, 0, 200)*15 + (ms>>10), ms>>3); + binNum = (uint8_t*) &SEGENV.aux1; + maxVol = (uint8_t*)(&SEGENV.aux1+1); // just in case assignment + } + + if (SEGENV.call == 0) { + SEGENV.aux0 = 255; + SEGMENT.custom2 = *binNum; + SEGMENT.custom3 = *maxVol * 2; + } + + *binNum = SEGMENT.custom2; // Select a bin. + *maxVol = SEGMENT.custom3/2; // Our volume comparator. + + fade_out(240); // Lower frame rate means less effective fading than FastLED + fade_out(240); + + for (uint16_t i = 0; i < SEGMENT.intensity/16; i++) { // Limit the number of ripples. + if (samplePeak) ripples[i].state = 255; + + switch (ripples[i].state) { + case 254: // Inactive mode + break; + + case 255: // Initialize ripple variables. + ripples[i].pos = random16(SEGLEN); + #ifdef ESP32 + ripples[i].color = (int)(log10f(FFT_MajorPeak)*128); + #else + ripples[i].color = random8(); + #endif + ripples[i].state = 0; + break; + + case 0: + setPixelColor(ripples[i].pos, color_blend(SEGCOLOR(1), color_from_palette(ripples[i].color, false, PALETTE_SOLID_WRAP, 0), SEGENV.aux0)); + ripples[i].state++; + break; + + case maxsteps: // At the end of the ripples. 254 is an inactive mode. + ripples[i].state = 254; + break; + + default: // Middle of the ripples. + setPixelColor((ripples[i].pos + ripples[i].state + SEGLEN) % SEGLEN, color_blend(SEGCOLOR(1), color_from_palette(ripples[i].color, false, PALETTE_SOLID_WRAP, 0), SEGENV.aux0/ripples[i].state*2)); + setPixelColor((ripples[i].pos - ripples[i].state + SEGLEN) % SEGLEN, color_blend(SEGCOLOR(1), color_from_palette(ripples[i].color, false, PALETTE_SOLID_WRAP, 0), SEGENV.aux0/ripples[i].state*2)); + ripples[i].state++; // Next step. + break; + } // switch step + } // for i + + return FRAMETIME; +} // mode_ripplepeak() +static const char *_data_FX_MODE_RIPPLEPEAK PROGMEM = " ♪ Ripple Peak@Fade rate,Max # of ripples,,Select bin,Volume (minimum);!,!;!"; + + +///////////////////////// +// * 2D Swirl // +///////////////////////// +// By: Mark Kriegsman https://gist.github.com/kriegsman/5adca44e14ad025e6d3b , modified by Andrew Tuline +uint16_t WS2812FX::mode_2DSwirl(void) { + if (!isMatrix) return mode_static(); // not a 2D set-up + + const uint16_t cols = SEGMENT.virtualWidth(); + const uint16_t rows = SEGMENT.virtualHeight(); + const uint16_t dataSize = sizeof(CRGB) * SEGMENT.width() * SEGMENT.height(); // using width*height prevents reallocation if mirroring is enabled + + if (!SEGENV.allocateData(dataSize)) return mode_static(); //allocation failed + CRGB *leds = reinterpret_cast(SEGENV.data); + + if (SEGENV.call == 0) fill_solid(leds, CRGB::Black); + + const uint8_t borderWidth = 2; + + blur2d(leds, SEGMENT.custom1); + + uint8_t i = beatsin8( 27*SEGMENT.speed/255, borderWidth, cols - borderWidth); + uint8_t j = beatsin8( 41*SEGMENT.speed/255, borderWidth, rows - borderWidth); + uint8_t ni = (cols - 1) - i; + uint8_t nj = (cols - 1) - j; + uint16_t ms = millis(); + + uint8_t soundAgc = 0; + int16_t rawSampleAgc = 0, sample; + float sampleAvg = 0.0f; + um_data_t *um_data; + if (usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) { + sampleAvg = *(float*) um_data->u_data[0]; + soundAgc = *(uint8_t*)um_data->u_data[1]; + rawSampleAgc = *(int16_t*)um_data->u_data[4]; + sample = *(int16_t*)um_data->u_data[3]; + } else { + // add support for no audio data + sample = inoise8(beatsin8(120, 10, 30)*10 + (ms>>14), ms>>3); + sample = map(sample, 50, 190, 0, 224); + sampleAvg = inoise8(beatsin8(90, 0, 200)*15 + (ms>>10), ms>>3); + //sampleAvg = mapf(sampleAvg, 0, 255, 0, 255); // help me out here + } + + int tmpSound = (soundAgc) ? rawSampleAgc : sample; + + leds[XY( i, j)] += ColorFromPalette(currentPalette, (ms / 11 + sampleAvg*4), tmpSound * SEGMENT.intensity / 64, LINEARBLEND); //CHSV( ms / 11, 200, 255); + leds[XY( j, i)] += ColorFromPalette(currentPalette, (ms / 13 + sampleAvg*4), tmpSound * SEGMENT.intensity / 64, LINEARBLEND); //CHSV( ms / 13, 200, 255); + leds[XY(ni, nj)] += ColorFromPalette(currentPalette, (ms / 17 + sampleAvg*4), tmpSound * SEGMENT.intensity / 64, LINEARBLEND); //CHSV( ms / 17, 200, 255); + leds[XY(nj, ni)] += ColorFromPalette(currentPalette, (ms / 29 + sampleAvg*4), tmpSound * SEGMENT.intensity / 64, LINEARBLEND); //CHSV( ms / 29, 200, 255); + leds[XY( i, nj)] += ColorFromPalette(currentPalette, (ms / 37 + sampleAvg*4), tmpSound * SEGMENT.intensity / 64, LINEARBLEND); //CHSV( ms / 37, 200, 255); + leds[XY(ni, j)] += ColorFromPalette(currentPalette, (ms / 41 + sampleAvg*4), tmpSound * SEGMENT.intensity / 64, LINEARBLEND); //CHSV( ms / 41, 200, 255); + + setPixels(leds); + return FRAMETIME; +} // mode_2DSwirl() +static const char *_data_FX_MODE_2DSWIRL PROGMEM = " ♪ 2D Swirl@!,Sensitivity=64,Blur;,Bg Swirl;!"; + + +///////////////////////// +// * 2D Waverly // +///////////////////////// +// By: Stepko, https://editor.soulmatelights.com/gallery/652-wave , modified by Andrew Tuline +uint16_t WS2812FX::mode_2DWaverly(void) { + if (!isMatrix) return mode_static(); // not a 2D set-up + + const uint16_t cols = SEGMENT.virtualWidth(); + const uint16_t rows = SEGMENT.virtualHeight(); + const uint16_t dataSize = sizeof(CRGB) * SEGMENT.width() * SEGMENT.height(); // using width*height prevents reallocation if mirroring is enabled + + if (!SEGENV.allocateData(dataSize)) return mode_static(); //allocation failed + CRGB *leds = reinterpret_cast(SEGENV.data); + + if (SEGENV.call == 0) { + fill_solid(leds, CRGB::Black); + } + + um_data_t *um_data; + uint8_t soundAgc = 0; + float sampleAgc = 0.0f, sampleAvg = 0.0f; + if (usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) { + sampleAvg = *(float*) um_data->u_data[0]; + soundAgc = *(uint8_t*)um_data->u_data[1]; + sampleAgc = *(float*) um_data->u_data[2]; + } + + fadeToBlackBy(leds, SEGMENT.speed); + + long t = millis() / 2; + for (uint16_t i = 0; i < cols; i++) { + uint16_t thisVal = (1 + SEGMENT.intensity/64) * inoise8(i * 45 , t , t)/2; + // use audio if available + if (um_data) { + thisVal /= 32; // reduce intensity of inoise8() + thisVal *= (soundAgc) ? sampleAgc : sampleAvg; + } + uint16_t thisMax = map(thisVal, 0, 512, 0, rows); + + for (uint16_t j = 0; j < thisMax; j++) { + leds[XY(i, j)] += ColorFromPalette(currentPalette, map(j, 0, thisMax, 250, 0), 255, LINEARBLEND); + leds[XY((cols - 1) - i, (rows - 1) - j)] += ColorFromPalette(currentPalette, map(j, 0, thisMax, 250, 0), 255, LINEARBLEND); + } + } + blur2d(leds, 16); + + setPixels(leds); + return FRAMETIME; +} // mode_2DWaverly() +static const char *_data_FX_MODE_2DWAVERLY PROGMEM = " ♪ 2D Waverly@Amplification,Sensitivity=64;;!"; + + +// float version of map() +static float mapf(float x, float in_min, float in_max, float out_min, float out_max){ + return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; +} + +// Gravity struct requited for GRAV* effects +typedef struct Gravity { + int topLED; + int gravityCounter; +} gravity; + +/////////////////////// +// * GRAVCENTER // +/////////////////////// +uint16_t WS2812FX::mode_gravcenter(void) { // Gravcenter. By Andrew Tuline. + + const uint16_t dataSize = sizeof(gravity); + if (!SEGENV.allocateData(dataSize)) return mode_static(); //allocation failed + Gravity* gravcen = reinterpret_cast(SEGENV.data); + + um_data_t *um_data; + float tmpSound = (float)inoise8(23333); // I have no idea what that does + if (usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) { + //soundAgc = *(uint8_t*)um_data->u_data[1]; + //sampleAgc = *(float*)um_data->u_data[2]; + //sampleAvg = *(float*)um_data->u_data[0]; + tmpSound = *(uint8_t*)um_data->u_data[1] ? *(float*)um_data->u_data[2] : *(float*)um_data->u_data[0]; + } else { + // add support for no audio data + uint32_t ms = millis(); + tmpSound = inoise8(beatsin8(120, 10, 30)*10 + (ms>>14), ms>>3); + //tmpSound = map(sample, 50, 190, 0, 255); + } + + fade_out(240); + + float segmentSampleAvg = tmpSound * (float)SEGMENT.intensity / 255.0f; + segmentSampleAvg *= 0.125; // divide by 8, to compensate for later "sensitivty" upscaling + + float mySampleAvg = mapf(segmentSampleAvg*2.0, 0, 32, 0, (float)SEGLEN/2.0); // map to pixels available in current segment + uint16_t tempsamp = constrain(mySampleAvg, 0, SEGLEN/2); // Keep the sample from overflowing. + uint8_t gravity = 8 - SEGMENT.speed/32; + + for (int i=0; i= gravcen->topLED) + gravcen->topLED = tempsamp-1; + else if (gravcen->gravityCounter % gravity == 0) + gravcen->topLED--; + + if (gravcen->topLED >= 0) { + setPixelColor(gravcen->topLED+SEGLEN/2, color_from_palette(millis(), false, PALETTE_SOLID_WRAP, 0)); + setPixelColor(SEGLEN/2-1-gravcen->topLED, color_from_palette(millis(), false, PALETTE_SOLID_WRAP, 0)); + } + gravcen->gravityCounter = (gravcen->gravityCounter + 1) % gravity; + + return FRAMETIME; +} // mode_gravcenter() +static const char *_data_FX_MODE_GRAVCENTER PROGMEM = " ♪ Gravcenter@Rate of fall,Sensitivity=128;,!;!"; + + +/////////////////////// +// * GRAVCENTRIC // +/////////////////////// +uint16_t WS2812FX::mode_gravcentric(void) { // Gravcentric. By Andrew Tuline. + + uint16_t dataSize = sizeof(gravity); + if (!SEGENV.allocateData(dataSize)) return mode_static(); //allocation failed + Gravity* gravcen = reinterpret_cast(SEGENV.data); + + um_data_t *um_data; + float tmpSound = (float)inoise8(23333); // I have no idea what that does + if (usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) { + //soundAgc = *(uint8_t*)um_data->u_data[1]; + //sampleAgc = *(float*)um_data->u_data[2]; + //sampleAvg = *(float*)um_data->u_data[0]; + tmpSound = *(uint8_t*)um_data->u_data[1] ? *(float*)um_data->u_data[2] : *(float*)um_data->u_data[0]; + } else { + // add support for no audio data + uint32_t ms = millis(); + tmpSound = inoise8(beatsin8(120, 10, 30)*10 + (ms>>14), ms>>3); + //tmpSound = map(sample, 50, 190, 0, 255); + } + + fade_out(240); + fade_out(240); // twice? really? + + float segmentSampleAvg = tmpSound * (float)SEGMENT.intensity / 255.0; + segmentSampleAvg *= 0.125f; // divide by 8, to compensate for later "sensitivty" upscaling + + float mySampleAvg = mapf(segmentSampleAvg*2.0, 0.0f, 32.0f, 0.0f, (float)SEGLEN/2.0); // map to pixels availeable in current segment + int tempsamp = constrain(mySampleAvg, 0, SEGLEN/2); // Keep the sample from overflowing. + uint8_t gravity = 8 - SEGMENT.speed/32; + + for (int i=0; i= gravcen->topLED) + gravcen->topLED = tempsamp-1; + else if (gravcen->gravityCounter % gravity == 0) + gravcen->topLED--; + + if (gravcen->topLED >= 0) { + setPixelColor(gravcen->topLED+SEGLEN/2, CRGB::Gray); + setPixelColor(SEGLEN/2-1-gravcen->topLED, CRGB::Gray); + } + gravcen->gravityCounter = (gravcen->gravityCounter + 1) % gravity; + + return FRAMETIME; +} // mode_gravcentric() +static const char *_data_FX_MODE_GRAVCENTRIC PROGMEM = " ♪ Gravcentric@Rate of fall,Sensitivity=128;!;!"; + + +/////////////////////// +// * GRAVIMETER // +/////////////////////// +#ifndef SR_DEBUG_AGC +uint16_t WS2812FX::mode_gravimeter(void) { // Gravmeter. By Andrew Tuline. + + uint16_t dataSize = sizeof(gravity); + if (!SEGENV.allocateData(dataSize)) return mode_static(); //allocation failed + Gravity* gravcen = reinterpret_cast(SEGENV.data); + + um_data_t *um_data; + float tmpSound = (float)inoise8(23333); // I have no idea what that does + if (usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) { + //soundAgc = *(uint8_t*)um_data->u_data[1]; + //sampleAgc = *(float*)um_data->u_data[2]; + //sampleAvg = *(float*)um_data->u_data[0]; + tmpSound = *(uint8_t*)um_data->u_data[1] ? *(float*)um_data->u_data[2] : *(float*)um_data->u_data[0]; + } else { + // add support for no audio data + uint32_t ms = millis(); + tmpSound = inoise8(beatsin8(120, 10, 30)*10 + (ms>>14), ms>>3); + //tmpSound = map(sample, 50, 190, 0, 255); + } + + fade_out(240); + + float segmentSampleAvg = tmpSound * (float)SEGMENT.intensity / 255.0; + segmentSampleAvg *= 0.25; // divide by 4, to compensate for later "sensitivty" upscaling + + float mySampleAvg = mapf(segmentSampleAvg*2.0, 0, 64, 0, (SEGLEN-1)); // map to pixels availeable in current segment + int tempsamp = constrain(mySampleAvg,0,SEGLEN-1); // Keep the sample from overflowing. + uint8_t gravity = 8 - SEGMENT.speed/32; + + for (int i=0; i= gravcen->topLED) + gravcen->topLED = tempsamp; + else if (gravcen->gravityCounter % gravity == 0) + gravcen->topLED--; + + if (gravcen->topLED > 0) { + setPixelColor(gravcen->topLED, color_from_palette(millis(), false, PALETTE_SOLID_WRAP, 0)); + } + gravcen->gravityCounter = (gravcen->gravityCounter + 1) % gravity; + + return FRAMETIME; +} // mode_gravimeter() +static const char *_data_FX_MODE_GRAVIMETER PROGMEM = " ♪ Gravimeter@Rate of fall,Sensitivity=128;,!;!"; +#else +// This an abuse of the gravimeter effect for AGC debugging +// instead of sound volume, it uses the AGC gain multiplier as input +uint16_t WS2812FX::mode_gravimeter(void) { // Gravmeter. By Andrew Tuline. + + uint16_t dataSize = sizeof(gravity); + if (!SEGENV.allocateData(dataSize)) return mode_static(); //allocation failed + Gravity* gravcen = reinterpret_cast(SEGENV.data); + + uint8_t *inputLevel = (uint8_t*)(&SEGENV.aux1+1); + um_data_t *um_data; + uint16_t sample = 0; + uint8_t soundAgc = 0; + float sampleAgc = 0.0f, sampleAgv = 0.0f, multAgc = 0.0f, sampleReal = 0.0f; + if (usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) { + sample = *(uint16_t*)um_data->u_data[3]; + soundAgc = *(uint8_t*)um_data->u_data[1]; + sampleAgc = *(float*)um_data->u_data[2]; + sampleAvg = *(float*)um_data->u_data[0]; + multAgc = *(float*)um_data->u_data[11]; + sampleReal = *(float*)um_data->u_data[12]; + sampleGain = *(float*)um_data->u_data[13]; + inputLevel = (uint8_t*)um_data->u_data[17]; + } + + fade_out(240); + + //TODO: implement inputLevel as a global or slider + *inputLevel = SEGMENT.custom1; + + float tmpSound = multAgc; // AGC gain + if (soundAgc == 0) { + if ((sampleAvg> 1.0f) && (sampleReal > 0.05f)) + tmpSound = (float)sample / sampleReal; // current non-AGC gain + else + tmpSound = ((float)sampleGain/40.0f * (float)*inputLevel/128.0f) + 1.0f/16.0f; // non-AGC gain from presets + } + + if (tmpSound > 2) tmpSound = ((tmpSound -2.0f) / 2) +2; //compress ranges > 2 + if (tmpSound > 1) tmpSound = ((tmpSound -1.0f) / 2) +1; //compress ranges > 1 + + float segmentSampleAvg = 64.0f * tmpSound * (float)SEGMENT.intensity / 128.0f; + float mySampleAvg = mapf(segmentSampleAvg, 0.0f, 128.0f, 0, (SEGLEN-1)); // map to pixels availeable in current segment + int tempsamp = constrain(mySampleAvg, 0, SEGLEN-1); // Keep the sample from overflowing. + + //tempsamp = SEGLEN - tempsamp; // uncomment to invert direction + segmentSampleAvg = fmax(64.0f - fmin(segmentSampleAvg, 63),8); // inverted brightness + + uint8_t gravity = 8 - SEGMENT.speed/32; + + if (sampleAvg > 1) // disable bar "body" if below squelch + { + for (int i=0; i= gravcen->topLED) + gravcen->topLED = tempsamp; + else if (gravcen->gravityCounter % gravity == 0) + gravcen->topLED--; + + if (gravcen->topLED > 0) { + setPixelColor(gravcen->topLED, color_from_palette(millis(), false, PALETTE_SOLID_WRAP, 0)); + } + gravcen->gravityCounter = (gravcen->gravityCounter + 1) % gravity; + + return FRAMETIME; +} // mode_gravimeter() +static const char *_data_FX_MODE_GRAVIMETER PROGMEM = " ♪ Gravimeter@Rate of fall,Sensitivity=128,Input level=128;,!;!"; +#endif + + +////////////////////// +// * JUGGLES // +////////////////////// +uint16_t WS2812FX::mode_juggles(void) { // Juggles. By Andrew Tuline. + um_data_t *um_data; + float sampleAgc = 0.0f; + if (usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) { + sampleAgc = *(float*)um_data->u_data[2]; + } else { + // add support for no audio data + uint32_t ms = millis(); + sampleAgc = inoise8(beatsin8(120, 10, 30)*10 + (ms>>14), ms>>3); + //sampleAgc = map(sample, 50, 190, 0, 255); + } + + fade_out(224); + uint16_t my_sampleAgc = fmax(fmin(sampleAgc, 255.0), 0); + + for (uint8_t i=0; iu_data[1]; + rawSampleAgc = *(int16_t*)um_data->u_data[4]; + sample = *(int16_t*)um_data->u_data[3]; + } else { + // add support for no audio data + uint32_t ms = millis(); + sample = inoise8(beatsin8(120, 10, 30)*10 + (ms>>14), ms>>3); + sample = map(sample, 50, 190, 0, 255); + } + + if (SEGENV.call == 0) fill(BLACK); + + uint8_t secondHand = micros()/(256-SEGMENT.speed)/500 % 16; + if(SEGENV.aux0 != secondHand) { + SEGENV.aux0 = secondHand; + + uint8_t tmpSound = (soundAgc) ? rawSampleAgc : sample; + int pixBri = tmpSound * SEGMENT.intensity / 64; + for (uint16_t i=0; iu_data[1]; + sampleAgc = *(float*)um_data->u_data[2]; + sampleAvg = *(float*)um_data->u_data[0]; + } else { + // add support for no audio data + uint32_t ms = millis(); + sampleAvg = inoise8(beatsin8(90, 0, 200)*15 + (ms>>10), ms>>3); + //sampleAvg = mapf(sampleAvg, 0, 255, 0, 255); // help me out here + } + + fade_out(SEGMENT.speed); + fade_out(SEGMENT.speed); + + float tmpSound = (soundAgc) ? sampleAgc : sampleAvg; + float tmpSound2 = tmpSound * (float)SEGMENT.intensity / 256.0; // Too sensitive. + tmpSound2 *= (float)SEGMENT.intensity / 128.0; // Reduce sensitity/length. + + int maxLen = mapf(tmpSound2, 0, 127, 0, SEGLEN/2); + if (maxLen >SEGLEN/2) maxLen = SEGLEN/2; + + for (int i=(SEGLEN/2-maxLen); i<(SEGLEN/2+maxLen); i++) { + uint8_t index = inoise8(i*tmpSound+SEGENV.aux0, SEGENV.aux1+i*tmpSound); // Get a value from the noise function. I'm using both x and y axis. + setPixelColor(i, color_from_palette(index, false, PALETTE_SOLID_WRAP, 0)); + } + + SEGENV.aux0=SEGENV.aux0+beatsin8(5,0,10); + SEGENV.aux1=SEGENV.aux1+beatsin8(4,0,10); + + return FRAMETIME; +} // mode_midnoise() +static const char *_data_FX_MODE_MIDNOISE PROGMEM = " ♪ Midnoise@Fade rate,Maximum length=128;,!;!"; + + +////////////////////// +// * NOISEFIRE // +////////////////////// +// I am the god of hellfire. . . Volume (only) reactive fire routine. Oh, look how short this is. +uint16_t WS2812FX::mode_noisefire(void) { // Noisefire. By Andrew Tuline. + currentPalette = CRGBPalette16(CHSV(0,255,2), CHSV(0,255,4), CHSV(0,255,8), CHSV(0, 255, 8), // Fire palette definition. Lower value = darker. + CHSV(0, 255, 16), CRGB::Red, CRGB::Red, CRGB::Red, + CRGB::DarkOrange,CRGB::DarkOrange, CRGB::Orange, CRGB::Orange, + CRGB::Yellow, CRGB::Orange, CRGB::Yellow, CRGB::Yellow); + + um_data_t *um_data; + uint8_t soundAgc = 0; + float sampleAgc = 0.0f, sampleAvg = 0.0f; + if (usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) { + soundAgc = *(uint8_t*)um_data->u_data[1]; + sampleAgc = *(float*)um_data->u_data[2]; + sampleAvg = *(float*)um_data->u_data[0]; + } else { + // add support for no audio data + uint32_t ms = millis(); + sampleAvg = inoise8(beatsin8(90, 0, 200)*15 + (ms>>10), ms>>3); + //sampleAvg = mapf(sampleAvg, 0, 255, 0, 255); // help me out here + } + + for (uint16_t i = 0; i < SEGLEN; i++) { + uint16_t index = inoise8(i*SEGMENT.speed/64,millis()*SEGMENT.speed/64*SEGLEN/255); // X location is constant, but we move along the Y at the rate of millis(). By Andrew Tuline. + index = (255 - i*256/SEGLEN) * index/(256-SEGMENT.intensity); // Now we need to scale index so that it gets blacker as we get close to one of the ends. + // This is a simple y=mx+b equation that's been scaled. index/128 is another scaling. + uint8_t tmpSound = (soundAgc) ? sampleAgc : sampleAvg; + + CRGB color = ColorFromPalette(currentPalette, index, tmpSound*2, LINEARBLEND); // Use the my own palette. + setPixelColor(i, color); + } + + return FRAMETIME; +} // mode_noisefire() +static const char *_data_FX_MODE_NOISEFIRE PROGMEM = " ♪ Noisefire@!,!;;"; + + +/////////////////////// +// * Noisemeter // +/////////////////////// +uint16_t WS2812FX::mode_noisemeter(void) { // Noisemeter. By Andrew Tuline. + + um_data_t *um_data; + uint8_t soundAgc = 0; + int16_t rawSampleAgc = 0, sample; + float sampleAgc = 0.0f, sampleAvg; + if (usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) { + soundAgc = *(uint8_t*)um_data->u_data[1]; + sampleAgc = *(float*)um_data->u_data[2]; + sampleAvg = *(float*)um_data->u_data[0]; + rawSampleAgc = *(int16_t*)um_data->u_data[4]; + sample = *(int16_t*)um_data->u_data[3]; + } else { + // add support for no audio data + uint32_t ms = millis(); + sample = inoise8(beatsin8(120, 10, 30)*10 + (ms>>14), ms>>3); + sample = map(sample, 50, 190, 0, 255); + sampleAvg = inoise8(beatsin8(90, 0, 200)*15 + (ms>>10), ms>>3); + //sampleAvg = mapf(sampleAvg, 0, 255, 0, 255); // help me out here + } + + uint8_t fadeRate = map(SEGMENT.speed,0,255,224,255); + fade_out(fadeRate); + + float tmpSound = (soundAgc) ? rawSampleAgc : sample; + float tmpSound2 = tmpSound * 2.0 * (float)SEGMENT.intensity / 255.0; + int maxLen = mapf(tmpSound2, 0, 255, 0, SEGLEN); // map to pixels availeable in current segment // Still a bit too sensitive. + if (maxLen >SEGLEN) maxLen = SEGLEN; + + tmpSound = soundAgc ? sampleAgc : sampleAvg; // now use smoothed value (sampleAvg or sampleAgc) + for (int i=0; iu_data[1]; + rawSampleAgc = *(int16_t*)um_data->u_data[4]; + sample = *(int16_t*)um_data->u_data[3]; + } else { + // add support for no audio data + uint32_t ms = millis(); + sample = inoise8(beatsin8(120, 10, 30)*10 + (ms>>14), ms>>3); + sample = map(sample, 50, 190, 0, 255); + } + + uint8_t secondHand = micros()/(256-SEGMENT.speed)/500+1 % 16; + if(SEGENV.aux0 != secondHand) { + SEGENV.aux0 = secondHand; + + uint8_t tmpSound = (soundAgc) ? rawSampleAgc : sample; + int pixBri = tmpSound * SEGMENT.intensity / 64; + + setPixelColor(SEGLEN/2, color_blend(SEGCOLOR(1), color_from_palette(millis(), false, PALETTE_SOLID_WRAP, 0), pixBri)); + + for (uint16_t i=SEGLEN-1; i>SEGLEN/2; i--) setPixelColor(i, getPixelColor(i-1)); // Move to the right. + for (uint16_t i=0; i(SEGENV.data); + + um_data_t *um_data; + uint8_t soundAgc = 0; + float sampleAgc = 0.0f, sampleAvg; + if (usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) { + soundAgc = *(uint8_t*)um_data->u_data[1]; + sampleAgc = *(float*)um_data->u_data[2]; + sampleAvg = *(float*)um_data->u_data[0]; + } else { + // add support for no audio data + uint32_t ms = millis(); + sampleAvg = inoise8(beatsin8(90, 0, 200)*15 + (ms>>10), ms>>3); + //sampleAvg = mapf(sampleAvg, 0, 255, 0, 255); // help me out here + } + + fade_out(64); + + plasmoip->thisphase += beatsin8(6,-4,4); // You can change direction and speed individually. + plasmoip->thatphase += beatsin8(7,-4,4); // Two phase values to make a complex pattern. By Andrew Tuline. + + for (uint16_t i=0; ithisphase) & 0xFF)/2; + thisbright += cos8(((i*(97 +(5*SEGMENT.speed/32)))+plasmoip->thatphase) & 0xFF)/2; // Let's munge the brightness a bit and animate it all with the phases. + + uint8_t colorIndex=thisbright; + int tmpSound = (soundAgc) ? sampleAgc : sampleAvg; + if (tmpSound * SEGMENT.intensity / 64 < thisbright) {thisbright = 0;} + + setPixelColor(i, color_add(getPixelColor(i), color_blend(SEGCOLOR(1), color_from_palette(colorIndex, false, PALETTE_SOLID_WRAP, 0), thisbright))); + } + + return FRAMETIME; +} // mode_plasmoid() +static const char *_data_FX_MODE_PLASMOID PROGMEM = " ♪ Plasmoid@Phase=128,# of pixels=128;,!;!"; + + +/////////////////////// +// * PUDDLEPEAK // +/////////////////////// +// Andrew's crappy peak detector. If I were 40+ years younger, I'd learn signal processing. +uint16_t WS2812FX::mode_puddlepeak(void) { // Puddlepeak. By Andrew Tuline. + + uint16_t size = 0; + uint8_t fadeVal = map(SEGMENT.speed,0,255, 224, 255); + uint16_t pos = random(SEGLEN); // Set a random starting position. + + uint8_t *binNum, *maxVol; + uint8_t samplePeak = 0; + float sampleAgc = 0.0f; + um_data_t *um_data; + if (usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) { + sampleAgc = *(float*)um_data->u_data[2]; + binNum = (uint8_t*)um_data->u_data[10]; + maxVol = (uint8_t*)um_data->u_data[9]; + samplePeak = *(uint8_t*)um_data->u_data[5]; + } else { + // add support for no audio data + uint32_t ms = millis(); + samplePeak = random8() > 250; + sampleAgc = inoise8(beatsin8(90, 0, 200)*15 + (ms>>10), ms>>3); + //sampleAgc = mapf(sampleAvg, 0, 255, 0, 255); // help me out here + maxVol = (uint8_t*)&SEGENV.aux0; + binNum = (uint8_t*)&SEGENV.aux1; + } + + if (SEGENV.call == 0) { + SEGMENT.custom2 = *binNum; + SEGMENT.custom3 = *maxVol * 2; + } + + *binNum = SEGMENT.custom2; // Select a bin. + *maxVol = SEGMENT.custom3/4; // Our volume comparator. + + fade_out(fadeVal); + + if (samplePeak == 1) { + size = sampleAgc * SEGMENT.intensity /256 /4 + 1; // Determine size of the flash based on the volume. + if (pos+size>= SEGLEN) size = SEGLEN - pos; + } + + for (uint16_t i=0; iu_data[1]; + rawSampleAgc = *(int16_t*)um_data->u_data[4]; + sample = *(int16_t*)um_data->u_data[3]; + } else { + // add support for no audio data + uint32_t ms = millis(); + sample = inoise8(beatsin8(120, 10, 30)*10 + (ms>>14), ms>>3); + sample = map(sample, 50, 190, 0, 255); + } + + uint16_t tmpSound = (soundAgc) ? rawSampleAgc : sample; + + if (tmpSound > 1) { + size = tmpSound * SEGMENT.intensity /256 /8 + 1; // Determine size of the flash based on the volume. + if (pos+size >= SEGLEN) size = SEGLEN - pos; + } + + for(uint16_t i=0; iu_data[2]; + myVals = (uint16_t*)um_data->u_data[14]; + } + if (!myVals) return mode_static(); + + fade_out(64+(SEGMENT.speed>>1)); + + for (uint16_t i=0; i u_data[9]; +#endif + sampleAvg = *(float*) um_data->u_data[0]; + soundAgc = *(uint8_t*)um_data->u_data[1]; + multAgc = *(float*) um_data->u_data[11]; + sampleGain = *(float*) um_data->u_data[13]; + soundSquelch = *(uint8_t*)um_data->u_data[15]; + fftBin = (float*) um_data->u_data[16]; + inputLevel = (uint8_t*)um_data->u_data[17]; + } + if (!fftBin) return mode_static(); + + if (SEGENV.call == 0) { + SEGMENT.custom1 = *inputLevel; +#ifdef SR_DEBUG + SEGMENT.custom3 = *maxVol; +#endif + } + + + //TODO: implement inputLevel as a global or slider + *inputLevel = SEGMENT.custom1; + float binScale = (((float)sampleGain / 40.0f) + 1.0f/16.f) * ((float)*inputLevel/128.0f); // non-AGC gain multiplier + if (soundAgc) binScale = multAgc; // AGC gain + if (sampleAvg < 1) binScale = 0.001f; // silentium! + +#ifdef SR_DEBUG + //The next lines are good for debugging, however too much flickering for non-developers ;-) + float my_magnitude = FFT_Magnitude / 16.0f; // scale magnitude to be aligned with scaling of FFT bins + my_magnitude *= binScale; // apply gain + *maxVol = fmax(64, my_magnitude); // set maxVal = max FFT result +#endif + + for (int i=0; i startBin) endBin --; // avoid overlapping + + double sumBin = 0; + + for (int j=startBin; j<=endBin; j++) { + sumBin += (fftBin[j] < soundSquelch*1.75f) ? 0 : fftBin[j]; // We need some sound temporary squelch for fftBin, because we didn't do it for the raw bins in audio_reactive.h + } + + sumBin = sumBin/(endBin-startBin+1); // Normalize it. + sumBin = sumBin * (i+5) / (endBin-startBin+5); // Disgusting frequency adjustment calculation. Lows were too bright. Am open to quick 'n dirty alternatives. + + sumBin = sumBin * 8; // Need to use the 'log' version for this. Why " * 8" ?? + sumBin *= binScale; // apply gain + + if (sumBin > maxVal) sumBin = maxVal; // Make sure our bin isn't higher than the max . . which we capped earlier. + + uint8_t bright = constrain(mapf(sumBin, 0, maxVal, 0, 255),0,255); // Map the brightness in relation to maxVal and crunch to 8 bits. + + setPixelColor(i, color_blend(SEGCOLOR(1), color_from_palette(i*8+millis()/50, false, PALETTE_SOLID_WRAP, 0), bright)); // 'i' is just an index in the palette. The FFT value, bright, is the intensity. + } // for i + + return FRAMETIME; +} // mode_binmap() +#ifdef SR_DEBUG +static const char *_data_FX_MODE_BINMAP PROGMEM = " ♫ Binmap@,,Input level=128,,Max vol;!,!;!"; +#else +static const char *_data_FX_MODE_BINMAP PROGMEM = " ♫ Binmap@,,Input level=128;!,!;!"; +#endif + +////////////////////// +// ** Blurz // +////////////////////// +uint16_t WS2812FX::mode_blurz(void) { // Blurz. By Andrew Tuline. + uint8_t *fftResult = nullptr; + um_data_t *um_data; + if (usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) { + fftResult = (uint8_t*)um_data->u_data[8]; + } else { + // add support for no audio data + } + if (!fftResult) return mode_static(); + + if (SEGENV.call == 0) { + fill(BLACK); + SEGENV.aux0 = 0; + } + + fade_out(SEGMENT.speed); + + uint16_t segLoc = random16(SEGLEN); + setPixelColor(segLoc, color_blend(SEGCOLOR(1), color_from_palette(fftResult[SEGENV.aux0], false, PALETTE_SOLID_WRAP, 0), 2*fftResult[SEGENV.aux0])); + ++(SEGENV.aux0) %= 16; // make sure it doesn't cross 16 + + blur(SEGMENT.intensity); + + return FRAMETIME; +} // mode_blurz() +static const char *_data_FX_MODE_BLURZ PROGMEM = " ♫ Blurz@Fade rate,Blur amount;!,Color mix;!"; + + +///////////////////////// +// ** DJLight // +///////////////////////// +uint16_t WS2812FX::mode_DJLight(void) { // Written by ??? Adapted by Will Tatam. + const int NUM_LEDS = SEGLEN; // aka SEGLEN + const int mid = NUM_LEDS / 2; + + const uint16_t dataSize = SEGLEN*sizeof(CRGB); + if (!SEGENV.allocateData(dataSize)) return mode_static(); //allocation failed + CRGB *leds = reinterpret_cast(SEGENV.data); + + uint8_t *fftResult = nullptr; + um_data_t *um_data; + if (usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) { + fftResult = (uint8_t*)um_data->u_data[8]; + } else { + // add support for no audio data + } + if (!fftResult) return mode_static(); + + uint8_t secondHand = micros()/(256-SEGMENT.speed)/500+1 % 64; + if (SEGENV.aux0 != secondHand) { // Triggered millis timing. + SEGENV.aux0 = secondHand; + + leds[mid] = CRGB(fftResult[15]/2, fftResult[5]/2, fftResult[0]/2); // 16-> 15 as 16 is out of bounds + leds[mid].fadeToBlackBy(map(fftResult[1*4], 0, 255, 255, 10)); // TODO - Update + + for (int i = NUM_LEDS - 1; i > mid; i--) leds[i] = leds[i - 1]; //move to the left + for (int i = 0; i < mid; i++) leds[i] = leds[i + 1]; // move to the right + + for (uint16_t i=0; iu_data[6]; + FFT_Magnitude = *(double*)um_data->u_data[7]; + sampleAvg = *(float*)um_data->u_data[0]; + soundAgc = *(uint8_t*)um_data->u_data[1]; + multAgc = *(float*)um_data->u_data[11]; + } else { + // add support for no audio data + } + + float my_magnitude = FFT_Magnitude / 4.0; + if (soundAgc) my_magnitude *= multAgc; + if (sampleAvg < 1 ) my_magnitude = 0.001; // noise gate closed - mute + + fade_out(SEGMENT.speed); + + uint16_t locn = (log10f((float)FFT_MajorPeak) - 1.78f) * (float)SEGLEN/(3.71f-1.78f); // log10 frequency range is from 1.78 to 3.71. Let's scale to SEGLEN. + + if (locn >=SEGLEN) locn = SEGLEN-1; + uint16_t pixCol = (log10f(FFT_MajorPeak) - 1.78f) * 255.0f/(3.71f-1.78f); // Scale log10 of frequency values to the 255 colour index. + uint16_t bright = (int)my_magnitude; + + setPixelColor(locn, color_blend(SEGCOLOR(1), color_from_palette(SEGMENT.intensity+pixCol, false, PALETTE_SOLID_WRAP, 0), bright)); + + return FRAMETIME; +} // mode_freqmap() +static const char *_data_FX_MODE_FREQMAP PROGMEM = " ♫ Freqmap@Fade rate,Starting color;,!;!"; + + +/////////////////////// +// ** Freqmatrix // +/////////////////////// +uint16_t WS2812FX::mode_freqmatrix(void) { // Freqmatrix. By Andreas Pleschung. + double FFT_MajorPeak = 0.0; + float sampleAgc = 0.0f; + um_data_t *um_data; + if (usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) { + FFT_MajorPeak = *(double*)um_data->u_data[6]; + sampleAgc = *(float*)um_data->u_data[2]; + } else { + // add support for no audio data + } + + uint8_t secondHand = micros()/(256-SEGMENT.speed)/500 % 16; + if(SEGENV.aux0 != secondHand) { + SEGENV.aux0 = secondHand; + + uint8_t sensitivity = map(SEGMENT.custom3, 0, 255, 1, 10); + int pixVal = (sampleAgc * SEGMENT.intensity * sensitivity) / 256.0f; + if (pixVal > 255) pixVal = 255; + + float intensity = map(pixVal, 0, 255, 0, 100) / 100.0f; // make a brightness from the last avg + + CRGB color = 0; + + if (FFT_MajorPeak > 5120) FFT_MajorPeak = 0; + // MajorPeak holds the freq. value which is most abundant in the last sample. + // With our sampling rate of 10240Hz we have a usable freq range from roughtly 80Hz to 10240/2 Hz + // we will treat everything with less than 65Hz as 0 + + if (FFT_MajorPeak < 80) { + color = CRGB::Black; + } else { + int upperLimit = 20 * SEGMENT.custom2; + int lowerLimit = 2 * SEGMENT.custom1; + int i = lowerLimit!=upperLimit ? map(FFT_MajorPeak, lowerLimit, upperLimit, 0, 255) : FFT_MajorPeak; + uint16_t b = 255 * intensity; + if (b > 255) b = 255; + color = CHSV(i, 240, (uint8_t)b); // implicit conversion to RGB supplied by FastLED + } + + // shift the pixels one pixel up + for (uint16_t i = SEGLEN-1; i > 0; i--) setPixelColor(i, getPixelColor(i-1)); + setPixelColor(0, color); + } + + return FRAMETIME; +} // mode_freqmatrix() +static const char *_data_FX_MODE_FREQMATRIX PROGMEM = " ♫ Freqmatrix@Time delay,Sound effect,Low bin,High bin,Sensivity;;"; + + +////////////////////// +// ** Freqpixels // +////////////////////// +// Start frequency = 60 Hz and log10(60) = 1.78 +// End frequency = 5120 Hz and lo10(5120) = 3.71 +// SEGMENT.speed select faderate +// SEGMENT.intensity select colour index +uint16_t WS2812FX::mode_freqpixels(void) { // Freqpixel. By Andrew Tuline. + double FFT_MajorPeak = 0.0; + double FFT_Magnitude = 0.0; + uint8_t soundAgc = 0; + float sampleAvg = 0.0f; + float multAgc = 0.0f; + um_data_t *um_data; + if (usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) { + FFT_MajorPeak = *(double*)um_data->u_data[6]; + FFT_Magnitude = *(double*)um_data->u_data[7]; + sampleAvg = *(float*)um_data->u_data[0]; + soundAgc = *(uint8_t*)um_data->u_data[1]; + multAgc = *(float*)um_data->u_data[11]; + } else { + // add support for no audio data + } + + float my_magnitude = FFT_Magnitude / 16.0; + if (soundAgc) my_magnitude *= multAgc; + if (sampleAvg < 1 ) my_magnitude = 0.001; // noise gate closed - mute + + uint16_t fadeRate = 2*SEGMENT.speed - SEGMENT.speed*SEGMENT.speed/255; // Get to 255 as quick as you can. + fade_out(fadeRate); + + for (int i=0; i < SEGMENT.intensity/32+1; i++) { + uint16_t locn = random16(0,SEGLEN); + uint8_t pixCol = (log10f(FFT_MajorPeak) - 1.78) * 255.0/(3.71-1.78); // Scale log10 of frequency values to the 255 colour index. + setPixelColor(locn, color_blend(SEGCOLOR(1), color_from_palette(SEGMENT.intensity+pixCol, false, PALETTE_SOLID_WRAP, 0), (int)my_magnitude)); + } + + return FRAMETIME; +} // mode_freqpixels() +static const char *_data_FX_MODE_FREQPIXELS PROGMEM = " ♫ Freqpixels@Fade rate,Starting colour and # of pixels;;"; + + +////////////////////// +// ** Freqwave // +////////////////////// +// Assign a color to the central (starting pixels) based on the predominant frequencies and the volume. The color is being determined by mapping the MajorPeak from the FFT +// and then mapping this to the HSV color circle. Currently we are sampling at 10240 Hz, so the highest frequency we can look at is 5120Hz. +// +// SEGMENT.custom1: the lower cut off point for the FFT. (many, most time the lowest values have very little information since they are FFT conversion artifacts. Suggested value is close to but above 0 +// SEGMENT.custom2: The high cut off point. This depends on your sound profile. Most music looks good when this slider is between 50% and 100%. +// SEGMENT.custom3: "preamp" for the audio signal for audio10. +// +// I suggest that for this effect you turn the brightness to 95%-100% but again it depends on your soundprofile you find yourself in. +// Instead of using colorpalettes, This effect works on the HSV color circle with red being the lowest frequency +// +// As a compromise between speed and accuracy we are currently sampling with 10240Hz, from which we can then determine with a 512bin FFT our max frequency is 5120Hz. +// Depending on the music stream you have you might find it useful to change the frequency mapping. +uint16_t WS2812FX::mode_freqwave(void) { // Freqwave. By Andreas Pleschung. + double FFT_MajorPeak = 0.0; + uint8_t soundAgc = 0; + float sampleAgc = 0.0f, sampleAvg = 0.0f; + um_data_t *um_data; + if (usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) { + FFT_MajorPeak = *(double*)um_data->u_data[6]; + sampleAvg = *(float*)um_data->u_data[0]; + soundAgc = *(uint8_t*)um_data->u_data[1]; + sampleAgc = *(float*)um_data->u_data[2]; + } else { + // add support for no audio data + } + + uint8_t secondHand = micros()/(256-SEGMENT.speed)/500 % 16; + if(SEGENV.aux0 != secondHand) { + SEGENV.aux0 = secondHand; + + //uint8_t fade = SEGMENT.custom3; + //uint8_t fadeval; + + float tmpSound = (soundAgc) ? sampleAgc : sampleAvg; + + float sensitivity = mapf(SEGMENT.custom3, 1, 255, 1, 10); + float pixVal = tmpSound * (float)SEGMENT.intensity / 256.0f * sensitivity; + if (pixVal > 255) pixVal = 255; + + float intensity = mapf(pixVal, 0, 255, 0, 100) / 100.0f; // make a brightness from the last avg + + CRGB color = 0; + + if (FFT_MajorPeak > 5120) FFT_MajorPeak = 0.0f; + // MajorPeak holds the freq. value which is most abundant in the last sample. + // With our sampling rate of 10240Hz we have a usable freq range from roughtly 80Hz to 10240/2 Hz + // we will treat everything with less than 65Hz as 0 + + if (FFT_MajorPeak < 80) { + color = CRGB::Black; + } else { + int upperLimit = 20 * SEGMENT.custom2; + int lowerLimit = 2 * SEGMENT.custom1; + int i = lowerLimit!=upperLimit ? map(FFT_MajorPeak, lowerLimit, upperLimit, 0, 255) : FFT_MajorPeak; + uint16_t b = 255.0 * intensity; + if (b > 255) b=255; + color = CHSV(i, 240, (uint8_t)b); // implicit conversion to RGB supplied by FastLED + } + + setPixelColor(SEGLEN/2, color); + + // shift the pixels one pixel outwards + for (uint16_t i = SEGLEN-1; i > SEGLEN/2; i--) setPixelColor(i, getPixelColor(i-1)); // Move to the right. + for (uint16_t i = 0; i < SEGLEN/2; i++) setPixelColor(i, getPixelColor(i+1)); // Move to the left. + } + + return FRAMETIME; +} // mode_freqwave() +static const char *_data_FX_MODE_FREQWAVE PROGMEM = " ♫ Freqwave@Time delay,Sound effect,Low bin,High bin,Pre-amp;;"; + + +/////////////////////// +// ** Gravfreq // +/////////////////////// +uint16_t WS2812FX::mode_gravfreq(void) { // Gravfreq. By Andrew Tuline. + + uint16_t dataSize = sizeof(gravity); + if (!SEGENV.allocateData(dataSize)) return mode_static(); //allocation failed + Gravity* gravcen = reinterpret_cast(SEGENV.data); + + um_data_t *um_data; + uint8_t soundAgc = 0; + float sampleAgc = 0.0f, sampleAvg = 0.0f; + double FFT_MajorPeak = 0.0; + if (usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) { + FFT_MajorPeak = *(double*)um_data->u_data[6]; + soundAgc = *(uint8_t*)um_data->u_data[1]; + sampleAgc = *(float*)um_data->u_data[2]; + sampleAvg = *(float*)um_data->u_data[0]; + } else { + // add support for no audio data + sampleAvg = inoise8(12345); // I have no idea what that does + } + + fade_out(240); + + float tmpSound = (soundAgc) ? sampleAgc : sampleAvg; + float segmentSampleAvg = tmpSound * (float)SEGMENT.intensity / 255.0; + segmentSampleAvg *= 0.125; // divide by 8, to compensate for later "sensitivty" upscaling + + float mySampleAvg = mapf(segmentSampleAvg*2.0, 0,32, 0, (float)SEGLEN/2.0); // map to pixels availeable in current segment + int tempsamp = constrain(mySampleAvg,0,SEGLEN/2); // Keep the sample from overflowing. + uint8_t gravity = 8 - SEGMENT.speed/32; + + for (int i=0; i= gravcen->topLED) + gravcen->topLED = tempsamp-1; + else if (gravcen->gravityCounter % gravity == 0) + gravcen->topLED--; + + if (gravcen->topLED >= 0) { + setPixelColor(gravcen->topLED+SEGLEN/2, CRGB::Gray); + setPixelColor(SEGLEN/2-1-gravcen->topLED, CRGB::Gray); + } + gravcen->gravityCounter = (gravcen->gravityCounter + 1) % gravity; + + return FRAMETIME; +} // mode_gravfreq() +static const char *_data_FX_MODE_GRAVFREQ PROGMEM = " ♫ Gravfreq@Rate of fall,Sensivity=128;,!;!"; + + +////////////////////// +// ** Noisemove // +////////////////////// +uint16_t WS2812FX::mode_noisemove(void) { // Noisemove. By: Andrew Tuline + uint8_t *fftResult = nullptr; + um_data_t *um_data; + if (usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) { + fftResult = (uint8_t*)um_data->u_data[8]; + } else { + // add support for no audio data + } + if (!fftResult) return mode_static(); + + fade_out(224); // Just in case something doesn't get faded. + + uint8_t numBins = map(SEGMENT.intensity,0,255,0,16); // Map slider to fftResult bins. + for (int i=0; iu_data[6]; + FFT_Magnitude = *(double*)um_data->u_data[7]; + sampleAvg = *(float*)um_data->u_data[0]; + soundAgc = *(uint8_t*)um_data->u_data[1]; + multAgc = *(float*)um_data->u_data[11]; + } else { + // add support for no audio data + } + + fade_out(128); // Just in case something doesn't get faded. + + float frTemp = FFT_MajorPeak; + uint8_t octCount = 0; // Octave counter. + uint8_t volTemp = 0; + + float my_magnitude = FFT_Magnitude / 16.0; // scale magnitude to be aligned with scaling of FFT bins + if (soundAgc) my_magnitude *= multAgc; // apply gain + if (sampleAvg < 1 ) my_magnitude = 0.001; // mute + + if (my_magnitude > 32) volTemp = 255; // We need to squelch out the background noise. + + while ( frTemp > 249 ) { + octCount++; // This should go up to 5. + frTemp = frTemp/2; + } + + frTemp -=132; // This should give us a base musical note of C3 + frTemp = fabs(frTemp * 2.1); // Fudge factors to compress octave range starting at 0 and going to 255; + +// leds[beatsin8(8+octCount*4,0,SEGLEN-1,0,octCount*8)] += CHSV((uint8_t)frTemp,255,volTemp); // Back and forth with different frequencies and phase shift depending on current octave. + uint16_t i = map(beatsin8(8+octCount*4, 0, 255, 0, octCount*8), 0, 255, 0, SEGLEN-1); + setPixelColor(i, color_add(getPixelColor(i),color_blend(SEGCOLOR(1), color_from_palette((uint8_t)frTemp, false, PALETTE_SOLID_WRAP, 0), volTemp))); + + return FRAMETIME; +} // mode_rocktaves() +static const char *_data_FX_MODE_ROCKTAVES PROGMEM = " ♫ Rocktaves@;,!;!"; + + +/////////////////////// +// ** Waterfall // +/////////////////////// +// Combines peak detection with FFT_MajorPeak and FFT_Magnitude. +uint16_t WS2812FX::mode_waterfall(void) { // Waterfall. By: Andrew Tuline + if (SEGENV.call == 0) fill(BLACK); + + uint8_t *binNum, *maxVol; + uint8_t samplePeak = 0; + double FFT_MajorPeak = 0.0; + double FFT_Magnitude = 0.0; + uint8_t soundAgc = 0; + float sampleAvg = 0.0f; + float multAgc = 0.0f; + um_data_t *um_data; + if (usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) { + maxVol = (uint8_t*)um_data->u_data[9]; + samplePeak = *(uint8_t*)um_data->u_data[5]; + binNum = (uint8_t*)um_data->u_data[10]; + FFT_MajorPeak = *(double*)um_data->u_data[6]; + FFT_Magnitude = *(double*)um_data->u_data[7]; + sampleAvg = *(float*)um_data->u_data[0]; + soundAgc = *(uint8_t*)um_data->u_data[1]; + multAgc = *(float*)um_data->u_data[11]; + } else { + // add support for no audio data + uint32_t ms = millis(); + binNum = (uint8_t*) &SEGENV.aux1; + maxVol = (uint8_t*)(&SEGENV.aux1+1); + samplePeak = random8() > 250; + sampleAvg = inoise8(beatsin8(90, 0, 200)*15 + (ms>>10), ms>>3); + } + + if (SEGENV.call == 0) { + SEGENV.aux0 = 255; + SEGMENT.custom2 = *binNum; + SEGMENT.custom3 = *maxVol * 2; + } + + *binNum = SEGMENT.custom2; // Select a bin. + *maxVol = SEGMENT.custom3/2; // Our volume comparator. + + uint8_t secondHand = micros() / (256-SEGMENT.speed)/500 + 1 % 16; + if (SEGENV.aux0 != secondHand) { // Triggered millis timing. + SEGENV.aux0 = secondHand; + + float my_magnitude = FFT_Magnitude / 8.0f; + if (soundAgc) my_magnitude *= multAgc; + if (sampleAvg < 1 ) my_magnitude = 0.001f; // noise gate closed - mute + + uint8_t pixCol = (log10f((float)FFT_MajorPeak) - 2.26f) * 177; // log10 frequency range is from 2.26 to 3.7. Let's scale accordingly. + + if (samplePeak) { + setPixelColor(SEGLEN-1, CHSV(92,92,92)); + } else { + setPixelColor(SEGLEN-1, color_blend(SEGCOLOR(1), color_from_palette(pixCol+SEGMENT.intensity, false, PALETTE_SOLID_WRAP, 0), (int)my_magnitude)); + } + for (uint16_t i=0; i(SEGENV.data); //array of previous bar heights per frequency band + + uint8_t *fftResult = nullptr; + um_data_t *um_data; + if (usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) { + fftResult = (uint8_t*)um_data->u_data[8]; + } else { + // add support for no audio data + } + if (!fftResult) return mode_static(); + + if (SEGENV.call == 0) for (int i=0; i= (256 - SEGMENT.intensity)) { + SEGENV.step = millis(); + rippleTime = true; + } + + fadeToBlackBy(nullptr, 128+(SEGMENT.speed>>2)); + + for (int x=0; x < cols; x++) { + uint8_t band = map(x, 0, cols-1, 0, NUM_BANDS - 1); + uint16_t colorIndex = band * 17; + uint16_t barHeight = map(fftResult[band], 0, 255, 0, rows); // do not subtract -1 from rows here + if (barHeight > previousBarHeight[x]) previousBarHeight[x] = barHeight; //drive the peak up + + uint32_t ledColor = BLACK; + for (int y=0; y < barHeight; y++) { + if (SEGMENT.custom2 > 128) //color_vertical / color bars toggle + colorIndex = map(y, 0, rows-1, 0, 255); + + ledColor = color_from_palette(colorIndex, false, PALETTE_SOLID_WRAP, 0); + setPixelColorXY(x, rows-1 - y, ledColor); + } + if (previousBarHeight[x] > 0) + setPixelColorXY(x, rows - previousBarHeight[x], (SEGCOLOR(2) != BLACK) ? SEGCOLOR(2) : ledColor); + + if (rippleTime && previousBarHeight[x]>0) previousBarHeight[x]--; //delay/ripple effect + } + + return FRAMETIME; +} // mode_2DGEQ() +static const char *_data_FX_MODE_2DGEQ PROGMEM = " ♫ 2D GEQ@Fade speed,Ripple decay,# of bands=255,Color bars=64;!,,Peak Color;!=11"; + + +///////////////////////// +// ** 2D CenterBars // +///////////////////////// +// NOTE: obsolete! +uint16_t WS2812FX::mode_2DCenterBars(void) { // Written by Scott Marley Adapted by Spiro-C.. + return mode_2DGEQ(); +} // mode_2DCenterBars() +static const char *_data_FX_MODE_2DCENTERBARS PROGMEM = " ♫ 2D CenterBars@Bar speed,Ripple decay,# of bands=255,Color bars=64;!,,Peak Color;!=11"; + + +///////////////////////// +// ** 2D Funky plank // +///////////////////////// +uint16_t WS2812FX::mode_2DFunkyPlank(void) { // Written by ??? Adapted by Will Tatam. + if (!isMatrix) return mode_static(); // not a 2D set-up + + const uint16_t cols = SEGMENT.virtualWidth(); + const uint16_t rows = SEGMENT.virtualHeight(); + const uint16_t dataSize = sizeof(CRGB) * SEGMENT.width() * SEGMENT.height(); // using width*height prevents reallocation if mirroring is enabled + if (!SEGENV.allocateData(dataSize)) return mode_static(); //allocation failed + CRGB *leds = reinterpret_cast(SEGENV.data); + + int NUMB_BANDS = map(SEGMENT.custom1, 0, 255, 1, 16); + int barWidth = (cols / NUMB_BANDS); + int bandInc = 1; + if (barWidth == 0) { + // Matrix narrower than fft bands + barWidth = 1; + bandInc = (NUMB_BANDS / cols); + } + + uint8_t *fftResult = nullptr; + um_data_t *um_data; + if (usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) { + fftResult = (uint8_t*)um_data->u_data[8]; + } else { + // add support for no audio data + } + if (!fftResult) return mode_static(); + + uint8_t secondHand = micros()/(256-SEGMENT.speed)/500+1 % 64; + if (SEGENV.aux0 != secondHand) { // Triggered millis timing. + SEGENV.aux0 = secondHand; + + // display values of + int b = 0; + for (int band = 0; band < NUMB_BANDS; band += bandInc, b++) { + int hue = fftResult[band]; + int v = map(fftResult[band], 0, 255, 10, 255); + for (int w = 0; w < barWidth; w++) { + int xpos = (barWidth * b) + w; + leds[XY(xpos, 0)] = CHSV(hue, 255, v); + } + } + + // Update the display: + for (int i = (rows - 1); i > 0; i--) { + for (int j = (cols - 1); j >= 0; j--) { + int src = XY(j, (i - 1)); + int dst = XY(j, i); + leds[dst] = leds[src]; + } + } + } + + setPixels(leds); + return FRAMETIME; +} // mode_2DFunkyPlank +static const char *_data_FX_MODE_2DFUNKYPLANK PROGMEM = " ♫ 2D Funky Plank@Scroll speed,,# of bands;;"; + + +//end audio only routines +#endif + + +///////////////////////// +// 2D Akemi // +///////////////////////// +static uint8_t akemi[] PROGMEM = { + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,2,2,3,3,3,3,3,3,2,2,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,2,3,3,0,0,0,0,0,0,3,3,2,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,2,3,0,0,0,6,5,5,4,0,0,0,3,2,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,2,3,0,0,6,6,5,5,5,5,4,4,0,0,3,2,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,2,3,0,6,5,5,5,5,5,5,5,5,4,0,3,2,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,2,3,0,6,5,5,5,5,5,5,5,5,5,5,4,0,3,2,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,3,2,0,6,5,5,5,5,5,5,5,5,5,5,4,0,2,3,0,0,0,0,0,0,0, + 0,0,0,0,0,0,3,2,3,6,5,5,7,7,5,5,5,5,7,7,5,5,4,3,2,3,0,0,0,0,0,0, + 0,0,0,0,0,2,3,1,3,6,5,1,7,7,7,5,5,1,7,7,7,5,4,3,1,3,2,0,0,0,0,0, + 0,0,0,0,0,8,3,1,3,6,5,1,7,7,7,5,5,1,7,7,7,5,4,3,1,3,8,9,0,0,0,0, + 0,0,0,0,0,8,3,1,3,6,5,5,1,1,5,5,5,5,1,1,5,5,4,3,1,3,8,0,0,0,0,0, + 0,0,0,0,0,2,3,1,3,6,5,5,5,5,5,5,5,5,5,5,5,5,4,3,1,3,2,0,0,0,0,0, + 0,0,0,0,0,0,3,2,3,6,5,5,5,5,5,5,5,5,5,5,5,5,4,3,2,3,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,6,5,5,5,5,5,7,7,5,5,5,5,5,4,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,6,5,5,5,5,5,5,5,5,5,5,5,5,4,0,0,0,0,0,0,0,0,0, + 1,0,0,0,0,0,0,0,0,6,5,5,5,5,5,5,5,5,5,5,5,5,4,0,0,0,0,0,0,0,0,2, + 0,2,2,2,0,0,0,0,0,6,5,5,5,5,5,5,5,5,5,5,5,5,4,0,0,0,0,0,2,2,2,0, + 0,0,0,3,2,0,0,0,6,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,0,0,2,2,0,0,0, + 0,0,0,3,2,0,0,0,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,0,0,0,2,3,0,0,0, + 0,0,0,0,3,2,0,0,0,0,3,3,0,3,3,0,0,3,3,0,3,3,0,0,0,0,2,2,0,0,0,0, + 0,0,0,0,3,2,0,0,0,0,3,2,0,3,2,0,0,3,2,0,3,2,0,0,0,0,2,3,0,0,0,0, + 0,0,0,0,0,3,2,0,0,3,2,0,0,3,2,0,0,3,2,0,0,3,2,0,0,2,3,0,0,0,0,0, + 0,0,0,0,0,3,2,2,2,2,0,0,0,3,2,0,0,3,2,0,0,0,3,2,2,2,3,0,0,0,0,0, + 0,0,0,0,0,0,3,3,3,0,0,0,0,3,2,0,0,3,2,0,0,0,0,3,3,3,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,3,2,0,0,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,3,2,0,0,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,3,2,0,0,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,3,2,0,0,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }; +uint16_t WS2812FX::mode_2DAkemi(void) { + if (!isMatrix) return mode_static(); // not a 2D set-up + + const uint16_t cols = SEGMENT.virtualWidth(); + const uint16_t rows = SEGMENT.virtualHeight(); + + uint16_t counter = (now * ((SEGMENT.speed >> 2) +2)) & 0xFFFF; + counter = counter >> 8; + + const float lightFactor = 0.15f; + const float normalFactor = 0.4f; + float base = 0.0f; + uint8_t *fftResult = nullptr; + + um_data_t *um_data; + if (usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) { + fftResult = (uint8_t*)um_data->u_data[8]; + base = fftResult[0]/255.0f; + } + + //draw and color Akemi + for (uint16_t y=0; y < rows; y++) for (uint16_t x=0; x < cols; x++) { + CRGB color; + CRGB soundColor = ORANGE; + CRGB faceColor = color_wheel(counter); + CRGB armsAndLegsColor = SEGCOLOR(1) > 0 ? SEGCOLOR(1) : 0xFFE0A0; //default warmish white 0xABA8FF; //0xFF52e5;// + uint8_t ak = pgm_read_byte_near(akemi + ((y * 32)/rows) * 32 + (x * 32)/cols); // akemi[(y * 32)/rows][(x * 32)/cols] + switch (ak) { + case 0: color = BLACK; break; + case 3: armsAndLegsColor.r *= lightFactor; armsAndLegsColor.g *= lightFactor; armsAndLegsColor.b *= lightFactor; color = armsAndLegsColor; break; //light arms and legs 0x9B9B9B + case 2: armsAndLegsColor.r *= normalFactor; armsAndLegsColor.g *= normalFactor; armsAndLegsColor.b *= normalFactor; color = armsAndLegsColor; break; //normal arms and legs 0x888888 + case 1: color = armsAndLegsColor; break; //dark arms and legs 0x686868 + case 6: faceColor.r *= lightFactor; faceColor.g *= lightFactor; faceColor.b *= lightFactor; color=faceColor; break; //light face 0x31AAFF + case 5: faceColor.r *= normalFactor; faceColor.g *= normalFactor; faceColor.b *= normalFactor; color=faceColor; break; //normal face 0x0094FF + case 4: color = faceColor; break; //dark face 0x007DC6 + case 7: color = SEGCOLOR(2) > 0 ? SEGCOLOR(2) : 0xFFFFFF; break; //eyes and mouth default white + case 8: if (base > 0.4) {soundColor.r *= base; soundColor.g *= base; soundColor.b *= base; color=soundColor;} else color = armsAndLegsColor; break; + default: color = BLACK; + } + + if (SEGMENT.intensity > 128 && fftResult && fftResult[0] > 128) { //dance if base is high + setPixelColorXY(x, 0, BLACK); + setPixelColorXY(x, y+1, color); + } else + setPixelColorXY(x, y, color); + } + + //add geq left and right + if (um_data && fftResult) { + for (uint16_t x=0; x < cols/8; x++) { + uint16_t band = x * cols/8; + uint16_t barHeight = map(fftResult[band], 0, 255, 0, 17*rows/32); + CRGB color = color_from_palette((band * 35), false, PALETTE_SOLID_WRAP, 0); + + for (uint16_t y=0; y < barHeight; y++) { + setPixelColorXY(x, rows/2-y, color); + setPixelColorXY(cols-1-x, rows/2-y, color); + } + } + } + + return FRAMETIME; +} // mode_2DAkemi +static const char *_data_FX_MODE_2DAKEMI PROGMEM = "2D Akemi@Color speed,Dance;Head palette,Arms & Legs,Eyes & Mouth;Face palette"; + + +////////////////////////////////////////////////////////////////////////////////////////// +// mode data +static const char *_data_RESERVED PROGMEM = "Reserved"; +void WS2812FX::setupEffectData() { + // fill reserved word in case there will be any gaps in the array + for (byte i=0; i>16), byte(c>>8), byte(c), byte(c>>24));} - inline void setPixelColor(int n, byte r, byte g, byte b, byte w = 0) {setPixelColor(n, r, g, b, w);} - inline void setPixelColor(uint16_t n, uint32_t c) {setPixelColor(n, byte(c>>16), byte(c>>8), byte(c), byte(c>>24));} - inline void setPixelColor(uint16_t n, CRGB c) {setPixelColor(n, c.red, c.green, c.blue);} - inline void setPixelColor(float i, uint32_t c, bool aa = false) {setPixelColor(i, byte(c>>16), byte(c>>8), byte(c), byte(c>>24), aa);} - inline void setPixelColor(float i, CRGB c, bool aa = false) {setPixelColor(i, c.red, c.green, c.blue, 0, aa);} + void addEffect(uint8_t id, mode_ptr mode_fn, const char *mode_name) { if (id < _modeCount) { _mode[id] = mode_fn; _modeData[id] = mode_name;} } + void setupEffectData(void); // defined in FX.cpp + + // outsmart the compiler :) by correctly overloading + inline void setPixelColor(int n, uint32_t c) {setPixelColor(n, byte(c>>16), byte(c>>8), byte(c), byte(c>>24));} + inline void setPixelColor(int n, CRGB c) {setPixelColor(n, c.red, c.green, c.blue);} + inline void setPixelColor(float i, uint32_t c, bool aa=true) {setPixelColor(i, byte(c>>16), byte(c>>8), byte(c), byte(c>>24), aa);} + inline void setPixelColor(float i, CRGB c, bool aa=true) {setPixelColor(i, c.red, c.green, c.blue, 0, aa);} bool gammaCorrectBri = false, @@ -730,7 +668,6 @@ class WS2812FX { milliampsPerLed = 55, cctBlending = 0, getBrightness(void), - getModeCount(void), getPaletteCount(void), getMaxSegments(void), getActiveSegmentsNum(void), @@ -743,6 +680,7 @@ class WS2812FX { gamma8_cal(uint8_t, float), get_random_wheel_index(uint8_t); + inline uint8_t getModeCount() { return _modeCount; } inline uint8_t sin_gap(uint16_t in) { if (in & 0x100) return 0; return sin8(in + 192); // correct phase shift of sine so that it starts and stops at 0 @@ -773,6 +711,12 @@ class WS2812FX { getLastShow(void), getPixelColor(uint16_t); + const char * + getModeData(uint8_t id = 0) { return id<_modeCount ? _modeData[id] : nullptr; } + + const char ** + getModeDataSrc(void) { return _modeData; } + WS2812FX::Segment &getSegment(uint8_t n), &getFirstSelectedSeg(void), @@ -901,7 +845,11 @@ class WS2812FX { mode_candy_cane(void), mode_blends(void), mode_tv_simulator(void), - mode_dynamic_smooth(void); + mode_dynamic_smooth(void), + // non-audio transfered from WLED-SR + mode_perlinmove(void), + mode_wavesins(void), + mode_FlowStripe(void); // 2D support (panels) bool @@ -931,9 +879,10 @@ class WS2812FX { void setUpMatrix(), - setPixelColorXY(uint16_t x, uint16_t y, uint8_t r, uint8_t g, uint8_t b, uint8_t w = 0), + setPixelColorXY(int x, int y, uint8_t r, uint8_t g, uint8_t b, uint8_t w = 0), setPixelColorXY(float x, float y, byte r, byte g, byte b, byte w = 0, bool aa = false), blendPixelColorXY(uint16_t x, uint16_t y, uint32_t color, uint8_t blend), + addPixelColorXY(uint16_t x, uint16_t y, uint32_t color), blur1d(CRGB* leds, fract8 blur_amount), blur1d(uint16_t i, bool vertical, fract8 blur_amount, CRGB* leds=nullptr), // 1D box blur (with weight) blur2d(CRGB* leds, fract8 blur_amount), @@ -948,15 +897,16 @@ class WS2812FX { nscale8(CRGB* leds, uint8_t scale), setPixels(CRGB* leds), drawLine(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, CRGB c, CRGB *leds = nullptr), - drawCharacter(unsigned char chr, int16_t x, int16_t y, CRGB color, CRGB *leds = nullptr), + drawCharacter(unsigned char chr, int16_t x, int16_t y, uint8_t w, uint8_t h, CRGB color, CRGB *leds = nullptr), wu_pixel(CRGB *leds, uint32_t x, uint32_t y, CRGB c); - inline void setPixelColorXY(uint16_t x, uint16_t y, uint32_t c) { setPixelColorXY(x, y, byte(c>>16), byte(c>>8), byte(c), byte(c>>24)); } - inline void setPixelColorXY(uint16_t x, uint16_t y, CRGB c) { setPixelColorXY(x, y, c.red, c.green, c.blue); } - inline void setPixelColorXY(float x, float y, uint32_t c, bool aa) { setPixelColorXY(x, y, byte(c>>16), byte(c>>8), byte(c), byte(c>>24), aa); } - inline void setPixelColorXY(float x, float y, CRGB c, bool aa) { setPixelColorXY(x, y, c.red, c.green, c.blue, 0, aa); } + // outsmart the compiler :) by correctly overloading + inline void setPixelColorXY(int x, int y, uint32_t c) { setPixelColorXY(x, y, byte(c>>16), byte(c>>8), byte(c), byte(c>>24)); } + inline void setPixelColorXY(int x, int y, CRGB c) { setPixelColorXY(x, y, c.red, c.green, c.blue, 0); } + inline void setPixelColorXY(float x, float y, uint32_t c, bool aa=true) { setPixelColorXY(x, y, byte(c>>16), byte(c>>8), byte(c), byte(c>>24), aa); } + inline void setPixelColorXY(float x, float y, CRGB c, bool aa=true) { setPixelColorXY(x, y, c.red, c.green, c.blue, 0, aa); } inline void drawLine(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint32_t c) { drawLine(x0, y0, x1, y1, CRGB(byte(c>>16), byte(c>>8), byte(c))); } - inline void drawCharacter(unsigned char chr, int16_t x, int16_t y, uint32_t c) { drawCharacter(chr, x, y, CRGB(byte(c>>16), byte(c>>8), byte(c))); } + inline void drawCharacter(unsigned char chr, int16_t x, int16_t y, uint8_t w, uint8_t h, uint32_t c) { drawCharacter(chr, x, y, w, h, CRGB(byte(c>>16), byte(c>>8), byte(c))); } uint16_t XY(uint16_t, uint16_t), @@ -965,31 +915,10 @@ class WS2812FX { uint32_t getPixelColorXY(uint16_t, uint16_t); - // 2D modes +// end 2D support + + // 2D modes uint16_t - mode_2DBlackHole(void), - mode_2DColoredBursts(void), - mode_2Ddna(void), - mode_2DDNASpiral(void), - mode_2DDrift(void), - mode_2Dfirenoise(void), - mode_2DFrizzles(void), - mode_2Dgameoflife(void), - mode_2DHiphotic(void), - mode_2DJulia(void), - mode_2DLissajous(void), - mode_2Dmatrix(void), - mode_2Dmetaballs(void), - mode_2Dnoise(void), - mode_2DPlasmaball(void), - mode_2DPolarLights(void), - mode_2DPulser(void), - mode_2DSindots(void), - mode_2Dsquaredswirl(void), - mode_2DSunradiation(void), - mode_2Dtartan(void), - mode_2DWaverly(void), - mode_2DAkemi(void), mode_2Dspaceships(void), mode_2Dcrazybees(void), mode_2Dghostrider(void), @@ -997,7 +926,104 @@ class WS2812FX { mode_2Dscrollingtext(void), mode_2Ddriftrose(void); -// end 2D support + // WLED-SR modes +#ifndef USERMOD_AUDIOREACTIVE + uint16_t + mode_2Dnoise(void), + mode_2Dfirenoise(void), + mode_2Dsquaredswirl(void), + mode_2Ddna(void), + mode_2Dmatrix(void), + mode_2Dmetaballs(void), + mode_2DPulser(void), + mode_2Dgameoflife(void), + mode_2Dtartan(void), + mode_2DPolarLights(void), + mode_2DSwirl(void), + mode_2DLissajous(void), + mode_2DFrizzles(void), + mode_2DPlasmaball(void), + mode_2DHiphotic(void), + mode_2DSindots(void), + mode_2DDNASpiral(void), + mode_2DBlackHole(void), + mode_2DSunradiation(void), + mode_2DWaverly(void), + mode_2DDrift(void), + mode_2DColoredBursts(void), + mode_2DJulia(void), + mode_gravimeter(void), + mode_gravcenter(void), + mode_gravcentric(void), + mode_juggles(void), + mode_matripix(void), + mode_midnoise(void), + mode_noisemeter(void), + mode_noisefire(void), + mode_pixelwave(void), + mode_plasmoid(void), + mode_puddles(void), + mode_puddlepeak(void), + mode_ripplepeak(void), + mode_2DAkemi(void); +#else + uint16_t + GEQ_base(bool centered_horizontal, bool centered_vertical, bool color_vertical), + mode_pixels(void), + mode_pixelwave(void), + mode_juggles(void), + mode_matripix(void), + mode_gravimeter(void), + mode_plasmoid(void), + mode_puddles(void), + mode_midnoise(void), + mode_noisemeter(void), + mode_freqwave(void), + mode_freqmatrix(void), + mode_2DGEQ(void), + mode_waterfall(void), + mode_freqpixels(void), + mode_binmap(void), + mode_noisefire(void), + mode_puddlepeak(void), + mode_noisemove(void), + mode_2Dnoise(void), + mode_ripplepeak(void), + mode_2Dfirenoise(void), + mode_2Dsquaredswirl(void), + //mode_2Dfire2012(void), + mode_2Ddna(void), + mode_2Dmatrix(void), + mode_2Dmetaballs(void), + mode_freqmap(void), + mode_gravcenter(void), + mode_gravcentric(void), + mode_gravfreq(void), + mode_DJLight(void), + mode_2DFunkyPlank(void), + mode_2DCenterBars(void), + mode_2DPulser(void), + mode_blurz(void), + mode_2Dgameoflife(void), + mode_2Dtartan(void), + mode_2DPolarLights(void), + mode_2DSwirl(void), + mode_2DLissajous(void), + mode_2DFrizzles(void), + mode_2DPlasmaball(void), + mode_2DHiphotic(void), + mode_2DSindots(void), + mode_2DDNASpiral(void), + mode_2DBlackHole(void), + mode_rocktaves(void), + mode_2DAkemi(void), + mode_2DSunradiation(void), + mode_2DWaverly(void), + mode_2DDrift(void), + mode_2DColoredBursts(void), + mode_2DJulia(void), + mode_customEffect(void); //WLEDSR Custom Effects +#endif private: uint32_t crgb_to_col(CRGB fastled); @@ -1020,7 +1046,9 @@ class WS2812FX { _hasWhiteChannel = false, _triggered; + uint8_t _modeCount = MODE_COUNT; mode_ptr _mode[MODE_COUNT]; // SRAM footprint: 4 bytes per element + const char *_modeData[MODE_COUNT];// mode (effect) name and its slider control data array show_callback _callback = nullptr; diff --git a/wled00/FX_2Dfcn.cpp b/wled00/FX_2Dfcn.cpp index 0df41723..2b0eeac1 100644 --- a/wled00/FX_2Dfcn.cpp +++ b/wled00/FX_2Dfcn.cpp @@ -135,7 +135,7 @@ uint16_t IRAM_ATTR WS2812FX::get2DPixelIndex(uint16_t x, uint16_t y, uint8_t seg return ((_segments[seg].startY + y) * matrixWidth) + _segments[seg].start + x; } -void IRAM_ATTR WS2812FX::setPixelColorXY(uint16_t x, uint16_t y, byte r, byte g, byte b, byte w) +void IRAM_ATTR WS2812FX::setPixelColorXY(int x, int y, byte r, byte g, byte b, byte w) { if (!isMatrix) return; // not a matrix set-up @@ -147,6 +147,8 @@ void IRAM_ATTR WS2812FX::setPixelColorXY(uint16_t x, uint16_t y, byte r, byte g, } uint32_t col = RGBW32(r, g, b, w); + if (SEGMENT.getOption(SEG_OPTION_REVERSED) ) x = SEGMENT.virtualWidth() - x - 1; + if (SEGMENT.getOption(SEG_OPTION_REVERSED_Y)) y = SEGMENT.virtualHeight() - y - 1; if (SEGMENT.getOption(SEG_OPTION_TRANSPOSED)) { uint16_t t = x; x = y; y = t; } // swap X & Y if segment transposed x *= SEGMENT.groupLength(); // expand to physical pixels @@ -158,20 +160,22 @@ void IRAM_ATTR WS2812FX::setPixelColorXY(uint16_t x, uint16_t y, byte r, byte g, uint16_t index, xX = (x+g), yY = (y+j); if (xX >= SEGMENT.width() || yY >= SEGMENT.height()) continue; // we have reached one dimension's end - if (SEGMENT.getOption(SEG_OPTION_REVERSED) ) xX = SEGMENT.width() - xX - 1; - if (SEGMENT.getOption(SEG_OPTION_REVERSED_Y)) yY = SEGMENT.height() - yY - 1; + //if (SEGMENT.getOption(SEG_OPTION_REVERSED) ) xX = SEGMENT.width() - xX - 1; + //if (SEGMENT.getOption(SEG_OPTION_REVERSED_Y)) yY = SEGMENT.height() - yY - 1; index = get2DPixelIndex(xX, yY); if (index < customMappingSize) index = customMappingTable[index]; busses.setPixelColor(index, col); if (SEGMENT.getOption(SEG_OPTION_MIRROR)) { //set the corresponding horizontally mirrored pixel - index = get2DPixelIndex(SEGMENT.width() - xX - 1, yY); + //index = get2DPixelIndex(SEGMENT.width() - xX - 1, yY); + index = SEGMENT.getOption(SEG_OPTION_TRANSPOSED) ? get2DPixelIndex(xX, SEGMENT.height() - yY - 1) : get2DPixelIndex(SEGMENT.width() - xX - 1, yY); if (index < customMappingSize) index = customMappingTable[index]; busses.setPixelColor(index, col); } if (SEGMENT.getOption(SEG_OPTION_MIRROR_Y)) { //set the corresponding vertically mirrored pixel - index = get2DPixelIndex(xX, SEGMENT.height() - yY - 1); + //index = get2DPixelIndex(xX, SEGMENT.height() - yY - 1); + index = SEGMENT.getOption(SEG_OPTION_TRANSPOSED) ? get2DPixelIndex(SEGMENT.width() - xX - 1, yY) : get2DPixelIndex(xX, SEGMENT.height() - yY - 1); if (index < customMappingSize) index = customMappingTable[index]; busses.setPixelColor(index, col); } @@ -192,17 +196,17 @@ void /*IRAM_ATTR*/ WS2812FX::setPixelColorXY(float x, float y, byte r, byte g, b const uint16_t cols = SEGMENT.virtualWidth(); const uint16_t rows = SEGMENT.virtualHeight(); + float fX = x * (cols-1); + float fY = y * (rows-1); if (aa) { - float fX = x * (cols-1); - float fL = floorf(x * (cols-1)); - float fR = ceilf(x * (cols-1)); - float fY = y * (rows-1); - float fT = floorf(y * (rows-1)); - float fB = ceilf(y * (rows-1)); - uint16_t xL = fL; - uint16_t xR = fR; - uint16_t yT = fT; - uint16_t yB = fB; + uint16_t xL = roundf(fX-0.49f); + uint16_t xR = roundf(fX+0.49f); + uint16_t yT = roundf(fY-0.49f); + uint16_t yB = roundf(fY+0.49f); + float dL = fX - xL; + float dR = xR - fX; + float dT = fY - yT; + float dB = yB - fY; uint32_t cXLYT = getPixelColorXY(xL, yT); uint32_t cXRYT = getPixelColorXY(xR, yT); uint32_t cXLYB = getPixelColorXY(xL, yB); @@ -210,50 +214,52 @@ void /*IRAM_ATTR*/ WS2812FX::setPixelColorXY(float x, float y, byte r, byte g, b if (xL!=xR && yT!=yB) { // blend TL pixel - cXLYT = color_blend(RGBW32(r,g,b,w), cXLYT, sqrtf((fR - fX)*(fB - fY))*UINT16_MAX, true); - setPixelColorXY(xR, yT, R(cXLYT), G(cXLYT), B(cXLYT), W(cXLYT)); + cXLYT = color_blend(RGBW32(r,g,b,w), cXLYT, uint8_t(sqrtf(dL*dT)*255.0f)); + setPixelColorXY(xL, yT, R(cXLYT), G(cXLYT), B(cXLYT), W(cXLYT)); // blend TR pixel - cXRYT = color_blend(RGBW32(r,g,b,w), cXRYT, sqrtf((fX - fL)*(fB - fY))*UINT16_MAX, true); + cXRYT = color_blend(RGBW32(r,g,b,w), cXRYT, uint8_t(sqrtf(dR*dT)*255.0f)); setPixelColorXY(xR, yT, R(cXRYT), G(cXRYT), B(cXRYT), W(cXRYT)); // blend BL pixel - cXLYB = color_blend(RGBW32(r,g,b,w), cXLYB, sqrtf((fR - fX)*(fY - fT))*UINT16_MAX, true); + cXLYB = color_blend(RGBW32(r,g,b,w), cXLYB, uint8_t(sqrtf(dL*dB)*255.0f)); setPixelColorXY(xL, yB, R(cXLYB), G(cXLYB), B(cXLYB), W(cXLYB)); // blend BR pixel - cXRYB = color_blend(RGBW32(r,g,b,w), cXRYB, sqrtf((fX - fL)*(fY - fT))*UINT16_MAX, true); + cXRYB = color_blend(RGBW32(r,g,b,w), cXRYB, uint8_t(sqrtf(dR*dB)*255.0f)); setPixelColorXY(xR, yB, R(cXRYB), G(cXRYB), B(cXRYB), W(cXRYB)); } else if (xR!=xL && yT==yB) { // blend L pixel - cXLYT = color_blend(RGBW32(r,g,b,w), cXLYT, (fR - fX)*UINT16_MAX, true); + cXLYT = color_blend(RGBW32(r,g,b,w), cXLYT, uint8_t(dL*255.0f)); setPixelColorXY(xR, yT, R(cXLYT), G(cXLYT), B(cXLYT), W(cXLYT)); // blend R pixel - cXRYT = color_blend(RGBW32(r,g,b,w), cXRYT, (fX - fL)*UINT16_MAX, true); + cXRYT = color_blend(RGBW32(r,g,b,w), cXRYT, uint8_t(dR*255.0f)); setPixelColorXY(xR, yT, R(cXRYT), G(cXRYT), B(cXRYT), W(cXRYT)); } else if (xR==xL && yT!=yB) { // blend T pixel - cXLYT = color_blend(RGBW32(r,g,b,w), cXLYT, (fB - fY)*UINT16_MAX, true); + cXLYT = color_blend(RGBW32(r,g,b,w), cXLYT, uint8_t(dT*255.0f)); setPixelColorXY(xR, yT, R(cXLYT), G(cXLYT), B(cXLYT), W(cXLYT)); // blend B pixel - cXLYB = color_blend(RGBW32(r,g,b,w), cXLYB, (fY - fT)*UINT16_MAX, true); + cXLYB = color_blend(RGBW32(r,g,b,w), cXLYB, uint8_t(dB*255.0f)); setPixelColorXY(xL, yB, R(cXLYB), G(cXLYB), B(cXLYB), W(cXLYB)); } else { // exact match (x & y land on a pixel) setPixelColorXY(xL, yT, r, g, b, w); } } else { - setPixelColorXY((uint16_t)roundf(x * (cols-1)), (uint16_t)roundf(y * (rows-1)), r, g, b, w); + setPixelColorXY(uint16_t(roundf(fX)), uint16_t(roundf(fY)), r, g, b, w); } } // returns RGBW values of pixel uint32_t WS2812FX::getPixelColorXY(uint16_t x, uint16_t y) { + if (SEGMENT.getOption(SEG_OPTION_REVERSED) ) x = SEGMENT.virtualWidth() - x - 1; + if (SEGMENT.getOption(SEG_OPTION_REVERSED_Y)) y = SEGMENT.virtualHeight() - y - 1; if (SEGMENT.getOption(SEG_OPTION_TRANSPOSED)) { uint16_t t = x; x = y; y = t; } // swap X & Y if segment transposed x *= SEGMENT.groupLength(); // expand to physical pixels y *= SEGMENT.groupLength(); // expand to physical pixels if (x >= SEGMENT.width() || y >= SEGMENT.height()) return 0; - if (SEGMENT.getOption(SEG_OPTION_REVERSED) ) x = SEGMENT.width() - x - 1; - if (SEGMENT.getOption(SEG_OPTION_REVERSED_Y)) y = SEGMENT.height() - y - 1; + //if (SEGMENT.getOption(SEG_OPTION_REVERSED) ) x = SEGMENT.width() - x - 1; + //if (SEGMENT.getOption(SEG_OPTION_REVERSED_Y)) y = SEGMENT.height() - y - 1; uint16_t index = get2DPixelIndex(x, y); if (index < customMappingSize) index = customMappingTable[index]; @@ -268,6 +274,13 @@ void WS2812FX::blendPixelColorXY(uint16_t x, uint16_t y, uint32_t color, uint8_t setPixelColorXY(x, y, color_blend(getPixelColorXY(x,y), color, blend)); } +/* + * Adds the specified color with the existing pixel color perserving color balance. + */ +void WS2812FX::addPixelColorXY(uint16_t x, uint16_t y, uint32_t color) { + setPixelColorXY(x, y, color_add(getPixelColorXY(x,y), color)); +} + // blurRow: perform a blur on a row of a rectangular matrix void WS2812FX::blurRow(uint16_t row, fract8 blur_amount, CRGB* leds) { const uint16_t cols = SEGMENT.virtualWidth(); @@ -3580,18 +3593,3100 @@ static const unsigned char console_font_6x8[] PROGMEM = { 0x00 /* 000000 */ }; -void WS2812FX::drawCharacter(unsigned char chr, int16_t x, int16_t y, CRGB color, CRGB *leds) { +static const unsigned char console_font_5x8[] PROGMEM = { + + /* + * code=0, hex=0x00, ascii="^@" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + + /* + * code=1, hex=0x01, ascii="^A" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x70, /* 01110 */ + 0xA8, /* 10101 */ + 0xF8, /* 11111 */ + 0xD8, /* 11011 */ + 0x70, /* 01110 */ + 0x00, /* 00000 */ + + /* + * code=2, hex=0x02, ascii="^B" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x70, /* 01110 */ + 0xA8, /* 10101 */ + 0xF8, /* 11111 */ + 0xF8, /* 11111 */ + 0x70, /* 01110 */ + 0x00, /* 00000 */ + + /* + * code=3, hex=0x03, ascii="^C" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x50, /* 01010 */ + 0xF8, /* 11111 */ + 0xF8, /* 11111 */ + 0x70, /* 01110 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + + /* + * code=4, hex=0x04, ascii="^D" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x20, /* 00100 */ + 0x70, /* 01110 */ + 0xF8, /* 11111 */ + 0x70, /* 01110 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + + /* + * code=5, hex=0x05, ascii="^E" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x70, /* 01110 */ + 0xA8, /* 10101 */ + 0xF8, /* 11111 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + + /* + * code=6, hex=0x06, ascii="^F" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x20, /* 00100 */ + 0x70, /* 01110 */ + 0xF8, /* 11111 */ + 0xA8, /* 10101 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + + /* + * code=7, hex=0x07, ascii="^G" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x20, /* 00100 */ + 0x70, /* 01110 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + + /* + * code=8, hex=0x08, ascii="^H" + */ + 0x00, /* 00000 */ + 0xF8, /* 11111 */ + 0xF8, /* 11111 */ + 0xD8, /* 11011 */ + 0x88, /* 10001 */ + 0xD8, /* 11011 */ + 0xF8, /* 11111 */ + 0xF8, /* 11111 */ + + /* + * code=9, hex=0x09, ascii="^I" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x20, /* 00100 */ + 0x50, /* 01010 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + + /* + * code=10, hex=0x0A, ascii="^J" + */ + 0x00, /* 00000 */ + 0xF8, /* 11111 */ + 0xF8, /* 11111 */ + 0xD8, /* 11011 */ + 0x88, /* 10001 */ + 0xD8, /* 11011 */ + 0xF8, /* 11111 */ + 0xF8, /* 11111 */ + + /* + * code=11, hex=0x0B, ascii="^K" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x38, /* 00111 */ + 0x18, /* 00011 */ + 0x68, /* 01101 */ + 0xA0, /* 10100 */ + 0x40, /* 01000 */ + 0x00, /* 00000 */ + + /* + * code=12, hex=0x0C, ascii="^L" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x20, /* 00100 */ + 0x50, /* 01010 */ + 0x20, /* 00100 */ + 0x70, /* 01110 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + + /* + * code=13, hex=0x0D, ascii="^M" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x20, /* 00100 */ + 0x50, /* 01010 */ + 0x40, /* 01000 */ + 0xC0, /* 11000 */ + 0x80, /* 10000 */ + 0x00, /* 00000 */ + + /* + * code=14, hex=0x0E, ascii="^N" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x38, /* 00111 */ + 0x48, /* 01001 */ + 0x58, /* 01011 */ + 0xD0, /* 11010 */ + 0x80, /* 10000 */ + 0x00, /* 00000 */ + + /* + * code=15, hex=0x0F, ascii="^O" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x20, /* 00100 */ + 0x50, /* 01010 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + + /* + * code=16, hex=0x10, ascii="^P" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x40, /* 01000 */ + 0x60, /* 01100 */ + 0x70, /* 01110 */ + 0x60, /* 01100 */ + 0x40, /* 01000 */ + 0x00, /* 00000 */ + + /* + * code=17, hex=0x11, ascii="^Q" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x10, /* 00010 */ + 0x30, /* 00110 */ + 0x70, /* 01110 */ + 0x30, /* 00110 */ + 0x10, /* 00010 */ + 0x00, /* 00000 */ + + /* + * code=18, hex=0x12, ascii="^R" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x20, /* 00100 */ + 0x70, /* 01110 */ + 0x20, /* 00100 */ + 0x70, /* 01110 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + + /* + * code=19, hex=0x13, ascii="^S" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x00, /* 00000 */ + 0x50, /* 01010 */ + 0x00, /* 00000 */ + + /* + * code=20, hex=0x14, ascii="^T" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x78, /* 01111 */ + 0xD0, /* 11010 */ + 0xD0, /* 11010 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + + /* + * code=21, hex=0x15, ascii="^U" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x18, /* 00011 */ + 0x60, /* 01100 */ + 0x90, /* 10010 */ + 0x48, /* 01001 */ + 0x30, /* 00110 */ + 0xC0, /* 11000 */ + + /* + * code=22, hex=0x16, ascii="^V" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0xF8, /* 11111 */ + 0xF8, /* 11111 */ + 0x00, /* 00000 */ + + /* + * code=23, hex=0x17, ascii="^W" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x20, /* 00100 */ + 0x70, /* 01110 */ + 0x20, /* 00100 */ + 0x70, /* 01110 */ + 0x20, /* 00100 */ + 0x70, /* 01110 */ + + /* + * code=24, hex=0x18, ascii="^X" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x20, /* 00100 */ + 0x70, /* 01110 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + + /* + * code=25, hex=0x19, ascii="^Y" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x70, /* 01110 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + + /* + * code=26, hex=0x1A, ascii="^Z" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x10, /* 00010 */ + 0xF8, /* 11111 */ + 0x10, /* 00010 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + + /* + * code=27, hex=0x1B, ascii="^[" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x40, /* 01000 */ + 0xF8, /* 11111 */ + 0x40, /* 01000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + + /* + * code=28, hex=0x1C, ascii="^\" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x80, /* 10000 */ + 0xF8, /* 11111 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + + /* + * code=29, hex=0x1D, ascii="^]" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x50, /* 01010 */ + 0xF8, /* 11111 */ + 0x50, /* 01010 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + + /* + * code=30, hex=0x1E, ascii="^^" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x20, /* 00100 */ + 0x70, /* 01110 */ + 0xF8, /* 11111 */ + 0x00, /* 00000 */ + + /* + * code=31, hex=0x1F, ascii="^_" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0xF8, /* 11111 */ + 0x70, /* 01110 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + + /* + * code=32, hex=0x20, ascii=" " + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + + /* + * code=33, hex=0x21, ascii="!" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + + /* + * code=34, hex=0x22, ascii=""" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + + /* + * code=35, hex=0x23, ascii="#" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x50, /* 01010 */ + 0xF8, /* 11111 */ + 0x50, /* 01010 */ + 0xF8, /* 11111 */ + 0x50, /* 01010 */ + 0x00, /* 00000 */ + + /* + * code=36, hex=0x24, ascii="$" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x20, /* 00100 */ + 0x30, /* 00110 */ + 0x40, /* 01000 */ + 0x30, /* 00110 */ + 0x60, /* 01100 */ + 0x20, /* 00100 */ + + /* + * code=37, hex=0x25, ascii="%" + */ + 0x00, /* 00000 */ + 0x40, /* 01000 */ + 0xA8, /* 10101 */ + 0x50, /* 01010 */ + 0x30, /* 00110 */ + 0x68, /* 01101 */ + 0x90, /* 10010 */ + 0x00, /* 00000 */ + + /* + * code=38, hex=0x26, ascii="&" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x30, /* 00110 */ + 0x40, /* 01000 */ + 0x68, /* 01101 */ + 0x90, /* 10010 */ + 0x68, /* 01101 */ + 0x00, /* 00000 */ + + /* + * code=39, hex=0x27, ascii="'" + */ + 0x00, /* 00000 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + + /* + * code=40, hex=0x28, ascii="(" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x20, /* 00100 */ + 0x40, /* 01000 */ + 0x40, /* 01000 */ + 0x40, /* 01000 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + + /* + * code=41, hex=0x29, ascii=")" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x40, /* 01000 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x40, /* 01000 */ + 0x00, /* 00000 */ + + /* + * code=42, hex=0x2A, ascii="*" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x50, /* 01010 */ + 0x20, /* 00100 */ + 0x70, /* 01110 */ + 0x20, /* 00100 */ + 0x50, /* 01010 */ + 0x00, /* 00000 */ + + /* + * code=43, hex=0x2B, ascii="+" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x20, /* 00100 */ + 0x70, /* 01110 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + + /* + * code=44, hex=0x2C, ascii="," + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x20, /* 00100 */ + 0x40, /* 01000 */ + + /* + * code=45, hex=0x2D, ascii="-" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0xF0, /* 11110 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + + /* + * code=46, hex=0x2E, ascii="." + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + + /* + * code=47, hex=0x2F, ascii="/" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x10, /* 00010 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x40, /* 01000 */ + 0x40, /* 01000 */ + 0x00, /* 00000 */ + + /* + * code=48, hex=0x30, ascii="0" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x60, /* 01100 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x60, /* 01100 */ + 0x00, /* 00000 */ + + /* + * code=49, hex=0x31, ascii="1" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x20, /* 00100 */ + 0x60, /* 01100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + + /* + * code=50, hex=0x32, ascii="2" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x60, /* 01100 */ + 0x90, /* 10010 */ + 0x20, /* 00100 */ + 0x40, /* 01000 */ + 0xF0, /* 11110 */ + 0x00, /* 00000 */ + + /* + * code=51, hex=0x33, ascii="3" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0xE0, /* 11100 */ + 0x10, /* 00010 */ + 0x60, /* 01100 */ + 0x10, /* 00010 */ + 0xE0, /* 11100 */ + 0x00, /* 00000 */ + + /* + * code=52, hex=0x34, ascii="4" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x10, /* 00010 */ + 0x30, /* 00110 */ + 0x50, /* 01010 */ + 0xF0, /* 11110 */ + 0x10, /* 00010 */ + 0x00, /* 00000 */ + + /* + * code=53, hex=0x35, ascii="5" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0xF0, /* 11110 */ + 0x80, /* 10000 */ + 0xE0, /* 11100 */ + 0x10, /* 00010 */ + 0xE0, /* 11100 */ + 0x00, /* 00000 */ + + /* + * code=54, hex=0x36, ascii="6" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x60, /* 01100 */ + 0x80, /* 10000 */ + 0xE0, /* 11100 */ + 0x90, /* 10010 */ + 0x60, /* 01100 */ + 0x00, /* 00000 */ + + /* + * code=55, hex=0x37, ascii="7" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0xF0, /* 11110 */ + 0x10, /* 00010 */ + 0x20, /* 00100 */ + 0x40, /* 01000 */ + 0x40, /* 01000 */ + 0x00, /* 00000 */ + + /* + * code=56, hex=0x38, ascii="8" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x60, /* 01100 */ + 0x90, /* 10010 */ + 0x60, /* 01100 */ + 0x90, /* 10010 */ + 0x60, /* 01100 */ + 0x00, /* 00000 */ + + /* + * code=57, hex=0x39, ascii="9" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x60, /* 01100 */ + 0x90, /* 10010 */ + 0x70, /* 01110 */ + 0x10, /* 00010 */ + 0x60, /* 01100 */ + 0x00, /* 00000 */ + + /* + * code=58, hex=0x3A, ascii=":" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + + /* + * code=59, hex=0x3B, ascii=";" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + 0x20, /* 00100 */ + 0x40, /* 01000 */ + + /* + * code=60, hex=0x3C, ascii="<" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x10, /* 00010 */ + 0x20, /* 00100 */ + 0x40, /* 01000 */ + 0x20, /* 00100 */ + 0x10, /* 00010 */ + 0x00, /* 00000 */ + + /* + * code=61, hex=0x3D, ascii="=" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x70, /* 01110 */ + 0x00, /* 00000 */ + 0x70, /* 01110 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + + /* + * code=62, hex=0x3E, ascii=">" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x40, /* 01000 */ + 0x20, /* 00100 */ + 0x10, /* 00010 */ + 0x20, /* 00100 */ + 0x40, /* 01000 */ + 0x00, /* 00000 */ + + /* + * code=63, hex=0x3F, ascii="?" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x60, /* 01100 */ + 0x10, /* 00010 */ + 0x60, /* 01100 */ + 0x00, /* 00000 */ + 0x40, /* 01000 */ + 0x00, /* 00000 */ + + /* + * code=64, hex=0x40, ascii="@" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x70, /* 01110 */ + 0x88, /* 10001 */ + 0xB0, /* 10110 */ + 0x80, /* 10000 */ + 0x70, /* 01110 */ + 0x00, /* 00000 */ + + /* + * code=65, hex=0x41, ascii="A" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x60, /* 01100 */ + 0x90, /* 10010 */ + 0xF0, /* 11110 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x00, /* 00000 */ + + /* + * code=66, hex=0x42, ascii="B" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0xE0, /* 11100 */ + 0x90, /* 10010 */ + 0xE0, /* 11100 */ + 0x90, /* 10010 */ + 0xE0, /* 11100 */ + 0x00, /* 00000 */ + + /* + * code=67, hex=0x43, ascii="C" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x70, /* 01110 */ + 0x80, /* 10000 */ + 0x80, /* 10000 */ + 0x80, /* 10000 */ + 0x70, /* 01110 */ + 0x00, /* 00000 */ + + /* + * code=68, hex=0x44, ascii="D" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0xE0, /* 11100 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0xE0, /* 11100 */ + 0x00, /* 00000 */ + + /* + * code=69, hex=0x45, ascii="E" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0xF0, /* 11110 */ + 0x80, /* 10000 */ + 0xE0, /* 11100 */ + 0x80, /* 10000 */ + 0xF0, /* 11110 */ + 0x00, /* 00000 */ + + /* + * code=70, hex=0x46, ascii="F" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0xF0, /* 11110 */ + 0x80, /* 10000 */ + 0xE0, /* 11100 */ + 0x80, /* 10000 */ + 0x80, /* 10000 */ + 0x00, /* 00000 */ + + /* + * code=71, hex=0x47, ascii="G" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x60, /* 01100 */ + 0x90, /* 10010 */ + 0x80, /* 10000 */ + 0x90, /* 10010 */ + 0x70, /* 01110 */ + 0x00, /* 00000 */ + + /* + * code=72, hex=0x48, ascii="H" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0xF0, /* 11110 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x00, /* 00000 */ + + /* + * code=73, hex=0x49, ascii="I" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x70, /* 01110 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x70, /* 01110 */ + 0x00, /* 00000 */ + + /* + * code=74, hex=0x4A, ascii="J" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x10, /* 00010 */ + 0x10, /* 00010 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x60, /* 01100 */ + 0x00, /* 00000 */ + + /* + * code=75, hex=0x4B, ascii="K" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x90, /* 10010 */ + 0xA0, /* 10100 */ + 0xC0, /* 11000 */ + 0xA0, /* 10100 */ + 0x90, /* 10010 */ + 0x00, /* 00000 */ + + /* + * code=76, hex=0x4C, ascii="L" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x80, /* 10000 */ + 0x80, /* 10000 */ + 0x80, /* 10000 */ + 0x80, /* 10000 */ + 0xF0, /* 11110 */ + 0x00, /* 00000 */ + + /* + * code=77, hex=0x4D, ascii="M" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0xF0, /* 11110 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x00, /* 00000 */ + + /* + * code=78, hex=0x4E, ascii="N" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x90, /* 10010 */ + 0xD0, /* 11010 */ + 0xB0, /* 10110 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x00, /* 00000 */ + + /* + * code=79, hex=0x4F, ascii="O" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x60, /* 01100 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x60, /* 01100 */ + 0x00, /* 00000 */ + + /* + * code=80, hex=0x50, ascii="P" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0xE0, /* 11100 */ + 0x90, /* 10010 */ + 0xE0, /* 11100 */ + 0x80, /* 10000 */ + 0x80, /* 10000 */ + 0x00, /* 00000 */ + + /* + * code=81, hex=0x51, ascii="Q" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x60, /* 01100 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x60, /* 01100 */ + 0x10, /* 00010 */ + + /* + * code=82, hex=0x52, ascii="R" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0xE0, /* 11100 */ + 0x90, /* 10010 */ + 0xE0, /* 11100 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x00, /* 00000 */ + + /* + * code=83, hex=0x53, ascii="S" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x70, /* 01110 */ + 0x80, /* 10000 */ + 0x60, /* 01100 */ + 0x10, /* 00010 */ + 0xE0, /* 11100 */ + 0x00, /* 00000 */ + + /* + * code=84, hex=0x54, ascii="T" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0xF8, /* 11111 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + + /* + * code=85, hex=0x55, ascii="U" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x60, /* 01100 */ + 0x00, /* 00000 */ + + /* + * code=86, hex=0x56, ascii="V" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x60, /* 01100 */ + 0x60, /* 01100 */ + 0x00, /* 00000 */ + + /* + * code=87, hex=0x57, ascii="W" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x88, /* 10001 */ + 0xA8, /* 10101 */ + 0xA8, /* 10101 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x00, /* 00000 */ + + /* + * code=88, hex=0x58, ascii="X" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x60, /* 01100 */ + 0x50, /* 01010 */ + 0x90, /* 10010 */ + 0x00, /* 00000 */ + + /* + * code=89, hex=0x59, ascii="Y" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + + /* + * code=90, hex=0x5A, ascii="Z" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0xF0, /* 11110 */ + 0x20, /* 00100 */ + 0x40, /* 01000 */ + 0x80, /* 10000 */ + 0xF0, /* 11110 */ + 0x00, /* 00000 */ + + /* + * code=91, hex=0x5B, ascii="[" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x60, /* 01100 */ + 0x40, /* 01000 */ + 0x40, /* 01000 */ + 0x40, /* 01000 */ + 0x60, /* 01100 */ + 0x00, /* 00000 */ + + /* + * code=92, hex=0x5C, ascii="\" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x40, /* 01000 */ + 0x40, /* 01000 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x10, /* 00010 */ + 0x00, /* 00000 */ + + /* + * code=93, hex=0x5D, ascii="]" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x60, /* 01100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x60, /* 01100 */ + 0x00, /* 00000 */ + + /* + * code=94, hex=0x5E, ascii="^" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x20, /* 00100 */ + 0x50, /* 01010 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + + /* + * code=95, hex=0x5F, ascii="_" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0xF8, /* 11111 */ + + /* + * code=96, hex=0x60, ascii="`" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x40, /* 01000 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + + /* + * code=97, hex=0x61, ascii="a" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x60, /* 01100 */ + 0x10, /* 00010 */ + 0x70, /* 01110 */ + 0x50, /* 01010 */ + 0x00, /* 00000 */ + + /* + * code=98, hex=0x62, ascii="b" + */ + 0x00, /* 00000 */ + 0x80, /* 10000 */ + 0x80, /* 10000 */ + 0xE0, /* 11100 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0xE0, /* 11100 */ + 0x00, /* 00000 */ + + /* + * code=99, hex=0x63, ascii="c" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x30, /* 00110 */ + 0x40, /* 01000 */ + 0x40, /* 01000 */ + 0x30, /* 00110 */ + 0x00, /* 00000 */ + + /* + * code=100, hex=0x64, ascii="d" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x10, /* 00010 */ + 0x70, /* 01110 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x70, /* 01110 */ + 0x00, /* 00000 */ + + /* + * code=101, hex=0x65, ascii="e" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x60, /* 01100 */ + 0xF0, /* 11110 */ + 0x80, /* 10000 */ + 0x70, /* 01110 */ + 0x00, /* 00000 */ + + /* + * code=102, hex=0x66, ascii="f" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x30, /* 00110 */ + 0x40, /* 01000 */ + 0xE0, /* 11100 */ + 0x40, /* 01000 */ + 0x40, /* 01000 */ + 0x00, /* 00000 */ + + /* + * code=103, hex=0x67, ascii="g" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x70, /* 01110 */ + 0x90, /* 10010 */ + 0x70, /* 01110 */ + 0x10, /* 00010 */ + 0x60, /* 01100 */ + + /* + * code=104, hex=0x68, ascii="h" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x80, /* 10000 */ + 0xE0, /* 11100 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x00, /* 00000 */ + + /* + * code=105, hex=0x69, ascii="i" + */ + 0x00, /* 00000 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + 0x60, /* 01100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x70, /* 01110 */ + 0x00, /* 00000 */ + + /* + * code=106, hex=0x6A, ascii="j" + */ + 0x00, /* 00000 */ + 0x10, /* 00010 */ + 0x00, /* 00000 */ + 0x10, /* 00010 */ + 0x10, /* 00010 */ + 0x10, /* 00010 */ + 0x10, /* 00010 */ + 0x60, /* 01100 */ + + /* + * code=107, hex=0x6B, ascii="k" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x80, /* 10000 */ + 0xA0, /* 10100 */ + 0xC0, /* 11000 */ + 0xA0, /* 10100 */ + 0x90, /* 10010 */ + 0x00, /* 00000 */ + + /* + * code=108, hex=0x6C, ascii="l" + */ + 0x00, /* 00000 */ + 0x60, /* 01100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x70, /* 01110 */ + 0x00, /* 00000 */ + + /* + * code=109, hex=0x6D, ascii="m" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x90, /* 10010 */ + 0xF0, /* 11110 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x00, /* 00000 */ + + /* + * code=110, hex=0x6E, ascii="n" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0xE0, /* 11100 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x00, /* 00000 */ + + /* + * code=111, hex=0x6F, ascii="o" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x60, /* 01100 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x60, /* 01100 */ + 0x00, /* 00000 */ + + /* + * code=112, hex=0x70, ascii="p" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0xE0, /* 11100 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0xE0, /* 11100 */ + 0x80, /* 10000 */ + + /* + * code=113, hex=0x71, ascii="q" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x70, /* 01110 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x70, /* 01110 */ + 0x10, /* 00010 */ + + /* + * code=114, hex=0x72, ascii="r" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x50, /* 01010 */ + 0x60, /* 01100 */ + 0x40, /* 01000 */ + 0x40, /* 01000 */ + 0x00, /* 00000 */ + + /* + * code=115, hex=0x73, ascii="s" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x70, /* 01110 */ + 0xC0, /* 11000 */ + 0x30, /* 00110 */ + 0xE0, /* 11100 */ + 0x00, /* 00000 */ + + /* + * code=116, hex=0x74, ascii="t" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x40, /* 01000 */ + 0xF0, /* 11110 */ + 0x40, /* 01000 */ + 0x40, /* 01000 */ + 0x30, /* 00110 */ + 0x00, /* 00000 */ + + /* + * code=117, hex=0x75, ascii="u" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x70, /* 01110 */ + 0x00, /* 00000 */ + + /* + * code=118, hex=0x76, ascii="v" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x60, /* 01100 */ + 0x60, /* 01100 */ + 0x00, /* 00000 */ + + /* + * code=119, hex=0x77, ascii="w" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0xF0, /* 11110 */ + 0x90, /* 10010 */ + 0x00, /* 00000 */ + + /* + * code=120, hex=0x78, ascii="x" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x90, /* 10010 */ + 0x60, /* 01100 */ + 0x60, /* 01100 */ + 0x90, /* 10010 */ + 0x00, /* 00000 */ + + /* + * code=121, hex=0x79, ascii="y" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x70, /* 01110 */ + 0x10, /* 00010 */ + 0x60, /* 01100 */ + + /* + * code=122, hex=0x7A, ascii="z" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0xF0, /* 11110 */ + 0x20, /* 00100 */ + 0x40, /* 01000 */ + 0xF0, /* 11110 */ + 0x00, /* 00000 */ + + /* + * code=123, hex=0x7B, ascii="{" + */ + 0x00, /* 00000 */ + 0x10, /* 00010 */ + 0x20, /* 00100 */ + 0x40, /* 01000 */ + 0x40, /* 01000 */ + 0x20, /* 00100 */ + 0x10, /* 00010 */ + 0x00, /* 00000 */ + + /* + * code=124, hex=0x7C, ascii="|" + */ + 0x00, /* 00000 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + + /* + * code=125, hex=0x7D, ascii="}" + */ + 0x00, /* 00000 */ + 0x40, /* 01000 */ + 0x20, /* 00100 */ + 0x10, /* 00010 */ + 0x10, /* 00010 */ + 0x20, /* 00100 */ + 0x40, /* 01000 */ + 0x00, /* 00000 */ + + /* + * code=126, hex=0x7E, ascii="~" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x50, /* 01010 */ + 0xA0, /* 10100 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + + /* + * code=127, hex=0x7F, ascii="^?" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x20, /* 00100 */ + 0x50, /* 01010 */ + 0x88, /* 10001 */ + 0xF8, /* 11111 */ + 0x00, /* 00000 */ + + /* + * code=128, hex=0x80, ascii="!^@" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x70, /* 01110 */ + 0x80, /* 10000 */ + 0x80, /* 10000 */ + 0x80, /* 10000 */ + 0x70, /* 01110 */ + 0x20, /* 00100 */ + + /* + * code=129, hex=0x81, ascii="!^A" + */ + 0x00, /* 00000 */ + 0x50, /* 01010 */ + 0x00, /* 00000 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x70, /* 01110 */ + 0x00, /* 00000 */ + + /* + * code=130, hex=0x82, ascii="!^B" + */ + 0x10, /* 00010 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + 0x60, /* 01100 */ + 0xF0, /* 11110 */ + 0x80, /* 10000 */ + 0x70, /* 01110 */ + 0x00, /* 00000 */ + + /* + * code=131, hex=0x83, ascii="!^C" + */ + 0x20, /* 00100 */ + 0x50, /* 01010 */ + 0x00, /* 00000 */ + 0xC0, /* 11000 */ + 0x20, /* 00100 */ + 0xA0, /* 10100 */ + 0x50, /* 01010 */ + 0x00, /* 00000 */ + + /* + * code=132, hex=0x84, ascii="!^D" + */ + 0x00, /* 00000 */ + 0x50, /* 01010 */ + 0x00, /* 00000 */ + 0xC0, /* 11000 */ + 0x20, /* 00100 */ + 0x60, /* 01100 */ + 0xB0, /* 10110 */ + 0x00, /* 00000 */ + + /* + * code=133, hex=0x85, ascii="!^E" + */ + 0x40, /* 01000 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + 0xC0, /* 11000 */ + 0x20, /* 00100 */ + 0x60, /* 01100 */ + 0xB0, /* 10110 */ + 0x00, /* 00000 */ + + /* + * code=134, hex=0x86, ascii="!^F" + */ + 0x00, /* 00000 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + 0xC0, /* 11000 */ + 0x20, /* 00100 */ + 0x60, /* 01100 */ + 0xB0, /* 10110 */ + 0x00, /* 00000 */ + + /* + * code=135, hex=0x87, ascii="!^G" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x30, /* 00110 */ + 0x40, /* 01000 */ + 0x40, /* 01000 */ + 0x30, /* 00110 */ + 0x20, /* 00100 */ + + /* + * code=136, hex=0x88, ascii="!^H" + */ + 0x20, /* 00100 */ + 0x50, /* 01010 */ + 0x00, /* 00000 */ + 0x60, /* 01100 */ + 0xF0, /* 11110 */ + 0x80, /* 10000 */ + 0x70, /* 01110 */ + 0x00, /* 00000 */ + + /* + * code=137, hex=0x89, ascii="!^I" + */ + 0x00, /* 00000 */ + 0x50, /* 01010 */ + 0x00, /* 00000 */ + 0x60, /* 01100 */ + 0xF0, /* 11110 */ + 0x80, /* 10000 */ + 0x70, /* 01110 */ + 0x00, /* 00000 */ + + /* + * code=138, hex=0x8A, ascii="!^J" + */ + 0x40, /* 01000 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + 0x60, /* 01100 */ + 0xF0, /* 11110 */ + 0x80, /* 10000 */ + 0x70, /* 01110 */ + 0x00, /* 00000 */ + + /* + * code=139, hex=0x8B, ascii="!^K" + */ + 0x00, /* 00000 */ + 0x50, /* 01010 */ + 0x00, /* 00000 */ + 0x60, /* 01100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x70, /* 01110 */ + 0x00, /* 00000 */ + + /* + * code=140, hex=0x8C, ascii="!^L" + */ + 0x20, /* 00100 */ + 0x50, /* 01010 */ + 0x00, /* 00000 */ + 0x60, /* 01100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x70, /* 01110 */ + 0x00, /* 00000 */ + + /* + * code=141, hex=0x8D, ascii="!^M" + */ + 0x40, /* 01000 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + 0x60, /* 01100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x70, /* 01110 */ + 0x00, /* 00000 */ + + /* + * code=142, hex=0x8E, ascii="!^N" + */ + 0xA0, /* 10100 */ + 0x00, /* 00000 */ + 0x60, /* 01100 */ + 0x90, /* 10010 */ + 0xF0, /* 11110 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x00, /* 00000 */ + + /* + * code=143, hex=0x8F, ascii="!^O" + */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + 0x60, /* 01100 */ + 0x90, /* 10010 */ + 0xF0, /* 11110 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x00, /* 00000 */ + + /* + * code=144, hex=0x90, ascii="!^P" + */ + 0x10, /* 00010 */ + 0x20, /* 00100 */ + 0xF0, /* 11110 */ + 0x80, /* 10000 */ + 0xE0, /* 11100 */ + 0x80, /* 10000 */ + 0xF0, /* 11110 */ + 0x00, /* 00000 */ + + /* + * code=145, hex=0x91, ascii="!^Q" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0xD8, /* 11011 */ + 0x78, /* 01111 */ + 0xE0, /* 11100 */ + 0xB8, /* 10111 */ + 0x00, /* 00000 */ + + /* + * code=146, hex=0x92, ascii="!^R" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x70, /* 01110 */ + 0xA0, /* 10100 */ + 0xF0, /* 11110 */ + 0xA0, /* 10100 */ + 0xB0, /* 10110 */ + 0x00, /* 00000 */ + + /* + * code=147, hex=0x93, ascii="!^S" + */ + 0x20, /* 00100 */ + 0x50, /* 01010 */ + 0x00, /* 00000 */ + 0x60, /* 01100 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x60, /* 01100 */ + 0x00, /* 00000 */ + + /* + * code=148, hex=0x94, ascii="!^T" + */ + 0x00, /* 00000 */ + 0x50, /* 01010 */ + 0x00, /* 00000 */ + 0x60, /* 01100 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x60, /* 01100 */ + 0x00, /* 00000 */ + + /* + * code=149, hex=0x95, ascii="!^U" + */ + 0x40, /* 01000 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + 0x60, /* 01100 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x60, /* 01100 */ + 0x00, /* 00000 */ + + /* + * code=150, hex=0x96, ascii="!^V" + */ + 0x20, /* 00100 */ + 0x50, /* 01010 */ + 0x00, /* 00000 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x70, /* 01110 */ + 0x00, /* 00000 */ + + /* + * code=151, hex=0x97, ascii="!^W" + */ + 0x40, /* 01000 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x70, /* 01110 */ + 0x00, /* 00000 */ + + /* + * code=152, hex=0x98, ascii="!^X" + */ + 0x00, /* 00000 */ + 0x50, /* 01010 */ + 0x00, /* 00000 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x70, /* 01110 */ + 0x10, /* 00010 */ + 0x60, /* 01100 */ + + /* + * code=153, hex=0x99, ascii="!^Y" + */ + 0x00, /* 00000 */ + 0x50, /* 01010 */ + 0x00, /* 00000 */ + 0x60, /* 01100 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x60, /* 01100 */ + 0x00, /* 00000 */ + + /* + * code=154, hex=0x9A, ascii="!^Z" + */ + 0x50, /* 01010 */ + 0x00, /* 00000 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x60, /* 01100 */ + 0x00, /* 00000 */ + + /* + * code=155, hex=0x9B, ascii="!^[" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x20, /* 00100 */ + 0x70, /* 01110 */ + 0x80, /* 10000 */ + 0x80, /* 10000 */ + 0x70, /* 01110 */ + 0x20, /* 00100 */ + + /* + * code=156, hex=0x9C, ascii="!^\" + */ + 0x00, /* 00000 */ + 0x30, /* 00110 */ + 0x50, /* 01010 */ + 0x40, /* 01000 */ + 0xE0, /* 11100 */ + 0x40, /* 01000 */ + 0xF0, /* 11110 */ + 0x00, /* 00000 */ + + /* + * code=157, hex=0x9D, ascii="!^]" + */ + 0x00, /* 00000 */ + 0xD8, /* 11011 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x20, /* 00100 */ + 0x70, /* 01110 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + + /* + * code=158, hex=0x9E, ascii="!^^" + */ + 0x00, /* 00000 */ + 0xC0, /* 11000 */ + 0xA0, /* 10100 */ + 0xB0, /* 10110 */ + 0xF8, /* 11111 */ + 0x90, /* 10010 */ + 0x88, /* 10001 */ + 0x00, /* 00000 */ + + /* + * code=159, hex=0x9F, ascii="!^_" + */ + 0x00, /* 00000 */ + 0x30, /* 00110 */ + 0x40, /* 01000 */ + 0x40, /* 01000 */ + 0xF0, /* 11110 */ + 0x40, /* 01000 */ + 0x40, /* 01000 */ + 0x80, /* 10000 */ + + /* + * code=160, hex=0xA0, ascii="! " + */ + 0x20, /* 00100 */ + 0x40, /* 01000 */ + 0x00, /* 00000 */ + 0xC0, /* 11000 */ + 0x20, /* 00100 */ + 0x60, /* 01100 */ + 0xB0, /* 10110 */ + 0x00, /* 00000 */ + + /* + * code=161, hex=0xA1, ascii="!!" + */ + 0x10, /* 00010 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + 0x60, /* 01100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x70, /* 01110 */ + 0x00, /* 00000 */ + + /* + * code=162, hex=0xA2, ascii="!"" + */ + 0x10, /* 00010 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + 0x60, /* 01100 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x60, /* 01100 */ + 0x00, /* 00000 */ + + /* + * code=163, hex=0xA3, ascii="!#" + */ + 0x10, /* 00010 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x70, /* 01110 */ + 0x00, /* 00000 */ + + /* + * code=164, hex=0xA4, ascii="!$" + */ + 0x50, /* 01010 */ + 0xA0, /* 10100 */ + 0x00, /* 00000 */ + 0xE0, /* 11100 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x00, /* 00000 */ + + /* + * code=165, hex=0xA5, ascii="!%" + */ + 0x50, /* 01010 */ + 0xA0, /* 10100 */ + 0x90, /* 10010 */ + 0xD0, /* 11010 */ + 0xD0, /* 11010 */ + 0xB0, /* 10110 */ + 0x90, /* 10010 */ + 0x00, /* 00000 */ + + /* + * code=166, hex=0xA6, ascii="!&" + */ + 0x00, /* 00000 */ + 0x20, /* 00100 */ + 0x50, /* 01010 */ + 0x30, /* 00110 */ + 0x00, /* 00000 */ + 0x70, /* 01110 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + + /* + * code=167, hex=0xA7, ascii="!'" + */ + 0x00, /* 00000 */ + 0x20, /* 00100 */ + 0x50, /* 01010 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + 0x70, /* 01110 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + + /* + * code=168, hex=0xA8, ascii="!(" + */ + 0x00, /* 00000 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + 0x20, /* 00100 */ + 0x40, /* 01000 */ + 0x90, /* 10010 */ + 0x60, /* 01100 */ + 0x00, /* 00000 */ + + /* + * code=169, hex=0xA9, ascii="!)" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0xF8, /* 11111 */ + 0x80, /* 10000 */ + 0x00, /* 00000 */ + + /* + * code=170, hex=0xAA, ascii="!*" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0xF8, /* 11111 */ + 0x08, /* 00001 */ + 0x00, /* 00000 */ + + /* + * code=171, hex=0xAB, ascii="!+" + */ + 0x00, /* 00000 */ + 0x80, /* 10000 */ + 0x90, /* 10010 */ + 0xA0, /* 10100 */ + 0x58, /* 01011 */ + 0x88, /* 10001 */ + 0x38, /* 00111 */ + 0x00, /* 00000 */ + + /* + * code=172, hex=0xAC, ascii="!," + */ + 0x00, /* 00000 */ + 0x88, /* 10001 */ + 0x90, /* 10010 */ + 0xA0, /* 10100 */ + 0x48, /* 01001 */ + 0x98, /* 10011 */ + 0x38, /* 00111 */ + 0x08, /* 00001 */ + + /* + * code=173, hex=0xAD, ascii="!-" + */ + 0x00, /* 00000 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x70, /* 01110 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + + /* + * code=174, hex=0xAE, ascii="!." + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x50, /* 01010 */ + 0xA0, /* 10100 */ + 0x50, /* 01010 */ + 0x00, /* 00000 */ + + /* + * code=175, hex=0xAF, ascii="!/" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0xA0, /* 10100 */ + 0x50, /* 01010 */ + 0xA0, /* 10100 */ + 0x00, /* 00000 */ + + /* + * code=176, hex=0xB0, ascii="!0" + */ + 0xA8, /* 10101 */ + 0x50, /* 01010 */ + 0xA8, /* 10101 */ + 0x50, /* 01010 */ + 0xA8, /* 10101 */ + 0x50, /* 01010 */ + 0xA8, /* 10101 */ + 0x50, /* 01010 */ + + /* + * code=177, hex=0xB1, ascii="!1" + */ + 0xE8, /* 11101 */ + 0x50, /* 01010 */ + 0xB8, /* 10111 */ + 0x50, /* 01010 */ + 0xE8, /* 11101 */ + 0x50, /* 01010 */ + 0xB8, /* 10111 */ + 0x50, /* 01010 */ + + /* + * code=178, hex=0xB2, ascii="!2" + */ + 0xD8, /* 11011 */ + 0x70, /* 01110 */ + 0xD8, /* 11011 */ + 0x70, /* 01110 */ + 0xD8, /* 11011 */ + 0x70, /* 01110 */ + 0xD8, /* 11011 */ + 0x70, /* 01110 */ + + /* + * code=179, hex=0xB3, ascii="!3" + */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + + /* + * code=180, hex=0xB4, ascii="!4" + */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0xE0, /* 11100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + + /* + * code=181, hex=0xB5, ascii="!5" + */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0xE0, /* 11100 */ + 0x20, /* 00100 */ + 0xE0, /* 11100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + + /* + * code=182, hex=0xB6, ascii="!6" + */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0xD0, /* 11010 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + + /* + * code=183, hex=0xB7, ascii="!7" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0xF0, /* 11110 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + + /* + * code=184, hex=0xB8, ascii="!8" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0xE0, /* 11100 */ + 0x20, /* 00100 */ + 0xE0, /* 11100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + + /* + * code=185, hex=0xB9, ascii="!9" + */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0xD0, /* 11010 */ + 0x10, /* 00010 */ + 0xD0, /* 11010 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + + /* + * code=186, hex=0xBA, ascii="!:" + */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + + /* + * code=187, hex=0xBB, ascii="!;" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0xF0, /* 11110 */ + 0x10, /* 00010 */ + 0xD0, /* 11010 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + + /* + * code=188, hex=0xBC, ascii="!<" + */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0xD0, /* 11010 */ + 0x10, /* 00010 */ + 0xF0, /* 11110 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + + /* + * code=189, hex=0xBD, ascii="!=" + */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0xF0, /* 11110 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + + /* + * code=190, hex=0xBE, ascii="!>" + */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0xE0, /* 11100 */ + 0x20, /* 00100 */ + 0xE0, /* 11100 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + + /* + * code=191, hex=0xBF, ascii="!?" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0xE0, /* 11100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + + /* + * code=192, hex=0xC0, ascii="!@" + */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x38, /* 00111 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + + /* + * code=193, hex=0xC1, ascii="!A" + */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0xF8, /* 11111 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + + /* + * code=194, hex=0xC2, ascii="!B" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0xF8, /* 11111 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + + /* + * code=195, hex=0xC3, ascii="!C" + */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x38, /* 00111 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + + /* + * code=196, hex=0xC4, ascii="!D" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0xF8, /* 11111 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + + /* + * code=197, hex=0xC5, ascii="!E" + */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0xF8, /* 11111 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + + /* + * code=198, hex=0xC6, ascii="!F" + */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x38, /* 00111 */ + 0x20, /* 00100 */ + 0x38, /* 00111 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + + /* + * code=199, hex=0xC7, ascii="!G" + */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x58, /* 01011 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + + /* + * code=200, hex=0xC8, ascii="!H" + */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x58, /* 01011 */ + 0x40, /* 01000 */ + 0x78, /* 01111 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + + /* + * code=201, hex=0xC9, ascii="!I" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x78, /* 01111 */ + 0x40, /* 01000 */ + 0x58, /* 01011 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + + /* + * code=202, hex=0xCA, ascii="!J" + */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0xD8, /* 11011 */ + 0x00, /* 00000 */ + 0xF8, /* 11111 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + + /* + * code=203, hex=0xCB, ascii="!K" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0xF8, /* 11111 */ + 0x00, /* 00000 */ + 0xD8, /* 11011 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + + /* + * code=204, hex=0xCC, ascii="!L" + */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x58, /* 01011 */ + 0x40, /* 01000 */ + 0x58, /* 01011 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + + /* + * code=205, hex=0xCD, ascii="!M" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0xF8, /* 11111 */ + 0x00, /* 00000 */ + 0xF8, /* 11111 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + + /* + * code=206, hex=0xCE, ascii="!N" + */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0xD8, /* 11011 */ + 0x00, /* 00000 */ + 0xD8, /* 11011 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + + /* + * code=207, hex=0xCF, ascii="!O" + */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0xF8, /* 11111 */ + 0x00, /* 00000 */ + 0xF8, /* 11111 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + + /* + * code=208, hex=0xD0, ascii="!P" + */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0xF8, /* 11111 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + + /* + * code=209, hex=0xD1, ascii="!Q" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0xF8, /* 11111 */ + 0x00, /* 00000 */ + 0xF8, /* 11111 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + + /* + * code=210, hex=0xD2, ascii="!R" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0xF8, /* 11111 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + + /* + * code=211, hex=0xD3, ascii="!S" + */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x78, /* 01111 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + + /* + * code=212, hex=0xD4, ascii="!T" + */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x38, /* 00111 */ + 0x20, /* 00100 */ + 0x38, /* 00111 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + + /* + * code=213, hex=0xD5, ascii="!U" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x38, /* 00111 */ + 0x20, /* 00100 */ + 0x38, /* 00111 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + + /* + * code=214, hex=0xD6, ascii="!V" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x78, /* 01111 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + + /* + * code=215, hex=0xD7, ascii="!W" + */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0xF8, /* 11111 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + + /* + * code=216, hex=0xD8, ascii="!X" + */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0xF8, /* 11111 */ + 0x20, /* 00100 */ + 0xF8, /* 11111 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + + /* + * code=217, hex=0xD9, ascii="!Y" + */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0xE0, /* 11100 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + + /* + * code=218, hex=0xDA, ascii="!Z" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x38, /* 00111 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + + /* + * code=219, hex=0xDB, ascii="![" + */ + 0xF8, /* 11111 */ + 0xF8, /* 11111 */ + 0xF8, /* 11111 */ + 0xF8, /* 11111 */ + 0xF8, /* 11111 */ + 0xF8, /* 11111 */ + 0xF8, /* 11111 */ + 0xF8, /* 11111 */ + + /* + * code=220, hex=0xDC, ascii="!\" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0xF8, /* 11111 */ + 0xF8, /* 11111 */ + 0xF8, /* 11111 */ + 0xF8, /* 11111 */ + + /* + * code=221, hex=0xDD, ascii="!]" + */ + 0xE0, /* 11100 */ + 0xE0, /* 11100 */ + 0xE0, /* 11100 */ + 0xE0, /* 11100 */ + 0xE0, /* 11100 */ + 0xE0, /* 11100 */ + 0xE0, /* 11100 */ + 0xE0, /* 11100 */ + + /* + * code=222, hex=0xDE, ascii="!^" + */ + 0x18, /* 00011 */ + 0x18, /* 00011 */ + 0x18, /* 00011 */ + 0x18, /* 00011 */ + 0x18, /* 00011 */ + 0x18, /* 00011 */ + 0x18, /* 00011 */ + 0x18, /* 00011 */ + + /* + * code=223, hex=0xDF, ascii="!_" + */ + 0xF8, /* 11111 */ + 0xF8, /* 11111 */ + 0xF8, /* 11111 */ + 0xF8, /* 11111 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + + /* + * code=224, hex=0xE0, ascii="!`" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x68, /* 01101 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x68, /* 01101 */ + 0x00, /* 00000 */ + + /* + * code=225, hex=0xE1, ascii="!a" + */ + 0x00, /* 00000 */ + 0x60, /* 01100 */ + 0x90, /* 10010 */ + 0xF0, /* 11110 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0xE0, /* 11100 */ + 0x80, /* 10000 */ + + /* + * code=226, hex=0xE2, ascii="!b" + */ + 0x00, /* 00000 */ + 0x70, /* 01110 */ + 0x40, /* 01000 */ + 0x40, /* 01000 */ + 0x40, /* 01000 */ + 0x40, /* 01000 */ + 0x40, /* 01000 */ + 0x00, /* 00000 */ + + /* + * code=227, hex=0xE3, ascii="!c" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x70, /* 01110 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x00, /* 00000 */ + + /* + * code=228, hex=0xE4, ascii="!d" + */ + 0x00, /* 00000 */ + 0xF8, /* 11111 */ + 0x48, /* 01001 */ + 0x20, /* 00100 */ + 0x40, /* 01000 */ + 0x88, /* 10001 */ + 0xF8, /* 11111 */ + 0x00, /* 00000 */ + + /* + * code=229, hex=0xE5, ascii="!e" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x78, /* 01111 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x60, /* 01100 */ + 0x00, /* 00000 */ + + /* + * code=230, hex=0xE6, ascii="!f" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0xE8, /* 11101 */ + 0x80, /* 10000 */ + + /* + * code=231, hex=0xE7, ascii="!g" + */ + 0x00, /* 00000 */ + 0x98, /* 10011 */ + 0x50, /* 01010 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + + /* + * code=232, hex=0xE8, ascii="!h" + */ + 0x00, /* 00000 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x70, /* 01110 */ + 0x88, /* 10001 */ + 0x70, /* 01110 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + + /* + * code=233, hex=0xE9, ascii="!i" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x70, /* 01110 */ + 0x88, /* 10001 */ + 0xF8, /* 11111 */ + 0x88, /* 10001 */ + 0x70, /* 01110 */ + 0x00, /* 00000 */ + + /* + * code=234, hex=0xEA, ascii="!j" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x70, /* 01110 */ + 0x88, /* 10001 */ + 0x88, /* 10001 */ + 0x50, /* 01010 */ + 0xD8, /* 11011 */ + 0x00, /* 00000 */ + + /* + * code=235, hex=0xEB, ascii="!k" + */ + 0x60, /* 01100 */ + 0x80, /* 10000 */ + 0x40, /* 01000 */ + 0x60, /* 01100 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x60, /* 01100 */ + 0x00, /* 00000 */ + + /* + * code=236, hex=0xEC, ascii="!l" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x70, /* 01110 */ + 0xA8, /* 10101 */ + 0xA8, /* 10101 */ + 0x70, /* 01110 */ + 0x00, /* 00000 */ + + /* + * code=237, hex=0xED, ascii="!m" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x08, /* 00001 */ + 0x70, /* 01110 */ + 0xA8, /* 10101 */ + 0x48, /* 01001 */ + 0xB0, /* 10110 */ + 0x00, /* 00000 */ + + /* + * code=238, hex=0xEE, ascii="!n" + */ + 0x00, /* 00000 */ + 0x30, /* 00110 */ + 0x40, /* 01000 */ + 0x70, /* 01110 */ + 0x40, /* 01000 */ + 0x40, /* 01000 */ + 0x30, /* 00110 */ + 0x00, /* 00000 */ + + /* + * code=239, hex=0xEF, ascii="!o" + */ + 0x00, /* 00000 */ + 0x60, /* 01100 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x90, /* 10010 */ + 0x00, /* 00000 */ + + /* + * code=240, hex=0xF0, ascii="!p" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0xF0, /* 11110 */ + 0x00, /* 00000 */ + 0xF0, /* 11110 */ + 0x00, /* 00000 */ + 0xF0, /* 11110 */ + 0x00, /* 00000 */ + + /* + * code=241, hex=0xF1, ascii="!q" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x20, /* 00100 */ + 0xF8, /* 11111 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + 0xF8, /* 11111 */ + 0x00, /* 00000 */ + + /* + * code=242, hex=0xF2, ascii="!r" + */ + 0x00, /* 00000 */ + 0x40, /* 01000 */ + 0x20, /* 00100 */ + 0x10, /* 00010 */ + 0x20, /* 00100 */ + 0x40, /* 01000 */ + 0xF0, /* 11110 */ + 0x00, /* 00000 */ + + /* + * code=243, hex=0xF3, ascii="!s" + */ + 0x00, /* 00000 */ + 0x10, /* 00010 */ + 0x20, /* 00100 */ + 0x40, /* 01000 */ + 0x20, /* 00100 */ + 0x10, /* 00010 */ + 0x70, /* 01110 */ + 0x00, /* 00000 */ + + /* + * code=244, hex=0xF4, ascii="!t" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x18, /* 00011 */ + 0x28, /* 00101 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + + /* + * code=245, hex=0xF5, ascii="!u" + */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0x20, /* 00100 */ + 0xA0, /* 10100 */ + 0xC0, /* 11000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + + /* + * code=246, hex=0xF6, ascii="!v" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x60, /* 01100 */ + 0x00, /* 00000 */ + 0xF0, /* 11110 */ + 0x00, /* 00000 */ + 0x60, /* 01100 */ + 0x00, /* 00000 */ + + /* + * code=247, hex=0xF7, ascii="!w" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x50, /* 01010 */ + 0xA0, /* 10100 */ + 0x00, /* 00000 */ + 0x50, /* 01010 */ + 0xA0, /* 10100 */ + 0x00, /* 00000 */ + + /* + * code=248, hex=0xF8, ascii="!x" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x20, /* 00100 */ + 0x50, /* 01010 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + + /* + * code=249, hex=0xF9, ascii="!y" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x60, /* 01100 */ + 0x60, /* 01100 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + + /* + * code=250, hex=0xFA, ascii="!z" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x20, /* 00100 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + + /* + * code=251, hex=0xFB, ascii="!{" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x18, /* 00011 */ + 0x10, /* 00010 */ + 0x20, /* 00100 */ + 0xA0, /* 10100 */ + 0x40, /* 01000 */ + 0x00, /* 00000 */ + + /* + * code=252, hex=0xFC, ascii="!|" + */ + 0x00, /* 00000 */ + 0x60, /* 01100 */ + 0x50, /* 01010 */ + 0x50, /* 01010 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + + /* + * code=253, hex=0xFD, ascii="!}" + */ + 0x00, /* 00000 */ + 0x60, /* 01100 */ + 0x10, /* 00010 */ + 0x20, /* 00100 */ + 0x70, /* 01110 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + + /* + * code=254, hex=0xFE, ascii="!~" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x70, /* 01110 */ + 0x70, /* 01110 */ + 0x70, /* 01110 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + + /* + * code=255, hex=0xFF, ascii="!^Ÿ" + */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ + 0x00, /* 00000 */ +}; + +// draws a raster font character on canvas +// only supports 5x8 and 6x8 fonts ATM +void WS2812FX::drawCharacter(unsigned char chr, int16_t x, int16_t y, uint8_t w, uint8_t h, CRGB color, CRGB *leds) { const uint16_t cols = SEGMENT.virtualWidth(); const uint16_t rows = SEGMENT.virtualHeight(); - for (uint8_t i = 0; i<8; i++) { // character height + if (w<5 || w>6 || h!=8) return; + for (uint8_t i = 0; i= rows) break; // drawing off-screen - uint8_t bits = pgm_read_byte_near(&console_font_6x8[(chr * 8) + i]); - for (uint8_t j = 0; j<6; j++) { // character width - int16_t x0 = x + 5 - j; - if ((x0 >= 0 || x0 < cols) && ((bits>>(j+1)) & 0x01)) { // bit set & drawing on-screen + uint8_t bits; + switch (w) { + case 5: bits = pgm_read_byte_near(&console_font_5x8[(chr * 8) + i]); break; + case 6: bits = pgm_read_byte_near(&console_font_6x8[(chr * 8) + i]); break; + } + for (uint8_t j = 0; j= 0 || x0 < cols) && ((bits>>(j+(8-w))) & 0x01)) { // bit set & drawing on-screen if (leds) leds[XY(x0,y0)] = color; else setPixelColorXY(x0, y0, color); } diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index fd505013..62545522 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -187,31 +187,31 @@ void /*IRAM_ATTR*/ WS2812FX::setPixelColor(float i, byte r, byte g, byte b, byte { if (i<0.0f || i>1.0f) return; // not normalized + float fC = i * (SEGLEN-1); if (aa) { - float fC = i * (SEGLEN-1); - float fL = floorf(i * (SEGLEN-1)); - float fR = ceilf(i * (SEGLEN-1)); - uint16_t iL = fL; - uint16_t iR = fR; + uint16_t iL = roundf(fC-0.49f); + uint16_t iR = roundf(fC+0.49f); + float dL = fC - iL; + float dR = iR - fC; uint32_t cIL = getPixelColor(iL); uint32_t cIR = getPixelColor(iR); if (iR!=iL) { // blend L pixel - cIL = color_blend(RGBW32(r,g,b,w), cIL, (fR - fC)*UINT16_MAX, true); + cIL = color_blend(RGBW32(r,g,b,w), cIL, uint8_t(dL*255.0f)); setPixelColor(iL, R(cIL), G(cIL), B(cIL), W(cIL)); // blend R pixel - cIR = color_blend(RGBW32(r,g,b,w), cIR, (fC - fL)*UINT16_MAX, true); + cIR = color_blend(RGBW32(r,g,b,w), cIR, uint8_t(dR*255.0f)); setPixelColor(iR, R(cIR), G(cIR), B(cIR), W(cIR)); } else { // exact match (x & y land on a pixel) setPixelColor(iL, r, g, b, w); } } else { - setPixelColor((uint16_t)roundf(i * (SEGLEN-1)), r, g, b, w); + setPixelColor(uint16_t(roundf(fC)), r, g, b, w); } } -void IRAM_ATTR WS2812FX::setPixelColor(uint16_t i, byte r, byte g, byte b, byte w) +void IRAM_ATTR WS2812FX::setPixelColor(int i, byte r, byte g, byte b, byte w) { uint8_t segIdx = SEGLEN ? _segment_index : _mainSegment; if (isMatrix && SEGLEN) { @@ -411,7 +411,7 @@ void WS2812FX::trigger() { void WS2812FX::setMode(uint8_t segid, uint8_t m) { if (segid >= MAX_NUM_SEGMENTS) return; - if (m >= MODE_COUNT) m = MODE_COUNT - 1; + if (m >= getModeCount()) m = getModeCount() - 1; if (_segments[segid].mode != m) { @@ -420,11 +420,6 @@ void WS2812FX::setMode(uint8_t segid, uint8_t m) { } } -uint8_t WS2812FX::getModeCount() -{ - return MODE_COUNT; -} - uint8_t WS2812FX::getPaletteCount() { return 13 + GRADIENT_PALETTE_COUNT; @@ -937,13 +932,16 @@ uint32_t WS2812FX::color_add(uint32_t c1, uint32_t c2) /* * Fills segment with color */ -void WS2812FX::fill(uint32_t c) { +void WS2812FX::fill(uint32_t c, uint8_t seg) { + uint8_t oldSeg; + if (seg != 255) oldSeg = setPixelSegment(seg); const uint16_t cols = isMatrix ? SEGMENT.virtualWidth() : SEGMENT.virtualLength(); const uint16_t rows = SEGMENT.virtualHeight(); // will be 1 for 1D for(uint16_t y = 0; y < rows; y++) for (uint16_t x = 0; x < cols; x++) { if (isMatrix) setPixelColorXY(x, y, c); else setPixelColor(x, c); } + if (seg != 255) setPixelSegment(oldSeg); } /* @@ -970,7 +968,7 @@ void WS2812FX::fade_out(uint8_t rate) { int g2 = G(color); int b2 = B(color); - for(uint16_t y = 0; y < rows; y++) for (uint16_t x = 0; x < cols; x++) { + for (uint16_t y = 0; y < rows; y++) for (uint16_t x = 0; x < cols; x++) { color = isMatrix ? getPixelColorXY(x, y) : getPixelColor(x); int w1 = W(color); int r1 = R(color); @@ -995,8 +993,12 @@ void WS2812FX::fade_out(uint8_t rate) { // fades all pixels to black using nscale8() void WS2812FX::fadeToBlackBy(uint8_t fadeBy) { - for (uint16_t i = 0; i < SEGLEN; i++) { - setPixelColor(i, col_to_crgb(getPixelColor(i)).nscale8(255-fadeBy)); + const uint16_t cols = isMatrix ? SEGMENT.virtualWidth() : SEGMENT.virtualLength(); + const uint16_t rows = SEGMENT.virtualHeight(); // will be 1 for 1D + + for (uint16_t y = 0; y < rows; y++) for (uint16_t x = 0; x < cols; x++) { + if (isMatrix) setPixelColorXY(x, y, col_to_crgb(getPixelColorXY(x,y)).nscale8(255-fadeBy)); + else setPixelColor(x, col_to_crgb(getPixelColor(x)).nscale8(255-fadeBy)); } } diff --git a/wled00/bus_manager.h b/wled00/bus_manager.h index 4a137325..955fc31f 100644 --- a/wled00/bus_manager.h +++ b/wled00/bus_manager.h @@ -461,7 +461,7 @@ class BusPwm : public Bus { return numPins; } - inline void cleanup() { + void cleanup() { deallocatePins(); } @@ -494,6 +494,71 @@ class BusPwm : public Bus { }; +class BusOnOff : public Bus { + public: + BusOnOff(BusConfig &bc) : Bus(bc.type, bc.start, bc.autoWhite) { + _valid = false; + if (bc.type != TYPE_ONOFF) return; + + uint8_t currentPin = bc.pins[0]; + if (!pinManager.allocatePin(currentPin, true, PinOwner::BusOnOff)) { + deallocatePins(); return; + } + _pin = currentPin; //store only after allocatePin() succeeds + pinMode(_pin, OUTPUT); + reversed = bc.reversed; + _valid = true; + }; + + void setPixelColor(uint16_t pix, uint32_t c) { + if (pix != 0 || !_valid) return; //only react to first pixel + c = autoWhiteCalc(c); + uint8_t r = R(c); + uint8_t g = G(c); + uint8_t b = B(c); + uint8_t w = W(c); + + _data = bool((r+g+b+w)*_bri) ? 0xFF : 0; + } + + uint32_t getPixelColor(uint16_t pix) { + if (!_valid) return 0; + return RGBW32(_data, _data, _data, _data); + } + + void show() { + if (!_valid) return; + digitalWrite(_pin, reversed ? !(bool)_data : (bool)_data); + } + + inline void setBrightness(uint8_t b) { + _bri = b; + } + + uint8_t getPins(uint8_t* pinArray) { + if (!_valid) return 0; + pinArray[0] = _pin; + return 1; + } + + void cleanup() { + deallocatePins(); + } + + ~BusOnOff() { + cleanup(); + } + + private: + uint8_t _pin = 255; + uint8_t _data = 0; + + void deallocatePins() { + pinManager.deallocatePin(_pin, PinOwner::BusOnOff); + } +}; + + class BusNetwork : public Bus { public: BusNetwork(BusConfig &bc) : Bus(bc.type, bc.start, bc.autoWhite) { diff --git a/wled00/button.cpp b/wled00/button.cpp index b7489052..4c11e9b0 100644 --- a/wled00/button.cpp +++ b/wled00/button.cpp @@ -131,21 +131,42 @@ void handleSwitch(uint8_t b) } } +#define ANALOG_BTN_READ_CYCLE 250 // min time between two analog reading cycles +#define STRIP_WAIT_TIME 6 // max wait time in case of strip.isUpdating() +#define POT_SMOOTHING 0.25f // smoothing factor for raw potentiometer readings +#define POT_SENSITIVITY 4 // changes below this amount are noise (POT scratching, or ADC noise) + void handleAnalog(uint8_t b) { - static uint8_t oldRead[WLED_MAX_BUTTONS]; + static uint8_t oldRead[WLED_MAX_BUTTONS] = {0}; + static float filteredReading[WLED_MAX_BUTTONS] = {0.0f}; + uint16_t rawReading; // raw value from analogRead, scaled to 12bit + #ifdef ESP8266 - uint16_t aRead = analogRead(A0) >> 2; // convert 10bit read to 8bit + rawReading = analogRead(A0) << 2; // convert 10bit read to 12bit #else - uint16_t aRead = analogRead(btnPin[b]) >> 4; // convert 12bit read to 8bit + rawReading = analogRead(btnPin[b]); // collect at full 12bit resolution #endif + yield(); // keep WiFi task running - analog read may take several millis on ESP8266 + + filteredReading[b] += POT_SMOOTHING * ((float(rawReading) / 16.0f) - filteredReading[b]); // filter raw input, and scale to [0..255] + uint16_t aRead = max(min(int(filteredReading[b]), 255), 0); // squash into 8bit + if(aRead <= POT_SENSITIVITY) aRead = 0; // make sure that 0 and 255 are used + if(aRead >= 255-POT_SENSITIVITY) aRead = 255; if (buttonType[b] == BTN_TYPE_ANALOG_INVERTED) aRead = 255 - aRead; // remove noise & reduce frequency of UI updates - aRead &= 0xFC; + if (abs(int(aRead) - int(oldRead[b])) <= POT_SENSITIVITY) return; // no significant change in reading + + // Unomment the next lines if you still see flickering related to potentiometer + // This waits until strip finishes updating (why: strip was not updating at the start of handleButton() but may have started during analogRead()?) + //unsigned long wait_started = millis(); + //while(strip.isUpdating() && (millis() - wait_started < STRIP_WAIT_TIME)) { + // delay(1); + //} + //if (strip.isUpdating()) return; // give up - if (oldRead[b] == aRead) return; // no change in reading oldRead[b] = aRead; // if no macro for "short press" and "long press" is defined use brightness control @@ -168,6 +189,7 @@ void handleAnalog(uint8_t b) } else if (macroDoublePress[b] == 247) { // selected palette effectPalette = map(aRead, 0, 252, 0, strip.getPaletteCount()-1); + effectPalette = constrain(effectPalette, 0, strip.getPaletteCount()-1); // map is allowed to "overshoot", so we need to contrain the result } else if (macroDoublePress[b] == 200) { // primary color, hue, full saturation colorHStoRGB(aRead*256,255,col); @@ -197,6 +219,8 @@ void handleButton() bool analog = false; unsigned long now = millis(); + if (strip.isUpdating()) return; // don't interfere with strip updates. Our button will still be there in 1ms (next cycle) + for (uint8_t b=0; b 250) { // button is not a button but a potentiometer + if ((buttonType[b] == BTN_TYPE_ANALOG || buttonType[b] == BTN_TYPE_ANALOG_INVERTED) && now - lastRead > ANALOG_BTN_READ_CYCLE) { // button is not a button but a potentiometer analog = true; handleAnalog(b); continue; } diff --git a/wled00/const.h b/wled00/const.h index f59b2462..bba1a79f 100644 --- a/wled00/const.h +++ b/wled00/const.h @@ -76,6 +76,7 @@ #define USERMOD_ID_WORDCLOCK 27 //Usermod "usermod_v2_word_clock.h" #define USERMOD_ID_MY9291 28 //Usermod "usermod_MY9291.h" #define USERMOD_ID_SI7021_MQTT_HA 29 //Usermod "usermod_si7021_mqtt_ha.h" +#define USERMOD_ID_AUDIOREACTIVE 30 //Usermod "audioreactive.h" //Access point behavior #define AP_BEHAVIOR_BOOT_NO_CONN 0 //Open AP when no connection after boot diff --git a/wled00/data/index.css b/wled00/data/index.css index 3fc64931..4f0f83d1 100644 --- a/wled00/data/index.css +++ b/wled00/data/index.css @@ -123,11 +123,19 @@ button { .icons { font-family: 'WIcons'; font-style: normal; - font-size: 24px; - line-height: 1; + font-size: 24px !important; + line-height: 1 !important; display: inline-block; } +.icons.on { + color: var(--c-g); +} + +.icons.off { + color: var(--c-6); +} + .top .icons, .bot .icons { margin: -2px 0 4px 0; } @@ -359,27 +367,77 @@ button { bottom: 5px; } -#fx { - height: calc(100% - 121px); - overflow-y: scroll; - padding-left: 6px; /* compensate scroll bar */ -} - #sliders { width: 310px; margin: 0 auto; + position: sticky; + bottom: 0; } #sliders .labels { padding-top: 3px; + font-size: small; } -#slider0, #slider1, #slider2, #slider3, #slider4 { +.slider { background: var(--c-2); max-width: 310px; min-width: 280px; - margin: 0 auto 5px; + margin: 0 auto; /* add 5px; if you want some vertical space but looks ugly */ border-radius: 15px; + position: relative; +} + +/* Tooltip text */ +.slider .tooltiptext { + visibility: hidden; + background-color: var(--c-5); + color: var(--c-f); + text-align: center; + padding: 5px 10px; + border-radius: 6px; + + /* Position the tooltip text */ + width: 160px; + position: absolute; + z-index: 1; + bottom: 100%; + left: 50%; + margin-left: -92px; + + /* Fade in tooltip */ + opacity: 0; + transition: opacity 0.75s; +} +/* +.slider.top .tooltiptext { + top: 100%; + bottom: unset; +} +*/ +/* Tooltip arrow */ +.slider .tooltiptext::after { + content: ""; + position: absolute; + top: 100%; + left: 50%; + margin-left: -5px; + border-width: 5px; + border-style: solid; + border-color: var(--c-5) transparent transparent transparent; +} +/* +.slider.top .tooltiptext::after { + bottom: 100%; + left: 50%; + top: unset; + border-color: transparent transparent var(--c-5) transparent; +} +*/ +/* Show the tooltip text when you mouse over the tooltip container */ +.slider:hover .tooltiptext { + visibility: visible; + opacity: 1; } #pql, .edit-icon { @@ -473,15 +531,6 @@ button { z-index: -2; } -#imgw { - display: inline-block; - margin: 8px; -} - -#kv, #kn { - display: inline-block; -} - #info table, #nodes table { table-layout: fixed; width: 100%; @@ -502,6 +551,15 @@ button { margin: 0 auto; } +#imgw { + /*display: inline-block;*/ + margin: 8px auto; +} +/* +#kv, #kn { + display: inline-block; +} +*/ #lv { max-width: 600px; display: inline-block; @@ -708,6 +766,9 @@ input[type=range]::-moz-range-thumb { #putil .btn-xs { margin: 0; } +#info .btn-xs { + border: 1px solid var(--c-4); +} #putil .btn-s { width: 135px; @@ -872,23 +933,17 @@ textarea { overflow: clip; text-overflow: ellipsis; line-height: 24px; - padding: 8px 0; - max-width: 160px; + padding: 8px 24px; + max-width: 170px; margin: 0 auto; position: relative; } -.segname { - padding-left: 28px; -} -.segname .flr { +.segname .flr, .pname .flr { transform: rotate(0deg); + right: -6px; } -.expanded .segname { - max-width: 184px; - padding: 8px 24px; -} /* segment power wrapper */ .sbs { padding: 4px 0 4px 8px; @@ -921,19 +976,24 @@ textarea { } .xxs { - border: 2px solid var(--c-e) !important; width: 44px; height: 44px; margin: 5px; - /*box-shadow: 0 0 0 2px #fff;*/ } .xxs-w { - border-width: 5px !important; margin: 2px; width: 50px; height: 50px; - /*box-shadow: 0 0 0 5px #fff;*/ +} + +#csl .xxs { + border: 2px solid var(--c-d) !important; + /*box-shadow: 0 0 0 2px var(--c-d);*/ +} +#csl .xxs-w { + border-width: 5px !important; + /*box-shadow: 0 0 0 5px var(--c-d);*/ } .qcs, #namelabel { @@ -962,7 +1022,7 @@ textarea { } .frz { - left: 36px; + left: 32px; position: absolute; top: -3px; cursor: pointer; diff --git a/wled00/data/index.htm b/wled00/data/index.htm index 219e2daf..b9b8d94c 100644 --- a/wled00/data/index.htm +++ b/wled00/data/index.htm @@ -217,50 +217,50 @@
-

Effect speed

-
+
+ Effect speed
-

Effect intensity

-
+
+ Effect intensity
-

Custom 1

-
+
+ Custom 1
-

Custom 2

-
+
+ Custom 2
-

Custom 3

-
+
+ Custom 3
@@ -308,7 +308,7 @@
-

+
Loading...

diff --git a/wled00/data/index.js b/wled00/data/index.js index e6461af5..090237e5 100644 --- a/wled00/data/index.js +++ b/wled00/data/index.js @@ -126,8 +126,8 @@ function cTheme(light) { sCol('--c-c','#333'); sCol('--c-e','#111'); sCol('--c-d','#222'); - sCol('--c-r','#c21'); - sCol('--c-g','#2c1'); + sCol('--c-r','#a21'); + sCol('--c-g','#2a1'); sCol('--c-l','#26c'); sCol('--c-o','rgba(204, 204, 204, 0.9)'); sCol('--c-sb','#0003'); sCol('--c-sbh','#0006'); @@ -398,7 +398,7 @@ function presetError(empty) if (bckstr.length > 10) hasBackup = true; } catch (e) {} - var cn = `
`; + var cn = `
`; if (empty) cn += `You have no presets yet!`; else @@ -568,7 +568,7 @@ function populatePresets(fromls) cn += `
`; if (cfg.comp.pid) cn += `
${i}
`; cn += `
${isPlaylist(i)?"":""}${pName(i)} -
+
`; @@ -604,7 +604,8 @@ function parseInfo(i) { mw = i.leds.matrix ? i.leds.matrix.w : 0; mh = i.leds.matrix ? i.leds.matrix.h : 0; isM = mw>0 && mh>0; - if (!isM) hide2DModes(); + if (!isM) hideModes("2D "); + if (!i.u || !i.u.AudioReactive) { /*hideModes("♪ ");*/ hideModes("♫ "); } // hide /*audio*/ frequency reactive effects } function populateInfo(i) @@ -752,7 +753,7 @@ function populateSegments(s) } if (segCount < 2) gId(`segd${lSeg}`).style.display = "none"; if (!isM && !noNewSegs && (cfg.comp.seglen?parseInt(gId(`seg${lSeg}s`).value):0)+parseInt(gId(`seg${lSeg}e`).value) 1) ? "inline":"none"; + gId('segutil2').style.display = (segCount > 1) ? "block":"none"; // rsbtn parent } function populateEffects() @@ -772,14 +773,14 @@ function populateEffects() for (let i = 0; i < effects.length; i++) { // WLEDSR: add slider and color control to setX (used by requestjson) if (effects[i].name.indexOf("Reserved") < 0) { - var extra = !(Array.isArray(fxdata) && fxdata.length>i) ? '' : fxdata[i].substr(1); + let id = effects[i].id; html += generateListItemHtml( 'fx', - effects[i].id, + id, effects[i].name, 'setX', '', - extra + !(Array.isArray(fxdata) && fxdata.length>id) ? '' : fxdata[id].substr(1) ); } } @@ -1278,7 +1279,6 @@ function readState(s,command=false) function setSliderAndColorControl(idx, applyDef=false) { if (!(Array.isArray(fxdata) && fxdata.length>idx)) return; - var topPosition = 0; var controlDefined = (fxdata[idx].substr(0,1) == "@"); var extra = fxdata[idx].substr(1); var extras = (extra == '')?[]:extra.split(";"); @@ -1288,7 +1288,8 @@ function setSliderAndColorControl(idx, applyDef=false) var obj = {"seg":{}}; // set html slider items on/off - var nSliders = Math.min(5,Math.floor(gId("sliders").children.length / 2)); // p (label) & div for each slider + var nSliders = Math.min(5,Math.floor(gId("sliders").children.length)); // div for each slider + var sldCnt = 0; for (let i=0; i0) { topPosition += 5; gId("sliders").style.paddingTop = "5px"; } - else gId("sliders").style.padding = 0; - // set size of fx list - gId("fx").style.height = `calc(100% - ${topPosition}px)`; + // set the bottom position of selected effect (sticky) as the top of sliders div + let top = parseInt(getComputedStyle(gId("sliders")).height); + /*if (sldCnt===1)*/ top += 28; // size of tooltip + let sel = d.querySelector('#fxlist .selected'); + if (sel) sel.style.bottom = top + "px"; // we will need to remove this when unselected (in setX()) // set html color items on/off var cslLabel = ''; @@ -1387,7 +1387,7 @@ function setSliderAndColorControl(idx, applyDef=false) } // not all color selectors shown, hide palettes created from color selectors for (let e of (gId('pallist').querySelectorAll('.lstI')||[])) { - if (cslCnt < 3 && e.querySelector('.lstIname').innerText.indexOf("* ")>=0) e.classList.add('hide'); else e.classList.remove('hide'); + if (cslCnt < 3 && e.querySelector('.lstIname').innerText.indexOf("* C")>=0) e.classList.add('hide'); else e.classList.remove('hide'); } if (!isEmpty(obj.seg) && applyDef) requestJson(obj); // update default values (may need throttling on ESP8266) } @@ -1972,7 +1972,10 @@ function setX(ind = null) d.querySelector(`#fxlist input[name="fx"][value="${ind}"]`).checked = true; } var selElement = d.querySelector('#fxlist .selected'); - if (selElement) selElement.classList.remove('selected'); + if (selElement) { + selElement.classList.remove('selected'); + selElement.style.bottom = null; // remove element style added in slider handling + } d.querySelector(`#fxlist .lstI[data-id="${ind}"]`).classList.add('selected'); @@ -2035,12 +2038,12 @@ function setPreset(i) { var obj = {"ps":i}; if (pJson && pJson[i] && (!pJson[i].win || pJson[i].win.indexOf("Please") <= 0)) { + // we will send complete preset content as to avoid delay introduced by + // async nature of applyPreset(). json.cpp has to decide wether to call applyPreset() + // or not (by looking at the JSON content, if "ps" only) Object.assign(obj, pJson[i]); delete obj.ql; // no need for quick load delete obj.n; // no need for name -// obj.pt = i; // this will set preset ID but not force state update -// } else { -// obj.ps = i; } if (isPlaylist(i)) obj.on = true; // force on showToast("Loading preset " + pName(i) +" (" + i + ")"); @@ -2395,12 +2398,10 @@ function getPalettesData(page, callback) }); } -function hide2DModes() +function hideModes(txt) { - var el = gId('fxlist').querySelectorAll('.lstI'); - for (let it of el) { - var itT = it.querySelector('.lstIname').innerText; - if (itT.indexOf("2D ") >= 0) it.style.display = 'none'; + for (let e of (gId('fxlist').querySelectorAll('.lstI')||[])) { + if (e.querySelector('.lstIname').innerText.indexOf(txt) >= 0) e.classList.add("hide"); //else e.classList.remove("hide"); } } diff --git a/wled00/data/settings_2D.htm b/wled00/data/settings_2D.htm index 0bbe0686..8d370f00 100644 --- a/wled00/data/settings_2D.htm +++ b/wled00/data/settings_2D.htm @@ -7,9 +7,43 @@ 2D Set-up diff --git a/wled00/data/settings_leds.htm b/wled00/data/settings_leds.htm index 29dc6292..b1031672 100644 --- a/wled00/data/settings_leds.htm +++ b/wled00/data/settings_leds.htm @@ -131,7 +131,7 @@ if (s[i].name.substring(0,2)=="LT") { var n = s[i].name.substring(2); var t = parseInt(s[i].value,10); - gId("p0d"+n).innerHTML = (t>=80 && t<96) ? "IP address:" : (t > 49) ? "Data GPIO:" : (t >41) ? "GPIOs:" : "GPIO:"; + gId("p0d"+n).innerHTML = (t>=80 && t<96) ? "IP address:" : (t > 49) ? "Data GPIO:" : (t > 41) ? "GPIOs:" : "GPIO:"; gId("p1d"+n).innerHTML = (t> 49 && t<64) ? "Clk GPIO:" : ""; var LK = d.getElementsByName("L1"+n)[0]; // clock pin @@ -159,16 +159,16 @@ } gId("rf"+n).onclick = (t == 31) ? (function(){return false}) : (function(){}); // prevent change for TM1814 isRGBW |= (t == 30 || t == 31 || (t > 40 && t < 46 && t != 43)); // RGBW checkbox, TYPE_xxxx values from const.h - gId("co"+n).style.display = ((t>=80 && t<96) || (t > 40 && t < 48)) ? "none":"inline"; // hide color order for PWM + gId("co"+n).style.display = ((t >= 80 && t < 96) || (t >= 40 && t < 48)) ? "none":"inline"; // hide color order for PWM gId("dig"+n+"w").style.display = (t == 30 || t == 31) ? "inline":"none"; // show swap channels dropdown if (!(t == 30 || t == 31)) d.getElementsByName("WO"+n)[0].value = 0; // reset swapping - gId("dig"+n+"c").style.display = (t > 40 && t < 48) ? "none":"inline"; // hide count for analog - gId("dig"+n+"r").style.display = (t>=80 && t<96) ? "none":"inline"; // hide reversed for virtual - gId("dig"+n+"s").style.display = ((t>=80 && t<96) || (t > 40 && t < 48)) ? "none":"inline"; // hide skip 1st for virtual & analog - gId("dig"+n+"f").style.display = (t>=16 && t<32 || t>=50 && t<64) ? "inline":"none"; // hide refresh - gId("dig"+n+"a").style.display = (isRGBW) ? "inline":"none"; // auto calculate white - gId("rev"+n).innerHTML = (t > 40 && t < 48) ? "Inverted output":"Reversed (rotated 180°)"; // change reverse text for analog - gId("psd"+n).innerHTML = (t > 40 && t < 48) ? "Index:":"Start:"; // change analog start description + gId("dig"+n+"c").style.display = (t >= 40 && t < 48) ? "none":"inline"; // hide count for analog + gId("dig"+n+"r").style.display = (t >= 80 && t < 96) ? "none":"inline"; // hide reversed for virtual + gId("dig"+n+"s").style.display = ((t >= 80 && t < 96) || (t >= 40 && t < 48)) ? "none":"inline"; // hide skip 1st for virtual & analog + gId("dig"+n+"f").style.display = ((t >= 16 && t < 32) || (t >= 50 && t < 64)) ? "inline":"none"; // hide refresh + gId("dig"+n+"a").style.display = (isRGBW && t != 40) ? "inline":"none"; // auto calculate white + gId("rev"+n).innerHTML = (t >= 40 && t < 48) ? "Inverted output":"Reversed (rotated 180°)"; // change reverse text for analog + gId("psd"+n).innerHTML = (t >= 40 && t < 48) ? "Index:":"Start:"; // change analog start description } } // display white channel calculation method @@ -301,6 +301,7 @@ ${i+1}: + diff --git a/wled00/data/settings_um.htm b/wled00/data/settings_um.htm index 646b068a..33eb309b 100644 --- a/wled00/data/settings_um.htm +++ b/wled00/data/settings_um.htm @@ -17,6 +17,24 @@ function isO(i) { return (i && typeof i === 'object' && !Array.isArray(i)); } function H() { window.open("https://github.com/Aircoookie/WLED/wiki/Settings#usermod-settings"); } function B() { window.open("/settings","_self"); } + // https://www.educative.io/edpresso/how-to-dynamically-load-a-js-file-in-javascript + function loadJS(FILE_URL, async = true) { + let scE = d.createElement("script"); + scE.setAttribute("src", FILE_URL); + scE.setAttribute("type", "text/javascript"); + scE.setAttribute("async", async); + d.body.appendChild(scE); + // success event + scE.addEventListener("load", () => { + //console.log("File loaded"); + GetV(); + }); + // error event + scE.addEventListener("error", (ev) => { + console.log("Error on loading file", ev); + alert("Loading of configuration script failed.\nIncomplete page data!"); + }); + } function S() { if (window.location.protocol == "file:") { loc = true; @@ -26,9 +44,8 @@ localStorage.setItem('locIp', locip); } } - GetV(); - if (numM > 0 || locip) ldS(); - else gId("um").innerHTML = "No Usermods installed."; + ldS(); + if (!numM) gId("um").innerHTML = "No Usermods installed."; } // https://stackoverflow.com/questions/3885817/how-do-i-check-that-a-number-is-float-or-integer function isF(n) { return n === +n && n !== (n|0); } @@ -100,6 +117,47 @@ urows += `
`; } } + // https://stackoverflow.com/questions/39729741/javascript-change-input-text-to-select-option + function addDropdown(um,fld) { + let sel = d.createElement('select'); + let arr = d.getElementsByName(um+":"+fld); + let inp = arr[1]; // assume 1st field to be hidden (type) + if (inp && inp.tagName === "INPUT" && (inp.type === "text" || inp.type === "number")) { // may also use nodeName + let v = inp.value; + let n = inp.name; + // copy the existing input element's attributes to the new select element + for (var i = 0; i < inp.attributes.length; ++ i) { + var att = inp.attributes[i]; + // type and value don't apply, so skip them + // ** you might also want to skip style, or others -- modify as needed ** + if (att.name != 'type' && att.name != 'value' && att.name != 'class' && att.name != 'style') { + sel.setAttribute(att.name, att.value); + } + } + sel.setAttribute("data-val", v); + // finally, replace the old input element with the new select element + inp.parentElement.replaceChild(sel, inp); + return sel; + } + return null; + } + function addOption(sel,txt,val) { + if (sel===null) return; // select object missing + let opt = d.createElement("option"); + opt.value = val; + opt.text = txt; + sel.appendChild(opt); + for (let i=0; i{ + gId('lserr').style.display = "inline"; console.log(error); }); } function svS(e) { e.preventDefault(); - console.log(d.Sf); if (d.Sf.checkValidity()) d.Sf.submit(); //https://stackoverflow.com/q/37323914 } - function GetV() {} + //fun-ction GetV() {} // replaced during 'npm run build' diff --git a/wled00/dmx.cpp b/wled00/dmx.cpp index 28421954..0bdb4b64 100644 --- a/wled00/dmx.cpp +++ b/wled00/dmx.cpp @@ -1,10 +1,13 @@ #include "wled.h" /* - * Support for DMX via MAX485. - * Change the output pin in src/dependencies/ESPDMX.cpp if needed. - * Library from: + * Support for DMX Output via MAX485. + * Change the output pin in src/dependencies/ESPDMX.cpp, if needed (ESP8266) + * Change the output pin in src/dependencies/SparkFunDMX.cpp, if needed (ESP32) + * ESP8266 Library from: * https://github.com/Rickgg/ESP-Dmx + * ESP32 Library from: + * https://github.com/sparkfun/SparkFunDMX */ #ifdef WLED_ENABLE_DMX @@ -14,10 +17,16 @@ void handleDMX() // don't act, when in DMX Proxy mode if (e131ProxyUniverse != 0) return; - // TODO: calculate brightness manually if no shutter channel is set - uint8_t brightness = strip.getBrightness(); + bool calc_brightness = true; + + // check if no shutter channel is set + for (byte i = 0; i < DMXChannels; i++) + { + if (DMXFixtureMap[i] == 5) calc_brightness = false; + } + uint16_t len = strip.getLengthTotal(); for (int i = DMXStartLED; i < len; i++) { // uses the amount of LEDs as fixture count @@ -35,16 +44,16 @@ void handleDMX() dmx.write(DMXAddr, 0); break; case 1: // Red - dmx.write(DMXAddr, r); + dmx.write(DMXAddr, calc_brightness ? (r * brightness) / 255 : r); break; case 2: // Green - dmx.write(DMXAddr, g); + dmx.write(DMXAddr, calc_brightness ? (g * brightness) / 255 : g); break; case 3: // Blue - dmx.write(DMXAddr, b); + dmx.write(DMXAddr, calc_brightness ? (b * brightness) / 255 : b); break; case 4: // White - dmx.write(DMXAddr, w); + dmx.write(DMXAddr, calc_brightness ? (w * brightness) / 255 : w); break; case 5: // Shutter channel. Controls the brightness. dmx.write(DMXAddr, brightness); @@ -60,7 +69,11 @@ void handleDMX() } void initDMX() { + #ifdef ESP8266 dmx.init(512); // initialize with bus length + #else + dmx.initWrite(512); // initialize with bus length + #endif } #else diff --git a/wled00/e131.cpp b/wled00/e131.cpp index 08193946..73589dc4 100644 --- a/wled00/e131.cpp +++ b/wled00/e131.cpp @@ -154,7 +154,7 @@ void handleE131Packet(e131_packet_t* p, IPAddress clientIP, byte protocol){ DMXOldDimmer = e131_data[dataOffset+0]; bri = e131_data[dataOffset+0]; } - if (e131_data[dataOffset+1] < MODE_COUNT) + if (e131_data[dataOffset+1] < strip.getModeCount()) effectCurrent = e131_data[dataOffset+ 1]; effectSpeed = e131_data[dataOffset+ 2]; // flickers effectIntensity = e131_data[dataOffset+ 3]; diff --git a/wled00/fcn_declare.h b/wled00/fcn_declare.h index ae6ca96b..3cf5b895 100644 --- a/wled00/fcn_declare.h +++ b/wled00/fcn_declare.h @@ -216,13 +216,52 @@ int getSignalQuality(int rssi); void WiFiEvent(WiFiEvent_t event); //um_manager.cpp +typedef enum UM_Data_Types { + UMT_BYTE = 0, + UMT_UINT16, + UMT_INT16, + UMT_UINT32, + UMT_INT32, + UMT_FLOAT, + UMT_DOUBLE, + UMT_BYTE_ARR, + UMT_UINT16_ARR, + UMT_INT16_ARR, + UMT_UINT32_ARR, + UMT_INT32_ARR, + UMT_FLOAT_ARR, + UMT_DOUBLE_ARR +} um_types_t; +typedef struct UM_Exchange_Data { + // should just use: size_t arr_size, void **arr_ptr, byte *ptr_type + size_t u_size; // size of u_data array + um_types_t *u_type; // array of data types + void **u_data; // array of pointers to data + UM_Exchange_Data() { + u_size = 0; + u_type = nullptr; + u_data = nullptr; + } + ~UM_Exchange_Data() { + if (u_type) delete[] u_type; + if (u_data) delete[] u_data; + } +} um_data_t; +const unsigned int um_data_size = sizeof(um_data_t); // 12 bytes + class Usermod { + protected: + um_data_t *um_data; // um_data should be allocated using new in (derived) Usermod's setup() or constructor public: - virtual void loop() {} + Usermod() { um_data = nullptr; } + virtual ~Usermod() { if (um_data) delete um_data; } + virtual void setup() = 0; // pure virtual, has to be overriden + virtual void loop() = 0; // pure virtual, has to be overriden virtual void handleOverlayDraw() {} virtual bool handleButton(uint8_t b) { return false; } - virtual void setup() {} + virtual bool getUMData(um_data_t **data) { if (data) *data = nullptr; return false; }; virtual void connected() {} + virtual void appendConfigData() {} virtual void addToJsonState(JsonObject& obj) {} virtual void addToJsonInfo(JsonObject& obj) {} virtual void readFromJsonState(JsonObject& obj) {} @@ -230,6 +269,7 @@ class Usermod { virtual bool readFromConfig(JsonObject& obj) { return true; } // Note as of 2021-06 readFromConfig() now needs to return a bool, see usermod_v2_example.h virtual void onMqttConnect(bool sessionPresent) {} virtual bool onMqttMessage(char* topic, char* payload) { return false; } + virtual void onUpdateBegin(bool) {} virtual uint16_t getId() {return USERMOD_ID_UNSPECIFIED;} }; @@ -242,8 +282,10 @@ class UsermodManager { void loop(); void handleOverlayDraw(); bool handleButton(uint8_t b); + bool getUMData(um_data_t **um_data, uint8_t mod_id = USERMOD_ID_RESERVED); // USERMOD_ID_RESERVED will poll all usermods void setup(); void connected(); + void appendConfigData(); void addToJsonState(JsonObject& obj); void addToJsonInfo(JsonObject& obj); void readFromJsonState(JsonObject& obj); @@ -251,6 +293,7 @@ class UsermodManager { bool readFromConfig(JsonObject& obj); void onMqttConnect(bool sessionPresent); bool onMqttMessage(char* topic, char* payload); + void onUpdateBegin(bool); bool add(Usermod* um); Usermod* lookup(uint16_t mod_id); byte getModCount(); diff --git a/wled00/html_settings.h b/wled00/html_settings.h index 3c8d0317..e78403b4 100644 --- a/wled00/html_settings.h +++ b/wled00/html_settings.h @@ -198,449 +198,450 @@ const uint8_t PAGE_settings_wifi[] PROGMEM = { // Autogenerated from wled00/data/settings_leds.htm, do not edit!! -const uint16_t PAGE_settings_leds_length = 7052; +const uint16_t PAGE_settings_leds_length = 7070; const uint8_t PAGE_settings_leds[] PROGMEM = { 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xdd, 0x3c, 0xdb, 0x56, 0xe3, 0x48, - 0x92, 0xef, 0xfe, 0x8a, 0x24, 0xbb, 0x9a, 0x96, 0x06, 0x61, 0x24, 0x5f, 0x68, 0xca, 0xb6, 0xec, - 0xc5, 0xd4, 0xa5, 0xd9, 0x81, 0x2e, 0x0e, 0xa6, 0xbb, 0x66, 0x4f, 0x4d, 0x9d, 0xae, 0xb4, 0x9d, - 0xb6, 0x55, 0xc8, 0x92, 0x47, 0x92, 0x01, 0x2f, 0xb0, 0xdf, 0xb4, 0xdf, 0xb0, 0x5f, 0xb6, 0x11, + 0x92, 0xef, 0xfe, 0x8a, 0x24, 0xbb, 0x9a, 0x96, 0x06, 0x61, 0x24, 0x5f, 0x68, 0xca, 0xb6, 0xcc, + 0x62, 0xea, 0xd2, 0xec, 0x40, 0xc3, 0xc1, 0x74, 0xd7, 0xec, 0xa9, 0xa9, 0xd3, 0x95, 0xb6, 0xd3, + 0xb6, 0x0a, 0x59, 0xf2, 0x48, 0x32, 0x94, 0x17, 0xbc, 0xdf, 0xb4, 0xdf, 0xb0, 0x5f, 0xb6, 0x11, 0x79, 0xd1, 0xc5, 0x96, 0x0d, 0x3d, 0xb3, 0x4f, 0xdb, 0xe7, 0x54, 0xa3, 0x4b, 0x64, 0x44, 0x66, - 0x64, 0xdc, 0x33, 0xe4, 0xce, 0xde, 0xbb, 0x4f, 0x67, 0x37, 0xff, 0x71, 0xf5, 0x9e, 0xcc, 0x92, - 0xb9, 0xdf, 0xed, 0xe0, 0xff, 0x89, 0xcf, 0x82, 0xa9, 0x4b, 0x79, 0x40, 0xe1, 0x9e, 0xb3, 0x71, - 0xb7, 0x33, 0xe7, 0x09, 0x23, 0xa3, 0x19, 0x8b, 0x62, 0x9e, 0xb8, 0x74, 0x99, 0x4c, 0x0e, 0x4f, - 0xa8, 0x7a, 0x5a, 0x09, 0xd8, 0x9c, 0xbb, 0xf4, 0xce, 0xe3, 0xf7, 0x8b, 0x30, 0x4a, 0x28, 0x19, - 0x85, 0x41, 0xc2, 0x03, 0x00, 0xbb, 0xf7, 0xc6, 0xc9, 0xcc, 0x6d, 0xda, 0x76, 0x0a, 0xba, 0xf6, - 0x6a, 0xcc, 0xef, 0xbc, 0x11, 0x3f, 0x14, 0x37, 0x96, 0x17, 0x78, 0x89, 0xc7, 0xfc, 0xc3, 0x78, - 0xc4, 0x7c, 0xee, 0x3a, 0xd6, 0x9c, 0x3d, 0x78, 0xf3, 0xe5, 0x3c, 0xbd, 0x5f, 0xc6, 0x3c, 0x12, - 0x37, 0x6c, 0x08, 0xf7, 0x41, 0x48, 0x37, 0x28, 0x77, 0x3b, 0x89, 0x97, 0xf8, 0xbc, 0x7b, 0xf1, - 0xfe, 0x1d, 0x19, 0xf0, 0x24, 0xf1, 0x82, 0x69, 0xdc, 0x39, 0x92, 0xcf, 0x3a, 0xf1, 0x28, 0xf2, - 0x16, 0x49, 0xb7, 0x72, 0xc7, 0x22, 0x92, 0x78, 0x73, 0x1e, 0x2e, 0x13, 0x6b, 0xec, 0x8e, 0xc3, - 0xd1, 0x72, 0x0e, 0x33, 0xb2, 0x7c, 0xb6, 0x88, 0xf8, 0x9d, 0xdb, 0x6c, 0x22, 0xdd, 0xbe, 0x24, - 0x7f, 0xe9, 0x36, 0x78, 0x1d, 0x2f, 0xae, 0xfa, 0x6e, 0xc3, 0x7e, 0x7b, 0x8c, 0x97, 0x17, 0xae, - 0x53, 0xaf, 0x8b, 0x87, 0x17, 0xc3, 0x7f, 0x2c, 0xc3, 0xc4, 0xb5, 0xad, 0xd1, 0x32, 0x4e, 0xc2, - 0xf9, 0x20, 0x61, 0x51, 0x12, 0xbb, 0x7b, 0x8e, 0x15, 0x8b, 0xab, 0x77, 0x5e, 0x94, 0xac, 0xdc, - 0x2f, 0x5f, 0x11, 0xf4, 0xec, 0xd3, 0xa7, 0x3b, 0x1e, 0x45, 0xde, 0x98, 0xc7, 0x6e, 0xb3, 0x3d, - 0x59, 0x06, 0xa3, 0xc4, 0x0b, 0x03, 0xf2, 0x8b, 0x61, 0x3e, 0xde, 0x7b, 0xc1, 0x38, 0xbc, 0xaf, - 0x86, 0x0b, 0x1e, 0x18, 0x74, 0x96, 0x24, 0x8b, 0xb8, 0x75, 0x74, 0x74, 0x1b, 0x84, 0xd5, 0x7b, - 0x9f, 0x8f, 0xab, 0x53, 0x7e, 0x34, 0xe1, 0x2c, 0x59, 0x46, 0x3c, 0x3e, 0x8a, 0xd5, 0x8a, 0x8e, - 0x7e, 0x80, 0x37, 0x87, 0xfa, 0x8e, 0x9a, 0xcf, 0x29, 0xbe, 0xfe, 0x3a, 0xbe, 0x74, 0x0c, 0xb5, - 0xe8, 0x1f, 0x31, 0xf7, 0x27, 0x79, 0xe8, 0xe9, 0xf9, 0xd8, 0xe0, 0xe6, 0x63, 0xc4, 0x01, 0x7d, - 0x40, 0x90, 0x56, 0xf2, 0xde, 0xe7, 0xc8, 0x8c, 0xfe, 0x4a, 0xbc, 0xca, 0x40, 0xc3, 0xc9, 0x04, - 0x41, 0xf3, 0x30, 0x71, 0x7f, 0xf5, 0x2b, 0x70, 0x1f, 0x1e, 0x7f, 0xb1, 0xbf, 0x56, 0xef, 0x98, - 0xbf, 0xe4, 0xee, 0xa1, 0x93, 0x0d, 0x89, 0x67, 0xe1, 0xfd, 0x4d, 0xc8, 0xe2, 0xc4, 0xe0, 0x56, - 0x00, 0x5c, 0x31, 0x1f, 0x05, 0xe3, 0x5d, 0xa4, 0x4a, 0x13, 0x7c, 0x41, 0xcd, 0x76, 0x52, 0xf5, - 0x82, 0x80, 0x47, 0xbf, 0xdc, 0x5c, 0x5e, 0xb8, 0xdc, 0x4a, 0xaa, 0x23, 0x9f, 0xc5, 0x31, 0xa2, - 0x75, 0x83, 0x1e, 0x05, 0x86, 0x85, 0x11, 0x6d, 0x51, 0xc4, 0x44, 0xad, 0x91, 0xcf, 0x59, 0x74, - 0x23, 0xf7, 0xcd, 0x50, 0xfb, 0x67, 0xc2, 0x90, 0x38, 0x59, 0xf9, 0xbc, 0xca, 0x02, 0x6f, 0xce, - 0x90, 0xae, 0x4b, 0x83, 0x30, 0xe0, 0xd4, 0x52, 0x10, 0x2e, 0x30, 0x40, 0x0f, 0x32, 0xf4, 0xdc, - 0x80, 0x4b, 0x79, 0x52, 0xb9, 0xeb, 0x6a, 0xc4, 0x17, 0x3e, 0x1b, 0x71, 0x43, 0x11, 0xa5, 0xc0, - 0x2f, 0xd3, 0xaa, 0xbd, 0xb5, 0xed, 0x1c, 0x33, 0x86, 0x17, 0xde, 0xdc, 0x4b, 0x62, 0x5c, 0x97, - 0x95, 0x58, 0x9e, 0xf9, 0x28, 0x04, 0x86, 0x4b, 0x81, 0x49, 0x94, 0xb8, 0x04, 0x52, 0x56, 0xbc, - 0x6c, 0xd8, 0xc2, 0x0b, 0xe2, 0x4f, 0x7f, 0x35, 0x24, 0x1f, 0xb8, 0xbb, 0xc6, 0xcb, 0x1b, 0x36, - 0x15, 0xec, 0xa4, 0x5e, 0xb0, 0x58, 0x22, 0x6b, 0x26, 0x61, 0x64, 0x78, 0xae, 0xdd, 0xf6, 0x3a, - 0xbc, 0xea, 0xf3, 0x60, 0x9a, 0xcc, 0xda, 0xde, 0xc1, 0x81, 0x1c, 0x1d, 0xb8, 0xfc, 0x8b, 0xf7, - 0xb5, 0x8a, 0xd2, 0x5f, 0x8d, 0x97, 0xc3, 0x38, 0x89, 0x60, 0x8f, 0x0d, 0xdb, 0xaa, 0x99, 0x6d, - 0x6f, 0x62, 0xd0, 0x0b, 0x9b, 0xba, 0x6e, 0xf0, 0xf4, 0x44, 0x2f, 0x1c, 0x7d, 0x51, 0xd3, 0x17, - 0x75, 0xbc, 0xd0, 0x7b, 0x51, 0x86, 0x45, 0xe2, 0x58, 0xa0, 0xa2, 0x9f, 0x07, 0x89, 0x51, 0xb6, - 0xe5, 0xf4, 0xe2, 0x86, 0x1e, 0x24, 0xd9, 0xbe, 0x5b, 0x8e, 0x6d, 0x76, 0xdd, 0x13, 0xdb, 0x44, - 0xed, 0xf6, 0x82, 0x25, 0x7f, 0x06, 0x0c, 0xaf, 0x98, 0x06, 0x5e, 0x34, 0xd4, 0xc5, 0xf5, 0x85, - 0xba, 0xe8, 0xdf, 0xa8, 0x8b, 0xf3, 0x6b, 0x31, 0xd5, 0xfd, 0x7d, 0x4a, 0xf7, 0xe4, 0x4c, 0x05, - 0x31, 0xb8, 0x3f, 0x74, 0x0a, 0x4f, 0xcc, 0x47, 0x20, 0x37, 0xae, 0x2e, 0xe7, 0x7f, 0x2c, 0xf6, - 0xf7, 0xe5, 0xdf, 0x6a, 0x1c, 0xc2, 0x3c, 0x03, 0xb7, 0x1b, 0xb8, 0x6e, 0xba, 0x94, 0x6c, 0x04, - 0x4e, 0xd8, 0x34, 0x95, 0xe0, 0x83, 0x71, 0x89, 0x12, 0xe3, 0xdb, 0x20, 0x8c, 0xa2, 0x95, 0x25, - 0x76, 0x89, 0xbc, 0x79, 0xfc, 0xf7, 0xc1, 0xa7, 0x5f, 0xab, 0x92, 0x23, 0xde, 0x64, 0xa5, 0xb0, - 0x9b, 0xcf, 0x64, 0xc4, 0x82, 0x9f, 0x12, 0x32, 0xe4, 0x04, 0x8c, 0xd1, 0xb8, 0xfa, 0xcd, 0xb4, - 0x32, 0xa4, 0x2e, 0xa5, 0xf2, 0x6e, 0x02, 0x26, 0x25, 0x36, 0x4c, 0x6b, 0xcf, 0x41, 0x4e, 0x66, - 0x00, 0xdd, 0xe6, 0xfe, 0x7e, 0x76, 0xd7, 0x71, 0x6a, 0xc5, 0x19, 0xd0, 0xfc, 0x0c, 0x8e, 0x0f, - 0x1d, 0x07, 0x89, 0x91, 0x20, 0xcc, 0xc8, 0xd1, 0x57, 0x90, 0x43, 0xb6, 0xed, 0xb9, 0x01, 0x70, - 0x09, 0x18, 0x29, 0x2e, 0x72, 0x13, 0xa8, 0xd7, 0x77, 0x90, 0x84, 0xb7, 0x84, 0x45, 0x9c, 0x08, - 0x01, 0x24, 0x61, 0xe0, 0xaf, 0x5e, 0x26, 0x88, 0x42, 0xfa, 0xdd, 0xf5, 0x0e, 0x9c, 0xf6, 0xf7, - 0x4c, 0x4c, 0xbf, 0x6b, 0x31, 0x65, 0xb0, 0x49, 0xdf, 0x5f, 0x10, 0x53, 0xa6, 0xe5, 0x83, 0x69, - 0xf9, 0x60, 0x5a, 0x3e, 0x98, 0x96, 0x0f, 0xa6, 0xe5, 0x83, 0x69, 0xf9, 0x60, 0x5a, 0x3e, 0x98, - 0xd8, 0x7c, 0x8a, 0x2f, 0x5d, 0x56, 0x20, 0xe2, 0x98, 0x72, 0x12, 0x71, 0xe9, 0x24, 0x5e, 0x2b, - 0xe5, 0xf1, 0x0b, 0x52, 0x2e, 0x65, 0xf3, 0x7b, 0x2a, 0x9b, 0x39, 0x76, 0xe5, 0x9e, 0xaf, 0x89, - 0xda, 0x95, 0x17, 0xa0, 0x8f, 0x9c, 0xf8, 0xde, 0x08, 0x37, 0x37, 0xb9, 0xe7, 0x3c, 0x00, 0x99, - 0x4b, 0xb5, 0xf1, 0xf9, 0x08, 0x6f, 0xd4, 0xa4, 0x9f, 0xf7, 0x84, 0x94, 0x7d, 0x2f, 0xec, 0xc2, - 0xf7, 0xfc, 0x2e, 0x3c, 0xc3, 0x7f, 0x92, 0xc0, 0x9e, 0x9d, 0x99, 0x9b, 0x24, 0x5a, 0x0d, 0x96, - 0x43, 0x30, 0x54, 0x86, 0x56, 0x90, 0xc1, 0xa4, 0x3a, 0x66, 0x09, 0xcb, 0xe1, 0xa9, 0xa2, 0xcb, - 0x83, 0x25, 0xbf, 0xe3, 0x13, 0xb6, 0xf4, 0x13, 0xc4, 0xa6, 0xad, 0x94, 0x9e, 0x32, 0x30, 0x2d, - 0x09, 0x17, 0x57, 0x51, 0xb8, 0x60, 0x53, 0x26, 0x8d, 0xa7, 0x92, 0x34, 0xe1, 0xfd, 0xba, 0x0e, - 0x98, 0x46, 0x65, 0x93, 0xe8, 0x4d, 0x18, 0x92, 0x39, 0x0b, 0x56, 0x04, 0xfc, 0x6f, 0x4c, 0x40, - 0x36, 0xc8, 0x9c, 0x93, 0x24, 0x24, 0x33, 0x16, 0x8c, 0x7d, 0xbe, 0x47, 0xdb, 0x68, 0x21, 0x3b, - 0x0e, 0x6f, 0xec, 0xef, 0x1b, 0xc1, 0x81, 0x4b, 0xff, 0x1e, 0xfc, 0x3d, 0x3a, 0x0b, 0x83, 0x18, - 0xdc, 0x62, 0x04, 0x12, 0x0e, 0xfb, 0x42, 0x40, 0xe2, 0xdf, 0x0f, 0xae, 0xea, 0x35, 0x14, 0x3d, - 0xc9, 0xad, 0xc0, 0x7c, 0x16, 0x53, 0x1f, 0xcd, 0xf8, 0xe8, 0xf6, 0x77, 0xe6, 0x7b, 0x63, 0x2f, - 0x59, 0x19, 0x26, 0x6a, 0x3a, 0x3c, 0x8d, 0xe5, 0x12, 0x73, 0xd6, 0x99, 0x07, 0xa7, 0xfd, 0x8b, - 0xd4, 0xca, 0x0a, 0x6f, 0x83, 0xf1, 0x02, 0x35, 0x25, 0x06, 0x3e, 0x6e, 0x8b, 0x81, 0x17, 0xa7, - 0x8a, 0x0f, 0xbc, 0x27, 0x3d, 0x7f, 0xcb, 0xb6, 0x34, 0x30, 0xc0, 0x4a, 0xaf, 0x32, 0xf6, 0x62, - 0x70, 0x07, 0x2b, 0x80, 0x01, 0xb3, 0xec, 0x7b, 0xe0, 0x57, 0x5a, 0xca, 0xbd, 0x08, 0xd0, 0x45, - 0xbc, 0xac, 0xbd, 0x02, 0xb6, 0x40, 0xaf, 0x6b, 0xef, 0xef, 0x83, 0x4f, 0x12, 0x73, 0xcc, 0x4f, - 0xfa, 0xe2, 0x34, 0xe7, 0x19, 0x04, 0x3c, 0xb8, 0x6b, 0x39, 0x64, 0x7d, 0xc2, 0x92, 0xf8, 0xc5, - 0x29, 0x50, 0xdc, 0xa0, 0xde, 0xb4, 0xdd, 0x92, 0x19, 0xfc, 0x76, 0x9e, 0x27, 0xa6, 0xc9, 0x3f, - 0xc6, 0xf7, 0x5e, 0x32, 0x9a, 0x19, 0x25, 0x3c, 0x72, 0xf7, 0x6c, 0x6b, 0x7d, 0x1a, 0x80, 0xdb, - 0xca, 0x29, 0x4c, 0x6e, 0x4a, 0xa0, 0x69, 0x23, 0x16, 0x73, 0x62, 0xb7, 0x4a, 0x51, 0x39, 0x96, - 0xda, 0x93, 0xf6, 0x30, 0xe2, 0xec, 0xb6, 0x2d, 0x60, 0xeb, 0x76, 0x6b, 0x83, 0x40, 0xdd, 0x2e, - 0x40, 0x34, 0x4b, 0x20, 0x9a, 0x79, 0x88, 0x66, 0x09, 0x44, 0xb3, 0x00, 0x51, 0x2b, 0x03, 0xa9, - 0xa5, 0x30, 0x63, 0x29, 0xf7, 0xad, 0x1d, 0x0c, 0xd5, 0xac, 0x7c, 0x16, 0x30, 0x73, 0x07, 0x00, - 0xb2, 0x90, 0x05, 0xe5, 0xd9, 0x2a, 0xb5, 0x1d, 0x03, 0x88, 0xb4, 0xd0, 0x72, 0xb0, 0xf1, 0xf8, - 0x3d, 0x6a, 0xd8, 0x85, 0x17, 0x43, 0xdc, 0xcb, 0x23, 0x08, 0x2c, 0x84, 0xc4, 0x42, 0x80, 0xa2, - 0xf5, 0xd3, 0x5c, 0xdb, 0x1e, 0xc0, 0x76, 0xc9, 0xe7, 0x18, 0x5d, 0x98, 0x8f, 0x3e, 0x4f, 0xc0, - 0x4d, 0xbf, 0x60, 0xa6, 0xce, 0xe8, 0x41, 0x90, 0x99, 0x29, 0xb3, 0xad, 0x34, 0x37, 0x39, 0x78, - 0x61, 0xe0, 0xe0, 0xa2, 0x38, 0xd0, 0xe2, 0x9d, 0x7a, 0xad, 0x97, 0xe9, 0x68, 0xdd, 0x75, 0xcb, - 0x09, 0xda, 0x85, 0x71, 0x3d, 0xde, 0xad, 0xbd, 0xed, 0xd5, 0xec, 0xbf, 0x24, 0x2d, 0xa7, 0x09, - 0xff, 0x43, 0x04, 0x5d, 0x17, 0x30, 0xc8, 0x17, 0x27, 0xf0, 0xe8, 0x18, 0xfe, 0x89, 0x9b, 0x06, - 0x5c, 0xd4, 0xc5, 0x4d, 0xdd, 0x01, 0x63, 0xd9, 0x69, 0x9c, 0xf4, 0x9a, 0xad, 0x46, 0x03, 0x64, - 0xf6, 0xe9, 0xa9, 0xd1, 0x44, 0xd1, 0x55, 0x10, 0x19, 0x3b, 0x80, 0x39, 0x3c, 0x0d, 0x1f, 0x31, - 0x90, 0xb4, 0x20, 0xe4, 0x6e, 0x4b, 0x41, 0x9b, 0x2f, 0xee, 0x59, 0x14, 0x80, 0xdd, 0xd8, 0xd8, - 0x36, 0xb1, 0xe9, 0x97, 0x5a, 0xe7, 0x7e, 0xae, 0xd9, 0xf6, 0x86, 0x52, 0x80, 0x18, 0xb8, 0x6e, - 0x41, 0x8e, 0x95, 0x25, 0x70, 0x9d, 0x5a, 0x6b, 0x43, 0x67, 0x0d, 0xf5, 0xae, 0x28, 0xf8, 0x6d, - 0xe9, 0xe6, 0xb6, 0xc5, 0x72, 0x20, 0x73, 0x7c, 0x54, 0x0c, 0xe6, 0x58, 0x3e, 0x98, 0x13, 0xae, - 0x4b, 0xf8, 0xb3, 0x2d, 0xe1, 0x9c, 0x76, 0x61, 0xac, 0x34, 0x50, 0xb3, 0xfc, 0x6c, 0x87, 0x59, - 0x21, 0xb8, 0x91, 0xfc, 0x59, 0xd8, 0x63, 0xf4, 0x60, 0x39, 0x81, 0xf5, 0xd1, 0x81, 0xed, 0xef, - 0xfb, 0x9d, 0xb7, 0xc7, 0x3d, 0x7a, 0x7e, 0x45, 0x40, 0x3c, 0x21, 0xb3, 0x88, 0x5b, 0xb4, 0xe5, - 0x77, 0x1b, 0x6f, 0x7b, 0xf4, 0x1d, 0xf8, 0x07, 0xf2, 0xf1, 0xea, 0xfc, 0x93, 0x7c, 0xe2, 0xf4, - 0x28, 0xde, 0xe0, 0x7b, 0x2a, 0x9f, 0x2a, 0xc3, 0xe7, 0x6c, 0x22, 0x6e, 0xbc, 0x45, 0xbc, 0xc7, - 0x8d, 0x1e, 0x3d, 0xf3, 0x6f, 0x35, 0x0e, 0x4a, 0x05, 0x87, 0xc2, 0x2d, 0x82, 0xe4, 0x28, 0x07, - 0x2b, 0xf8, 0x03, 0xf2, 0xaa, 0x44, 0xdf, 0xb7, 0x62, 0xd3, 0x5a, 0xb9, 0x4e, 0x7b, 0xd5, 0x69, - 0xb6, 0x57, 0x18, 0x4d, 0x18, 0xdb, 0x30, 0xd0, 0x83, 0x95, 0x44, 0x61, 0xe2, 0x16, 0x65, 0xab, - 0xdb, 0xdf, 0x5f, 0x75, 0x1a, 0x4f, 0x4f, 0x72, 0x5a, 0x8e, 0xeb, 0xae, 0xc4, 0xb5, 0x83, 0x2f, - 0x9b, 0x00, 0xb2, 0x3a, 0x68, 0xd8, 0x1d, 0xbf, 0x67, 0x84, 0x5b, 0xb4, 0xdd, 0x0a, 0x21, 0x13, - 0xf8, 0xc7, 0xd2, 0x8b, 0x84, 0x29, 0x34, 0x5b, 0x9b, 0x80, 0x52, 0x86, 0xf2, 0x60, 0x0e, 0xdc, - 0x69, 0xd7, 0x6a, 0x9a, 0xcf, 0x10, 0x0c, 0x48, 0xcb, 0x1a, 0x4d, 0x04, 0xaf, 0xb4, 0x39, 0x2c, - 0x79, 0xf6, 0xf4, 0x54, 0x87, 0x29, 0xfa, 0x96, 0x2f, 0xb4, 0xc2, 0x07, 0xad, 0x80, 0xb1, 0x5b, - 0x75, 0x3d, 0x17, 0x92, 0xb8, 0x10, 0xe4, 0x58, 0x79, 0x84, 0x61, 0x30, 0x82, 0xa0, 0xe2, 0xd6, - 0x15, 0xf8, 0x7a, 0xb9, 0x7c, 0x47, 0xc5, 0x07, 0xce, 0x73, 0x2b, 0xf7, 0xf0, 0xd9, 0x0a, 0x9e, - 0xc0, 0xe8, 0x02, 0xa8, 0x9a, 0x81, 0x60, 0x92, 0xe0, 0x60, 0x03, 0x38, 0xd8, 0xa8, 0xef, 0xc1, - 0xa4, 0x04, 0xfa, 0x51, 0x28, 0xd0, 0x17, 0x79, 0x90, 0x63, 0x77, 0x6e, 0xe0, 0x49, 0x4f, 0xf2, - 0xa6, 0x95, 0xf2, 0x52, 0x60, 0x18, 0x7b, 0x53, 0x40, 0x71, 0x40, 0xef, 0x37, 0x54, 0x35, 0x3f, - 0x81, 0x0d, 0x25, 0xad, 0xdb, 0x30, 0x07, 0x30, 0x45, 0x8e, 0xf8, 0x53, 0xce, 0x94, 0xcf, 0x9f, - 0x8a, 0x4c, 0xb1, 0xcd, 0x22, 0xc9, 0x11, 0xdd, 0x9c, 0xf9, 0xeb, 0x26, 0x1b, 0xd1, 0x1d, 0x6b, - 0xde, 0x3d, 0x34, 0xa6, 0xff, 0x27, 0xec, 0x9a, 0x94, 0xa1, 0x71, 0x8e, 0x71, 0x68, 0xbd, 0x86, - 0x68, 0xdc, 0xa6, 0xad, 0xf5, 0xae, 0x2c, 0x44, 0xd1, 0x78, 0xd8, 0x06, 0x9e, 0xa0, 0x7c, 0x00, - 0xd8, 0xb8, 0x4d, 0xd5, 0x4e, 0xa7, 0x7a, 0x1e, 0xdc, 0x41, 0x4c, 0xc6, 0xc7, 0x04, 0xf2, 0x69, - 0x4c, 0x53, 0x5b, 0xf4, 0x1a, 0x02, 0x48, 0x30, 0x41, 0x63, 0x62, 0x44, 0x61, 0xc2, 0xf0, 0x95, - 0x73, 0x62, 0xff, 0xcf, 0x7f, 0x9b, 0x69, 0x88, 0x34, 0xde, 0x89, 0x6e, 0xcc, 0x1f, 0xd0, 0x4c, - 0x88, 0xda, 0x49, 0x8b, 0x3e, 0xa3, 0xb1, 0x88, 0x40, 0xd5, 0xff, 0xb1, 0xe4, 0xe0, 0x1e, 0x85, - 0xf5, 0x0c, 0xa3, 0x53, 0xdf, 0x37, 0x68, 0xf5, 0x1e, 0xb6, 0xd1, 0x5a, 0xba, 0x91, 0xb6, 0x9f, - 0x99, 0x49, 0x5d, 0x0a, 0x5b, 0x1a, 0xa1, 0x01, 0x7c, 0x61, 0x89, 0xc2, 0x18, 0x2d, 0x5e, 0x4a, - 0xbd, 0xad, 0xb9, 0x6b, 0x5b, 0x77, 0x58, 0xd7, 0x01, 0xf4, 0x19, 0x99, 0xc5, 0x46, 0x1a, 0x3e, - 0x75, 0x17, 0xdb, 0xd2, 0xf0, 0xb8, 0xf4, 0x95, 0x4e, 0x7c, 0xce, 0x20, 0x6b, 0x98, 0xaa, 0xcc, - 0x05, 0x93, 0xa0, 0xa9, 0x4e, 0x82, 0xa6, 0xe6, 0x0b, 0x6a, 0x0f, 0xce, 0xd5, 0x15, 0x05, 0x86, - 0x76, 0xc9, 0x60, 0x9d, 0x41, 0x4d, 0x75, 0x06, 0x25, 0x69, 0x18, 0xbe, 0xfb, 0xa7, 0x12, 0x1d, - 0x53, 0xa6, 0x39, 0x8f, 0x62, 0x05, 0x48, 0x10, 0x3c, 0xa5, 0x25, 0x6f, 0xbc, 0x00, 0xd8, 0xb2, - 0xc8, 0x38, 0x3d, 0x0a, 0xfd, 0x30, 0x72, 0xe9, 0x0f, 0x93, 0xc9, 0x84, 0xb6, 0xd3, 0xbc, 0x28, - 0x1d, 0x58, 0xaf, 0x67, 0xe3, 0x0e, 0x9d, 0x5c, 0x55, 0x60, 0xd7, 0x9c, 0x75, 0xd6, 0x37, 0xd5, - 0x59, 0xdf, 0x54, 0x67, 0x7d, 0x53, 0x9d, 0xf5, 0x4d, 0x55, 0x55, 0x60, 0xb1, 0x51, 0x15, 0x58, - 0xe4, 0xaa, 0x02, 0xb8, 0x45, 0x58, 0x80, 0x6b, 0xe7, 0xca, 0x03, 0xa7, 0x51, 0xc4, 0x56, 0x55, - 0x2f, 0x16, 0x7f, 0x75, 0x5a, 0x6f, 0xe2, 0x26, 0xdf, 0xc2, 0x26, 0xdf, 0x76, 0x54, 0xf9, 0x40, - 0xed, 0xf4, 0x2d, 0xec, 0xf4, 0xaa, 0xba, 0x58, 0xc6, 0x33, 0x05, 0xfa, 0xe5, 0xf6, 0xab, 0xa9, - 0x92, 0x5e, 0x1b, 0x52, 0xde, 0x45, 0x3e, 0xe5, 0x05, 0x2a, 0xde, 0x9e, 0xfb, 0x5d, 0xd2, 0x9d, - 0xc0, 0x4c, 0x5e, 0x4a, 0x7d, 0x27, 0x9a, 0x09, 0x13, 0xcd, 0x84, 0x89, 0x66, 0xc2, 0x44, 0x33, - 0x61, 0xa2, 0x99, 0x30, 0xd1, 0x4c, 0x98, 0x68, 0x26, 0x4c, 0x72, 0xa9, 0xef, 0xa4, 0x34, 0xf5, - 0xbd, 0x28, 0x9d, 0xc4, 0x6b, 0x53, 0xdf, 0x8b, 0x5d, 0xa9, 0xaf, 0xe4, 0xfe, 0xf7, 0x0d, 0xee, - 0x67, 0x4f, 0x14, 0xdf, 0x52, 0x3a, 0xd9, 0x3b, 0x51, 0x7d, 0x79, 0x7e, 0x5e, 0xc9, 0x22, 0x0d, - 0x77, 0xbb, 0x3c, 0x57, 0xa4, 0x59, 0x14, 0x8b, 0x34, 0xbd, 0x4d, 0x61, 0x03, 0x67, 0x4b, 0x5b, - 0x1b, 0x8f, 0xb7, 0x20, 0xe8, 0xd6, 0xeb, 0x3d, 0x1a, 0x46, 0x2c, 0x98, 0xa2, 0x11, 0x10, 0x72, - 0xfa, 0xfc, 0xcc, 0xfd, 0x98, 0x0b, 0x06, 0x9d, 0x6f, 0x1b, 0xd6, 0xce, 0x97, 0x74, 0x21, 0x61, - 0xcb, 0x0a, 0xba, 0x5f, 0xe2, 0xaf, 0x4f, 0x4f, 0xd2, 0xb1, 0xfb, 0xb1, 0x30, 0x6d, 0xd2, 0xe9, - 0xcc, 0x95, 0xd3, 0x51, 0x0f, 0xc1, 0x04, 0x61, 0x1a, 0x04, 0x61, 0x41, 0x1e, 0x93, 0x75, 0x0e, - 0x3e, 0xcc, 0x60, 0x19, 0xd5, 0x0d, 0x3c, 0xa6, 0x79, 0x70, 0xde, 0x9d, 0x03, 0xd4, 0xdc, 0x65, - 0x07, 0xe7, 0xa6, 0x75, 0xde, 0x1d, 0xc1, 0xcd, 0xc8, 0x85, 0xcb, 0x3f, 0xaf, 0xc6, 0x1d, 0xf4, - 0x37, 0xc6, 0xdd, 0x01, 0x8c, 0x06, 0x7e, 0x4b, 0x5a, 0xe8, 0x0c, 0x13, 0xfe, 0x90, 0x9c, 0xa9, - 0x42, 0xfc, 0x5c, 0xd9, 0xe9, 0x8d, 0xe7, 0xae, 0x7b, 0xd7, 0xa3, 0xc0, 0x33, 0x83, 0x1e, 0xdc, - 0x1d, 0x50, 0xb2, 0x98, 0xad, 0x62, 0x6f, 0xc4, 0x7c, 0x6d, 0xd8, 0xe7, 0x76, 0x21, 0x13, 0x4a, - 0x2c, 0x59, 0x0c, 0x4f, 0x8e, 0x30, 0xfc, 0xff, 0x8b, 0x63, 0xab, 0x6c, 0x7a, 0x3c, 0x64, 0x99, - 0x13, 0x1d, 0xb2, 0xd1, 0xed, 0x34, 0x0a, 0x97, 0xc1, 0xd8, 0xfd, 0x86, 0x66, 0x99, 0x45, 0x87, - 0xd3, 0x88, 0x8d, 0x3d, 0xa0, 0x67, 0xbc, 0xb5, 0xc7, 0x7c, 0x6a, 0x91, 0x37, 0x8f, 0xb2, 0xac, - 0x70, 0x6c, 0xf7, 0xe4, 0xc5, 0x5b, 0x08, 0xdc, 0xc5, 0x8e, 0xe7, 0x76, 0x71, 0x34, 0x1a, 0xd1, - 0x67, 0x62, 0x6b, 0xe0, 0xe7, 0x1f, 0x2d, 0xf2, 0x43, 0xa3, 0xd1, 0xc8, 0xee, 0x09, 0xd0, 0xff, - 0xd1, 0xfc, 0xa6, 0x76, 0x84, 0x8f, 0xb7, 0x65, 0x09, 0xa3, 0xee, 0x25, 0x4b, 0x66, 0x68, 0x9e, - 0x0c, 0x61, 0x54, 0xad, 0x13, 0xdb, 0x36, 0x9f, 0x9e, 0x24, 0xe5, 0x13, 0xbb, 0xdc, 0x43, 0x96, - 0xe0, 0x93, 0x22, 0xa8, 0xb1, 0xb1, 0x87, 0x12, 0x6c, 0x8e, 0xbd, 0xbe, 0x10, 0x89, 0xed, 0x1e, - 0x12, 0xd1, 0x38, 0x0c, 0x0a, 0xcc, 0xcc, 0xe8, 0x9f, 0xd8, 0x3f, 0x92, 0x70, 0x42, 0x00, 0x5d, - 0x15, 0x8b, 0x2a, 0x64, 0xce, 0xe7, 0x61, 0xb4, 0xa2, 0x07, 0x59, 0xf1, 0xa5, 0xf7, 0x8d, 0x18, - 0x9d, 0x61, 0xf7, 0xfd, 0xf5, 0xf5, 0xa7, 0xeb, 0x16, 0xf9, 0x4d, 0x14, 0x51, 0x42, 0x70, 0xc9, - 0xc0, 0x0c, 0xdc, 0x89, 0xe7, 0xfe, 0x5e, 0xe7, 0x68, 0xd8, 0x35, 0xbf, 0x41, 0x28, 0x6e, 0xb6, - 0x00, 0x9f, 0x2d, 0x8b, 0x33, 0x0b, 0x80, 0x50, 0x3e, 0x5c, 0x38, 0xc5, 0xbe, 0x2b, 0xe6, 0x3e, - 0xe2, 0x9e, 0x6f, 0x18, 0x80, 0xf6, 0xe0, 0xee, 0x2f, 0x32, 0xe1, 0x31, 0x8f, 0x9a, 0xb0, 0x8a, - 0xa3, 0x5a, 0xbb, 0xef, 0xf6, 0xbb, 0xcd, 0x5e, 0x06, 0xd5, 0x37, 0x5b, 0xfd, 0x36, 0x73, 0x55, - 0x84, 0x3f, 0x13, 0x61, 0xdc, 0x7a, 0xaa, 0x6d, 0x0d, 0xdd, 0x7c, 0x96, 0x95, 0x55, 0x34, 0xfa, - 0x1d, 0xa7, 0x6a, 0xd7, 0xf6, 0xf7, 0xf7, 0x66, 0xf0, 0x6f, 0xd8, 0x03, 0x34, 0xef, 0x07, 0x57, - 0xa4, 0xf9, 0x3b, 0x56, 0x22, 0xc9, 0xbd, 0x97, 0xcc, 0x88, 0x73, 0x4a, 0x7e, 0x1b, 0xf4, 0x49, - 0xbc, 0x5c, 0x2c, 0xfc, 0x15, 0x6d, 0x19, 0xec, 0xc0, 0x9d, 0xf5, 0xa8, 0x53, 0xfb, 0x9d, 0xd0, - 0xd6, 0xb0, 0x47, 0x3f, 0x0f, 0x6a, 0x27, 0x4e, 0x93, 0xc8, 0x7b, 0x0a, 0x03, 0xa9, 0x05, 0x10, - 0x7d, 0xfc, 0x1f, 0x3d, 0x55, 0xa3, 0xb0, 0xc6, 0x16, 0x40, 0x04, 0x01, 0x31, 0x49, 0x12, 0x8a, - 0x65, 0x53, 0x99, 0xb0, 0x0d, 0xb6, 0x2f, 0xd6, 0x91, 0xab, 0xb5, 0xde, 0xb8, 0xd4, 0x10, 0x05, - 0xac, 0x30, 0x4e, 0x08, 0x9f, 0x4c, 0x00, 0x4d, 0x6c, 0x91, 0xff, 0xa2, 0xed, 0x37, 0x07, 0xee, - 0xc0, 0x1d, 0x14, 0x38, 0x31, 0x30, 0x5b, 0x03, 0xeb, 0x8d, 0x20, 0xec, 0xc5, 0x84, 0x07, 0xe1, - 0x72, 0x3a, 0x33, 0x3b, 0xc3, 0xa8, 0x9b, 0x95, 0x89, 0x0a, 0xdb, 0xcb, 0x0a, 0xd5, 0xa3, 0xdc, - 0xb6, 0xa3, 0xbe, 0xbd, 0x91, 0x2f, 0xbf, 0x4b, 0x99, 0x28, 0x8a, 0xeb, 0x89, 0xe2, 0xe4, 0xf9, - 0x8d, 0xca, 0x57, 0xa9, 0x96, 0xcc, 0x2c, 0x5d, 0xf6, 0x59, 0x9c, 0xbc, 0x0f, 0xc6, 0xaa, 0xe8, - 0xc7, 0x3b, 0x8e, 0x2e, 0xe4, 0xd9, 0xed, 0xbb, 0x97, 0xec, 0xc7, 0x00, 0x04, 0x8b, 0x1f, 0x82, - 0xf7, 0xc8, 0x6c, 0xc8, 0xc1, 0xcb, 0xb5, 0x87, 0xf5, 0x21, 0x6d, 0x99, 0xa8, 0xbf, 0x6c, 0xab, - 0x36, 0x06, 0xaa, 0x99, 0x06, 0x22, 0x0d, 0x0a, 0x64, 0x1a, 0x04, 0xd9, 0xb8, 0x69, 0x79, 0xf1, - 0xaf, 0xec, 0x57, 0xe3, 0xce, 0xec, 0xd9, 0xad, 0xbb, 0x6c, 0xa9, 0x90, 0xbc, 0xe2, 0xa6, 0xca, - 0xf3, 0x25, 0x5b, 0x9f, 0x69, 0xac, 0x91, 0x3b, 0xd3, 0x47, 0x3b, 0x10, 0xde, 0x0d, 0x6e, 0x20, - 0xb8, 0xf3, 0xdc, 0x24, 0x0d, 0xe4, 0x26, 0xc6, 0x9e, 0x01, 0x69, 0x07, 0x78, 0x2b, 0xaf, 0x8b, - 0x61, 0x55, 0xff, 0xe9, 0xe9, 0x50, 0xde, 0x83, 0x30, 0x7b, 0xa6, 0xae, 0x62, 0x4b, 0x83, 0x07, - 0x6b, 0x15, 0x9e, 0x13, 0x01, 0x74, 0x5e, 0xfe, 0xad, 0x33, 0xf6, 0xee, 0x88, 0x38, 0x3e, 0x72, - 0x05, 0xfe, 0xee, 0xdf, 0x83, 0xce, 0x0c, 0xde, 0xe0, 0xbe, 0xa9, 0x43, 0xce, 0x56, 0xed, 0xd8, - 0x5e, 0x3c, 0xe0, 0x9b, 0x37, 0x8f, 0xde, 0x01, 0x64, 0x60, 0x00, 0x22, 0x0b, 0x03, 0x44, 0x1e, - 0x5f, 0x5e, 0xdc, 0xc0, 0x8b, 0x67, 0x4a, 0x20, 0x79, 0x9b, 0xa1, 0x65, 0x70, 0xe9, 0x6f, 0xe7, - 0x46, 0x12, 0x01, 0x47, 0x04, 0xba, 0x70, 0x21, 0x56, 0xab, 0x52, 0xcb, 0x5a, 0x8d, 0x12, 0x39, - 0x9a, 0x8f, 0xbb, 0x42, 0x0b, 0x1e, 0x3a, 0x47, 0x12, 0x64, 0x13, 0xb8, 0x6e, 0xd3, 0xee, 0xe0, - 0xaf, 0xc7, 0x27, 0x4e, 0x8d, 0x5c, 0x7f, 0xec, 0x7f, 0xde, 0x01, 0xe8, 0xd0, 0xee, 0xcd, 0xa5, - 0x73, 0xe2, 0x34, 0xb6, 0xc3, 0xd4, 0x1a, 0x14, 0x42, 0x77, 0xfb, 0xf6, 0x97, 0xff, 0xdc, 0x0e, - 0xd3, 0x04, 0x82, 0x38, 0x29, 0xdb, 0xd9, 0x01, 0x03, 0xb4, 0x4e, 0xaf, 0x4e, 0x1d, 0xbb, 0xb6, - 0x03, 0xa6, 0x46, 0xbb, 0x17, 0x57, 0xef, 0x4e, 0x4e, 0xec, 0xe3, 0x1d, 0x40, 0x75, 0xda, 0xbd, - 0x7a, 0x7b, 0xe2, 0xd4, 0xb7, 0x83, 0x34, 0x80, 0xd6, 0xd5, 0xe7, 0x4b, 0xf2, 0x79, 0xe6, 0x25, - 0x7c, 0x07, 0x58, 0x4d, 0x82, 0x9d, 0x9d, 0xdd, 0xec, 0x00, 0xaa, 0x4b, 0x20, 0xe0, 0xe4, 0x0e, - 0xa0, 0x46, 0x0a, 0xb4, 0x83, 0xdd, 0x8d, 0x66, 0x0a, 0x75, 0x50, 0xa4, 0xf9, 0xf7, 0x87, 0xfa, - 0x68, 0xef, 0xf0, 0x70, 0x0d, 0xfc, 0x38, 0x03, 0x7f, 0x97, 0x83, 0x3f, 0x3c, 0x04, 0x70, 0xbe, - 0x81, 0xfd, 0x04, 0x36, 0xe1, 0xdd, 0xbb, 0x2b, 0x04, 0x27, 0x46, 0xc0, 0x93, 0xfb, 0x30, 0xba, - 0x35, 0x5f, 0xa2, 0x71, 0x02, 0x9c, 0x7a, 0xef, 0x54, 0xeb, 0x4e, 0xf9, 0x30, 0x4d, 0xaa, 0x7c, - 0x2c, 0xb0, 0xef, 0x34, 0x4a, 0x7e, 0xe5, 0xc9, 0xee, 0xc1, 0x9d, 0x23, 0x29, 0xb9, 0x5d, 0x34, - 0x8e, 0x70, 0x8b, 0xba, 0xe3, 0x8d, 0x5d, 0x3a, 0x0a, 0xa5, 0x02, 0x28, 0xad, 0x51, 0xe6, 0xae, - 0xa5, 0x9c, 0x6f, 0xf7, 0x0c, 0xbd, 0x2b, 0xf9, 0x14, 0x8d, 0x79, 0xb4, 0xa1, 0x3b, 0x67, 0x9f, - 0xc4, 0xd0, 0x4d, 0x16, 0x03, 0x0f, 0x3e, 0x5e, 0xef, 0xd8, 0x28, 0x58, 0xee, 0xce, 0x8d, 0x84, - 0x25, 0xf5, 0xaf, 0x3f, 0xee, 0xd0, 0x18, 0x18, 0xdf, 0xdf, 0xf1, 0x1e, 0xe4, 0xa0, 0xff, 0xf1, - 0x7a, 0x87, 0xf0, 0xc2, 0xfc, 0xfa, 0x85, 0xf7, 0x29, 0x73, 0x8e, 0x80, 0x2f, 0x79, 0xf6, 0x40, - 0x0e, 0x8f, 0x8b, 0xbc, 0xdf, 0x60, 0x90, 0x30, 0xfd, 0xdd, 0xc1, 0x3d, 0x5b, 0xb4, 0x48, 0x91, - 0x2d, 0x9f, 0x15, 0x5b, 0x36, 0x99, 0xf2, 0x2b, 0x8c, 0x49, 0xa9, 0x6e, 0xf2, 0xe4, 0x33, 0xd9, - 0x27, 0xfd, 0x6d, 0xef, 0x6b, 0xf2, 0xfd, 0xc7, 0x6d, 0xef, 0xeb, 0xf2, 0x7d, 0xb6, 0xaa, 0xd2, - 0x35, 0xe1, 0x9f, 0x78, 0xc1, 0x02, 0xb1, 0xb6, 0x45, 0x3c, 0x96, 0x33, 0x95, 0x15, 0x00, 0x18, - 0x00, 0x6f, 0xba, 0xa4, 0x23, 0x0f, 0x21, 0x93, 0xd5, 0x02, 0xd0, 0x06, 0xcb, 0xf9, 0x90, 0x47, - 0x54, 0x5b, 0xcb, 0x81, 0x14, 0x16, 0x1c, 0xed, 0xc7, 0xf2, 0x5a, 0x19, 0x60, 0x9f, 0xc8, 0x40, - 0x9d, 0x12, 0x4c, 0x38, 0x61, 0xb5, 0x18, 0x38, 0xa1, 0x68, 0xbf, 0x75, 0xa8, 0x9e, 0xe3, 0x9b, - 0x47, 0xed, 0x21, 0x3d, 0x53, 0xd8, 0x5c, 0x41, 0xc9, 0xa5, 0xf9, 0x10, 0x1f, 0x91, 0x7e, 0x75, - 0xd1, 0x02, 0xb7, 0xb1, 0x34, 0xdf, 0xa6, 0x44, 0x57, 0xf9, 0xc8, 0x51, 0x77, 0x3f, 0x18, 0xc6, - 0x8b, 0xf6, 0xe6, 0xf6, 0x8c, 0xb6, 0xca, 0xef, 0x85, 0xf0, 0x36, 0xad, 0x9d, 0x8b, 0x3a, 0x2b, - 0x2e, 0x44, 0xad, 0xc0, 0x51, 0x2b, 0x10, 0xb1, 0xdc, 0x55, 0xff, 0x99, 0x66, 0x3b, 0x95, 0x4d, - 0x29, 0x5d, 0x02, 0xce, 0x95, 0xc2, 0x0c, 0x25, 0xb3, 0x95, 0x8e, 0x1d, 0x6d, 0x70, 0xdc, 0x56, - 0x1c, 0x17, 0x25, 0xda, 0xd7, 0x30, 0xdc, 0x96, 0x73, 0x2b, 0xf0, 0xb4, 0x5e, 0xcf, 0xcd, 0x40, - 0xcd, 0x3a, 0x5e, 0x73, 0x61, 0x26, 0x3d, 0x2a, 0x52, 0x76, 0x14, 0x65, 0x45, 0x74, 0x17, 0x4d, - 0x67, 0x0b, 0xcd, 0xd7, 0x92, 0xaa, 0xbd, 0x9e, 0x54, 0xed, 0x5f, 0x24, 0x55, 0x7f, 0x3d, 0xa9, - 0xfa, 0xbf, 0x48, 0xaa, 0xf1, 0x7a, 0x52, 0x8d, 0x7f, 0x8a, 0xd4, 0x9a, 0x4c, 0x47, 0x5b, 0x65, - 0x1a, 0xa5, 0x2b, 0x9b, 0x18, 0x84, 0xce, 0x72, 0x62, 0xba, 0x1a, 0xa8, 0x26, 0xb8, 0x26, 0xf3, - 0xa2, 0xdc, 0x3d, 0x0c, 0x1f, 0xf4, 0x24, 0xcf, 0x7e, 0xd7, 0xcb, 0x29, 0xb7, 0x78, 0xf1, 0x4e, - 0xf2, 0x83, 0x5b, 0x6f, 0x41, 0x26, 0x5e, 0x04, 0x01, 0x3a, 0x86, 0x81, 0x3b, 0xf5, 0x6b, 0x70, - 0x51, 0xc2, 0x0e, 0x48, 0x4d, 0xe8, 0x9a, 0xf6, 0x6c, 0x9d, 0xca, 0x64, 0xe7, 0x54, 0x3e, 0x4d, - 0x26, 0xe4, 0x9a, 0x4f, 0x22, 0x1e, 0x67, 0x6a, 0x2e, 0xf8, 0x32, 0x91, 0x64, 0xcb, 0x97, 0x7f, - 0xfd, 0x61, 0xf7, 0xf2, 0xd9, 0x4e, 0x9a, 0xa7, 0xcb, 0x24, 0x3c, 0x84, 0x84, 0x7c, 0xb4, 0xf4, - 0x59, 0xc2, 0xc9, 0x3d, 0x46, 0x38, 0xd8, 0xa0, 0x07, 0xe9, 0x84, 0x4f, 0x26, 0x51, 0x38, 0x47, - 0x5f, 0xdc, 0x92, 0xfb, 0x94, 0x77, 0x0d, 0xa7, 0x9f, 0xcb, 0x5c, 0x83, 0xbd, 0xcb, 0x31, 0x38, - 0xdd, 0x7e, 0xe4, 0x4d, 0x67, 0x09, 0x8f, 0xb6, 0x00, 0xd4, 0xba, 0xa7, 0xa3, 0xd1, 0x32, 0x62, - 0xc9, 0x36, 0x0c, 0xf5, 0xee, 0xbb, 0x25, 0xf3, 0x37, 0xfd, 0x82, 0x34, 0xa6, 0x29, 0x03, 0xc4, - 0xdf, 0x6f, 0x6d, 0x06, 0x49, 0x51, 0xcc, 0xa3, 0xe4, 0x74, 0xfc, 0x9d, 0x8d, 0x20, 0x8c, 0xc7, - 0xec, 0xc8, 0xa0, 0x43, 0x0e, 0x09, 0x19, 0xe7, 0xc1, 0x98, 0x5a, 0xb1, 0xf9, 0xac, 0xe2, 0x74, - 0x23, 0xf9, 0x72, 0x78, 0xe8, 0x7d, 0xad, 0x46, 0x90, 0x18, 0xdf, 0x71, 0xc3, 0xb4, 0xe0, 0x4e, - 0x55, 0x62, 0x0e, 0x36, 0xf2, 0x27, 0xaf, 0x83, 0x31, 0xfe, 0xa1, 0x53, 0x9e, 0xd7, 0x1f, 0x6e, - 0xc2, 0x77, 0x37, 0x4b, 0x00, 0xc1, 0xd3, 0x93, 0x38, 0xae, 0x2d, 0xa4, 0x21, 0x67, 0x9f, 0x2e, - 0x0d, 0xe0, 0x21, 0xe4, 0x21, 0xe2, 0x74, 0x52, 0x66, 0x07, 0xde, 0x8e, 0x54, 0x64, 0x14, 0xce, - 0xff, 0x80, 0x87, 0x90, 0xca, 0x9b, 0x85, 0x64, 0x04, 0xd2, 0x10, 0xac, 0x7a, 0xa9, 0xbc, 0xa3, - 0x90, 0x5d, 0x64, 0x43, 0x5e, 0x93, 0x63, 0x10, 0xe9, 0x4f, 0x77, 0xe9, 0xc4, 0xdf, 0x72, 0x8e, - 0xf4, 0xe1, 0x55, 0x8e, 0xf4, 0xb8, 0xd9, 0xac, 0x37, 0x73, 0x9e, 0x94, 0x3f, 0xaf, 0xe9, 0x4f, - 0xce, 0x53, 0xba, 0x94, 0xa6, 0xae, 0xf2, 0x15, 0x0e, 0xf0, 0x6f, 0x67, 0xb9, 0xc9, 0x8c, 0x76, - 0x3a, 0xc3, 0xf5, 0x59, 0x04, 0xcf, 0x05, 0xaa, 0xeb, 0x1a, 0xad, 0xf4, 0xea, 0x4f, 0xc5, 0x96, - 0x62, 0x16, 0x2a, 0x28, 0x55, 0xf3, 0xfb, 0xff, 0x17, 0x67, 0x6a, 0x7d, 0x13, 0x26, 0x42, 0x69, - 0x9e, 0x3a, 0xec, 0x93, 0x92, 0xe6, 0xf1, 0x58, 0xd4, 0x27, 0x76, 0xaa, 0x22, 0x53, 0xda, 0xf6, - 0x10, 0xd2, 0x03, 0x4f, 0x17, 0x43, 0x13, 0x6b, 0x98, 0x04, 0xa8, 0x14, 0x20, 0x8b, 0xaa, 0xbd, - 0x21, 0xd3, 0x17, 0x50, 0x55, 0x7c, 0xb5, 0xa5, 0x0f, 0xb2, 0x5c, 0x49, 0x40, 0xb3, 0xd2, 0xf6, - 0x32, 0x7b, 0xcf, 0xc5, 0xb6, 0x36, 0x83, 0x7f, 0x09, 0x0e, 0x9d, 0x9c, 0xe6, 0x2b, 0x92, 0xf0, - 0x50, 0x92, 0x34, 0xf3, 0x24, 0x63, 0x9e, 0x08, 0x25, 0x35, 0x1f, 0xd1, 0x68, 0xac, 0x75, 0xe4, - 0x72, 0x59, 0xd3, 0xc7, 0x66, 0x0b, 0x8e, 0xe5, 0xb6, 0x57, 0x4d, 0xc9, 0xe4, 0x29, 0xe9, 0xb6, - 0x22, 0x5d, 0x68, 0x12, 0x95, 0x8f, 0x80, 0x60, 0xca, 0x53, 0x30, 0x14, 0x9b, 0xdd, 0x42, 0x9d, - 0xe2, 0x5c, 0xca, 0x4d, 0x13, 0x8e, 0x06, 0x62, 0x9b, 0xa3, 0x37, 0x0d, 0x54, 0xc1, 0x2e, 0xf5, - 0x93, 0x40, 0x76, 0xa9, 0x6a, 0x8b, 0x24, 0xb0, 0xc1, 0xd4, 0xe2, 0x7c, 0xe1, 0xc9, 0x62, 0x2e, - 0x1e, 0x2d, 0x1c, 0x0c, 0xc4, 0xf9, 0x40, 0x15, 0x7d, 0xc7, 0xd9, 0x8c, 0x45, 0x67, 0xe1, 0x98, - 0x1b, 0x58, 0x41, 0xb2, 0x7b, 0x8d, 0x93, 0x56, 0xb3, 0x69, 0x1e, 0x00, 0x9f, 0xbc, 0x03, 0xf7, - 0x5b, 0x7f, 0x99, 0x24, 0xa1, 0x68, 0x58, 0x7b, 0x96, 0xe7, 0xfc, 0xe5, 0x8a, 0x2d, 0x94, 0xf6, - 0x50, 0x6b, 0x6d, 0xc3, 0xd6, 0xaa, 0xf4, 0xe6, 0x91, 0x3d, 0x6f, 0x44, 0x1f, 0x5a, 0xd9, 0x1f, - 0xe2, 0xa2, 0x66, 0x77, 0xbf, 0x59, 0x48, 0x52, 0xf9, 0x89, 0x82, 0x23, 0x7b, 0xf3, 0x48, 0xfb, - 0xef, 0x5f, 0x35, 0xeb, 0x14, 0xcd, 0x86, 0xee, 0xc2, 0x22, 0x6c, 0xd7, 0x4d, 0x7a, 0x54, 0x97, - 0x54, 0xb0, 0x65, 0xe1, 0xb9, 0xfb, 0x4e, 0x55, 0xef, 0x53, 0xb5, 0x29, 0x1d, 0x5e, 0xc3, 0xe1, - 0xb5, 0x92, 0xe1, 0x57, 0xcb, 0x78, 0x36, 0x14, 0x4c, 0xda, 0x8d, 0xa0, 0x8e, 0x08, 0xea, 0x5b, - 0x10, 0x10, 0x4f, 0x9d, 0xb5, 0xee, 0xc6, 0xd1, 0x40, 0x1c, 0x8d, 0x12, 0x1c, 0x03, 0xd1, 0xdc, - 0xb5, 0x7b, 0x70, 0x13, 0x07, 0x37, 0xcb, 0x26, 0x70, 0x7e, 0x4d, 0x62, 0x1e, 0xc4, 0x61, 0xb4, - 0x1b, 0xc1, 0x31, 0x22, 0x38, 0x2e, 0x41, 0x70, 0x13, 0x2e, 0x5f, 0x22, 0xfe, 0x33, 0x8e, 0xfd, - 0xb9, 0x64, 0xec, 0x69, 0xc0, 0xfc, 0x70, 0xba, 0x7b, 0xf0, 0x09, 0x0e, 0x3e, 0xd9, 0x3a, 0x78, - 0x0b, 0xf3, 0x68, 0x6a, 0xfc, 0xa8, 0x44, 0x2a, 0x22, 0x58, 0xe5, 0x1a, 0x20, 0x80, 0x81, 0xf5, - 0xb6, 0xc8, 0x22, 0xf4, 0x02, 0x08, 0x75, 0xda, 0x42, 0x46, 0x45, 0x37, 0x05, 0xc5, 0xf6, 0xf7, - 0x9f, 0x50, 0x6e, 0x7f, 0x32, 0xb5, 0x57, 0xdb, 0xff, 0xe1, 0xa1, 0xf6, 0xb3, 0xd3, 0x6c, 0xeb, - 0x50, 0x1c, 0x8c, 0xa8, 0x3a, 0x6f, 0x58, 0x57, 0xaf, 0x7c, 0x0f, 0x78, 0x32, 0xf5, 0x07, 0x1e, - 0x1a, 0x05, 0xa3, 0xf0, 0xcd, 0x00, 0x37, 0x9f, 0x9e, 0x8c, 0xe2, 0x57, 0x03, 0xeb, 0x5d, 0x61, - 0x22, 0x78, 0x84, 0xb1, 0xe6, 0x23, 0x9a, 0x2a, 0x69, 0x3a, 0xf7, 0x1c, 0x8c, 0x38, 0xda, 0xe0, - 0xe0, 0x76, 0xd7, 0x3c, 0xb5, 0xe5, 0x0c, 0xf0, 0xe0, 0x7a, 0xf3, 0xec, 0x49, 0x98, 0x4c, 0xf3, - 0x4f, 0x14, 0x7c, 0x83, 0x62, 0xdd, 0x76, 0xaf, 0xe4, 0x3c, 0x2b, 0xd0, 0xf8, 0xd0, 0x50, 0x63, - 0x37, 0x61, 0x3e, 0xbf, 0x0e, 0xbe, 0x62, 0xbd, 0x56, 0x1d, 0x48, 0xc5, 0x36, 0x05, 0x20, 0x7b, - 0x13, 0x09, 0x1e, 0x30, 0x6d, 0xc7, 0x61, 0x0b, 0x1c, 0x92, 0xe3, 0xb1, 0x97, 0x6b, 0x37, 0xe4, - 0x96, 0x66, 0x72, 0xc6, 0xbc, 0xe5, 0xc2, 0x0f, 0xd9, 0xf8, 0x83, 0xe7, 0xe3, 0xe7, 0x0a, 0xaa, - 0x91, 0x2c, 0xe0, 0xf7, 0xe4, 0x6f, 0x97, 0x17, 0xbf, 0x24, 0xc9, 0xe2, 0x1a, 0xa2, 0x07, 0x1e, - 0x27, 0xed, 0xa0, 0xa4, 0x5d, 0x0f, 0x07, 0x52, 0x2b, 0xff, 0xe9, 0x40, 0xf6, 0x61, 0x43, 0x32, - 0xf3, 0x62, 0x70, 0x02, 0xf1, 0x22, 0x04, 0x1f, 0x79, 0xc3, 0x1f, 0x12, 0x4b, 0x3c, 0x81, 0x69, - 0x26, 0xcb, 0xb8, 0xeb, 0x36, 0xf0, 0xab, 0x01, 0x13, 0x7c, 0x57, 0x09, 0x5a, 0xf9, 0x6d, 0x43, - 0x0e, 0x2f, 0xcf, 0x23, 0xc6, 0xa6, 0x5b, 0x36, 0xba, 0xb5, 0xf6, 0x34, 0x02, 0xf9, 0x35, 0xc7, - 0xd5, 0x27, 0xd8, 0x4d, 0x8b, 0x1e, 0xc9, 0xe5, 0xa8, 0xc3, 0x8c, 0x44, 0xac, 0xe4, 0x43, 0x18, - 0xcd, 0xb1, 0x79, 0x2b, 0x6d, 0xfe, 0xab, 0xb2, 0x05, 0x8c, 0xc1, 0x13, 0x38, 0x78, 0xaa, 0x7a, - 0x50, 0x45, 0xf7, 0xef, 0x04, 0xb8, 0x10, 0x03, 0xfb, 0x2c, 0x8e, 0x88, 0x63, 0x84, 0x49, 0x4c, - 0xab, 0xa4, 0x3b, 0x78, 0x2f, 0xf7, 0x31, 0x07, 0xd2, 0x3b, 0x9b, 0x4c, 0x53, 0xee, 0x59, 0x49, - 0x9b, 0xea, 0x97, 0x14, 0xb4, 0x10, 0x0c, 0x3f, 0xf8, 0x4d, 0xf5, 0xe9, 0x09, 0xf2, 0xf9, 0x9a, - 0x33, 0x08, 0xa9, 0x7a, 0xb0, 0x12, 0x41, 0xaf, 0xc7, 0x53, 0xba, 0x3d, 0x03, 0x7d, 0x79, 0x3a, - 0x0b, 0x43, 0xcd, 0x3f, 0x1d, 0x83, 0x4d, 0x4c, 0x48, 0xce, 0xcd, 0xb3, 0x06, 0x5d, 0x33, 0x0e, - 0x03, 0x01, 0x00, 0xa1, 0x44, 0x9e, 0x2f, 0xfd, 0x44, 0x2d, 0x5f, 0xb4, 0xea, 0x0b, 0xe1, 0x31, - 0x02, 0x51, 0xa0, 0x4f, 0xaa, 0xb3, 0x7b, 0x71, 0xfa, 0x81, 0x17, 0x20, 0xfb, 0xe3, 0x4c, 0x67, - 0x64, 0x27, 0x87, 0x63, 0x8b, 0x1e, 0x0e, 0x7d, 0x7e, 0x00, 0xd2, 0xdc, 0xd6, 0xa0, 0x18, 0xee, - 0x54, 0x01, 0xfa, 0x3d, 0x1b, 0xcd, 0x0c, 0xe5, 0x3b, 0xdd, 0xee, 0xa3, 0x06, 0x75, 0x64, 0xa4, - 0x90, 0xa1, 0xe2, 0xd5, 0x85, 0x17, 0xe4, 0x1b, 0x43, 0xca, 0xb4, 0xe6, 0x9b, 0xc8, 0x3e, 0xd1, - 0x9f, 0x7d, 0xcb, 0xb5, 0x29, 0x89, 0xa1, 0x5f, 0xbc, 0xaf, 0xed, 0xad, 0x07, 0x24, 0x41, 0x01, - 0x1a, 0x99, 0x6c, 0x6d, 0x3d, 0xb8, 0x29, 0xc2, 0x0a, 0x4d, 0xb1, 0x5e, 0xd3, 0x2e, 0x2a, 0xe3, - 0xaa, 0x72, 0xd0, 0xb3, 0x4f, 0xeb, 0xa0, 0x21, 0x06, 0xca, 0xd6, 0x6b, 0xba, 0x49, 0x71, 0x12, - 0x90, 0xa0, 0x97, 0xc3, 0x5e, 0x7f, 0xd0, 0xb0, 0xa9, 0xd6, 0xc2, 0x9e, 0x4e, 0xb6, 0xcc, 0xe2, - 0xf7, 0x32, 0xe0, 0xbb, 0x67, 0xf3, 0x59, 0x6f, 0x31, 0x84, 0x47, 0x60, 0x22, 0xd2, 0x20, 0x0f, - 0xbf, 0x0a, 0x92, 0x4f, 0xd3, 0x9d, 0xe4, 0x72, 0x0f, 0x45, 0x44, 0xa6, 0x98, 0x23, 0xd7, 0xad, - 0x96, 0x24, 0xd4, 0x4c, 0x8c, 0x02, 0xeb, 0xad, 0xd3, 0x2f, 0x7d, 0xdf, 0x2e, 0x36, 0x8d, 0x88, - 0xec, 0xd4, 0xd4, 0xdd, 0x7d, 0x1b, 0xd6, 0x9e, 0x62, 0xe7, 0xfa, 0x76, 0x31, 0xc2, 0x90, 0x0c, - 0xc9, 0xe2, 0xde, 0xa3, 0x12, 0x8a, 0x6d, 0xc5, 0x8f, 0x8c, 0x4a, 0xd7, 0x7e, 0x73, 0x43, 0x73, - 0x2c, 0x65, 0xd5, 0x24, 0x79, 0x16, 0xb3, 0xf2, 0xa2, 0x6d, 0xcd, 0x70, 0xe7, 0xd7, 0xf9, 0x11, - 0x0a, 0x18, 0xa9, 0x95, 0x13, 0x38, 0xbf, 0x29, 0x03, 0x17, 0x73, 0x92, 0xfc, 0x88, 0x38, 0x04, - 0x9a, 0xdb, 0x88, 0x5d, 0x5f, 0x6c, 0x8c, 0x16, 0xf0, 0xdb, 0xe9, 0x5d, 0x5f, 0xd2, 0xc2, 0x56, - 0xe6, 0xc6, 0x80, 0xcb, 0xd6, 0xb9, 0x82, 0x85, 0x2a, 0xce, 0xc6, 0xa7, 0x31, 0x1a, 0x55, 0xd0, - 0x6a, 0xb3, 0xa5, 0xbe, 0x57, 0xb9, 0xf2, 0x39, 0xb6, 0x75, 0xab, 0x38, 0x90, 0x11, 0xd4, 0x7d, - 0x82, 0xb6, 0x44, 0x16, 0x82, 0xf6, 0x68, 0x0a, 0x79, 0x03, 0x96, 0x98, 0x0c, 0xa3, 0xf0, 0x1e, - 0xb2, 0x17, 0x32, 0x0e, 0x79, 0x8c, 0xdf, 0xed, 0xe0, 0xb9, 0x70, 0x18, 0x41, 0xa0, 0x3a, 0xe3, - 0xe4, 0x9b, 0x30, 0x41, 0xdf, 0xc8, 0x22, 0x02, 0xe3, 0x0a, 0x1e, 0x05, 0x03, 0x7f, 0x81, 0x49, - 0xc4, 0xb2, 0xb1, 0xf8, 0xf6, 0x25, 0xeb, 0xe7, 0xcc, 0xd0, 0x72, 0x09, 0x75, 0x7a, 0x75, 0x4e, - 0xbc, 0x3c, 0x52, 0x51, 0x89, 0x25, 0x49, 0x9e, 0xec, 0x0a, 0x4c, 0x55, 0xfe, 0x83, 0xbb, 0x01, - 0x78, 0x8f, 0x8f, 0x3c, 0xf9, 0x1d, 0x24, 0x34, 0x75, 0xe7, 0x56, 0xfa, 0x31, 0x40, 0x05, 0x42, - 0x09, 0xf9, 0x89, 0xa2, 0xfa, 0x54, 0x91, 0xc4, 0xd1, 0xc8, 0xcd, 0x3e, 0xe1, 0x3b, 0x8a, 0xab, - 0xdf, 0xe3, 0xde, 0xc2, 0xad, 0x89, 0xfa, 0x9f, 0x86, 0xc4, 0xd8, 0xa5, 0x5b, 0xf9, 0x37, 0x6f, - 0x2e, 0x16, 0xb6, 0x8c, 0x7c, 0x70, 0x87, 0xb2, 0x27, 0x21, 0xc6, 0xe3, 0x6e, 0x80, 0x14, 0x10, - 0x9d, 0x23, 0xf9, 0x19, 0xe7, 0x30, 0x1c, 0xaf, 0x88, 0x32, 0xb0, 0x74, 0x20, 0x2a, 0x5e, 0x20, - 0xa6, 0x73, 0x91, 0xf1, 0xe2, 0xc5, 0x1f, 0x71, 0xfa, 0x55, 0xe5, 0x60, 0x02, 0xa1, 0x3b, 0x4f, - 0x66, 0x21, 0x56, 0x1e, 0xc3, 0x18, 0xbf, 0xae, 0xcc, 0x95, 0x23, 0x92, 0x10, 0x18, 0x77, 0x5f, - 0x7c, 0x36, 0xe3, 0xfe, 0xa2, 0x8f, 0xd5, 0x29, 0x99, 0x20, 0x54, 0x64, 0x3e, 0x20, 0xef, 0x72, - 0xd1, 0xd4, 0x2f, 0x48, 0xb6, 0xd7, 0x39, 0x92, 0x2f, 0xd2, 0x72, 0xb5, 0x1c, 0xb4, 0x65, 0x4c, - 0x1f, 0xc7, 0x54, 0xfa, 0xe0, 0x14, 0xb3, 0x71, 0x85, 0x11, 0xaa, 0xad, 0xbe, 0x3b, 0x60, 0x77, - 0x3c, 0x03, 0x99, 0xe9, 0xd4, 0xb6, 0x33, 0xab, 0x75, 0x2b, 0xd8, 0x41, 0xb1, 0xcf, 0xe6, 0x8b, - 0x36, 0xf9, 0x85, 0x45, 0xd8, 0xc4, 0x81, 0x92, 0x94, 0x2c, 0x17, 0xc0, 0x9c, 0x1a, 0x44, 0xac, - 0x09, 0xf3, 0x75, 0x25, 0x31, 0xad, 0x6c, 0xfa, 0x23, 0x31, 0x55, 0x55, 0x24, 0xcf, 0x2a, 0xb1, - 0xf0, 0xb8, 0x92, 0x0b, 0xfd, 0x3a, 0x5e, 0xf7, 0x9a, 0x83, 0xc1, 0x01, 0x59, 0x1f, 0x83, 0x20, - 0x2c, 0xc2, 0x7b, 0xd8, 0x7e, 0xd5, 0x85, 0x80, 0x6d, 0x04, 0x43, 0x59, 0x3f, 0x8b, 0x13, 0x59, - 0xa7, 0x6b, 0x75, 0x8e, 0x3c, 0x39, 0x6e, 0xa8, 0xaa, 0xa8, 0x15, 0x79, 0x18, 0xb2, 0xcc, 0xa8, - 0x61, 0xdb, 0x46, 0xb1, 0xca, 0x2a, 0x1a, 0x06, 0x54, 0xba, 0x9e, 0x52, 0xae, 0xbc, 0x0f, 0x30, - 0x55, 0x21, 0x6c, 0x09, 0xe1, 0x24, 0x4b, 0xbc, 0x91, 0xa2, 0x15, 0xf0, 0x38, 0x26, 0x3e, 0x7e, - 0xa8, 0xc8, 0xa3, 0x17, 0xca, 0xb0, 0xa7, 0x7d, 0x0e, 0xac, 0xae, 0x64, 0x19, 0x99, 0xfa, 0x5c, - 0x43, 0x56, 0x63, 0xc4, 0xd7, 0x1c, 0x92, 0xaa, 0xae, 0x4f, 0xe2, 0x27, 0x32, 0xdd, 0x4b, 0xf9, - 0x75, 0x2e, 0x39, 0x5b, 0x46, 0x11, 0x68, 0x78, 0x4a, 0x43, 0x49, 0xcf, 0xe5, 0x29, 0x5d, 0xcb, - 0x07, 0xd7, 0xca, 0x39, 0xb5, 0x66, 0x56, 0x56, 0xb2, 0x6d, 0x7b, 0xbd, 0x6e, 0x93, 0x96, 0x74, - 0xba, 0x15, 0x32, 0x3f, 0x2d, 0x92, 0xcf, 0xda, 0xfe, 0xd3, 0xd8, 0x1d, 0xcb, 0x38, 0x2d, 0xd9, - 0x58, 0xd3, 0x2e, 0x1e, 0x8f, 0x55, 0xf6, 0x7f, 0x78, 0x7b, 0x72, 0x72, 0xd2, 0x26, 0xff, 0x11, - 0x2e, 0xa3, 0xe2, 0xce, 0x80, 0x04, 0xdf, 0x61, 0xd2, 0x4d, 0x66, 0xc0, 0x31, 0x32, 0x92, 0x0b, - 0xa9, 0x0a, 0xae, 0xde, 0x84, 0x04, 0x54, 0x0a, 0xde, 0x73, 0x61, 0x2c, 0x62, 0x36, 0xe1, 0xd2, - 0x44, 0xac, 0x10, 0x8b, 0x90, 0x1a, 0x0b, 0x01, 0x17, 0xd2, 0x20, 0x2d, 0x63, 0x84, 0x03, 0x49, - 0x25, 0x23, 0xe4, 0x57, 0x2c, 0xde, 0x55, 0xe6, 0x10, 0xa4, 0x78, 0x00, 0xa1, 0xa8, 0x7a, 0xc1, - 0x77, 0xae, 0x3e, 0x05, 0xc5, 0x14, 0x23, 0x26, 0x2c, 0x18, 0x83, 0x0d, 0x9b, 0xc0, 0xe0, 0xbd, - 0xac, 0x08, 0x03, 0xa2, 0x54, 0x39, 0xd5, 0x9b, 0xc9, 0x7c, 0x98, 0xa6, 0xd8, 0xc5, 0x38, 0xbf, - 0xaf, 0x49, 0x88, 0x05, 0xba, 0x15, 0xb0, 0x34, 0x8c, 0xc5, 0x17, 0x56, 0x38, 0x47, 0x01, 0x26, - 0x67, 0xff, 0x57, 0xce, 0x17, 0x84, 0x25, 0x64, 0x1f, 0x82, 0x24, 0xe7, 0x94, 0x78, 0x13, 0x39, - 0x03, 0xec, 0x0d, 0x12, 0xdd, 0x3f, 0x63, 0x60, 0xec, 0x28, 0x41, 0xd9, 0xc4, 0x3a, 0x31, 0x0e, - 0xce, 0xda, 0x6f, 0xc4, 0x54, 0x2a, 0xe7, 0x62, 0xa5, 0xe2, 0x7b, 0xc0, 0xf4, 0xc3, 0x2c, 0xb0, - 0xc5, 0x3c, 0x82, 0xf4, 0xaa, 0xc0, 0x44, 0x8b, 0x70, 0xcc, 0x96, 0x08, 0xce, 0x30, 0x62, 0x68, - 0xa8, 0xe4, 0x14, 0x0c, 0x25, 0x17, 0x04, 0x84, 0x1e, 0x3f, 0xcd, 0x05, 0xad, 0x58, 0xc6, 0x6c, - 0xca, 0xb5, 0x72, 0x29, 0x69, 0x58, 0xa0, 0x0d, 0x59, 0x06, 0xb7, 0x41, 0x78, 0x1f, 0x28, 0xa9, - 0x36, 0x33, 0xe5, 0x88, 0xa4, 0xce, 0xde, 0x85, 0x7e, 0x02, 0x43, 0x89, 0x71, 0x89, 0x7d, 0x50, - 0x6a, 0x9f, 0x84, 0x5e, 0x31, 0x82, 0x93, 0x03, 0x0e, 0x03, 0x98, 0x59, 0x52, 0xec, 0x16, 0x3d, - 0x47, 0x6b, 0xb2, 0x8d, 0x5f, 0x5a, 0x6d, 0x9c, 0x8c, 0xe2, 0x51, 0x80, 0x4e, 0x24, 0xdd, 0x2c, - 0xa5, 0xec, 0x02, 0x4f, 0xd4, 0x47, 0x42, 0xc4, 0x68, 0x36, 0xe7, 0xa7, 0x66, 0x65, 0xeb, 0xe1, - 0x67, 0x53, 0x40, 0xf3, 0xc9, 0xc4, 0x1b, 0x61, 0x47, 0x1b, 0x31, 0xea, 0x08, 0xbf, 0x15, 0xdc, - 0x06, 0xd1, 0xc4, 0xf6, 0x25, 0xa3, 0x6e, 0xef, 0x00, 0xc3, 0x33, 0x8a, 0xae, 0x6a, 0x76, 0x32, - 0x9c, 0xda, 0x0e, 0x48, 0x6c, 0xbd, 0xa8, 0x9c, 0x89, 0xac, 0xb2, 0xe4, 0xfc, 0xb5, 0x60, 0x48, - 0xe4, 0x97, 0x4e, 0xe5, 0xa7, 0xc9, 0x0a, 0x85, 0x6c, 0x39, 0xd3, 0xac, 0xc6, 0x6e, 0x31, 0xe0, - 0x70, 0xaa, 0xe3, 0x9a, 0xb9, 0xb4, 0xac, 0xe4, 0x53, 0x38, 0x5e, 0x11, 0x76, 0xcd, 0x67, 0xdb, - 0xb5, 0x5b, 0x2b, 0xb7, 0x3e, 0xd1, 0xca, 0x84, 0x57, 0xf3, 0xdd, 0xcb, 0x89, 0x62, 0x10, 0x2f, - 0xe1, 0x0f, 0x1b, 0x86, 0x30, 0x09, 0xa1, 0x89, 0x48, 0x1f, 0xd5, 0x12, 0xc5, 0xba, 0x9a, 0x0a, - 0x8e, 0x32, 0xf9, 0xf5, 0x6e, 0x65, 0xc3, 0xd0, 0xd7, 0x33, 0x3b, 0x82, 0x1d, 0x3d, 0xe2, 0xa7, - 0x02, 0x64, 0x23, 0x5c, 0xdc, 0xd2, 0xe3, 0xca, 0x6b, 0xeb, 0x95, 0x72, 0x17, 0x85, 0x98, 0x0e, - 0x72, 0x9e, 0x2a, 0x4d, 0x15, 0x20, 0x81, 0x02, 0x39, 0x3b, 0x48, 0x9d, 0x11, 0xd9, 0xe2, 0x17, - 0x11, 0xc1, 0x61, 0x09, 0x82, 0x43, 0x85, 0xe1, 0x30, 0xe7, 0xf1, 0x22, 0x31, 0xdf, 0x4b, 0xd1, - 0x05, 0x48, 0x7e, 0x93, 0xfa, 0x54, 0xc9, 0x36, 0x76, 0x0e, 0x32, 0x60, 0x6b, 0x6f, 0x75, 0x94, - 0xf3, 0x57, 0x73, 0x27, 0xe7, 0xc6, 0xfa, 0x05, 0x6b, 0x2a, 0x3a, 0x34, 0x49, 0xa5, 0xb4, 0x3e, - 0x7e, 0x38, 0xf4, 0xc3, 0xd1, 0x6d, 0x5b, 0xb2, 0xc1, 0xb1, 0x81, 0x0d, 0xed, 0x19, 0x47, 0x2b, - 0x04, 0x37, 0x70, 0x3d, 0x14, 0xb1, 0xf3, 0x21, 0xb6, 0x70, 0x2e, 0xe3, 0x56, 0x4d, 0x70, 0x49, - 0xf2, 0xb0, 0x52, 0x20, 0x91, 0xeb, 0x98, 0xfc, 0x93, 0x06, 0x1b, 0x24, 0x0a, 0xa8, 0x91, 0x68, - 0x09, 0xcb, 0x08, 0xa4, 0xd5, 0x1b, 0x7a, 0xbe, 0x87, 0xa6, 0x38, 0x22, 0x3e, 0x9b, 0x42, 0x08, - 0x16, 0x43, 0xea, 0x2e, 0x4c, 0xce, 0x6f, 0x60, 0x0a, 0x7d, 0x61, 0x1d, 0x41, 0xd5, 0x49, 0xce, - 0xad, 0xea, 0x16, 0xcb, 0x6e, 0x49, 0xf7, 0xa3, 0xe6, 0x09, 0x1a, 0x13, 0xb4, 0x83, 0x43, 0xf4, - 0xd1, 0xfc, 0x01, 0x00, 0x40, 0x87, 0x47, 0x05, 0xbb, 0x0c, 0x62, 0x51, 0x29, 0x93, 0x8b, 0x4b, - 0x76, 0xcb, 0xd1, 0x10, 0xf1, 0xe9, 0x5c, 0x9b, 0x25, 0x0e, 0x61, 0xbf, 0x22, 0xb0, 0xd5, 0xf7, - 0x6a, 0x3f, 0x39, 0x90, 0xce, 0x55, 0xa9, 0xdd, 0x70, 0x19, 0xcb, 0xb3, 0x17, 0x58, 0xef, 0xd8, - 0x1b, 0xf1, 0x78, 0xfb, 0xf8, 0xcc, 0xa6, 0xc9, 0x82, 0x87, 0xa8, 0x3d, 0xa8, 0xb8, 0x5a, 0xf9, - 0xee, 0xd8, 0x53, 0x9e, 0x7b, 0x8b, 0x48, 0x8b, 0x1d, 0xaa, 0xc8, 0x16, 0x1c, 0xd8, 0x8f, 0x3f, - 0xc4, 0x7e, 0xfe, 0x31, 0x67, 0x8b, 0x05, 0xee, 0x55, 0xfe, 0x70, 0x84, 0xe8, 0x0a, 0x75, 0x2b, - 0xd7, 0xb5, 0x93, 0x1d, 0x13, 0xbc, 0xc4, 0xa3, 0xed, 0xaa, 0xa3, 0x0b, 0xe3, 0x05, 0xf9, 0x17, - 0x59, 0x1c, 0xe8, 0x4e, 0x65, 0x53, 0x79, 0xca, 0x31, 0x60, 0x71, 0x3c, 0xc3, 0xa0, 0x4f, 0x18, - 0xd6, 0x75, 0xa7, 0xb2, 0x5b, 0xc1, 0xd3, 0x95, 0x89, 0x9c, 0x4e, 0x2d, 0x49, 0x14, 0x32, 0x41, - 0x34, 0xf0, 0x6c, 0x37, 0xf4, 0xc7, 0x59, 0x98, 0x53, 0x1a, 0xdc, 0xac, 0x9f, 0x98, 0x39, 0x76, - 0x5a, 0xf6, 0x86, 0x54, 0x2e, 0xb3, 0x7a, 0x38, 0x9b, 0xf3, 0xeb, 0x42, 0xf5, 0xbc, 0xf2, 0xca, - 0xf2, 0x39, 0x24, 0x78, 0x3b, 0x8a, 0xe7, 0xa9, 0xff, 0x53, 0xe2, 0x05, 0xf9, 0xdd, 0x3a, 0x74, - 0x49, 0x53, 0xd0, 0x35, 0x18, 0x94, 0x84, 0x93, 0xf1, 0x7a, 0xd9, 0x5b, 0x43, 0x56, 0xb2, 0xc3, - 0xac, 0x5a, 0xe3, 0xf0, 0x96, 0xaf, 0x0a, 0x4d, 0x70, 0x9b, 0x27, 0x5a, 0x0a, 0x48, 0x34, 0xf2, - 0xe6, 0xda, 0xdb, 0xd6, 0xd1, 0xd5, 0xb1, 0xa1, 0x50, 0x40, 0x0e, 0xf1, 0x07, 0x11, 0xb6, 0xe0, - 0xc3, 0xb6, 0xc3, 0xed, 0x44, 0x2b, 0xd9, 0x39, 0x57, 0xcd, 0x79, 0x69, 0x6a, 0xc7, 0xb4, 0x7b, - 0xac, 0xe8, 0x89, 0x4c, 0x62, 0x0b, 0xae, 0x9f, 0x69, 0xf7, 0xad, 0x00, 0x8b, 0x4a, 0x78, 0x91, - 0x16, 0xa0, 0xbb, 0x22, 0xf9, 0x8c, 0x04, 0xeb, 0x4a, 0x3c, 0x2e, 0xda, 0x95, 0xca, 0x5a, 0x6d, - 0x59, 0x95, 0x96, 0x33, 0x51, 0xfd, 0x09, 0x2b, 0xcb, 0x22, 0x67, 0xff, 0x69, 0x7b, 0x5d, 0xb9, - 0x72, 0x2a, 0xa2, 0x55, 0x90, 0x17, 0xb9, 0x8f, 0x18, 0xf0, 0xcd, 0x99, 0x17, 0xa4, 0x26, 0x07, - 0x7f, 0xab, 0xe1, 0x85, 0x18, 0xff, 0x72, 0xf0, 0x29, 0x0b, 0xe2, 0x2b, 0x42, 0xca, 0x45, 0x8b, - 0x71, 0x79, 0x10, 0x90, 0xa6, 0xd5, 0x6b, 0x58, 0xf1, 0x91, 0xc6, 0x28, 0xea, 0x8a, 0xa4, 0xc2, - 0x46, 0x23, 0xbe, 0x00, 0xb7, 0x5e, 0x15, 0xe8, 0xb6, 0x28, 0xba, 0xd6, 0x8e, 0xb9, 0x8a, 0xc5, - 0xe4, 0xda, 0x73, 0x55, 0x59, 0x7a, 0xe4, 0x45, 0x12, 0x03, 0x30, 0xe2, 0x37, 0xf1, 0xbc, 0xa0, - 0xb9, 0x4a, 0x71, 0x19, 0xa9, 0x80, 0x22, 0x4e, 0xdc, 0xd2, 0xdf, 0xc9, 0x11, 0xac, 0x9d, 0x30, - 0xb0, 0x99, 0x70, 0x39, 0x89, 0xc0, 0xe9, 0x8f, 0x8f, 0x20, 0x40, 0x11, 0x15, 0x43, 0x97, 0xfe, - 0x01, 0x5b, 0x1e, 0xdc, 0x52, 0xd4, 0x3a, 0x78, 0x1b, 0x76, 0x8e, 0x98, 0xe4, 0xed, 0x35, 0xd6, - 0x1e, 0x5e, 0x7f, 0x8c, 0x85, 0x2d, 0x34, 0xaa, 0x7b, 0xe3, 0x62, 0x53, 0x0f, 0x2b, 0x39, 0x45, - 0x24, 0xf2, 0x5b, 0xb9, 0xdd, 0xdb, 0x72, 0x7d, 0x49, 0x75, 0x02, 0xf8, 0x2a, 0x49, 0xc1, 0x82, - 0xcb, 0x0e, 0x49, 0xd9, 0x6e, 0x7f, 0x21, 0xee, 0x51, 0x3f, 0xf2, 0x10, 0x8b, 0x20, 0xe8, 0x06, - 0x8b, 0xc4, 0xc2, 0x17, 0xe2, 0x49, 0xe1, 0x04, 0x23, 0x78, 0x19, 0xd5, 0x2f, 0x17, 0x47, 0xa2, - 0x90, 0xb6, 0x6e, 0xe8, 0xd6, 0x67, 0xde, 0x57, 0xf2, 0xa4, 0xb0, 0xe6, 0xb2, 0x93, 0xb5, 0x28, - 0xf1, 0x0c, 0xa2, 0xc4, 0x72, 0x63, 0x39, 0x2f, 0x0b, 0x18, 0xb3, 0xc0, 0xd0, 0xb0, 0x0f, 0xe1, - 0x89, 0xa9, 0x33, 0x81, 0x53, 0x95, 0xb2, 0xe1, 0xe4, 0x20, 0xe6, 0xc9, 0x93, 0xe8, 0x5f, 0x6d, - 0xc9, 0x35, 0x37, 0x29, 0xd8, 0x85, 0xc4, 0x12, 0xa2, 0xcc, 0x61, 0x18, 0x42, 0xa8, 0x6e, 0x63, - 0x06, 0x17, 0xeb, 0x90, 0x33, 0x4e, 0x89, 0x62, 0x4c, 0xf1, 0x91, 0xcd, 0xe7, 0x8c, 0x8c, 0xc2, - 0x28, 0x52, 0xd9, 0x1b, 0x7a, 0x78, 0x19, 0xbf, 0xbc, 0xc0, 0xa3, 0x8f, 0x10, 0x5f, 0x12, 0x23, - 0x4e, 0xa2, 0x10, 0x72, 0x14, 0xb4, 0x26, 0x69, 0x85, 0x40, 0x10, 0xa8, 0x6c, 0xc5, 0x5e, 0xc2, - 0xcc, 0x2d, 0x14, 0xfa, 0x10, 0x2f, 0x11, 0x03, 0x7f, 0x24, 0x66, 0x1d, 0x3b, 0xfe, 0xeb, 0x67, - 0x29, 0x23, 0x28, 0x46, 0x92, 0x9b, 0xb1, 0x62, 0xdc, 0x87, 0x75, 0xc6, 0x55, 0xd6, 0x38, 0xe7, - 0x94, 0xef, 0xcd, 0x8f, 0x28, 0x50, 0x37, 0x10, 0xbd, 0xc5, 0x1e, 0x4e, 0x5a, 0xca, 0xd4, 0x59, - 0x14, 0xc6, 0xf1, 0x84, 0x8d, 0xf9, 0x4b, 0x7c, 0xb9, 0xf9, 0x20, 0x65, 0x27, 0x43, 0x40, 0xf0, - 0x37, 0x9a, 0xd6, 0x26, 0x77, 0xf3, 0x6e, 0xdb, 0xe4, 0x1e, 0xfc, 0xcd, 0xc6, 0x14, 0xfc, 0x8d, - 0x31, 0x32, 0x8f, 0x11, 0xad, 0xaa, 0x88, 0x5c, 0x31, 0x9f, 0x27, 0xe0, 0xd5, 0x92, 0x6c, 0x9a, - 0x2f, 0x4d, 0xec, 0xea, 0x83, 0x54, 0x15, 0x9c, 0xcd, 0x18, 0x12, 0x6a, 0x60, 0x9e, 0x58, 0x99, - 0x16, 0xf2, 0x77, 0xd8, 0xe3, 0x04, 0x88, 0xd6, 0x8b, 0x1d, 0x37, 0x17, 0x2f, 0x08, 0xe0, 0x16, - 0x36, 0xc2, 0x3b, 0x21, 0x08, 0x1a, 0xff, 0x8d, 0x30, 0x56, 0xdb, 0x75, 0xe9, 0xa6, 0xff, 0xb2, - 0xa0, 0x57, 0x4a, 0x08, 0x21, 0x91, 0xcb, 0x50, 0x6c, 0x4c, 0x21, 0x3d, 0xbe, 0xf9, 0x5c, 0x16, - 0x0d, 0x7c, 0x66, 0x5e, 0x22, 0x6a, 0x13, 0xa0, 0x69, 0x95, 0x1d, 0xbd, 0xc2, 0x1f, 0x60, 0xab, - 0x77, 0x04, 0x01, 0xf8, 0x9a, 0x88, 0x10, 0x32, 0x05, 0xaa, 0x6c, 0x36, 0xb7, 0x0c, 0x96, 0x41, - 0xe4, 0xc5, 0x65, 0x0e, 0x14, 0xf8, 0x2e, 0xda, 0xf6, 0xf1, 0x27, 0x65, 0x20, 0xd1, 0x41, 0x4f, - 0x27, 0x36, 0xa3, 0x22, 0x9f, 0xf6, 0x19, 0x18, 0xf4, 0x11, 0xcf, 0xa9, 0xce, 0x4b, 0xdd, 0x86, - 0x67, 0x37, 0xf9, 0xbe, 0x45, 0x2d, 0x4c, 0xf7, 0x23, 0xda, 0xfd, 0xe8, 0x87, 0x43, 0xe6, 0x8b, - 0xef, 0xa6, 0x30, 0xc6, 0x15, 0x3a, 0x58, 0xd6, 0x5f, 0x57, 0xda, 0x4e, 0x47, 0x37, 0x96, 0x25, - 0x92, 0xf6, 0x77, 0xdb, 0x82, 0xa9, 0x17, 0x7a, 0xb1, 0x73, 0xb1, 0xd6, 0x0b, 0x5d, 0x77, 0xc8, - 0xe4, 0x17, 0xfa, 0xee, 0x90, 0xc3, 0x95, 0xf2, 0xd6, 0x3b, 0x91, 0x74, 0xa4, 0xcb, 0x03, 0xe6, - 0x64, 0x4d, 0x83, 0x2f, 0xa4, 0x2c, 0x67, 0xd7, 0x2a, 0x65, 0x81, 0x31, 0x10, 0xac, 0x83, 0x6a, - 0xdd, 0x41, 0xe2, 0xe4, 0x83, 0xe9, 0x81, 0xac, 0x61, 0x8b, 0x17, 0xdd, 0x8c, 0x8f, 0x2b, 0xeb, - 0x01, 0xf2, 0x59, 0xbf, 0x68, 0x61, 0x94, 0x5b, 0x83, 0x1d, 0x3f, 0x1d, 0xdf, 0xe1, 0x56, 0x8f, - 0xc5, 0xf6, 0x6b, 0xb5, 0xce, 0x11, 0x94, 0x2b, 0xaa, 0x68, 0x25, 0xee, 0x97, 0x09, 0xf5, 0x85, - 0xf8, 0xde, 0x90, 0x18, 0xf7, 0x11, 0x5b, 0x60, 0x49, 0x61, 0x1e, 0xde, 0xc1, 0x60, 0x73, 0x87, - 0x78, 0x57, 0xf4, 0x10, 0xe6, 0xdf, 0xb3, 0x55, 0x4c, 0x70, 0xa4, 0xb9, 0x63, 0x2b, 0x34, 0x78, - 0x80, 0x3d, 0xb0, 0x6b, 0xd0, 0x25, 0x82, 0x8f, 0x9b, 0x5f, 0x62, 0xb9, 0x4b, 0xf7, 0xa9, 0xa2, - 0x0c, 0x43, 0x24, 0x7b, 0x4c, 0xb1, 0xd0, 0xc6, 0x5f, 0xc7, 0x68, 0x6d, 0x78, 0x9c, 0x5a, 0xca, - 0xe7, 0x0f, 0x90, 0x40, 0x54, 0x32, 0x46, 0x7f, 0xb8, 0x1a, 0xbc, 0x98, 0x10, 0x8d, 0x26, 0x22, - 0x1b, 0x0c, 0x26, 0xde, 0x94, 0x24, 0x7c, 0xbe, 0xf0, 0xf3, 0xf4, 0x2b, 0xe5, 0xb1, 0x61, 0x8d, - 0x92, 0x7f, 0x3e, 0x36, 0xa4, 0xfa, 0xc0, 0x39, 0x3d, 0x97, 0xae, 0x41, 0xe2, 0x22, 0x42, 0x80, - 0xb2, 0xb8, 0x10, 0xcb, 0xfc, 0xa5, 0xc8, 0x2b, 0xc5, 0x03, 0x84, 0x3f, 0x7d, 0x7e, 0x70, 0x84, - 0x67, 0x22, 0xb9, 0x34, 0x59, 0xfe, 0x6e, 0xa1, 0x26, 0x7b, 0x84, 0xa7, 0x29, 0x78, 0xb4, 0x82, - 0xbf, 0x9b, 0xf9, 0xbf, 0x59, 0x32, 0x3f, 0xb6, 0x47, 0x53, 0x00, 0x00 + 0x64, 0xdc, 0x33, 0xe4, 0xce, 0xde, 0xbb, 0xeb, 0xf3, 0xbb, 0xff, 0xb8, 0x79, 0x4f, 0xa6, 0xc9, + 0xcc, 0xef, 0x76, 0xf0, 0xff, 0xc4, 0x67, 0xc1, 0xc4, 0xa5, 0x3c, 0xa0, 0x70, 0xcf, 0xd9, 0xa8, + 0xdb, 0x99, 0xf1, 0x84, 0x91, 0xe1, 0x94, 0x45, 0x31, 0x4f, 0x5c, 0xba, 0x48, 0xc6, 0x87, 0x27, + 0x54, 0x3d, 0xad, 0x04, 0x6c, 0xc6, 0x5d, 0xfa, 0xe0, 0xf1, 0xc7, 0x79, 0x18, 0x25, 0x94, 0x0c, + 0xc3, 0x20, 0xe1, 0x01, 0x80, 0x3d, 0x7a, 0xa3, 0x64, 0xea, 0x36, 0x6d, 0x3b, 0x05, 0x5d, 0x7b, + 0x35, 0xe2, 0x0f, 0xde, 0x90, 0x1f, 0x8a, 0x1b, 0xcb, 0x0b, 0xbc, 0xc4, 0x63, 0xfe, 0x61, 0x3c, + 0x64, 0x3e, 0x77, 0x1d, 0x6b, 0xc6, 0xbe, 0x7b, 0xb3, 0xc5, 0x2c, 0xbd, 0x5f, 0xc4, 0x3c, 0x12, + 0x37, 0x6c, 0x00, 0xf7, 0x41, 0x48, 0x37, 0x28, 0x77, 0x3b, 0x89, 0x97, 0xf8, 0xbc, 0x7b, 0xf9, + 0xfe, 0x1d, 0xe9, 0xf3, 0x24, 0xf1, 0x82, 0x49, 0xdc, 0x39, 0x92, 0xcf, 0x3a, 0xf1, 0x30, 0xf2, + 0xe6, 0x49, 0xb7, 0xf2, 0xc0, 0x22, 0x92, 0x78, 0x33, 0x1e, 0x2e, 0x12, 0x6b, 0xe4, 0x8e, 0xc2, + 0xe1, 0x62, 0x06, 0x33, 0xb2, 0x7c, 0x36, 0x8f, 0xf8, 0x83, 0xdb, 0x6c, 0x22, 0xdd, 0x9e, 0x24, + 0x7f, 0xe5, 0x36, 0x78, 0x1d, 0x2f, 0x6e, 0x7a, 0x6e, 0xc3, 0x7e, 0x7b, 0x8c, 0x97, 0x97, 0xae, + 0x53, 0xaf, 0x8b, 0x87, 0x97, 0x83, 0x7f, 0x2c, 0xc2, 0xc4, 0xb5, 0xad, 0xe1, 0x22, 0x4e, 0xc2, + 0x59, 0x3f, 0x61, 0x51, 0x12, 0xbb, 0x7b, 0x8e, 0x15, 0x8b, 0xab, 0x77, 0x5e, 0x94, 0x2c, 0xdd, + 0xcf, 0x5f, 0x10, 0xf4, 0xfc, 0xfa, 0xfa, 0x81, 0x47, 0x91, 0x37, 0xe2, 0xb1, 0xdb, 0x6c, 0x8f, + 0x17, 0xc1, 0x30, 0xf1, 0xc2, 0x80, 0xfc, 0x62, 0x98, 0x4f, 0x8f, 0x5e, 0x30, 0x0a, 0x1f, 0xab, + 0xe1, 0x9c, 0x07, 0x06, 0x9d, 0x26, 0xc9, 0x3c, 0x6e, 0x1d, 0x1d, 0xdd, 0x07, 0x61, 0xf5, 0xd1, + 0xe7, 0xa3, 0xea, 0x84, 0x1f, 0x8d, 0x39, 0x4b, 0x16, 0x11, 0x8f, 0x8f, 0x62, 0xb5, 0xa2, 0xa3, + 0x1f, 0xe0, 0xcd, 0xa1, 0xbe, 0xa3, 0xe6, 0x2a, 0xc5, 0xd7, 0x5b, 0xc7, 0x97, 0x8e, 0xa1, 0x16, + 0xfd, 0x23, 0xe6, 0xfe, 0x38, 0x0f, 0x3d, 0xb9, 0x18, 0x19, 0xdc, 0x7c, 0x8a, 0x38, 0xa0, 0x0f, + 0x08, 0xd2, 0x4a, 0xde, 0xfb, 0x1c, 0x99, 0xd1, 0x5b, 0x8a, 0x57, 0x19, 0x68, 0x38, 0x1e, 0x23, + 0x68, 0x1e, 0x26, 0xee, 0x2d, 0x7f, 0x05, 0xee, 0xc3, 0xe3, 0xcf, 0xf6, 0x97, 0xea, 0x03, 0xf3, + 0x17, 0xdc, 0x3d, 0x74, 0xb2, 0x21, 0xf1, 0x34, 0x7c, 0xbc, 0x0b, 0x59, 0x9c, 0x18, 0xdc, 0x0a, + 0x80, 0x2b, 0xe6, 0x93, 0x60, 0xbc, 0x8b, 0x54, 0x69, 0x82, 0x2f, 0xa8, 0xd9, 0x4e, 0xaa, 0x5e, + 0x10, 0xf0, 0xe8, 0x97, 0xbb, 0xab, 0x4b, 0x97, 0x5b, 0x49, 0x75, 0xe8, 0xb3, 0x38, 0x46, 0xb4, + 0x6e, 0x70, 0x4a, 0x81, 0x61, 0x61, 0x44, 0x5b, 0x14, 0x31, 0x51, 0x6b, 0xe8, 0x73, 0x16, 0xdd, + 0xc9, 0x7d, 0x33, 0xd4, 0xfe, 0x99, 0x30, 0x24, 0x4e, 0x96, 0x3e, 0xaf, 0xb2, 0xc0, 0x9b, 0x31, + 0xa4, 0xeb, 0xd2, 0x20, 0x0c, 0x38, 0xb5, 0x14, 0x84, 0x0b, 0x0c, 0xd0, 0x83, 0x0c, 0x3d, 0x37, + 0xe0, 0x52, 0x9e, 0x54, 0xee, 0xba, 0x1a, 0xf1, 0xb9, 0xcf, 0x86, 0xdc, 0x50, 0x44, 0x29, 0xf0, + 0xcb, 0xb4, 0x6a, 0x6f, 0x6d, 0x3b, 0xc7, 0x8c, 0xc1, 0xa5, 0x37, 0xf3, 0x92, 0x18, 0xd7, 0x65, + 0x25, 0x96, 0x67, 0x3e, 0x09, 0x81, 0xe1, 0x52, 0x60, 0x12, 0x25, 0x2e, 0x81, 0x94, 0x15, 0x2f, + 0x1b, 0x36, 0xf7, 0x82, 0xf8, 0xfa, 0xaf, 0x86, 0xe4, 0x03, 0x77, 0xd7, 0x78, 0x79, 0xc7, 0x26, + 0x82, 0x9d, 0xd4, 0x0b, 0xe6, 0x0b, 0x64, 0xcd, 0x38, 0x8c, 0x0c, 0xcf, 0xb5, 0xdb, 0x5e, 0x87, + 0x57, 0x7d, 0x1e, 0x4c, 0x92, 0x69, 0xdb, 0x3b, 0x38, 0x90, 0xa3, 0x03, 0x97, 0x7f, 0xf6, 0xbe, + 0x54, 0x51, 0xfa, 0xab, 0xf1, 0x62, 0x10, 0x27, 0x11, 0xec, 0xb1, 0x61, 0x5b, 0x35, 0xb3, 0xed, + 0x8d, 0x0d, 0x7a, 0x69, 0x53, 0xd7, 0x0d, 0x9e, 0x9f, 0xe9, 0xa5, 0xa3, 0x2f, 0x6a, 0xfa, 0xa2, + 0x8e, 0x17, 0x7a, 0x2f, 0xca, 0xb0, 0x48, 0x1c, 0x73, 0x54, 0xf4, 0x8b, 0x20, 0x31, 0xca, 0xb6, + 0x9c, 0x5e, 0xde, 0xd1, 0x83, 0x24, 0xdb, 0x77, 0xcb, 0xb1, 0xcd, 0xae, 0x7b, 0x62, 0x9b, 0xa8, + 0xdd, 0x5e, 0xb0, 0xe0, 0x2b, 0xc0, 0xf0, 0x8a, 0x69, 0xe0, 0x45, 0x43, 0x5d, 0xdc, 0x5e, 0xaa, + 0x8b, 0xde, 0x9d, 0xba, 0xb8, 0xb8, 0x15, 0x53, 0xdd, 0xdf, 0xa7, 0x74, 0x4f, 0xce, 0x54, 0x10, + 0x83, 0xfb, 0x43, 0xa7, 0xf0, 0xc4, 0x7c, 0x02, 0x72, 0xa3, 0xea, 0x62, 0xf6, 0xc7, 0x7c, 0x7f, + 0x5f, 0xfe, 0xad, 0xc6, 0x21, 0xcc, 0x33, 0x70, 0xbb, 0x81, 0xeb, 0xa6, 0x4b, 0xc9, 0x46, 0xe0, + 0x84, 0x4d, 0x53, 0x09, 0x3e, 0x18, 0x97, 0x28, 0x31, 0xbe, 0xf6, 0xc3, 0x28, 0x5a, 0x5a, 0x62, + 0x97, 0xc8, 0x9b, 0xa7, 0x7f, 0xef, 0x5f, 0xff, 0x5a, 0x95, 0x1c, 0xf1, 0xc6, 0x4b, 0x85, 0xdd, + 0x5c, 0x91, 0x21, 0x0b, 0x7e, 0x4a, 0xc8, 0x80, 0x13, 0x30, 0x46, 0xa3, 0xea, 0x57, 0xd3, 0xca, + 0x90, 0xba, 0x94, 0xca, 0xbb, 0x31, 0x98, 0x94, 0xd8, 0x30, 0xad, 0x3d, 0x07, 0x39, 0x99, 0x01, + 0x74, 0x9b, 0xfb, 0xfb, 0xd9, 0x5d, 0xc7, 0xa9, 0x15, 0x67, 0x40, 0xf3, 0x33, 0x38, 0x3e, 0x74, + 0x1c, 0x24, 0x46, 0x82, 0x30, 0x23, 0x47, 0x5f, 0x41, 0x0e, 0xd9, 0xb6, 0xe7, 0x06, 0xc0, 0x25, + 0x60, 0xa4, 0xb8, 0xc8, 0x4d, 0xa0, 0x5e, 0xdf, 0x41, 0x12, 0xde, 0x12, 0x16, 0x71, 0x22, 0x04, + 0x90, 0x84, 0x81, 0xbf, 0x7c, 0x99, 0x20, 0x0a, 0xe9, 0x37, 0xd7, 0x3b, 0x70, 0xda, 0xdf, 0x32, + 0x31, 0xfd, 0xa6, 0xc5, 0x94, 0xc1, 0x26, 0x7d, 0x7b, 0x41, 0x4c, 0x99, 0x96, 0x0f, 0xa6, 0xe5, + 0x83, 0x69, 0xf9, 0x60, 0x5a, 0x3e, 0x98, 0x96, 0x0f, 0xa6, 0xe5, 0x83, 0x69, 0xf9, 0x60, 0x62, + 0xf3, 0x29, 0xbe, 0x74, 0x59, 0x81, 0x88, 0x63, 0xca, 0x49, 0xc4, 0xa5, 0x93, 0x78, 0xad, 0x94, + 0xc7, 0x2f, 0x48, 0xb9, 0x94, 0xcd, 0x6f, 0xa9, 0x6c, 0xe6, 0xd8, 0x95, 0x7b, 0xbe, 0x26, 0x6a, + 0x37, 0x5e, 0x80, 0x3e, 0x72, 0xec, 0x7b, 0x43, 0xdc, 0xdc, 0xe4, 0x91, 0xf3, 0x00, 0x64, 0x2e, + 0xd5, 0xc6, 0xd5, 0x11, 0xde, 0xa8, 0x49, 0xaf, 0xf6, 0x84, 0x94, 0x7d, 0x2b, 0xec, 0xc2, 0xb7, + 0xfc, 0x2e, 0xac, 0xe0, 0x3f, 0x49, 0x60, 0xcf, 0xce, 0xcc, 0x4d, 0x12, 0x2d, 0xfb, 0x8b, 0x01, + 0x18, 0x2a, 0x43, 0x2b, 0x48, 0x7f, 0x5c, 0x1d, 0xb1, 0x84, 0xe5, 0xf0, 0x54, 0xd1, 0xe5, 0xc1, + 0x92, 0xdf, 0xf1, 0x31, 0x5b, 0xf8, 0x09, 0x62, 0xd3, 0x56, 0x4a, 0x4f, 0x19, 0x98, 0x96, 0x84, + 0xf3, 0x9b, 0x28, 0x9c, 0xb3, 0x09, 0x93, 0xc6, 0x53, 0x49, 0x9a, 0xf0, 0x7e, 0x5d, 0x07, 0x4c, + 0xa3, 0xb2, 0x49, 0xf4, 0x2e, 0x0c, 0xc9, 0x8c, 0x05, 0x4b, 0x02, 0xfe, 0x37, 0x26, 0x20, 0x1b, + 0x64, 0xc6, 0x49, 0x12, 0x92, 0x29, 0x0b, 0x46, 0x3e, 0xdf, 0xa3, 0x6d, 0xb4, 0x90, 0x1d, 0x87, + 0x37, 0xf6, 0xf7, 0x8d, 0xe0, 0xc0, 0xa5, 0x7f, 0x0f, 0xfe, 0x1e, 0x9d, 0x87, 0x41, 0x0c, 0x6e, + 0x31, 0x02, 0x09, 0x87, 0x7d, 0x21, 0x20, 0xf1, 0xef, 0xfb, 0x37, 0xf5, 0x1a, 0x8a, 0x9e, 0xe4, + 0x56, 0x60, 0xae, 0xc4, 0xd4, 0x87, 0x53, 0x3e, 0xbc, 0xff, 0x9d, 0xf9, 0xde, 0xc8, 0x4b, 0x96, + 0x86, 0x89, 0x9a, 0x0e, 0x4f, 0x63, 0xb9, 0xc4, 0x9c, 0x75, 0xe6, 0xc1, 0x59, 0xef, 0x32, 0xb5, + 0xb2, 0xc2, 0xdb, 0x60, 0xbc, 0x40, 0x4d, 0x89, 0x81, 0x8f, 0xda, 0x62, 0xe0, 0xe5, 0x99, 0xe2, + 0x03, 0x3f, 0x95, 0x9e, 0xbf, 0x65, 0x5b, 0x1a, 0x18, 0x60, 0xa5, 0x57, 0x19, 0x79, 0x31, 0xb8, + 0x83, 0x25, 0xc0, 0x80, 0x59, 0xf6, 0x3d, 0xf0, 0x2b, 0x2d, 0xe5, 0x5e, 0x04, 0xe8, 0x3c, 0x5e, + 0xd4, 0x5e, 0x01, 0x5b, 0xa0, 0xd7, 0xb5, 0xf7, 0xf7, 0xc1, 0x27, 0x89, 0x39, 0xe6, 0x27, 0x7d, + 0x79, 0x96, 0xf3, 0x0c, 0x02, 0x1e, 0xdc, 0xb5, 0x1c, 0xb2, 0x3e, 0x61, 0x49, 0xfc, 0xf2, 0x0c, + 0x28, 0x6e, 0x50, 0x6f, 0xda, 0x6e, 0xc9, 0x0c, 0x7e, 0xbb, 0xc8, 0x13, 0xd3, 0xe4, 0x9f, 0xe2, + 0x47, 0x2f, 0x19, 0x4e, 0x8d, 0x12, 0x1e, 0xb9, 0x7b, 0xb6, 0xb5, 0x3e, 0x0d, 0xc0, 0x6d, 0xe5, + 0x14, 0x26, 0x37, 0x25, 0xd0, 0xb4, 0x21, 0x8b, 0x39, 0xb1, 0x5b, 0xa5, 0xa8, 0x1c, 0x4b, 0xed, + 0x49, 0x7b, 0x10, 0x71, 0x76, 0xdf, 0x16, 0xb0, 0x75, 0xbb, 0xb5, 0x41, 0xa0, 0x6e, 0x17, 0x20, + 0x9a, 0x25, 0x10, 0xcd, 0x3c, 0x44, 0xb3, 0x04, 0xa2, 0x59, 0x80, 0xa8, 0x95, 0x81, 0xd4, 0x52, + 0x98, 0x91, 0x94, 0xfb, 0xd6, 0x0e, 0x86, 0x6a, 0x56, 0xae, 0x04, 0xcc, 0xcc, 0x01, 0x80, 0x2c, + 0x64, 0x41, 0x79, 0xb6, 0x4a, 0x6d, 0x47, 0x1f, 0x22, 0x2d, 0xb4, 0x1c, 0x6c, 0x34, 0x7a, 0x8f, + 0x1a, 0x76, 0xe9, 0xc5, 0x10, 0xf7, 0xf2, 0x08, 0x02, 0x0b, 0x21, 0xb1, 0x10, 0xa0, 0x68, 0xfd, + 0x34, 0xd7, 0xb6, 0x07, 0xb0, 0x5d, 0xf1, 0x19, 0x46, 0x17, 0xe6, 0x93, 0xcf, 0x13, 0x70, 0xd3, + 0x2f, 0x98, 0xa9, 0x73, 0x7a, 0x10, 0x64, 0x66, 0xca, 0x6c, 0x2b, 0xcd, 0x4d, 0x0e, 0x5e, 0x18, + 0xd8, 0xbf, 0x2c, 0x0e, 0xb4, 0x78, 0xa7, 0x5e, 0x3b, 0xcd, 0x74, 0xb4, 0xee, 0xba, 0xe5, 0x04, + 0xed, 0xc2, 0xb8, 0x53, 0xde, 0xad, 0xbd, 0x3d, 0xad, 0xd9, 0x7f, 0x49, 0x5a, 0x4e, 0x13, 0xfe, + 0x87, 0x08, 0xba, 0x2e, 0x60, 0x90, 0x2f, 0x4e, 0xe0, 0xd1, 0x31, 0xfc, 0x13, 0x37, 0x0d, 0xb8, + 0xa8, 0x8b, 0x9b, 0xba, 0x03, 0xc6, 0xb2, 0xd3, 0x38, 0x39, 0x6d, 0xb6, 0x1a, 0x0d, 0x90, 0xd9, + 0xe7, 0xe7, 0x46, 0x13, 0x45, 0x57, 0x41, 0x64, 0xec, 0x00, 0xe6, 0xf0, 0x34, 0x7c, 0xc4, 0x40, + 0xd2, 0x82, 0x90, 0xbb, 0x2d, 0x05, 0x6d, 0x36, 0x7f, 0x64, 0x51, 0x00, 0x76, 0x63, 0x63, 0xdb, + 0xc4, 0xa6, 0x5f, 0x69, 0x9d, 0xfb, 0xb9, 0x66, 0xdb, 0x1b, 0x4a, 0x01, 0x62, 0xe0, 0xba, 0x05, + 0x39, 0x56, 0x96, 0xc0, 0x75, 0x6a, 0xad, 0x0d, 0x9d, 0x35, 0xd4, 0xbb, 0xa2, 0xe0, 0xb7, 0xa5, + 0x9b, 0xdb, 0x16, 0xcb, 0x81, 0xcc, 0xf1, 0x61, 0x31, 0x98, 0x63, 0xf9, 0x60, 0x4e, 0xb8, 0x2e, + 0xe1, 0xcf, 0xb6, 0x84, 0x73, 0xda, 0x85, 0xb1, 0xd2, 0x40, 0xcd, 0xf2, 0xb3, 0x1d, 0x66, 0x85, + 0xe0, 0x46, 0xf2, 0x67, 0x6e, 0x8f, 0xd0, 0x83, 0xe5, 0x04, 0xd6, 0x47, 0x07, 0xb6, 0xbf, 0xef, + 0x77, 0xde, 0x1e, 0x9f, 0xd2, 0x8b, 0x1b, 0x02, 0xe2, 0x09, 0x99, 0x45, 0xdc, 0xa2, 0x2d, 0xbf, + 0xdb, 0x78, 0x7b, 0x4a, 0xdf, 0x81, 0x7f, 0x20, 0x1f, 0x6f, 0x2e, 0xae, 0xe5, 0x13, 0xe7, 0x94, + 0xe2, 0x0d, 0xbe, 0xa7, 0xf2, 0xa9, 0x32, 0x7c, 0xce, 0x26, 0xe2, 0xc6, 0x5b, 0xc4, 0x7b, 0xdc, + 0x38, 0xa5, 0xe7, 0xfe, 0xbd, 0xc6, 0x41, 0xa9, 0xe0, 0x50, 0xb8, 0x45, 0x90, 0x1c, 0xe5, 0x60, + 0x05, 0x7f, 0x40, 0x5e, 0x95, 0xe8, 0xfb, 0x56, 0x6c, 0x5a, 0x4b, 0xd7, 0x69, 0x2f, 0x3b, 0xcd, + 0xf6, 0x12, 0xa3, 0x09, 0x63, 0x1b, 0x06, 0x7a, 0xb0, 0x94, 0x28, 0x4c, 0xdc, 0xa2, 0x6c, 0x75, + 0xfb, 0xfb, 0xcb, 0x4e, 0xe3, 0xf9, 0x59, 0x4e, 0xcb, 0x71, 0xdd, 0xa5, 0xb8, 0x76, 0xf0, 0x65, + 0x13, 0x40, 0x96, 0x07, 0x0d, 0xbb, 0xe3, 0x9f, 0x1a, 0xe1, 0x16, 0x6d, 0xb7, 0x42, 0xc8, 0x04, + 0xfe, 0xb1, 0xf0, 0x22, 0x61, 0x0a, 0xcd, 0xd6, 0x26, 0xa0, 0x94, 0xa1, 0x3c, 0x98, 0x03, 0x77, + 0xda, 0xb5, 0x9a, 0xe6, 0x0a, 0x82, 0x01, 0x69, 0x59, 0xa3, 0xb1, 0xe0, 0x95, 0x36, 0x87, 0x25, + 0xcf, 0x9e, 0x9f, 0xeb, 0x30, 0x45, 0xdf, 0xf2, 0x85, 0x56, 0xf8, 0xa0, 0x15, 0x30, 0x76, 0xab, + 0xae, 0xe7, 0x42, 0x12, 0x17, 0x82, 0x1c, 0x2b, 0x8f, 0x30, 0x0c, 0x86, 0x10, 0x54, 0xdc, 0xbb, + 0x02, 0xdf, 0x69, 0x2e, 0xdf, 0x51, 0xf1, 0x81, 0xb3, 0x6a, 0xe5, 0x1e, 0xae, 0xac, 0xe0, 0x19, + 0x8c, 0x2e, 0x80, 0xaa, 0x19, 0x08, 0x26, 0x09, 0x0e, 0x36, 0x80, 0x83, 0x8d, 0xfa, 0x1e, 0x4c, + 0x4a, 0xa0, 0x1f, 0x86, 0x02, 0x7d, 0x91, 0x07, 0x39, 0x76, 0xe3, 0x40, 0x57, 0x8d, 0x3c, 0x39, + 0x95, 0xcc, 0x69, 0xa5, 0xcc, 0x14, 0x28, 0x46, 0xde, 0x04, 0x70, 0x1c, 0xd0, 0xc7, 0x0d, 0x5d, + 0xcd, 0xcf, 0x60, 0x43, 0x4b, 0xeb, 0x36, 0x4c, 0x02, 0x6c, 0x91, 0x23, 0xfe, 0x94, 0x73, 0xe5, + 0xd3, 0x75, 0x91, 0x2b, 0xb6, 0x59, 0x24, 0x39, 0xa4, 0x25, 0x53, 0x7f, 0xdd, 0x6c, 0x23, 0xba, + 0x63, 0xd5, 0xbb, 0x87, 0xc6, 0xf4, 0xff, 0x86, 0x61, 0xe3, 0x32, 0x3c, 0xce, 0x31, 0x0e, 0xad, + 0xd7, 0x04, 0x9e, 0xa6, 0xad, 0x55, 0xaf, 0x2c, 0x4a, 0xd1, 0x78, 0xd8, 0x06, 0x1e, 0x48, 0x0e, + 0x1a, 0xc8, 0xde, 0xf2, 0x71, 0x60, 0xed, 0x36, 0xad, 0x47, 0x36, 0xe5, 0x8b, 0xe0, 0x01, 0xc2, + 0x33, 0x3e, 0x22, 0x90, 0x5a, 0x63, 0xc6, 0xda, 0xa2, 0xb7, 0x10, 0x4b, 0x82, 0x35, 0x1a, 0x11, + 0x23, 0x0a, 0x13, 0x86, 0xaf, 0x9c, 0x13, 0xfb, 0x7f, 0xfe, 0xdb, 0x4c, 0xa3, 0xa5, 0xd1, 0x6e, + 0x7c, 0x23, 0xfe, 0x1d, 0x4d, 0x86, 0xa8, 0xa3, 0xb4, 0xe8, 0x0a, 0x0d, 0x47, 0x04, 0x6a, 0xff, + 0x8f, 0x05, 0x07, 0x57, 0x29, 0x2c, 0x69, 0x18, 0x9d, 0xf9, 0xbe, 0x41, 0xab, 0x8f, 0xb0, 0xa3, + 0xd6, 0xc2, 0x8d, 0xb4, 0x2d, 0xcd, 0xcc, 0xeb, 0x42, 0xd8, 0xd5, 0x08, 0x8d, 0xe1, 0xda, 0x5a, + 0xd7, 0x17, 0x29, 0x0c, 0xd3, 0xfc, 0xa5, 0x34, 0xdc, 0x9a, 0xb9, 0xb6, 0xf5, 0x80, 0x35, 0x1e, + 0x40, 0x9f, 0x91, 0x99, 0x6f, 0xa4, 0xe4, 0x13, 0x77, 0xbe, 0x2d, 0x25, 0x8f, 0x4b, 0x5f, 0xe9, + 0x24, 0xe8, 0x1c, 0x32, 0x88, 0x89, 0xca, 0x62, 0x30, 0x21, 0x9a, 0xe8, 0x84, 0x68, 0x62, 0xbe, + 0x60, 0x02, 0xc0, 0xd1, 0xba, 0xa2, 0xd8, 0xd0, 0x2e, 0x19, 0xac, 0xb3, 0xa9, 0x89, 0xce, 0xa6, + 0x24, 0x0d, 0xc3, 0x77, 0xff, 0x54, 0xd2, 0x63, 0xca, 0x94, 0xe7, 0x49, 0xac, 0x00, 0x09, 0x82, + 0xd7, 0xb4, 0xe4, 0x8d, 0x17, 0x00, 0x5b, 0xe6, 0x19, 0xa7, 0x87, 0xa1, 0x1f, 0x46, 0x2e, 0xfd, + 0x61, 0x3c, 0x1e, 0xd3, 0x76, 0x9a, 0x23, 0xa5, 0x03, 0xeb, 0xf5, 0x6c, 0xdc, 0xa1, 0x93, 0xab, + 0x10, 0xec, 0x9a, 0xb3, 0xce, 0x00, 0x27, 0x3a, 0x03, 0x9c, 0xe8, 0x0c, 0x70, 0xa2, 0x33, 0xc0, + 0x89, 0xaa, 0x10, 0xcc, 0x37, 0x2a, 0x04, 0xf3, 0x5c, 0x85, 0x00, 0xb7, 0x08, 0x8b, 0x71, 0xed, + 0x5c, 0xa9, 0xe0, 0x2c, 0x8a, 0xd8, 0xb2, 0xea, 0xc5, 0xe2, 0xaf, 0x4e, 0xf1, 0x4d, 0xdc, 0xe4, + 0x7b, 0xd8, 0xe4, 0xfb, 0x8e, 0x2a, 0x25, 0xa8, 0x9d, 0xbe, 0x87, 0x9d, 0x5e, 0x56, 0xe7, 0x8b, + 0x78, 0xaa, 0x40, 0x3f, 0xdf, 0x7f, 0x31, 0x55, 0x02, 0x6c, 0x43, 0xfa, 0x3b, 0xcf, 0xa7, 0xbf, + 0x40, 0xc5, 0xdb, 0x73, 0xbf, 0x49, 0xba, 0x63, 0x98, 0xc9, 0x4b, 0x69, 0xf0, 0x58, 0x33, 0x61, + 0xac, 0x99, 0x30, 0xd6, 0x4c, 0x18, 0x6b, 0x26, 0x8c, 0x35, 0x13, 0xc6, 0x9a, 0x09, 0x63, 0xcd, + 0x84, 0x71, 0x2e, 0x0d, 0x1e, 0x97, 0xa6, 0xc1, 0x97, 0xa5, 0x93, 0x78, 0x6d, 0x1a, 0x7c, 0xb9, + 0x2b, 0x0d, 0x96, 0xdc, 0xff, 0xb6, 0xc1, 0xfd, 0xec, 0x89, 0xe2, 0x5b, 0x4a, 0x27, 0x7b, 0x27, + 0x2a, 0x31, 0xab, 0xd5, 0x52, 0x16, 0x6c, 0xb8, 0xdb, 0xe5, 0xb9, 0x82, 0xcd, 0xbc, 0x58, 0xb0, + 0x39, 0xdd, 0x14, 0x36, 0x70, 0xbc, 0xb4, 0xb5, 0xf1, 0x78, 0x0b, 0x82, 0x6e, 0xbd, 0x7e, 0x4a, + 0xc3, 0x88, 0x05, 0x13, 0x34, 0x02, 0x42, 0x4e, 0x57, 0x2b, 0xee, 0xc7, 0x5c, 0x30, 0xe8, 0x62, + 0xdb, 0xb0, 0x76, 0xbe, 0xbc, 0x0b, 0xc9, 0x5b, 0x56, 0xdc, 0xfd, 0x1c, 0x7f, 0x79, 0x7e, 0x96, + 0x4e, 0xde, 0x8f, 0x85, 0x6d, 0x93, 0xfe, 0x67, 0xa6, 0xfc, 0x8f, 0x7a, 0x08, 0x26, 0x08, 0x53, + 0x22, 0x08, 0x11, 0xf2, 0x98, 0xac, 0x0b, 0x70, 0x67, 0x06, 0xcb, 0xa8, 0x6e, 0xe0, 0x31, 0xcd, + 0x83, 0x8b, 0xee, 0x0c, 0xa0, 0x66, 0x2e, 0x3b, 0xb8, 0x30, 0xad, 0x8b, 0xee, 0x10, 0x6e, 0x86, + 0x2e, 0x5c, 0xfe, 0x79, 0x35, 0xee, 0xa0, 0xe7, 0x31, 0x1e, 0x0e, 0x60, 0x34, 0xf0, 0x5b, 0xd2, + 0x42, 0xbf, 0x98, 0xf0, 0xef, 0xc9, 0xb9, 0x2a, 0xca, 0xcf, 0x94, 0xa1, 0xde, 0x78, 0xee, 0xba, + 0x0f, 0xa7, 0x14, 0x78, 0x66, 0xd0, 0x83, 0x87, 0x03, 0x4a, 0xe6, 0xd3, 0x65, 0xec, 0x0d, 0x99, + 0xaf, 0x2d, 0xfb, 0xcc, 0x2e, 0x64, 0x45, 0x89, 0x25, 0x0b, 0xe3, 0xc9, 0x11, 0xa6, 0x02, 0x7f, + 0x71, 0x6c, 0x95, 0x59, 0x8f, 0x06, 0x2c, 0x73, 0xa7, 0x03, 0x36, 0xbc, 0x9f, 0x44, 0xe1, 0x22, + 0x18, 0xb9, 0x5f, 0xd1, 0x2c, 0xb3, 0xe8, 0x70, 0x12, 0xb1, 0x91, 0x07, 0xf4, 0x8c, 0xb7, 0xf6, + 0x88, 0x4f, 0x2c, 0xf2, 0xe6, 0x49, 0x96, 0x18, 0x8e, 0xed, 0x53, 0x79, 0xf1, 0x16, 0x82, 0x78, + 0xb1, 0xe3, 0xb9, 0x5d, 0x1c, 0x0e, 0x87, 0x74, 0x45, 0x6c, 0x0d, 0xbc, 0xfa, 0xd1, 0x22, 0x3f, + 0x34, 0x1a, 0x8d, 0xec, 0x9e, 0x00, 0xfd, 0x1f, 0xcd, 0xaf, 0x6a, 0x47, 0xf8, 0x68, 0x5b, 0xc6, + 0x30, 0xec, 0x5e, 0xb1, 0x64, 0x8a, 0xe6, 0xc9, 0x10, 0x46, 0xd5, 0x3a, 0xb1, 0x6d, 0xf3, 0xf9, + 0x59, 0x52, 0x3e, 0xb1, 0xcb, 0x7d, 0x64, 0x09, 0x3e, 0x29, 0x82, 0x1a, 0x1b, 0xfb, 0x5e, 0x82, + 0xcd, 0xb1, 0xd7, 0x17, 0x22, 0xb1, 0x3d, 0x42, 0x52, 0x1a, 0x87, 0x41, 0x81, 0x99, 0x19, 0xfd, + 0x13, 0xfb, 0x47, 0x12, 0x8e, 0x09, 0xa0, 0xab, 0x62, 0x81, 0x85, 0xcc, 0xf8, 0x2c, 0x8c, 0x96, + 0xf4, 0x20, 0x2b, 0xc4, 0x9c, 0x7e, 0x25, 0x46, 0x67, 0xd0, 0x7d, 0x7f, 0x7b, 0x7b, 0x7d, 0xdb, + 0x22, 0xbf, 0x89, 0x82, 0x4a, 0x08, 0x3e, 0x19, 0x98, 0x81, 0x3b, 0xb1, 0xea, 0xed, 0x75, 0x8e, + 0x06, 0x5d, 0xf3, 0x2b, 0x84, 0xe5, 0x66, 0x0b, 0xf0, 0xd9, 0xb2, 0x50, 0x33, 0x07, 0x08, 0xe5, + 0xc4, 0x85, 0x53, 0xec, 0xb9, 0x62, 0xee, 0x43, 0xee, 0xf9, 0x86, 0x01, 0x68, 0x0f, 0x1e, 0xfe, + 0x22, 0x93, 0x1f, 0xf3, 0xa8, 0x09, 0xab, 0x38, 0xaa, 0xb5, 0x7b, 0x6e, 0xaf, 0xdb, 0x3c, 0xcd, + 0xa0, 0x7a, 0x66, 0xab, 0xd7, 0x66, 0xae, 0x8a, 0xf6, 0xa7, 0x22, 0xa2, 0x5b, 0x4f, 0xbb, 0xad, + 0x81, 0x9b, 0xcf, 0xb8, 0xb2, 0xea, 0x46, 0xaf, 0xe3, 0x54, 0xed, 0xda, 0xfe, 0xfe, 0xde, 0x14, + 0xfe, 0x0d, 0x4e, 0x01, 0xcd, 0xfb, 0xfe, 0x0d, 0x69, 0xfe, 0x8e, 0x55, 0x49, 0xf2, 0xe8, 0x25, + 0x53, 0xe2, 0x9c, 0x91, 0xdf, 0xfa, 0x3d, 0x12, 0x2f, 0xe6, 0x73, 0x7f, 0x49, 0x5b, 0x06, 0x3b, + 0x70, 0xa7, 0xa7, 0xd4, 0xa9, 0xfd, 0x4e, 0x68, 0x6b, 0x70, 0x4a, 0x3f, 0xf5, 0x6b, 0x27, 0x4e, + 0x93, 0xc8, 0x7b, 0x0a, 0x03, 0xa9, 0x05, 0x10, 0x3d, 0xfc, 0x1f, 0x3d, 0x53, 0xa3, 0xb0, 0xde, + 0x16, 0x40, 0x04, 0x01, 0x41, 0x49, 0x12, 0x8a, 0x65, 0x53, 0x99, 0xbc, 0xf5, 0xb7, 0x2f, 0xd6, + 0x91, 0xab, 0xb5, 0xde, 0xb8, 0xd4, 0x10, 0xc5, 0xac, 0x30, 0x4e, 0x08, 0x1f, 0x8f, 0x01, 0x4d, + 0x6c, 0x91, 0xff, 0xa2, 0xed, 0x37, 0x07, 0x6e, 0xdf, 0xed, 0x17, 0x38, 0xd1, 0x37, 0x5b, 0x7d, + 0xeb, 0x8d, 0x20, 0xec, 0xc5, 0x84, 0x07, 0xe1, 0x62, 0x32, 0x35, 0x3b, 0x83, 0xa8, 0x9b, 0x95, + 0x8c, 0x0a, 0xdb, 0xcb, 0x0a, 0x95, 0xa4, 0xdc, 0xb6, 0xa3, 0xbe, 0xbd, 0x91, 0x2f, 0xbf, 0x49, + 0x99, 0x28, 0x8a, 0xeb, 0x89, 0xe2, 0xe4, 0xc5, 0x9d, 0xca, 0x5d, 0xa9, 0x96, 0xcc, 0x2c, 0x75, + 0xf6, 0x59, 0x9c, 0xbc, 0x0f, 0x46, 0xaa, 0x00, 0xc8, 0x3b, 0x8e, 0x2e, 0xea, 0xd9, 0xed, 0x87, + 0x97, 0xec, 0x47, 0x1f, 0x04, 0x8b, 0x1f, 0x82, 0xf7, 0xc8, 0x6c, 0xc8, 0xc1, 0xcb, 0x75, 0x88, + 0xf5, 0x21, 0x6d, 0x99, 0xb4, 0xbf, 0x6c, 0xab, 0x36, 0x06, 0xaa, 0x99, 0x06, 0x22, 0x25, 0x0a, + 0x64, 0x4a, 0x04, 0x99, 0xb9, 0x69, 0x79, 0xf1, 0xaf, 0xec, 0x57, 0xe3, 0xc1, 0x3c, 0xb5, 0x5b, + 0x0f, 0xd9, 0x52, 0x21, 0x91, 0xc5, 0x4d, 0x95, 0x67, 0x4d, 0xb6, 0x3e, 0xdf, 0x58, 0x23, 0x77, + 0xae, 0x8f, 0x79, 0x20, 0xbc, 0xeb, 0xdf, 0x41, 0x70, 0xe7, 0xb9, 0x49, 0x1a, 0xc8, 0x8d, 0x8d, + 0x3d, 0x03, 0x32, 0x10, 0xf0, 0x56, 0x5e, 0x17, 0xc3, 0xaa, 0xde, 0xf3, 0xf3, 0xa1, 0xbc, 0x07, + 0x61, 0xf6, 0x4c, 0x5d, 0xd1, 0x96, 0x06, 0x0f, 0xd6, 0x2a, 0x3c, 0x27, 0x02, 0xe8, 0x1c, 0xfd, + 0x6b, 0x67, 0xe4, 0x3d, 0x10, 0x71, 0x94, 0xe4, 0x0a, 0xfc, 0xdd, 0xbf, 0x07, 0x9d, 0x29, 0xbc, + 0xc1, 0x7d, 0x53, 0x07, 0x9e, 0xad, 0xda, 0xb1, 0x3d, 0xff, 0x8e, 0x6f, 0xde, 0x3c, 0x79, 0x07, + 0x90, 0x8d, 0x01, 0x88, 0x2c, 0x12, 0x10, 0x79, 0x94, 0x79, 0x79, 0x07, 0x2f, 0x56, 0x94, 0x40, + 0x22, 0x37, 0x45, 0xcb, 0xe0, 0xd2, 0xdf, 0x2e, 0x8c, 0x24, 0x02, 0x8e, 0x08, 0x74, 0xe1, 0x5c, + 0xac, 0x56, 0xa5, 0x99, 0xb5, 0x1a, 0x25, 0x72, 0x34, 0x1f, 0x75, 0x85, 0x16, 0x7c, 0xef, 0x1c, + 0x49, 0x90, 0x4d, 0xe0, 0xba, 0x4d, 0xbb, 0xfd, 0xbf, 0x1e, 0x9f, 0x38, 0x35, 0x72, 0xfb, 0xb1, + 0xf7, 0x69, 0x07, 0xa0, 0x43, 0xbb, 0x77, 0x57, 0xce, 0x89, 0xd3, 0xd8, 0x0e, 0x53, 0x6b, 0x50, + 0x48, 0x14, 0xed, 0xfb, 0x5f, 0xfe, 0x73, 0x3b, 0x4c, 0x13, 0x08, 0xe2, 0xa4, 0x6c, 0x67, 0x07, + 0x0c, 0xd0, 0x3a, 0xbb, 0x39, 0x73, 0xec, 0xda, 0x0e, 0x98, 0x1a, 0xed, 0x5e, 0xde, 0xbc, 0x3b, + 0x39, 0xb1, 0x8f, 0x77, 0x00, 0xd5, 0x69, 0xf7, 0xe6, 0xed, 0x89, 0x53, 0xdf, 0x0e, 0xd2, 0x80, + 0xf9, 0x5c, 0x07, 0x47, 0xd7, 0xe3, 0xf1, 0x0e, 0x18, 0x98, 0xcf, 0xcd, 0xa7, 0x2b, 0xf2, 0x69, + 0xea, 0x25, 0x7c, 0x07, 0x58, 0x4d, 0x82, 0x9d, 0x9f, 0xdf, 0xed, 0x00, 0xaa, 0x4b, 0x20, 0xe0, + 0xf6, 0x0e, 0xa0, 0x46, 0x0a, 0xb4, 0x63, 0x4b, 0x1a, 0xcd, 0x14, 0xea, 0xa0, 0x48, 0xf3, 0xef, + 0xdf, 0xeb, 0xc3, 0xbd, 0xc3, 0xc3, 0x35, 0xf0, 0xe3, 0x0c, 0xfc, 0x5d, 0x0e, 0xfe, 0xf0, 0x10, + 0xc0, 0xf9, 0x06, 0xf6, 0x13, 0x60, 0xcc, 0xbb, 0x77, 0x37, 0x08, 0x4e, 0x8c, 0x80, 0x27, 0x8f, + 0x61, 0x74, 0x6f, 0xbe, 0x44, 0xe3, 0x04, 0x38, 0xf5, 0xde, 0xa9, 0xd6, 0x9d, 0xf2, 0x61, 0x9a, + 0x54, 0xf9, 0x58, 0x60, 0xdf, 0x59, 0x94, 0xfc, 0xca, 0x93, 0xdd, 0x83, 0x3b, 0x47, 0x52, 0xba, + 0xbb, 0x68, 0x40, 0xe1, 0x16, 0xf5, 0xcb, 0x1b, 0xb9, 0x74, 0x18, 0x4a, 0x25, 0x51, 0x9a, 0xa5, + 0x4c, 0x62, 0x4b, 0x39, 0xe8, 0xee, 0x39, 0x7a, 0x60, 0x72, 0x1d, 0x8d, 0x78, 0xb4, 0xa1, 0x5f, + 0xe7, 0xd7, 0x62, 0xe8, 0x26, 0x8b, 0x81, 0x07, 0x1f, 0x6f, 0x77, 0x6c, 0x14, 0x2c, 0x77, 0xe7, + 0x46, 0xc2, 0x92, 0x7a, 0xb7, 0x1f, 0x77, 0x68, 0x15, 0x8c, 0xef, 0xed, 0x78, 0x0f, 0x72, 0xd0, + 0xfb, 0x78, 0xbb, 0x43, 0xc0, 0x61, 0x7e, 0xbd, 0xc2, 0xfb, 0x94, 0x39, 0x47, 0xc0, 0x97, 0x3c, + 0x7b, 0x20, 0xe1, 0xc7, 0x45, 0x3e, 0x6e, 0x30, 0x48, 0xb8, 0x87, 0x6e, 0xff, 0x91, 0xcd, 0x5b, + 0xa4, 0xc8, 0x96, 0x4f, 0x8a, 0x2d, 0x9b, 0x4c, 0xf9, 0x15, 0xc6, 0xa4, 0x54, 0x37, 0x79, 0xf2, + 0x89, 0xec, 0x93, 0xde, 0xb6, 0xf7, 0x35, 0xf9, 0xfe, 0xe3, 0xb6, 0xf7, 0x75, 0xf9, 0x3e, 0x5b, + 0x55, 0xe9, 0x9a, 0xf0, 0x4f, 0x3c, 0x67, 0x81, 0x58, 0xdb, 0x3c, 0x1e, 0xc9, 0x99, 0xca, 0x2a, + 0x01, 0x0c, 0x80, 0x37, 0x5d, 0xd2, 0x91, 0x87, 0x96, 0xc9, 0x72, 0x0e, 0x68, 0x83, 0xc5, 0x6c, + 0xc0, 0x23, 0xaa, 0x2d, 0x6a, 0x5f, 0x0a, 0x0b, 0x8e, 0xf6, 0x63, 0x79, 0xad, 0x8c, 0xb4, 0x4f, + 0x64, 0x30, 0x4f, 0x09, 0x26, 0xa5, 0xb0, 0x5a, 0x0c, 0xae, 0x50, 0xb4, 0xdf, 0x3a, 0x54, 0xcf, + 0xf1, 0xcd, 0x93, 0xf6, 0xa2, 0x9e, 0x29, 0xec, 0xb2, 0xa0, 0xe4, 0xd2, 0x7c, 0x1a, 0x80, 0x48, + 0xbf, 0xb8, 0x68, 0xa5, 0xdb, 0x58, 0xca, 0x6f, 0x53, 0xa2, 0xab, 0x82, 0xe4, 0xa8, 0xbb, 0x1f, + 0x0c, 0xe2, 0x79, 0x7b, 0x73, 0x7b, 0x86, 0x5b, 0xe5, 0xf7, 0x52, 0x78, 0xa4, 0xd6, 0xce, 0x45, + 0x9d, 0x17, 0x17, 0xa2, 0x56, 0xe0, 0xa8, 0x15, 0x88, 0x78, 0xef, 0xa6, 0xb7, 0xa2, 0xd9, 0x4e, + 0x65, 0x53, 0x4a, 0x97, 0x80, 0x73, 0xa5, 0x30, 0x43, 0xc9, 0x6c, 0xa5, 0x63, 0x47, 0x1b, 0x1c, + 0xb7, 0x15, 0xc7, 0x45, 0x49, 0xf7, 0x35, 0x0c, 0xb7, 0xe5, 0xdc, 0x0a, 0x3c, 0xad, 0xd7, 0x73, + 0x33, 0x50, 0xb3, 0x8e, 0xd7, 0xdc, 0x9c, 0x49, 0x8f, 0x8a, 0x94, 0x1d, 0x45, 0x59, 0x11, 0xdd, + 0x45, 0xd3, 0xd9, 0x42, 0xf3, 0xb5, 0xa4, 0x6a, 0xaf, 0x27, 0x55, 0xfb, 0x17, 0x49, 0xd5, 0x5f, + 0x4f, 0xaa, 0xfe, 0x2f, 0x92, 0x6a, 0xbc, 0x9e, 0x54, 0xe3, 0x9f, 0x22, 0xb5, 0x26, 0xd3, 0xd1, + 0x56, 0x99, 0x46, 0xe9, 0xca, 0x26, 0x06, 0xe1, 0xb5, 0x9c, 0x98, 0x2e, 0x19, 0xaa, 0x09, 0xae, + 0xc9, 0xbc, 0x28, 0x8f, 0x0f, 0xc2, 0xef, 0x7a, 0x92, 0xe7, 0xbf, 0xeb, 0xe5, 0x94, 0x5b, 0xbc, + 0x78, 0x27, 0xf9, 0xfe, 0xbd, 0x37, 0x27, 0x63, 0x2f, 0x82, 0x20, 0x1e, 0x43, 0xc5, 0x9d, 0xfa, + 0xd5, 0xbf, 0x2c, 0x61, 0x07, 0xa4, 0x2f, 0x74, 0x4d, 0x7b, 0xb6, 0x4e, 0x65, 0xbc, 0x73, 0x2a, + 0x10, 0x83, 0x90, 0x5b, 0x3e, 0x8e, 0x78, 0x9c, 0xa9, 0xb9, 0xe0, 0xcb, 0x58, 0x92, 0x2d, 0x5f, + 0xfe, 0xed, 0x87, 0xdd, 0xcb, 0x67, 0x3b, 0x69, 0x9e, 0x2d, 0x92, 0xf0, 0x10, 0x92, 0xf6, 0xe1, + 0xc2, 0x67, 0x09, 0x27, 0x8f, 0x18, 0xe1, 0x60, 0x43, 0x1f, 0xa4, 0x1c, 0x3e, 0x19, 0x47, 0xe1, + 0x0c, 0x7d, 0x71, 0x4b, 0xee, 0x53, 0xde, 0x35, 0x9c, 0x7d, 0x2a, 0x73, 0x0d, 0xf6, 0x2e, 0xc7, + 0xe0, 0x74, 0x7b, 0x91, 0x37, 0x99, 0x26, 0x3c, 0xda, 0x02, 0x50, 0xeb, 0x9e, 0x0d, 0x87, 0x8b, + 0x88, 0x25, 0xdb, 0x30, 0xd4, 0xbb, 0xef, 0x16, 0xcc, 0xdf, 0xf4, 0x0b, 0xd2, 0x98, 0xa6, 0x0c, + 0x10, 0x7f, 0xbf, 0xb6, 0x19, 0x24, 0x4e, 0x31, 0x8f, 0x92, 0xb3, 0xd1, 0x37, 0x36, 0x84, 0x50, + 0x1f, 0x33, 0x28, 0x83, 0x0e, 0x38, 0x24, 0x6d, 0x9c, 0x07, 0x23, 0x6a, 0xc5, 0xe6, 0x4a, 0xc5, + 0xf2, 0x46, 0xf2, 0xf9, 0xf0, 0xd0, 0xfb, 0x52, 0x8d, 0x20, 0x79, 0x7e, 0xe0, 0x86, 0x69, 0xc1, + 0x9d, 0xaa, 0xd6, 0x1c, 0x6c, 0xe4, 0x58, 0x5e, 0x07, 0xf3, 0x80, 0x43, 0xa7, 0x3c, 0xf7, 0x3f, + 0xdc, 0x84, 0xef, 0x6e, 0x96, 0x09, 0x82, 0xe7, 0x67, 0x71, 0xbc, 0x5b, 0x48, 0x55, 0xce, 0xaf, + 0xaf, 0x0c, 0xe0, 0x21, 0xe4, 0x2a, 0xe2, 0x34, 0x53, 0x66, 0x10, 0xde, 0x8e, 0x74, 0x65, 0x18, + 0xce, 0xfe, 0x80, 0x87, 0x90, 0xee, 0x9b, 0x85, 0x84, 0x05, 0x52, 0x15, 0xac, 0x8c, 0xa9, 0xdc, + 0xa4, 0x90, 0x81, 0x64, 0x43, 0x5e, 0x93, 0x87, 0x10, 0xe9, 0x4f, 0x77, 0xe9, 0xc4, 0xdf, 0x72, + 0x8e, 0xf4, 0xfb, 0xab, 0x1c, 0xe9, 0x71, 0xb3, 0x59, 0x6f, 0xe6, 0x3c, 0x29, 0x5f, 0xad, 0xe9, + 0x4f, 0xce, 0x53, 0xba, 0x94, 0xa6, 0xae, 0xf2, 0x15, 0x0e, 0xf0, 0x6f, 0xe7, 0xb9, 0xc9, 0x0c, + 0x77, 0x3a, 0xc3, 0xf5, 0x59, 0x04, 0xab, 0x02, 0xd5, 0x75, 0x8d, 0x56, 0x7a, 0xf5, 0xa7, 0x62, + 0x4b, 0x31, 0x0b, 0x15, 0x94, 0xaa, 0xf9, 0xfd, 0xff, 0x8b, 0x33, 0xb5, 0xbe, 0x09, 0x13, 0xa1, + 0x34, 0x4f, 0x1d, 0x0e, 0x4a, 0x49, 0xf3, 0x78, 0x2c, 0x6a, 0x18, 0x3b, 0x55, 0x91, 0x29, 0x6d, + 0xfb, 0x1e, 0xd2, 0x03, 0x4f, 0x17, 0x4c, 0x13, 0x6b, 0x90, 0x04, 0xa8, 0x14, 0x20, 0x8b, 0xaa, + 0x1d, 0x22, 0xd3, 0x17, 0x50, 0x55, 0x7c, 0xb5, 0xa5, 0x6f, 0xb2, 0x5c, 0x49, 0x40, 0xb3, 0xd2, + 0x76, 0x34, 0x7b, 0xcf, 0xc5, 0x93, 0x2e, 0x83, 0x7f, 0x0e, 0x0e, 0x9d, 0x9c, 0xe6, 0x2b, 0x92, + 0xf0, 0x50, 0x92, 0x34, 0xf3, 0x24, 0x63, 0x9e, 0x08, 0x25, 0x35, 0x9f, 0xd0, 0x68, 0xac, 0x75, + 0xf0, 0x72, 0x59, 0xf7, 0xc7, 0xe6, 0x0c, 0x8e, 0x25, 0xb9, 0x57, 0x4d, 0xc9, 0xe4, 0x29, 0xe9, + 0xb6, 0x22, 0x5d, 0x68, 0x2a, 0x95, 0x8f, 0x80, 0x60, 0xca, 0x53, 0x30, 0x14, 0x9b, 0xdd, 0x45, + 0x9d, 0xe2, 0x5c, 0xca, 0x4d, 0x13, 0x8e, 0x06, 0x62, 0x9b, 0xa3, 0x37, 0x0d, 0x54, 0xc1, 0x2e, + 0xf5, 0x92, 0x40, 0x76, 0xb5, 0x6a, 0x8b, 0x24, 0xb0, 0xc1, 0xd4, 0xe2, 0x7c, 0x71, 0xca, 0x62, + 0x2e, 0x1e, 0x3f, 0x1c, 0xf4, 0xc5, 0x19, 0x42, 0x15, 0x7d, 0xc7, 0xf9, 0x94, 0x45, 0xe7, 0xe1, + 0x88, 0x1b, 0x58, 0x65, 0xb2, 0x4f, 0x1b, 0x27, 0xad, 0x66, 0xd3, 0x3c, 0x00, 0x3e, 0x79, 0x07, + 0xee, 0xd7, 0xde, 0x22, 0x49, 0x42, 0xd1, 0xe0, 0xb6, 0x92, 0x7d, 0x01, 0xe5, 0x8a, 0x2d, 0x94, + 0xf6, 0x50, 0x6b, 0x2d, 0x64, 0xeb, 0x4a, 0x95, 0xde, 0x3c, 0xb1, 0xd5, 0x46, 0xf4, 0xa1, 0x95, + 0xfd, 0x7b, 0x5c, 0xd4, 0xec, 0xee, 0x57, 0x0b, 0x49, 0x2a, 0x3f, 0x51, 0x70, 0x64, 0x6f, 0x9e, + 0x68, 0xef, 0xfd, 0xab, 0x66, 0x9d, 0xa2, 0xd9, 0xd0, 0x5d, 0x58, 0x84, 0xed, 0xba, 0xc9, 0x29, + 0xd5, 0x65, 0x17, 0x6c, 0x71, 0x58, 0x75, 0xdf, 0xa9, 0x0a, 0x7f, 0xaa, 0x36, 0xa5, 0xc3, 0x6b, + 0x38, 0xbc, 0x56, 0x32, 0xfc, 0x66, 0x11, 0x4f, 0x07, 0x82, 0x49, 0xbb, 0x11, 0xd4, 0x11, 0x41, + 0x7d, 0x0b, 0x02, 0xe2, 0xa9, 0x03, 0xd9, 0xdd, 0x38, 0x1a, 0x88, 0xa3, 0x51, 0x82, 0xa3, 0x2f, + 0x9a, 0xc1, 0x76, 0x0f, 0x6e, 0xe2, 0xe0, 0x66, 0xd9, 0x04, 0x2e, 0x6e, 0x49, 0xcc, 0x83, 0x38, + 0x8c, 0x76, 0x23, 0x38, 0x46, 0x04, 0xc7, 0x25, 0x08, 0xee, 0xc2, 0xc5, 0x4b, 0xc4, 0x7f, 0xc6, + 0xb1, 0x3f, 0x97, 0x8c, 0x3d, 0x0b, 0x98, 0x1f, 0x4e, 0x76, 0x0f, 0x3e, 0xc1, 0xc1, 0x27, 0x5b, + 0x07, 0x6f, 0x61, 0x1e, 0x4d, 0x8d, 0x1f, 0x95, 0x48, 0x45, 0x04, 0xab, 0x5c, 0x03, 0x04, 0x30, + 0xb0, 0xde, 0x16, 0x99, 0x87, 0x5e, 0x00, 0xa1, 0x4e, 0x5b, 0xc8, 0xa8, 0xe8, 0xbe, 0xa0, 0xd8, + 0x2e, 0xff, 0x13, 0xca, 0xed, 0x4f, 0xa6, 0xf6, 0x6a, 0xfb, 0x3f, 0x7c, 0xaf, 0xfd, 0xec, 0x34, + 0xdb, 0x3a, 0x14, 0x07, 0x23, 0xaa, 0xce, 0x24, 0xd6, 0xd5, 0x2b, 0xdf, 0x33, 0x9e, 0x4c, 0xfc, + 0xbe, 0x87, 0x46, 0xc1, 0x28, 0x7c, 0x63, 0xc0, 0xcd, 0xe7, 0x67, 0xa3, 0xf8, 0x95, 0xc1, 0x7a, + 0x17, 0x99, 0x08, 0x1e, 0x61, 0xac, 0xf9, 0x84, 0xa6, 0x4a, 0x9a, 0xce, 0x3d, 0x07, 0x23, 0x8e, + 0x36, 0x38, 0xb8, 0xdd, 0x75, 0x51, 0x6d, 0x39, 0x03, 0x3c, 0xdc, 0xde, 0x3c, 0x9f, 0x12, 0x26, + 0xd3, 0xfc, 0x13, 0x45, 0xe1, 0xa0, 0x58, 0xdb, 0xdd, 0x2b, 0x39, 0xf3, 0x0a, 0x34, 0x3e, 0x34, + 0xd4, 0xd8, 0x7d, 0x98, 0xcf, 0xaf, 0x83, 0x2f, 0x58, 0xd3, 0x55, 0x87, 0x56, 0xb1, 0x4d, 0x01, + 0xc8, 0xde, 0x44, 0x82, 0x87, 0x50, 0xdb, 0x71, 0xd8, 0x02, 0x87, 0xe4, 0x78, 0xec, 0xe5, 0xda, + 0x13, 0xb9, 0xa5, 0x99, 0x9c, 0x31, 0x6f, 0x31, 0xf7, 0x43, 0x36, 0xfa, 0xe0, 0xf9, 0xf8, 0x79, + 0x83, 0x6a, 0x3c, 0x0b, 0xf8, 0x23, 0xf9, 0xdb, 0xd5, 0xe5, 0x2f, 0x49, 0x32, 0xbf, 0x85, 0xe8, + 0x81, 0xc7, 0x49, 0x3b, 0x28, 0x69, 0xef, 0xc3, 0x81, 0xd4, 0xca, 0x7f, 0x6a, 0x90, 0x7d, 0x08, + 0x91, 0x4c, 0xbd, 0x18, 0x9c, 0x40, 0x3c, 0x0f, 0xc1, 0x47, 0xde, 0xf1, 0xef, 0x89, 0x25, 0x9e, + 0xc0, 0x34, 0x93, 0x45, 0x8c, 0xbd, 0x10, 0xb0, 0x48, 0x13, 0x7c, 0x57, 0x09, 0x5a, 0xf9, 0x2d, + 0x44, 0x0e, 0x2f, 0xcf, 0x23, 0xc6, 0x26, 0x5d, 0x36, 0xbc, 0xb7, 0xf6, 0x34, 0x02, 0xf9, 0xf5, + 0xc7, 0xcd, 0x35, 0xec, 0xa6, 0x45, 0x8f, 0xe4, 0x72, 0xd4, 0x81, 0x47, 0x22, 0x56, 0xf2, 0x21, + 0x8c, 0x66, 0xd8, 0xec, 0x95, 0x36, 0x0b, 0x56, 0xd9, 0x1c, 0xc6, 0xe0, 0x29, 0x1d, 0x3c, 0x55, + 0x3d, 0xab, 0xa2, 0x5b, 0x78, 0x0c, 0x5c, 0x88, 0x81, 0x7d, 0x16, 0x47, 0xc4, 0x31, 0xc2, 0x24, + 0xa6, 0x55, 0xd2, 0x4d, 0xbc, 0x97, 0xfb, 0xf8, 0x03, 0xe9, 0x9d, 0x8f, 0x27, 0x29, 0xf7, 0xac, + 0xa4, 0x4d, 0xf5, 0x4b, 0x0a, 0x5a, 0x08, 0x86, 0x1f, 0xfc, 0xa6, 0xfa, 0x54, 0x05, 0xf9, 0x7c, + 0xcb, 0x19, 0x84, 0x54, 0xa7, 0xb0, 0x12, 0x41, 0xef, 0x94, 0xa7, 0x74, 0x4f, 0x0d, 0xf4, 0xe5, + 0xe9, 0x2c, 0x0c, 0x35, 0xff, 0x74, 0x0c, 0x36, 0x3d, 0x21, 0x39, 0x37, 0xcf, 0x1a, 0x74, 0xcd, + 0x38, 0x0c, 0x04, 0x00, 0x84, 0x12, 0x79, 0xbe, 0xf0, 0x13, 0xb5, 0x7c, 0xd1, 0xda, 0x2f, 0x84, + 0xc7, 0x08, 0x44, 0x11, 0x3f, 0xa9, 0x4e, 0x1f, 0xc5, 0x09, 0x09, 0x5e, 0x80, 0xec, 0x8f, 0x32, + 0x9d, 0x91, 0xdd, 0x1e, 0x8e, 0x2d, 0xfa, 0x3c, 0xf4, 0x19, 0x03, 0x48, 0x73, 0x5b, 0x83, 0x62, + 0xb8, 0x53, 0x05, 0xe8, 0xf7, 0x6c, 0x38, 0x35, 0x94, 0xef, 0x74, 0xbb, 0x4f, 0x1a, 0xd4, 0x91, + 0x91, 0x42, 0x86, 0x8a, 0x57, 0xe7, 0x5e, 0x90, 0x6f, 0x1e, 0x29, 0xd3, 0x9a, 0xaf, 0x22, 0xfb, + 0x44, 0x7f, 0xf6, 0x35, 0xd7, 0xd5, 0x24, 0x86, 0x7e, 0xf6, 0xbe, 0xb4, 0xb7, 0x1e, 0xa2, 0x04, + 0x05, 0x68, 0x64, 0xb2, 0xb5, 0xf5, 0x70, 0xa7, 0x08, 0x2b, 0x34, 0xc5, 0x7a, 0x4d, 0x7b, 0xa9, + 0x8c, 0xab, 0xca, 0x41, 0xcf, 0xaf, 0xd7, 0x41, 0x43, 0x0c, 0x94, 0xad, 0xd7, 0x74, 0x9f, 0xe2, + 0x24, 0x20, 0x41, 0x2f, 0x87, 0xbd, 0xfd, 0xa0, 0x61, 0x53, 0xad, 0x85, 0x3d, 0x1d, 0x6f, 0x99, + 0xc5, 0xef, 0x65, 0xc0, 0x0f, 0x2b, 0x73, 0xa5, 0xb7, 0x18, 0xc2, 0x23, 0x30, 0x11, 0x69, 0x90, + 0x87, 0x5f, 0x11, 0xc9, 0xa7, 0xe9, 0x4e, 0x72, 0xb9, 0x87, 0x22, 0x22, 0x53, 0xcc, 0x91, 0xeb, + 0x56, 0x4b, 0x12, 0x6a, 0x26, 0x46, 0x81, 0xf5, 0xd6, 0xe9, 0x97, 0xbe, 0x6f, 0x17, 0x1b, 0x4b, + 0x44, 0x76, 0x6a, 0xea, 0x6e, 0xc0, 0x0d, 0x6b, 0x4f, 0xb1, 0xd3, 0x7d, 0xbb, 0x18, 0x61, 0x48, + 0x86, 0x64, 0x71, 0xef, 0x51, 0x09, 0xc5, 0xb6, 0xe2, 0x47, 0x49, 0xa5, 0x6b, 0xbf, 0xbb, 0xa3, + 0x39, 0x96, 0xb2, 0x6a, 0x92, 0xac, 0xc4, 0xac, 0xbc, 0x68, 0x5b, 0xef, 0xdc, 0xc5, 0x6d, 0x7e, + 0x84, 0x02, 0x46, 0x6a, 0xe5, 0x04, 0x2e, 0xee, 0xca, 0xc0, 0xc5, 0x9c, 0x24, 0x3f, 0x22, 0x0e, + 0x81, 0xe6, 0x36, 0x62, 0xb7, 0x97, 0x1b, 0xa3, 0x05, 0xfc, 0x76, 0x7a, 0xb7, 0x57, 0xb4, 0xb0, + 0x95, 0xb9, 0x31, 0xe0, 0xb2, 0x75, 0xae, 0x60, 0xa1, 0x8a, 0xb3, 0xd1, 0x59, 0x8c, 0x46, 0x15, + 0xb4, 0xda, 0x6c, 0xa9, 0xef, 0x5b, 0x6e, 0x7c, 0x8e, 0x6d, 0xe0, 0x2a, 0x0e, 0x64, 0x04, 0x75, + 0x9f, 0xa0, 0x2d, 0x91, 0x85, 0xa0, 0x3d, 0x9a, 0x42, 0xde, 0x81, 0x25, 0x26, 0x83, 0x28, 0x7c, + 0x84, 0xec, 0x85, 0x8c, 0x42, 0x1e, 0xe3, 0x77, 0x3e, 0x78, 0x76, 0x1c, 0x46, 0x10, 0xa8, 0x4e, + 0x39, 0xf9, 0x2a, 0x4c, 0xd0, 0x57, 0x32, 0x8f, 0xc0, 0xb8, 0x82, 0x47, 0xc1, 0xc0, 0x5f, 0x60, + 0x12, 0xb1, 0x6c, 0x2c, 0xbe, 0x95, 0xc9, 0xfa, 0x3f, 0x33, 0xb4, 0x5c, 0x42, 0x9d, 0xdd, 0x5c, + 0x10, 0x2f, 0x8f, 0x54, 0x54, 0x62, 0x49, 0x92, 0x27, 0xbb, 0x04, 0x53, 0x95, 0xff, 0x40, 0xaf, + 0x0f, 0xde, 0xe3, 0x23, 0x4f, 0x7e, 0x07, 0x09, 0x4d, 0xdd, 0xb9, 0x95, 0x7e, 0x3c, 0x50, 0x81, + 0x50, 0x42, 0x7e, 0xd2, 0xa8, 0x3e, 0x6d, 0x24, 0x71, 0x34, 0x74, 0xb3, 0x4f, 0xfe, 0x8e, 0xe2, + 0xea, 0xb7, 0xf8, 0x74, 0xee, 0xd6, 0x44, 0xfd, 0x4f, 0x43, 0x62, 0xec, 0xd2, 0xad, 0xfc, 0x9b, + 0x37, 0x13, 0x0b, 0x5b, 0x44, 0x3e, 0xb8, 0x43, 0xd9, 0xb7, 0x10, 0xe3, 0x91, 0x38, 0x40, 0x0a, + 0x88, 0xce, 0x91, 0xfc, 0xec, 0x73, 0x10, 0x8e, 0x96, 0x44, 0x19, 0x58, 0xda, 0x17, 0x15, 0x2f, + 0x10, 0xd3, 0x99, 0xc8, 0x78, 0xf1, 0xe2, 0x8f, 0x38, 0xfd, 0x0a, 0xb3, 0x3f, 0x86, 0xd0, 0x9d, + 0x27, 0xd3, 0x10, 0x2b, 0x8f, 0x61, 0x8c, 0x5f, 0x63, 0xe6, 0xca, 0x11, 0x49, 0x08, 0x8c, 0x7b, + 0x2c, 0x3e, 0x9b, 0x72, 0x7f, 0xde, 0xc3, 0xea, 0x94, 0x4c, 0x10, 0x2a, 0x32, 0x1f, 0x90, 0x77, + 0xb9, 0x68, 0xea, 0x17, 0x24, 0x7b, 0xda, 0x39, 0x92, 0x2f, 0xd2, 0x72, 0xb5, 0x1c, 0xb4, 0x65, + 0x4c, 0x0f, 0xc7, 0x54, 0x7a, 0xe0, 0x14, 0xb3, 0x71, 0x85, 0x11, 0xaa, 0x0d, 0xbf, 0xdb, 0x67, + 0x0f, 0x3c, 0x03, 0x99, 0xea, 0xd4, 0xb6, 0x33, 0xad, 0x75, 0x2b, 0xd8, 0x65, 0xb1, 0xcf, 0x66, + 0xf3, 0x36, 0xf9, 0x85, 0x45, 0xd8, 0xe8, 0x81, 0x92, 0x94, 0x2c, 0xe6, 0xc0, 0x9c, 0x1a, 0x44, + 0xac, 0x09, 0xf3, 0x75, 0x25, 0x31, 0xad, 0x6c, 0xfa, 0x43, 0x31, 0x55, 0x55, 0x24, 0xcf, 0x2a, + 0xb1, 0xf0, 0xb8, 0x92, 0x0b, 0xfd, 0x3a, 0x5e, 0xf7, 0x96, 0x83, 0xc1, 0x01, 0x59, 0x1f, 0x81, + 0x20, 0xcc, 0xc3, 0x47, 0xd8, 0x7e, 0xd5, 0xa9, 0x80, 0xad, 0x06, 0x03, 0x59, 0x3f, 0x8b, 0x13, + 0x59, 0xa7, 0x6b, 0x75, 0x8e, 0x3c, 0x39, 0x6e, 0xa0, 0xaa, 0xa8, 0x15, 0x79, 0x18, 0xb2, 0xc8, + 0xa8, 0x61, 0x6b, 0x47, 0xb1, 0xca, 0x2a, 0x9a, 0x0a, 0x54, 0xba, 0x9e, 0x52, 0xae, 0xbc, 0x0f, + 0x30, 0x55, 0x21, 0x6c, 0x01, 0xe1, 0x24, 0x4b, 0xbc, 0xa1, 0xa2, 0x15, 0xf0, 0x38, 0x26, 0x3e, + 0x7e, 0xd8, 0xc8, 0xa3, 0x17, 0xca, 0xb0, 0x67, 0x3d, 0x0e, 0xac, 0xae, 0x64, 0x19, 0x99, 0xfa, + 0xbc, 0x43, 0x56, 0x63, 0xc4, 0xd7, 0x1f, 0x92, 0xaa, 0xae, 0x4f, 0xe2, 0x27, 0x35, 0xdd, 0x2b, + 0xf9, 0x35, 0x2f, 0x39, 0x5f, 0x44, 0x11, 0x68, 0x78, 0x4a, 0x43, 0x49, 0xcf, 0xd5, 0x19, 0x5d, + 0xcb, 0x07, 0xd7, 0xca, 0x39, 0xb5, 0x66, 0x56, 0x56, 0xb2, 0x6d, 0x7b, 0xbd, 0x6e, 0x93, 0x96, + 0x74, 0xba, 0x15, 0x32, 0x3b, 0x2b, 0x92, 0xcf, 0x3e, 0x13, 0x48, 0x63, 0x77, 0x2c, 0xe3, 0xb4, + 0x64, 0xf3, 0x4d, 0xbb, 0x78, 0x3c, 0x56, 0xd9, 0xff, 0xe1, 0xed, 0xc9, 0xc9, 0x49, 0x9b, 0xfc, + 0x47, 0xb8, 0x88, 0x8a, 0x3b, 0x03, 0x12, 0xfc, 0x80, 0x49, 0x37, 0x99, 0x02, 0xc7, 0xc8, 0x50, + 0x2e, 0xa4, 0x2a, 0xb8, 0x7a, 0x17, 0x12, 0x50, 0x29, 0x78, 0xcf, 0x85, 0xb1, 0x88, 0xd9, 0x98, + 0x4b, 0x13, 0xb1, 0x44, 0x2c, 0x42, 0x6a, 0x2c, 0x04, 0x9c, 0x4b, 0x83, 0xb4, 0x88, 0x11, 0x0e, + 0x24, 0x95, 0x0c, 0x91, 0x5f, 0xb1, 0x78, 0x57, 0x99, 0x41, 0x90, 0xe2, 0x01, 0x84, 0xa2, 0xea, + 0x05, 0xdf, 0xb8, 0xfa, 0x74, 0x14, 0x53, 0x8c, 0x98, 0xb0, 0x60, 0x04, 0x36, 0x6c, 0x0c, 0x83, + 0xf7, 0xb2, 0x22, 0x0c, 0x88, 0x52, 0xe5, 0x4c, 0x6f, 0x26, 0xf3, 0x61, 0x9a, 0x62, 0x17, 0xe3, + 0xfc, 0xbe, 0x26, 0x21, 0x16, 0xe8, 0x96, 0xc0, 0xd2, 0x30, 0x16, 0x5f, 0x64, 0xe1, 0x1c, 0x05, + 0x98, 0x9c, 0xfd, 0x5f, 0x39, 0x9f, 0x13, 0x96, 0x90, 0x7d, 0x08, 0x92, 0x9c, 0x33, 0xe2, 0x8d, + 0xe5, 0x0c, 0xb0, 0x7f, 0x48, 0x74, 0x08, 0x8d, 0x80, 0xb1, 0xc3, 0x04, 0x65, 0x13, 0xeb, 0xc4, + 0x38, 0x38, 0x6b, 0xd1, 0x11, 0x53, 0xa9, 0x5c, 0x88, 0x95, 0x8a, 0xef, 0x07, 0xd3, 0x0f, 0xb9, + 0xc0, 0x16, 0xf3, 0x08, 0xd2, 0xab, 0x02, 0x13, 0x2d, 0xc2, 0x31, 0x5b, 0x22, 0x38, 0xc3, 0x88, + 0xa1, 0xa1, 0x92, 0x53, 0x30, 0x94, 0x5c, 0x10, 0x10, 0x7a, 0xfc, 0x94, 0x17, 0xb4, 0x62, 0x11, + 0xb3, 0x09, 0xd7, 0xca, 0xa5, 0xa4, 0x61, 0x8e, 0x36, 0x64, 0x11, 0xdc, 0x07, 0xe1, 0x63, 0xa0, + 0xa4, 0xda, 0xcc, 0x94, 0x23, 0x92, 0x3a, 0xfb, 0x10, 0xfa, 0x09, 0x0c, 0x25, 0xc6, 0x15, 0xf6, + 0x4a, 0xa9, 0x7d, 0x12, 0x7a, 0xc5, 0x08, 0x4e, 0x0e, 0x38, 0x0c, 0x60, 0x66, 0x49, 0xb1, 0x5b, + 0xf4, 0x25, 0xad, 0xc9, 0x36, 0x7e, 0x99, 0xb5, 0x71, 0x32, 0x8a, 0x47, 0x01, 0x3a, 0x91, 0x74, + 0xb3, 0x94, 0xb2, 0x0b, 0x3c, 0x51, 0x1f, 0x15, 0x11, 0xa3, 0xd9, 0x9c, 0x9d, 0x99, 0x95, 0xad, + 0x87, 0x9f, 0x4d, 0x01, 0xcd, 0xc7, 0x63, 0x6f, 0x88, 0x5d, 0x6f, 0xc4, 0xa8, 0x23, 0xfc, 0x56, + 0x70, 0x1b, 0x44, 0x13, 0x5b, 0x9c, 0x8c, 0xba, 0xbd, 0x03, 0x0c, 0xcf, 0x28, 0xba, 0xaa, 0x21, + 0xca, 0x70, 0x6a, 0x3b, 0x20, 0xb1, 0x3d, 0xa3, 0x72, 0x2e, 0xb2, 0xca, 0x92, 0xf3, 0xd7, 0x82, + 0x21, 0x91, 0x5f, 0x46, 0x95, 0x9f, 0x26, 0x2b, 0x14, 0xb2, 0x2d, 0x4d, 0xb3, 0x1a, 0x3b, 0xca, + 0x80, 0xc3, 0xa9, 0x8e, 0x6b, 0xe6, 0xd2, 0xb2, 0x92, 0x4f, 0xe1, 0x78, 0x45, 0xd8, 0x35, 0x9f, + 0x6d, 0xd7, 0x6e, 0xad, 0xdc, 0xfa, 0x44, 0x2b, 0x13, 0x5e, 0xcd, 0x77, 0x2f, 0x27, 0x8a, 0x41, + 0xbc, 0x80, 0x3f, 0x6c, 0x10, 0xc2, 0x24, 0x84, 0x26, 0x22, 0x7d, 0x54, 0x4b, 0x14, 0xeb, 0x6a, + 0x2a, 0x38, 0xca, 0xe4, 0xd7, 0xbb, 0x95, 0x0d, 0x43, 0x5f, 0xcf, 0xec, 0x08, 0x76, 0xfd, 0x88, + 0x9f, 0x16, 0x90, 0xcd, 0x72, 0x71, 0x4b, 0x8f, 0x2b, 0xaf, 0xad, 0x57, 0xca, 0x5d, 0x14, 0x62, + 0x3a, 0xc8, 0x79, 0xaa, 0x34, 0x55, 0x80, 0x04, 0x0a, 0xe4, 0xec, 0x20, 0x75, 0x46, 0x64, 0x8b, + 0x5f, 0x44, 0x04, 0x87, 0x25, 0x08, 0x0e, 0x15, 0x86, 0xc3, 0x9c, 0xc7, 0x8b, 0xc4, 0x7c, 0xaf, + 0x44, 0xa7, 0x20, 0xf9, 0x4d, 0xea, 0x53, 0x25, 0xdb, 0xd8, 0x19, 0xc8, 0x80, 0xad, 0xbd, 0xd5, + 0x51, 0xce, 0x5f, 0xcd, 0x9c, 0x9c, 0x1b, 0xeb, 0x15, 0xac, 0xa9, 0xe8, 0xe2, 0x24, 0x95, 0xd2, + 0xfa, 0xf8, 0xe1, 0xc0, 0x0f, 0x87, 0xf7, 0x6d, 0xc9, 0x06, 0xc7, 0x06, 0x36, 0xb4, 0xa7, 0x1c, + 0xad, 0x10, 0xdc, 0xc0, 0xf5, 0x40, 0xc4, 0xce, 0x87, 0xd8, 0xe6, 0xb9, 0x88, 0x5b, 0x35, 0xc1, + 0x25, 0xc9, 0xc3, 0x4a, 0x81, 0x44, 0xae, 0xab, 0xf2, 0x4f, 0x1a, 0x6c, 0x90, 0x28, 0xa0, 0x46, + 0xa2, 0x05, 0x2c, 0x23, 0x90, 0x56, 0x6f, 0xe0, 0xf9, 0x1e, 0x9a, 0xe2, 0x88, 0xf8, 0x6c, 0x02, + 0x21, 0x58, 0x0c, 0xa9, 0xbb, 0x30, 0x39, 0xbf, 0x81, 0x29, 0xf4, 0x85, 0x75, 0x04, 0x55, 0x27, + 0x39, 0xb7, 0xaa, 0xdb, 0x30, 0xbb, 0x25, 0x1d, 0x92, 0x9a, 0x27, 0x68, 0x4c, 0xd0, 0x0e, 0x0e, + 0xd0, 0x47, 0xf3, 0xef, 0x00, 0x00, 0x3a, 0x3c, 0x2c, 0xd8, 0x65, 0x10, 0x8b, 0x4a, 0x99, 0x5c, + 0x5c, 0xb1, 0x7b, 0x8e, 0x86, 0x88, 0x4f, 0x66, 0xda, 0x2c, 0x71, 0x08, 0xfb, 0x15, 0x81, 0xad, + 0xbe, 0x57, 0xfb, 0xc9, 0xbe, 0x74, 0xae, 0x4a, 0xed, 0x06, 0x8b, 0x58, 0x9e, 0xbd, 0xc0, 0x7a, + 0x47, 0xde, 0x90, 0xc7, 0xdb, 0xc7, 0x67, 0x36, 0x4d, 0x16, 0x3c, 0x44, 0xed, 0x41, 0xc5, 0xd5, + 0xca, 0x77, 0xc7, 0x9e, 0xf2, 0xdc, 0x5b, 0x44, 0x5a, 0xec, 0x50, 0x45, 0xb6, 0xe0, 0xc0, 0x7e, + 0xfc, 0x21, 0xf6, 0xf3, 0x8f, 0x19, 0x9b, 0xcf, 0x71, 0xaf, 0xf2, 0x87, 0x23, 0x44, 0x57, 0xa8, + 0x5b, 0xb9, 0xae, 0x9d, 0xec, 0x98, 0xe0, 0x25, 0x1e, 0x6d, 0x57, 0x1d, 0x5d, 0x18, 0x2f, 0xc8, + 0xbf, 0xc8, 0xe2, 0x40, 0x77, 0x2a, 0x9b, 0xca, 0x53, 0x8e, 0x01, 0x8b, 0xe3, 0x19, 0x06, 0x7d, + 0xc2, 0xb0, 0xae, 0x3b, 0x95, 0xdd, 0x0a, 0x9e, 0xae, 0x4c, 0xe4, 0x74, 0x6a, 0x49, 0xa2, 0x90, + 0x09, 0xa2, 0x81, 0x67, 0xbb, 0xa1, 0x3f, 0xca, 0xc2, 0x9c, 0xd2, 0xe0, 0x66, 0xfd, 0xc4, 0xcc, + 0xb1, 0xd3, 0xb2, 0x37, 0xa4, 0x72, 0x99, 0xd5, 0xc3, 0xd9, 0x5c, 0xdc, 0x16, 0xaa, 0xe7, 0x95, + 0x57, 0x96, 0xcf, 0x21, 0xc1, 0xdb, 0x51, 0x3c, 0x4f, 0xfd, 0x9f, 0x12, 0x2f, 0xc8, 0xef, 0xd6, + 0xa1, 0x4b, 0x9a, 0x82, 0x6e, 0xc1, 0xa0, 0x24, 0x9c, 0x8c, 0xd6, 0xcb, 0xde, 0x1a, 0xb2, 0x92, + 0x1d, 0x66, 0xd5, 0x1a, 0x87, 0xf7, 0x7c, 0x59, 0x68, 0x82, 0xdb, 0x3c, 0xd1, 0x52, 0x40, 0xa2, + 0xd9, 0x37, 0xd7, 0xde, 0xb6, 0x8e, 0xae, 0x8e, 0x4d, 0x87, 0x02, 0x72, 0x80, 0x3f, 0xa0, 0xb0, + 0x05, 0x1f, 0xb6, 0x26, 0x6e, 0x27, 0x5a, 0xc9, 0xce, 0xb9, 0x6a, 0xce, 0x4b, 0x53, 0x3b, 0xa6, + 0xdd, 0x63, 0x45, 0x4f, 0x64, 0x12, 0x5b, 0x70, 0xfd, 0x4c, 0xbb, 0x6f, 0x05, 0x58, 0x54, 0xc2, + 0x8b, 0xb4, 0x00, 0xdd, 0x15, 0xc9, 0x67, 0x24, 0x58, 0x57, 0xe2, 0x71, 0xd1, 0xae, 0x54, 0xd6, + 0x6a, 0xcb, 0xaa, 0xb4, 0x9c, 0x89, 0xea, 0x4f, 0x58, 0x59, 0x16, 0x39, 0xfb, 0x4f, 0xdb, 0xeb, + 0xca, 0x95, 0x33, 0x11, 0xad, 0x82, 0xbc, 0xc8, 0x7d, 0xc4, 0x80, 0x6f, 0xc6, 0xbc, 0x20, 0x35, + 0x39, 0xf8, 0xdb, 0x0e, 0x2f, 0xc4, 0xf8, 0x57, 0xfd, 0xeb, 0x2c, 0x88, 0xaf, 0x08, 0x29, 0x17, + 0x6d, 0xc8, 0xe5, 0x41, 0x40, 0x9a, 0x56, 0xaf, 0x61, 0xc5, 0x47, 0x1a, 0xa3, 0xa8, 0x2b, 0x92, + 0x0a, 0x1b, 0x0e, 0xf9, 0x1c, 0xdc, 0x7a, 0x55, 0xa0, 0xdb, 0xa2, 0xe8, 0x5a, 0x3b, 0x66, 0x2a, + 0x16, 0x93, 0x6b, 0xcf, 0x55, 0x65, 0xe9, 0x91, 0x17, 0x49, 0x0c, 0xc0, 0x88, 0xdf, 0xc4, 0xf3, + 0x82, 0xe6, 0x2a, 0xc5, 0x65, 0xa4, 0x02, 0x8a, 0x38, 0x76, 0x4b, 0x7f, 0x57, 0x47, 0xb0, 0x76, + 0xcc, 0xc0, 0x66, 0xc2, 0xe5, 0x38, 0x02, 0xa7, 0x3f, 0x3a, 0x82, 0x00, 0x45, 0x54, 0x0c, 0x5d, + 0xfa, 0x07, 0x6c, 0x79, 0x70, 0x4f, 0x51, 0xeb, 0xe0, 0x6d, 0xd8, 0x39, 0x62, 0x92, 0xb7, 0xb7, + 0x58, 0x7b, 0x78, 0xfd, 0x31, 0x16, 0xb6, 0xd0, 0xa8, 0xee, 0x8d, 0xcb, 0x4d, 0x3d, 0xac, 0xe4, + 0x14, 0x91, 0xc8, 0x0f, 0xea, 0x76, 0x6f, 0xcb, 0xed, 0x15, 0xd5, 0x09, 0xe0, 0xab, 0x24, 0x05, + 0x0b, 0x2e, 0x3b, 0x24, 0x65, 0xbb, 0xfd, 0x85, 0xb8, 0x47, 0xfd, 0x28, 0x44, 0x2c, 0x82, 0xa0, + 0x3b, 0x2c, 0x12, 0x0b, 0x5f, 0x88, 0x27, 0x85, 0x63, 0x8c, 0xe0, 0x65, 0x54, 0xbf, 0x98, 0x1f, + 0x89, 0x42, 0xda, 0xba, 0xa1, 0x5b, 0x9f, 0x79, 0x4f, 0xc9, 0x93, 0xc2, 0x9a, 0xcb, 0x4e, 0xd6, + 0xa2, 0xc4, 0x73, 0x88, 0x12, 0xcb, 0x8d, 0xe5, 0xac, 0x2c, 0x60, 0xcc, 0x02, 0x43, 0xc3, 0x3e, + 0x84, 0x27, 0xa6, 0xce, 0x04, 0xce, 0x54, 0xca, 0x86, 0x93, 0x83, 0x98, 0x27, 0x4f, 0xa2, 0x77, + 0xb3, 0x25, 0xd7, 0xdc, 0xa4, 0x60, 0x17, 0x12, 0x4b, 0x88, 0x32, 0x07, 0x61, 0x08, 0xa1, 0xba, + 0x8d, 0x19, 0x5c, 0xac, 0x43, 0xce, 0x38, 0x25, 0x8a, 0x31, 0xc5, 0x47, 0x36, 0x9b, 0x31, 0x32, + 0x0c, 0xa3, 0x48, 0x65, 0x6f, 0xe8, 0xe1, 0x65, 0xfc, 0xf2, 0x02, 0x8f, 0x3e, 0x42, 0x7c, 0x49, + 0x8c, 0x38, 0x89, 0x42, 0xc8, 0x51, 0xd0, 0x9a, 0xa4, 0x15, 0x02, 0x41, 0xa0, 0xb2, 0x15, 0x7b, + 0x09, 0x33, 0xb7, 0x50, 0xe8, 0x41, 0xbc, 0x44, 0x0c, 0xfc, 0x51, 0x99, 0x75, 0xec, 0xf8, 0xaf, + 0x97, 0xa5, 0x8c, 0xa0, 0x18, 0x49, 0x6e, 0xc6, 0x8a, 0x71, 0x1f, 0xd6, 0x19, 0x57, 0x59, 0xe3, + 0x9c, 0x53, 0xbe, 0x37, 0x3f, 0xa2, 0x40, 0xdd, 0x41, 0xf4, 0x16, 0x7b, 0x38, 0x69, 0x29, 0x53, + 0xe7, 0x51, 0x18, 0xc7, 0x63, 0x36, 0xe2, 0x2f, 0xf1, 0xe5, 0xee, 0x83, 0x94, 0x9d, 0x0c, 0x01, + 0xc1, 0xdf, 0x74, 0x5a, 0x9b, 0xdc, 0xdd, 0xbb, 0x6d, 0x93, 0xfb, 0xee, 0x6f, 0x36, 0xa6, 0xe0, + 0x6f, 0x92, 0x91, 0x59, 0x8c, 0x68, 0x55, 0x45, 0xe4, 0x86, 0xf9, 0x3c, 0x01, 0xaf, 0x96, 0x64, + 0xd3, 0x7c, 0x69, 0x62, 0x37, 0x1f, 0xa4, 0xaa, 0xe0, 0x6c, 0x46, 0x90, 0x50, 0x03, 0xf3, 0xc4, + 0xca, 0xb4, 0x90, 0xbf, 0xc3, 0x1e, 0x27, 0x40, 0xb4, 0x5e, 0xec, 0xb8, 0xbb, 0x7c, 0x41, 0x00, + 0xb7, 0xb0, 0x11, 0xde, 0x09, 0x41, 0xd0, 0xf8, 0xef, 0x84, 0xb1, 0xda, 0xae, 0x4b, 0x77, 0xbd, + 0x97, 0x05, 0xbd, 0x52, 0x42, 0x08, 0x89, 0x5c, 0x85, 0x62, 0x63, 0x0a, 0xe9, 0xf1, 0xdd, 0xa7, + 0xb2, 0x68, 0xe0, 0x13, 0xf3, 0x12, 0x51, 0x9b, 0x00, 0x4d, 0xab, 0xec, 0xe8, 0x15, 0xfe, 0x00, + 0x5b, 0xbd, 0x23, 0x08, 0xc0, 0xd7, 0x44, 0x84, 0x90, 0x29, 0x50, 0x65, 0xb3, 0xb9, 0xa5, 0xbf, + 0x08, 0x22, 0x2f, 0x2e, 0x73, 0xa0, 0xc0, 0x77, 0xd1, 0xb6, 0x8f, 0x3f, 0x41, 0x03, 0x89, 0x0e, + 0x7a, 0x3a, 0xb1, 0x19, 0x15, 0xf9, 0xb4, 0xc7, 0xc0, 0xa0, 0x0f, 0x79, 0x4e, 0x75, 0x5e, 0xea, + 0x36, 0x3c, 0xbf, 0xcb, 0xf7, 0x2d, 0x6a, 0x61, 0x7a, 0x1c, 0xd2, 0xee, 0x47, 0x3f, 0x1c, 0x30, + 0x5f, 0x7c, 0x5b, 0x85, 0x31, 0xae, 0xd0, 0xc1, 0xb2, 0xfe, 0xba, 0xd2, 0x76, 0x3a, 0xba, 0xb1, + 0x2c, 0x91, 0xb4, 0xbf, 0xdb, 0x16, 0x4c, 0xbd, 0xd0, 0x8b, 0x9d, 0x8b, 0xb5, 0x5e, 0xe8, 0xba, + 0x43, 0x26, 0xbf, 0xd0, 0x77, 0x87, 0x1c, 0xae, 0x94, 0xb7, 0xde, 0x89, 0xa4, 0x23, 0x5d, 0x1e, + 0x30, 0x27, 0x6b, 0x1a, 0x7c, 0x21, 0x65, 0x39, 0xbf, 0x55, 0x29, 0x0b, 0x8c, 0x81, 0x60, 0x1d, + 0x54, 0xeb, 0x01, 0x12, 0x27, 0x1f, 0x4c, 0x0f, 0x64, 0x0d, 0x5b, 0xbc, 0xe8, 0x66, 0x7c, 0x5c, + 0x59, 0x0f, 0x90, 0xcf, 0x7b, 0x45, 0x0b, 0xa3, 0xdc, 0x1a, 0xec, 0xf8, 0xd9, 0xe8, 0x01, 0xb7, + 0x7a, 0x24, 0xb6, 0x5f, 0xab, 0x75, 0x8e, 0xa0, 0x5c, 0x51, 0x45, 0x2b, 0x71, 0xaf, 0x4c, 0xa8, + 0x2f, 0xc5, 0x37, 0x89, 0xc4, 0x78, 0x8c, 0xd8, 0x1c, 0x4b, 0x0a, 0xb3, 0xf0, 0x01, 0x06, 0x9b, + 0x3b, 0xc4, 0xbb, 0xa2, 0x87, 0x30, 0xff, 0x91, 0x2d, 0x63, 0x82, 0x23, 0xcd, 0x1d, 0x5b, 0xa1, + 0xc1, 0x03, 0xec, 0x81, 0x5d, 0x83, 0x2e, 0x11, 0x7c, 0xdc, 0xfc, 0x12, 0xcb, 0x5d, 0xba, 0x4f, + 0x15, 0x65, 0x18, 0x22, 0xd9, 0x63, 0x8a, 0x85, 0x36, 0xfe, 0x3a, 0x46, 0x6b, 0xc3, 0xe3, 0xd4, + 0x52, 0x3e, 0x7f, 0x80, 0x04, 0xa2, 0x92, 0x31, 0xfa, 0xc3, 0x4d, 0xff, 0xc5, 0x84, 0x68, 0x38, + 0x16, 0xd9, 0x60, 0x30, 0xf6, 0x26, 0x24, 0xe1, 0xb3, 0xb9, 0x9f, 0xa7, 0x5f, 0x29, 0x8f, 0x0d, + 0x6b, 0x94, 0xfc, 0xf3, 0xb1, 0x21, 0xd5, 0x07, 0xce, 0xe9, 0xb9, 0x74, 0x0d, 0x12, 0x17, 0x11, + 0x02, 0x94, 0xc5, 0x85, 0x58, 0xe6, 0x2f, 0x45, 0x5e, 0x29, 0x1e, 0x20, 0xfc, 0xe9, 0xf3, 0x83, + 0x23, 0x3c, 0x13, 0xc9, 0xa5, 0xc9, 0xf2, 0x77, 0x0e, 0x35, 0xd9, 0x23, 0x3c, 0x4d, 0xc1, 0xa3, + 0x15, 0xfc, 0x9d, 0xcd, 0xff, 0x05, 0xc7, 0x1d, 0x45, 0x1c, 0x77, 0x53, 0x00, 0x00 }; @@ -1434,216 +1435,263 @@ const uint8_t PAGE_settings_sec[] PROGMEM = { // Autogenerated from wled00/data/settings_um.htm, do not edit!! -const uint16_t PAGE_settings_um_length = 1767; +const uint16_t PAGE_settings_um_length = 2213; const uint8_t PAGE_settings_um[] PROGMEM = { - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xa5, 0x57, 0x6d, 0x6f, 0xe3, 0x36, - 0x12, 0xfe, 0xee, 0x5f, 0xc1, 0x70, 0x83, 0x44, 0x82, 0x19, 0xd9, 0xde, 0x74, 0xef, 0xb2, 0xb6, - 0x28, 0xb7, 0xd9, 0x97, 0x6e, 0x80, 0xdd, 0x4b, 0x80, 0xec, 0xb5, 0x38, 0x04, 0x41, 0x23, 0x4b, - 0x94, 0xcd, 0x46, 0x22, 0x05, 0x92, 0xb2, 0x93, 0x2a, 0xfe, 0xef, 0x37, 0xa4, 0x64, 0xd9, 0xde, - 0x4d, 0xda, 0x2b, 0xee, 0x8b, 0x6d, 0x92, 0x33, 0xc3, 0xe1, 0x33, 0xcf, 0xbc, 0x38, 0x3c, 0x78, - 0x7f, 0xf9, 0xee, 0xeb, 0x7f, 0xae, 0x3e, 0xa0, 0x85, 0x29, 0xf2, 0x28, 0x6c, 0x3f, 0x59, 0x9c, - 0xa2, 0x3c, 0x16, 0x73, 0x8a, 0x99, 0xc0, 0x51, 0x58, 0x30, 0x13, 0xa3, 0x64, 0x11, 0x2b, 0xcd, - 0x0c, 0xc5, 0x95, 0xc9, 0x4e, 0xce, 0x36, 0xbb, 0x3d, 0x11, 0x17, 0x8c, 0xe2, 0x25, 0x67, 0xab, - 0x52, 0x2a, 0x83, 0x51, 0x22, 0x85, 0x61, 0x02, 0xc4, 0x56, 0x3c, 0x35, 0x0b, 0xfa, 0x66, 0x38, - 0xec, 0x44, 0xbf, 0x39, 0x4a, 0xd9, 0x92, 0x27, 0xec, 0xc4, 0x2d, 0x08, 0x17, 0xdc, 0xf0, 0x38, - 0x3f, 0xd1, 0x49, 0x9c, 0x33, 0x3a, 0x22, 0x45, 0xfc, 0xc0, 0x8b, 0xaa, 0xe8, 0xd6, 0x95, 0x66, - 0xca, 0x2d, 0xe2, 0x19, 0xac, 0x85, 0xc4, 0xdf, 0xdd, 0x1c, 0x85, 0x86, 0x9b, 0x9c, 0x45, 0xff, - 0x06, 0xc9, 0x42, 0xa6, 0xe8, 0x9a, 0x19, 0xc3, 0xc5, 0x5c, 0x87, 0x83, 0x66, 0x3f, 0xd4, 0x89, - 0xe2, 0xa5, 0x89, 0x7a, 0xcb, 0x58, 0x21, 0xb9, 0x12, 0x4c, 0x91, 0x5c, 0x26, 0xbc, 0x24, 0x95, - 0x92, 0x2b, 0x4d, 0x52, 0x9a, 0xca, 0xa4, 0x2a, 0xc0, 0x3f, 0x52, 0x15, 0xef, 0xb2, 0x39, 0xad, - 0xd7, 0xa4, 0xe4, 0x42, 0xd3, 0x9b, 0x7f, 0x90, 0x7f, 0x92, 0x33, 0xf2, 0x96, 0x8c, 0x86, 0x64, - 0x34, 0xba, 0xb5, 0x9b, 0x97, 0xf4, 0x06, 0x2b, 0xbd, 0x4c, 0x31, 0xf9, 0xeb, 0xaf, 0x5b, 0x7b, - 0x0b, 0x3d, 0x18, 0x11, 0x51, 0x15, 0x5f, 0xe8, 0x70, 0x92, 0x55, 0x22, 0x31, 0x5c, 0x0a, 0x34, - 0xbf, 0x48, 0x3d, 0xe6, 0xd7, 0x8a, 0x99, 0x4a, 0x09, 0x94, 0x06, 0x73, 0x66, 0x3e, 0xe4, 0xcc, - 0x3a, 0x70, 0xfe, 0xe8, 0x8e, 0xd6, 0x9d, 0x28, 0xd7, 0x97, 0x3b, 0xa2, 0xec, 0xe8, 0x08, 0xcb, - 0xd9, 0xef, 0x2c, 0x31, 0x98, 0x52, 0xf3, 0x58, 0x32, 0x99, 0xd9, 0xbd, 0x83, 0x9f, 0x94, 0x8a, - 0x1f, 0x03, 0xae, 0xdd, 0xf7, 0x9e, 0xfe, 0x27, 0xcf, 0xaf, 0x57, 0x5c, 0xa4, 0x72, 0x15, 0xc8, - 0x92, 0x09, 0x0f, 0x2f, 0x8c, 0x29, 0xf5, 0x78, 0x30, 0x98, 0x73, 0xb3, 0xa8, 0x66, 0x41, 0x22, - 0x8b, 0xc1, 0x4f, 0x5c, 0x25, 0x52, 0xca, 0x7b, 0xce, 0x06, 0xbf, 0x7e, 0xfe, 0xf0, 0x7e, 0xb0, - 0xe2, 0xf7, 0x7c, 0xb0, 0xc1, 0xf0, 0x55, 0xd5, 0x80, 0x7a, 0xa2, 0xdb, 0x0d, 0xbc, 0x63, 0xfd, - 0xfc, 0x5b, 0xeb, 0x83, 0x4e, 0x8a, 0xe0, 0xdf, 0x34, 0xcb, 0xb3, 0x5d, 0xe9, 0x6b, 0x90, 0xc6, - 0x19, 0xcf, 0xd9, 0x18, 0xbc, 0x6f, 0xd5, 0x00, 0xa1, 0xd8, 0x1e, 0x06, 0xa5, 0x92, 0x46, 0x26, - 0x32, 0x3f, 0x3a, 0xf2, 0x1c, 0x6a, 0x43, 0xe2, 0xb9, 0x18, 0x51, 0x2b, 0x91, 0x5f, 0x1b, 0xa9, - 0xe2, 0x39, 0xb3, 0x48, 0x5d, 0x18, 0x56, 0x78, 0x18, 0x76, 0x2f, 0x4a, 0xec, 0xfb, 0x4f, 0x4f, - 0xad, 0x18, 0xe8, 0x17, 0xa5, 0xf1, 0xf0, 0x47, 0xb0, 0x8f, 0xbe, 0xc8, 0x94, 0x05, 0xe8, 0x2a, - 0x67, 0xb1, 0x66, 0x08, 0x60, 0x65, 0x0a, 0xd9, 0x97, 0xa1, 0x8b, 0xab, 0x03, 0xec, 0x93, 0x3d, - 0x8b, 0x7a, 0xdf, 0x62, 0x43, 0x0c, 0xdf, 0xf7, 0xc9, 0xcf, 0xcc, 0xfc, 0xe2, 0xf9, 0x2e, 0x76, - 0xd1, 0xf0, 0xe9, 0xc9, 0xed, 0x4f, 0xf3, 0x14, 0x1e, 0x31, 0xb6, 0xf1, 0xc3, 0x55, 0x81, 0xfd, - 0x80, 0x0b, 0x20, 0xd3, 0xa7, 0xaf, 0x5f, 0x3e, 0x53, 0xfc, 0x2f, 0x89, 0x5a, 0xfe, 0x69, 0x04, - 0xe4, 0x31, 0x71, 0x9e, 0xb3, 0x34, 0xc0, 0xbb, 0xa1, 0xfc, 0xb8, 0x1b, 0x4a, 0x4a, 0x69, 0x1f, - 0x62, 0xc7, 0x0e, 0x28, 0xf5, 0x86, 0x4f, 0xfb, 0x31, 0xbf, 0x78, 0x4e, 0x90, 0x7e, 0x27, 0x98, - 0x2c, 0x58, 0x72, 0xef, 0x31, 0x22, 0xfc, 0xda, 0x32, 0x9b, 0x53, 0x16, 0xd8, 0xcc, 0x08, 0x14, - 0x2b, 0xf3, 0x38, 0x61, 0x1e, 0xbe, 0xb9, 0x85, 0x38, 0x80, 0x9b, 0xba, 0x9a, 0x69, 0xa3, 0xbc, - 0x93, 0x53, 0x7f, 0xc2, 0x33, 0x0f, 0xc3, 0x9b, 0x66, 0x4c, 0x41, 0x10, 0x58, 0x60, 0x49, 0x04, - 0xa4, 0x02, 0x66, 0xc3, 0x92, 0x6f, 0x04, 0x87, 0xe4, 0xd4, 0xf7, 0x33, 0xa9, 0x3c, 0x6b, 0x56, - 0x03, 0x75, 0x75, 0x68, 0x13, 0x22, 0xc8, 0x99, 0x98, 0x9b, 0xc5, 0x44, 0xf7, 0xfb, 0x3e, 0xd8, - 0x11, 0x07, 0xd4, 0x66, 0xc4, 0x8d, 0xbe, 0xf5, 0x6b, 0x58, 0xb2, 0x60, 0x19, 0xe7, 0x15, 0xb8, - 0x69, 0x45, 0x61, 0xf3, 0xe9, 0xa9, 0xdd, 0x09, 0x4f, 0x46, 0xdd, 0xef, 0xe8, 0xf4, 0xad, 0x5f, - 0x03, 0xea, 0xe6, 0x31, 0x67, 0x40, 0xbe, 0x5c, 0x2a, 0x8a, 0x15, 0x4b, 0xf1, 0x64, 0xa6, 0x58, - 0x7c, 0xbf, 0xde, 0x3f, 0xe9, 0x74, 0x4e, 0xa7, 0x18, 0xa2, 0x25, 0xe6, 0x0c, 0x8f, 0xf1, 0xab, - 0x2c, 0xcb, 0xf0, 0x7a, 0x0b, 0x02, 0x50, 0xe2, 0x0a, 0x2e, 0xb4, 0x88, 0x81, 0x13, 0x4d, 0xbe, - 0x38, 0xdf, 0xa1, 0xe6, 0x68, 0x73, 0xc3, 0x89, 0xbe, 0x85, 0x2c, 0xb9, 0x74, 0x59, 0x13, 0x00, - 0x17, 0x14, 0x67, 0x56, 0xd8, 0x6f, 0x85, 0xb5, 0xef, 0xbb, 0x8a, 0x40, 0x39, 0xd9, 0x58, 0xd2, - 0xfe, 0x84, 0xe5, 0x40, 0x1c, 0x0b, 0xd5, 0x06, 0x98, 0x3f, 0x81, 0xd4, 0x5a, 0xda, 0x4f, 0x40, - 0xbd, 0x05, 0x4f, 0x00, 0x78, 0x22, 0xec, 0x90, 0x13, 0x80, 0x9c, 0xbe, 0x11, 0xb7, 0x11, 0x1d, - 0x02, 0xd1, 0x1d, 0xa6, 0x65, 0xa5, 0x17, 0x9e, 0xdd, 0xf3, 0x5d, 0x7d, 0x69, 0xd6, 0xce, 0x25, - 0xbf, 0xf5, 0x43, 0x7f, 0x27, 0xfd, 0xa2, 0xe8, 0x4b, 0xae, 0x3c, 0xe3, 0x46, 0xf7, 0x5a, 0x7b, - 0xf5, 0x16, 0xce, 0x38, 0x4d, 0x3f, 0x72, 0x96, 0xa7, 0x96, 0x56, 0x04, 0xc0, 0x83, 0xfa, 0xd5, - 0x01, 0xcb, 0x77, 0x81, 0xd5, 0x44, 0x3e, 0x03, 0x2c, 0x88, 0xe0, 0x4a, 0xdc, 0x0b, 0xf0, 0x0a, - 0x70, 0xa3, 0xc2, 0x06, 0x9e, 0x8b, 0x24, 0xaf, 0x52, 0x38, 0x84, 0xe8, 0xf9, 0xd3, 0x9d, 0x0b, - 0xc0, 0x84, 0x3f, 0xde, 0xae, 0xfb, 0x70, 0xde, 0x17, 0x6e, 0xf7, 0x85, 0xd7, 0xf0, 0x2d, 0xb0, - 0x12, 0x5e, 0x24, 0x43, 0xbe, 0x79, 0x91, 0x84, 0x17, 0xed, 0xbb, 0x7e, 0x23, 0x6f, 0xc9, 0xc1, - 0xb0, 0xb1, 0xe4, 0xd2, 0xc3, 0x10, 0xb5, 0xa9, 0x99, 0x7c, 0xa2, 0x57, 0xdc, 0x24, 0x0b, 0x4f, - 0xf9, 0x75, 0x02, 0x35, 0x02, 0xcf, 0xa4, 0x84, 0x62, 0x21, 0xf0, 0x18, 0xe8, 0xe8, 0xb2, 0x6a, - 0x26, 0x1f, 0x30, 0x31, 0xf4, 0xb8, 0xa1, 0x34, 0x36, 0xaa, 0x62, 0xf8, 0xb8, 0xef, 0xf1, 0x29, - 0x6e, 0xb2, 0x0e, 0x28, 0x3b, 0x06, 0x1a, 0x34, 0xb4, 0x9d, 0x38, 0x1b, 0x6d, 0x56, 0x8d, 0x0d, - 0xbd, 0x6b, 0xb5, 0x0e, 0x6b, 0xbe, 0xc6, 0x77, 0xa4, 0x25, 0x11, 0x15, 0x3b, 0xa4, 0x99, 0x7a, - 0xa6, 0x4f, 0x8f, 0x11, 0xf4, 0x3a, 0x8a, 0x4f, 0xdf, 0x62, 0x54, 0x70, 0x41, 0xf1, 0xc9, 0x08, - 0xac, 0xe7, 0xb1, 0xd6, 0x14, 0x6b, 0x7c, 0x0c, 0xee, 0x62, 0x2e, 0x0c, 0xf6, 0xc7, 0x4e, 0x54, - 0x1b, 0x56, 0x52, 0x1c, 0x8b, 0xc7, 0x4e, 0xe6, 0xe1, 0x21, 0xc7, 0xc7, 0xad, 0x07, 0x29, 0xcb, - 0xe2, 0x2a, 0x37, 0xd6, 0x7f, 0xc3, 0x1e, 0x8c, 0xf5, 0x7d, 0xcf, 0x0b, 0xe4, 0xf2, 0xaa, 0xed, - 0xbf, 0xe3, 0xd7, 0x6f, 0x86, 0xe5, 0xc3, 0x04, 0xdf, 0xad, 0xbf, 0x09, 0x0e, 0xb0, 0xcc, 0xb5, - 0xc4, 0x3e, 0xa4, 0x5e, 0xeb, 0xab, 0x95, 0x48, 0xd9, 0xc3, 0x65, 0xe6, 0x04, 0xfa, 0x23, 0xa8, - 0x8c, 0xad, 0xc8, 0x1d, 0x3a, 0xac, 0xc5, 0x7a, 0x8c, 0xe0, 0x81, 0x1d, 0x64, 0x94, 0xaa, 0xe9, - 0xe6, 0x38, 0xe4, 0xa2, 0xac, 0x0c, 0xb2, 0x90, 0x53, 0xbc, 0xe0, 0x69, 0x0a, 0x03, 0x05, 0x6a, - 0x3a, 0xf7, 0x61, 0xcd, 0xd6, 0x63, 0xab, 0x7d, 0x58, 0xeb, 0xa9, 0x4d, 0x29, 0xc0, 0x12, 0x7c, - 0x6c, 0x1d, 0xce, 0x62, 0x08, 0x19, 0x8e, 0xee, 0xc6, 0x1a, 0xaa, 0xfb, 0xff, 0x6d, 0xed, 0xb0, - 0x56, 0x6b, 0x30, 0xb6, 0x75, 0x7b, 0xcf, 0xd2, 0x61, 0xed, 0x30, 0xa6, 0xd6, 0xf1, 0x2e, 0x82, - 0xa0, 0xf0, 0xe7, 0xa6, 0x0f, 0x6b, 0xb3, 0x46, 0x52, 0x38, 0x43, 0x2d, 0x61, 0x3c, 0xb3, 0xe0, - 0x9a, 0x1c, 0x1f, 0xd6, 0x2f, 0x23, 0xb7, 0x3e, 0xf6, 0x61, 0x54, 0x99, 0xa9, 0xe8, 0x6e, 0xa7, - 0x7c, 0xb9, 0x8e, 0x52, 0x67, 0xcc, 0xb2, 0xd1, 0xb6, 0xb2, 0xa9, 0xeb, 0xd0, 0xd0, 0xa0, 0x71, - 0xdf, 0xb5, 0x1c, 0xcb, 0xb2, 0x3e, 0x1e, 0x24, 0xd9, 0x3c, 0xf8, 0x5d, 0x4b, 0x81, 0x49, 0x0d, - 0x13, 0xd5, 0x42, 0xa6, 0x63, 0x0c, 0x09, 0x8c, 0xd7, 0x7e, 0x60, 0x16, 0xd0, 0x78, 0x19, 0x8d, - 0xe0, 0x3e, 0x79, 0x0f, 0x80, 0xb9, 0xe6, 0x04, 0x00, 0x2a, 0x65, 0xab, 0x94, 0xab, 0xa6, 0x29, - 0xd7, 0x50, 0xbd, 0x1e, 0x2d, 0x9d, 0x72, 0x2e, 0x18, 0xb4, 0x40, 0xe6, 0x8c, 0x79, 0xd0, 0xe7, - 0x3a, 0x7d, 0x9b, 0xe4, 0xcd, 0xf8, 0xc3, 0x82, 0xaa, 0x20, 0xdb, 0xb2, 0xda, 0x00, 0x47, 0x31, - 0x26, 0xb6, 0x06, 0x38, 0x91, 0xdd, 0x3a, 0x00, 0xc9, 0xf6, 0x4c, 0x1d, 0x68, 0xc5, 0x3a, 0xcc, - 0x17, 0x0a, 0x66, 0xcb, 0xd3, 0xc8, 0xe2, 0x19, 0x0e, 0xe0, 0xc7, 0x1d, 0xd9, 0xc9, 0xd6, 0xae, - 0x62, 0x40, 0x27, 0x9b, 0x60, 0x1b, 0x0c, 0xa7, 0xb7, 0x61, 0x23, 0xc5, 0x5d, 0x63, 0x85, 0x2b, - 0x33, 0x3e, 0xaf, 0x94, 0x9b, 0x19, 0x90, 0x90, 0x06, 0x65, 0xb2, 0x12, 0x69, 0x60, 0x51, 0xbd, - 0x52, 0x4c, 0x6b, 0x14, 0xf2, 0xe8, 0x3a, 0x5e, 0xb2, 0x70, 0xc0, 0x23, 0x64, 0x24, 0x6a, 0x87, - 0x4b, 0xfe, 0x07, 0x43, 0x6d, 0x8a, 0xe8, 0x00, 0xde, 0xff, 0x5c, 0x07, 0x77, 0x77, 0x01, 0xa0, - 0x30, 0x90, 0xd8, 0x58, 0x6c, 0x22, 0x64, 0x1b, 0xcb, 0xff, 0x80, 0x29, 0xb1, 0x68, 0x40, 0x11, - 0x81, 0x89, 0x66, 0x6e, 0x27, 0x30, 0x7f, 0xa7, 0xa6, 0xea, 0xe5, 0xb5, 0xb5, 0xc2, 0x60, 0xc8, - 0x61, 0x4b, 0x40, 0xe8, 0x7d, 0xe3, 0x09, 0x4c, 0x17, 0xbb, 0x4a, 0x69, 0x70, 0x9d, 0xf9, 0xc4, - 0x7e, 0x06, 0x8e, 0x51, 0xbf, 0x80, 0xdb, 0x29, 0x37, 0x8f, 0x1e, 0xa4, 0xa5, 0xdb, 0x05, 0x5e, - 0x15, 0x1c, 0xb4, 0xd6, 0xbd, 0x70, 0xd0, 0x4e, 0xb4, 0xed, 0x64, 0x8b, 0xb4, 0x4a, 0xe8, 0x76, - 0xf8, 0x1a, 0x68, 0x08, 0xef, 0xb4, 0xa4, 0x76, 0x54, 0xdf, 0x4a, 0x5a, 0xb7, 0xa3, 0xde, 0x8f, - 0xbc, 0xb0, 0x33, 0x33, 0xaa, 0x54, 0xee, 0xe1, 0xb6, 0xd9, 0x6a, 0x18, 0xea, 0x26, 0x20, 0xe9, - 0x24, 0x20, 0x3c, 0xf0, 0x1f, 0x00, 0x78, 0x2a, 0xd3, 0x47, 0xe0, 0x78, 0x2e, 0xe3, 0x94, 0x62, - 0xe0, 0x28, 0xd8, 0x82, 0xa0, 0x17, 0x88, 0xc3, 0xd2, 0xfe, 0xf8, 0x4d, 0x77, 0x83, 0xf8, 0x75, - 0x06, 0x05, 0xcc, 0xb1, 0x92, 0xe2, 0x52, 0x6a, 0xf8, 0x2b, 0x00, 0xcf, 0x72, 0xce, 0x42, 0x21, - 0xb3, 0x6f, 0xb7, 0x8f, 0xb6, 0x06, 0x52, 0xbe, 0xdc, 0x14, 0x2f, 0x23, 0x61, 0x62, 0x5b, 0xb5, - 0x7b, 0xbd, 0x76, 0x73, 0xc1, 0xf2, 0xf2, 0xdc, 0xe6, 0x48, 0x65, 0x0c, 0xe0, 0xd6, 0xa4, 0x68, - 0xb3, 0xb0, 0x36, 0x93, 0x9c, 0x27, 0xf7, 0x14, 0x7f, 0xb2, 0xce, 0x4c, 0xc3, 0x41, 0x73, 0x00, - 0x0e, 0x83, 0x89, 0x4e, 0xa7, 0xf7, 0x82, 0xd2, 0xb9, 0x55, 0x3a, 0x8f, 0x93, 0xfb, 0xad, 0xde, - 0xde, 0x2d, 0x8d, 0xbf, 0xb8, 0x25, 0x4f, 0x27, 0xa2, 0xa2, 0x5e, 0xa8, 0xcb, 0x58, 0xb8, 0x67, - 0xe7, 0x5a, 0x57, 0x49, 0x57, 0x4a, 0xdd, 0x8c, 0x32, 0x9e, 0x2b, 0xc6, 0xc4, 0xa4, 0x65, 0xc3, - 0x58, 0x48, 0xa0, 0x42, 0x74, 0xf4, 0x6a, 0x34, 0x1c, 0x0e, 0x7f, 0x98, 0xa0, 0x77, 0x7b, 0x74, - 0xd5, 0x60, 0x3a, 0x3d, 0xb0, 0xc1, 0x03, 0x83, 0x11, 0xda, 0xb5, 0x6b, 0x99, 0xb5, 0x6f, 0x17, - 0x86, 0xa2, 0x6f, 0xac, 0xf6, 0x8e, 0x5e, 0xbd, 0x3d, 0x3b, 0x3b, 0xb3, 0x56, 0xab, 0x3c, 0x75, - 0xe4, 0xb7, 0xc1, 0xd9, 0xcf, 0x89, 0xa0, 0xb5, 0xee, 0x12, 0xae, 0x01, 0x66, 0xf1, 0x7a, 0xf7, - 0x8f, 0x51, 0x55, 0x42, 0x80, 0x5f, 0x3b, 0xd8, 0x7b, 0xee, 0x72, 0xc8, 0x82, 0xe8, 0x33, 0xd8, - 0x01, 0xe2, 0xa0, 0x0d, 0x81, 0x82, 0x20, 0xd8, 0x28, 0xab, 0xbf, 0x8a, 0x46, 0x07, 0x6c, 0xef, - 0x6f, 0x21, 0x3b, 0xb0, 0x1c, 0x82, 0x2f, 0x4b, 0x33, 0xcb, 0x39, 0xfb, 0xef, 0xf3, 0xbf, 0xcd, - 0x92, 0xf9, 0x6c, 0x93, 0x0e, 0x00, 0x00 + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xa5, 0x58, 0x6b, 0x53, 0xe3, 0x3a, + 0x12, 0xfd, 0xce, 0xaf, 0x30, 0x1a, 0x0a, 0xec, 0x8a, 0x71, 0xc2, 0xb0, 0x77, 0x97, 0x49, 0xa2, + 0xb0, 0xc3, 0x3c, 0x76, 0xd8, 0x9a, 0x19, 0xa8, 0x62, 0xee, 0xdd, 0xda, 0x62, 0xa9, 0x8b, 0xb1, + 0x95, 0x44, 0x83, 0x23, 0xb9, 0x24, 0x99, 0xc7, 0x86, 0xfc, 0xf7, 0x3d, 0x2d, 0xdb, 0x21, 0x61, + 0x60, 0xee, 0x6e, 0xed, 0x17, 0xc0, 0x72, 0xab, 0xdd, 0x3a, 0xdd, 0x7d, 0xfa, 0x88, 0xe1, 0xe6, + 0xfb, 0x93, 0x77, 0xdf, 0xfe, 0x79, 0xfa, 0x21, 0x98, 0xba, 0x59, 0x31, 0x1a, 0x36, 0x3f, 0x45, + 0x9a, 0x07, 0x45, 0xaa, 0x26, 0x9c, 0x09, 0xc5, 0x46, 0xc3, 0x99, 0x70, 0x69, 0x90, 0x4d, 0x53, + 0x63, 0x85, 0xe3, 0xac, 0x72, 0xe3, 0xdd, 0x83, 0x76, 0x75, 0x43, 0xa5, 0x33, 0xc1, 0xd9, 0x8d, + 0x14, 0xb7, 0xa5, 0x36, 0x8e, 0x05, 0x99, 0x56, 0x4e, 0x28, 0x98, 0xdd, 0xca, 0xdc, 0x4d, 0xf9, + 0x2f, 0xbd, 0xde, 0xd2, 0xf4, 0xc9, 0xab, 0x5c, 0xdc, 0xc8, 0x4c, 0xec, 0xfa, 0x87, 0x58, 0x2a, + 0xe9, 0x64, 0x5a, 0xec, 0xda, 0x2c, 0x2d, 0x04, 0xdf, 0x8b, 0x67, 0xe9, 0x9d, 0x9c, 0x55, 0xb3, + 0xe5, 0x73, 0x65, 0x85, 0xf1, 0x0f, 0xe9, 0x15, 0x9e, 0x95, 0x66, 0x3f, 0x7c, 0x79, 0x34, 0x74, + 0xd2, 0x15, 0x62, 0xf4, 0x2b, 0x2c, 0x67, 0x3a, 0x0f, 0xce, 0x84, 0x73, 0x52, 0x4d, 0xec, 0xb0, + 0x5b, 0xaf, 0x0f, 0x6d, 0x66, 0x64, 0xe9, 0x46, 0x1b, 0x37, 0xa9, 0x09, 0xf4, 0xad, 0x12, 0x26, + 0x2e, 0x74, 0x26, 0xcb, 0xb8, 0x32, 0xfa, 0xd6, 0xc6, 0x39, 0xcf, 0x75, 0x56, 0xcd, 0x10, 0x5f, + 0x5c, 0xcd, 0xde, 0x8d, 0x27, 0x7c, 0xbe, 0x88, 0x4b, 0xa9, 0x2c, 0x3f, 0xff, 0x73, 0xfc, 0x97, + 0xf8, 0x20, 0x7e, 0x13, 0xef, 0xf5, 0xe2, 0xbd, 0xbd, 0x0b, 0x5a, 0x3c, 0xe1, 0xe7, 0xcc, 0xd8, + 0x9b, 0x9c, 0xc5, 0x7f, 0xfc, 0xeb, 0x82, 0xbe, 0xc2, 0x37, 0xf7, 0x62, 0x55, 0xcd, 0xbe, 0xf0, + 0xde, 0x60, 0x5c, 0xa9, 0xcc, 0x49, 0xad, 0x82, 0xc9, 0x71, 0x1e, 0x8a, 0x68, 0x6e, 0x84, 0xab, + 0x8c, 0x0a, 0xf2, 0x64, 0x22, 0xdc, 0x87, 0x42, 0x50, 0x00, 0x47, 0xf7, 0xfe, 0xd5, 0x62, 0x69, + 0x2a, 0xed, 0xc9, 0x8a, 0xa9, 0xd8, 0xde, 0x66, 0xfa, 0xea, 0xbb, 0xc8, 0x1c, 0xe3, 0xdc, 0xdd, + 0x97, 0x42, 0x8f, 0x69, 0x6d, 0xf3, 0xad, 0x31, 0xe9, 0x7d, 0x22, 0xad, 0xff, 0xbd, 0xb6, 0xff, + 0x53, 0x18, 0xcd, 0x6f, 0xa5, 0xca, 0xf5, 0x6d, 0xa2, 0x4b, 0xa1, 0x42, 0x36, 0x75, 0xae, 0xb4, + 0xfd, 0x6e, 0x77, 0x22, 0xdd, 0xb4, 0xba, 0x4a, 0x32, 0x3d, 0xeb, 0xbe, 0x95, 0x26, 0xd3, 0x5a, + 0x5f, 0x4b, 0xd1, 0xfd, 0xc7, 0xe7, 0x0f, 0xef, 0xbb, 0xb7, 0xf2, 0x5a, 0x76, 0x5b, 0x0c, 0x5f, + 0x55, 0x35, 0xa8, 0xbb, 0xb6, 0x59, 0x60, 0x2b, 0xde, 0x8f, 0x9e, 0x7a, 0xef, 0x2e, 0xad, 0x62, + 0xf6, 0xbb, 0x15, 0xc5, 0x78, 0xd5, 0xba, 0xd0, 0x69, 0xfe, 0xf7, 0xb3, 0x50, 0xc4, 0x8e, 0x6f, + 0xf6, 0xa2, 0x79, 0x21, 0x5c, 0xa0, 0x78, 0x9e, 0x64, 0x46, 0xa4, 0x4e, 0x34, 0x00, 0x84, 0xac, + 0xce, 0x15, 0x8b, 0x06, 0x2a, 0x81, 0xb3, 0xb7, 0xce, 0x19, 0x79, 0x55, 0x39, 0x81, 0x17, 0x26, + 0x63, 0xb1, 0x88, 0xe2, 0xa7, 0xeb, 0x84, 0x03, 0x3e, 0xe7, 0xc4, 0x9d, 0xeb, 0x7e, 0x4f, 0x6f, + 0xd2, 0xd6, 0xc1, 0x0f, 0x86, 0xa9, 0xbd, 0x57, 0x70, 0xe1, 0xa2, 0x38, 0x4f, 0xae, 0x74, 0x7e, + 0x9f, 0xa4, 0x25, 0x82, 0xce, 0xdf, 0x4d, 0x65, 0x91, 0x87, 0x8a, 0xec, 0xd3, 0x3c, 0xff, 0x70, + 0x83, 0x28, 0x3e, 0x4b, 0x8b, 0x72, 0x15, 0x26, 0x64, 0x14, 0x33, 0x8b, 0xc3, 0x88, 0x8f, 0xe6, + 0x7f, 0x13, 0xee, 0xb7, 0x30, 0x5a, 0x3c, 0x6f, 0x27, 0x8c, 0xd1, 0x06, 0xe1, 0xc1, 0x0e, 0xb5, + 0x6e, 0x75, 0x21, 0x92, 0x42, 0x4f, 0x42, 0xf6, 0x81, 0xd6, 0x83, 0xe6, 0xf0, 0x00, 0x26, 0x18, + 0xcb, 0x42, 0xf8, 0x63, 0xa0, 0xb8, 0x0d, 0x8e, 0xfb, 0xb9, 0x59, 0x47, 0x26, 0xb1, 0x71, 0x2c, + 0x27, 0x95, 0x49, 0x3d, 0x5a, 0xf5, 0x31, 0x82, 0x71, 0x8a, 0x0d, 0x79, 0xf2, 0x2f, 0x75, 0xac, + 0x90, 0xab, 0x12, 0xa0, 0x89, 0xa0, 0x4c, 0x27, 0x22, 0xc8, 0x53, 0x97, 0x6e, 0x02, 0xde, 0x15, + 0x80, 0xcf, 0x90, 0x0e, 0x46, 0x1f, 0xe8, 0xa3, 0x3c, 0x9a, 0xbc, 0xa0, 0x04, 0xbd, 0xbf, 0xa4, + 0x34, 0xda, 0xe9, 0x4c, 0x17, 0xdb, 0xdb, 0xa1, 0x2f, 0xcb, 0x5e, 0x1c, 0xfa, 0x26, 0xe0, 0x64, + 0x51, 0x9c, 0x39, 0x6d, 0xe0, 0x95, 0x4a, 0xf1, 0xd8, 0x89, 0x19, 0x1d, 0x3c, 0x3b, 0x2e, 0x59, + 0x14, 0x3d, 0x3c, 0x34, 0x66, 0xd8, 0x3f, 0x2b, 0x11, 0xf0, 0x47, 0xf8, 0x0f, 0xbe, 0xe8, 0x5c, + 0x24, 0xc1, 0x69, 0x21, 0x52, 0x2b, 0x02, 0x00, 0x21, 0x4c, 0x40, 0xa5, 0x13, 0x1c, 0x9f, 0x22, + 0xa4, 0x78, 0xcd, 0xa3, 0x5d, 0xf7, 0x58, 0x77, 0x5e, 0x14, 0xc1, 0x2a, 0x47, 0xbc, 0xbe, 0x37, + 0xf0, 0x0d, 0x6a, 0x09, 0x56, 0xcd, 0x58, 0x94, 0x48, 0x05, 0x40, 0x3f, 0x7d, 0xfb, 0xf2, 0x99, + 0xb3, 0xaf, 0x3a, 0x68, 0x5a, 0xda, 0x06, 0xe8, 0x47, 0x97, 0x16, 0x04, 0x05, 0x5b, 0x6b, 0x8f, + 0x8f, 0xab, 0xed, 0xc1, 0x39, 0xef, 0xa0, 0x1f, 0xc4, 0x26, 0xe7, 0x61, 0xef, 0x61, 0xbd, 0x8f, + 0x8e, 0x9f, 0x33, 0xe4, 0x3f, 0x18, 0x66, 0x53, 0x91, 0x5d, 0x53, 0x8d, 0x46, 0x73, 0x62, 0x0b, + 0xc5, 0x45, 0x42, 0x6c, 0x93, 0x18, 0x51, 0x16, 0x69, 0x86, 0x2a, 0x3a, 0xbf, 0x40, 0xb1, 0x21, + 0x4e, 0x5b, 0x5d, 0x59, 0x67, 0xc2, 0xdd, 0xfd, 0x68, 0x20, 0xc7, 0x21, 0xc3, 0x39, 0xae, 0x84, + 0x01, 0xee, 0x22, 0xa1, 0x82, 0x44, 0xa3, 0x82, 0x2d, 0xf0, 0xa8, 0x5a, 0xc3, 0x5e, 0xbc, 0x1f, + 0x45, 0x63, 0x6d, 0x42, 0x72, 0x2b, 0x41, 0x07, 0x72, 0x48, 0x24, 0x93, 0x14, 0x42, 0x4d, 0xdc, + 0x74, 0x20, 0x3b, 0x9d, 0x08, 0x7e, 0xdc, 0x26, 0x27, 0x96, 0x39, 0x97, 0x17, 0xd1, 0x1c, 0x8f, + 0x22, 0xb9, 0x49, 0x8b, 0x0a, 0x61, 0x92, 0x29, 0x16, 0x1f, 0x1e, 0x9a, 0x95, 0xe1, 0xee, 0xde, + 0xf2, 0xef, 0xd1, 0xfe, 0x9b, 0x68, 0x0e, 0xa0, 0xdd, 0x3d, 0xaa, 0x0e, 0x19, 0xd6, 0x86, 0x33, + 0x23, 0x72, 0x36, 0xb8, 0x42, 0x67, 0x5d, 0x2f, 0xd6, 0xdf, 0x2c, 0xf7, 0xec, 0x1f, 0x32, 0x24, + 0x48, 0x4d, 0x04, 0xeb, 0xb3, 0x57, 0xe3, 0xf1, 0x98, 0x2d, 0x1e, 0x41, 0x40, 0x15, 0x9c, 0xe2, + 0x83, 0x84, 0x18, 0x82, 0xa8, 0x39, 0xc8, 0xc7, 0x4e, 0xb5, 0xed, 0xce, 0x55, 0x2c, 0x2f, 0x50, + 0xaf, 0x27, 0x9e, 0x89, 0x12, 0xa4, 0xdf, 0x48, 0x41, 0xc6, 0x51, 0x63, 0x2c, 0xa3, 0xc8, 0xb3, + 0x2c, 0x57, 0x71, 0xeb, 0x49, 0x46, 0x03, 0x51, 0xa0, 0x56, 0x08, 0xaa, 0x16, 0x98, 0x9f, 0x40, + 0x4a, 0x9e, 0xd6, 0x49, 0x4d, 0x3e, 0x82, 0xe7, 0x00, 0x9e, 0x1b, 0xca, 0x16, 0x39, 0x47, 0xc8, + 0x9d, 0xbb, 0x8b, 0x11, 0xef, 0xa1, 0xb6, 0x3d, 0xa6, 0x65, 0x65, 0xa7, 0x21, 0xad, 0x45, 0x9e, + 0xb3, 0xeb, 0x67, 0x1f, 0x52, 0xd4, 0xc6, 0xf1, 0x83, 0xf5, 0xcb, 0xa6, 0x2f, 0x84, 0xf2, 0x4c, + 0x18, 0xcb, 0xd3, 0xd2, 0xa7, 0x1f, 0xe1, 0x04, 0x5d, 0x7c, 0x94, 0x02, 0x24, 0x83, 0xb2, 0x8a, + 0x01, 0x1e, 0x66, 0xc2, 0x12, 0x58, 0xb5, 0x0a, 0xac, 0x8c, 0xcd, 0x33, 0xc0, 0xc2, 0x84, 0x55, + 0xea, 0x5a, 0x21, 0x2a, 0xe0, 0xc6, 0x1d, 0x25, 0x5e, 0xaa, 0xac, 0xa8, 0x72, 0xbc, 0x44, 0xf6, + 0xa2, 0xc3, 0x95, 0x0f, 0xc0, 0x45, 0xd4, 0x7f, 0x7c, 0xee, 0xe0, 0x7d, 0xc7, 0xf9, 0xd5, 0x17, + 0x4e, 0xa3, 0x1e, 0x81, 0x35, 0x38, 0x91, 0x19, 0xaa, 0xf6, 0x44, 0x06, 0x27, 0x5a, 0x0f, 0xfd, + 0xdc, 0x5c, 0xc4, 0xa0, 0x6e, 0xef, 0xc9, 0xb7, 0x87, 0x8d, 0x75, 0x3b, 0x87, 0xd4, 0xc0, 0xde, + 0x4a, 0x97, 0x01, 0xbc, 0x68, 0x9e, 0x81, 0x16, 0xd8, 0x95, 0x06, 0x0b, 0xa6, 0x8a, 0xf5, 0x35, + 0x67, 0xbe, 0xab, 0xae, 0xf4, 0x1d, 0x8b, 0x2d, 0xdf, 0xa9, 0x4b, 0x9a, 0x39, 0x53, 0x09, 0xb6, + 0xd3, 0x09, 0xd5, 0x21, 0xab, 0xbb, 0x0e, 0x25, 0xdb, 0x47, 0x19, 0xd4, 0x65, 0x3b, 0xf0, 0x3e, + 0x9a, 0xae, 0xea, 0x5b, 0x7e, 0xd9, 0xec, 0xda, 0x9a, 0xab, 0x05, 0xbb, 0x8c, 0x9b, 0x22, 0xe2, + 0x6e, 0xa5, 0x68, 0x0e, 0x43, 0xdb, 0xe1, 0x3b, 0x01, 0xf4, 0x03, 0x67, 0xfb, 0x6f, 0x58, 0x30, + 0x93, 0x8a, 0xb3, 0xdd, 0x3d, 0x78, 0x2f, 0x52, 0x6b, 0x39, 0xb3, 0x6c, 0x07, 0xe1, 0x32, 0xa9, + 0x30, 0x1c, 0xfa, 0xde, 0x14, 0xec, 0x5d, 0x72, 0x96, 0xaa, 0xfb, 0xa5, 0xcd, 0xdd, 0x5d, 0xc1, + 0x76, 0x9a, 0x08, 0x72, 0x31, 0x4e, 0xab, 0xc2, 0x51, 0xfc, 0x34, 0x5c, 0x28, 0xf6, 0xb5, 0x28, + 0x02, 0xdf, 0x57, 0x8d, 0xa6, 0xe9, 0xbf, 0xfe, 0xa5, 0x57, 0xde, 0x0d, 0xd8, 0xe5, 0xe2, 0x49, + 0x72, 0x50, 0x65, 0x5e, 0x66, 0x74, 0xd0, 0x7a, 0x4d, 0xac, 0x64, 0x91, 0x8b, 0xbb, 0x93, 0xb1, + 0x37, 0xe8, 0xec, 0x81, 0x0c, 0x1b, 0x93, 0xcb, 0x60, 0x6b, 0xee, 0x16, 0xfd, 0x00, 0x07, 0x5c, + 0x42, 0xc6, 0xb9, 0x3e, 0x6c, 0x5f, 0x0f, 0xa5, 0x2a, 0x2b, 0x17, 0x10, 0xe4, 0x9c, 0x4d, 0x65, + 0x9e, 0x43, 0xa4, 0x05, 0xb5, 0x1a, 0xda, 0x9a, 0x8b, 0x45, 0x9f, 0x76, 0x6f, 0xcd, 0xe5, 0x21, + 0xb5, 0x14, 0xb0, 0x44, 0x8c, 0x4d, 0xc0, 0xe3, 0x14, 0x29, 0x63, 0xa3, 0xcb, 0xbe, 0x04, 0xd9, + 0xfe, 0xdf, 0xde, 0xb6, 0xe6, 0x7a, 0x01, 0x67, 0x8f, 0x61, 0xaf, 0x79, 0xda, 0x9a, 0x7b, 0x8c, + 0x39, 0x05, 0xbe, 0xcc, 0x20, 0x36, 0xfc, 0xdc, 0xf5, 0xd6, 0xdc, 0x2e, 0x30, 0x28, 0xbd, 0xa3, + 0xa6, 0x60, 0x42, 0x37, 0x95, 0x36, 0xde, 0xd9, 0x9a, 0xbf, 0x8c, 0xdc, 0x62, 0x27, 0x82, 0xfc, + 0xbb, 0x32, 0xa3, 0xcb, 0xc5, 0x5a, 0xbf, 0xbd, 0x37, 0xba, 0xc4, 0xf8, 0x53, 0x35, 0x93, 0xbf, + 0x24, 0x35, 0x44, 0x41, 0x52, 0x2a, 0x42, 0x47, 0xae, 0x8a, 0x30, 0x7b, 0x74, 0xff, 0x15, 0x91, + 0xb6, 0xcd, 0x13, 0x9d, 0xef, 0x5d, 0x10, 0xc5, 0x4b, 0x70, 0xfa, 0xf1, 0xd7, 0xd3, 0x5f, 0xbf, + 0xd1, 0xc9, 0x64, 0xe2, 0xd2, 0x09, 0x59, 0x21, 0xbd, 0x75, 0x75, 0xd4, 0x8b, 0x00, 0xe0, 0xe1, + 0xe1, 0x71, 0x18, 0x34, 0x4b, 0x51, 0x1d, 0x82, 0xc0, 0xa3, 0x47, 0x70, 0x20, 0xfd, 0x50, 0x19, + 0xac, 0x37, 0x9e, 0x4c, 0xd2, 0x56, 0xac, 0x2c, 0xc7, 0x42, 0xa7, 0x63, 0xea, 0x41, 0x64, 0xf9, + 0xea, 0x6b, 0x34, 0xe2, 0xa0, 0x16, 0x3e, 0x9b, 0xdc, 0x7a, 0x5f, 0x08, 0xce, 0xbb, 0x5e, 0x5d, + 0xf0, 0x35, 0xbd, 0xba, 0xe0, 0x0b, 0x76, 0x65, 0xe1, 0x89, 0x42, 0xaa, 0x97, 0x63, 0x5b, 0x07, + 0x19, 0x2d, 0x9a, 0x69, 0xf9, 0x54, 0x47, 0x91, 0xf2, 0xd8, 0x85, 0x89, 0x97, 0x31, 0x32, 0x29, + 0x53, 0x03, 0xd0, 0x1a, 0xec, 0x5a, 0x52, 0x6f, 0x44, 0x55, 0x0c, 0x5a, 0x55, 0x4b, 0x3f, 0x55, + 0x51, 0xac, 0x25, 0xe9, 0xa4, 0xa4, 0xbf, 0x6a, 0x6a, 0xf1, 0x84, 0x48, 0x16, 0x00, 0x4d, 0x44, + 0xf5, 0x8e, 0x01, 0x81, 0x26, 0x7f, 0xcc, 0x9b, 0xf6, 0xfb, 0xc0, 0x14, 0x0d, 0x9c, 0x98, 0x33, + 0xc0, 0x19, 0x49, 0xe0, 0x2e, 0x16, 0x6b, 0xaa, 0x0e, 0x63, 0x87, 0x30, 0x26, 0x3f, 0x35, 0x5d, + 0x63, 0x0c, 0xd2, 0x8b, 0xaf, 0xd0, 0x2f, 0x76, 0x95, 0xb9, 0xe7, 0xab, 0x2f, 0xc0, 0xde, 0xed, + 0xdc, 0x15, 0x09, 0x9d, 0x16, 0xe7, 0xa7, 0x05, 0xe4, 0x9a, 0xf4, 0x0c, 0x15, 0x8d, 0xc8, 0x8f, + 0xa9, 0x10, 0xb9, 0x8b, 0xd6, 0xeb, 0xee, 0x58, 0x8d, 0x75, 0x7b, 0xa0, 0x36, 0xfa, 0x67, 0x2a, + 0x0b, 0xa1, 0xe3, 0x23, 0xdb, 0xdb, 0xf4, 0x13, 0x25, 0x0d, 0x91, 0xe3, 0xde, 0xe6, 0xdf, 0x81, + 0x9b, 0x72, 0x24, 0x7d, 0xa0, 0x55, 0xc7, 0xd0, 0x54, 0x38, 0x06, 0x06, 0xe3, 0xb6, 0xba, 0xb2, + 0xe5, 0x80, 0x75, 0xd4, 0xaa, 0x94, 0x26, 0xed, 0x34, 0x1f, 0x0b, 0xe2, 0x5b, 0xd2, 0x67, 0x87, + 0x5e, 0xd7, 0x43, 0xd6, 0xb3, 0x8e, 0xd7, 0x57, 0xc4, 0xa3, 0x1d, 0xd6, 0xcd, 0xc6, 0x93, 0xe4, + 0xbb, 0x05, 0x54, 0xf1, 0x1c, 0xf7, 0xb0, 0xa9, 0xce, 0xfb, 0x0c, 0xc1, 0xb0, 0x45, 0x94, 0xb8, + 0x29, 0xe4, 0x3a, 0xd4, 0x2a, 0x0e, 0xa4, 0xaf, 0x5b, 0xfd, 0x05, 0x8a, 0x30, 0x86, 0xe6, 0xb0, + 0xd7, 0x0b, 0xb9, 0xb4, 0x48, 0xe5, 0x3d, 0x11, 0x66, 0x21, 0x95, 0x40, 0x9b, 0x08, 0xef, 0x2c, + 0x84, 0x78, 0x5b, 0xee, 0xa7, 0xac, 0xd5, 0x97, 0x26, 0x91, 0x54, 0xb3, 0xf8, 0x51, 0x38, 0xd4, + 0xd4, 0xc0, 0x19, 0x8b, 0x69, 0xca, 0x79, 0x93, 0xd5, 0x49, 0x07, 0x88, 0x9e, 0x99, 0x74, 0x8d, + 0xd9, 0x92, 0x55, 0xa6, 0x06, 0x37, 0xd2, 0xfd, 0x11, 0x31, 0xc6, 0xb0, 0x8b, 0x3f, 0x2e, 0xe3, + 0x95, 0x79, 0xb4, 0x9c, 0x89, 0xe8, 0xf0, 0x01, 0xa3, 0x66, 0xf3, 0xfb, 0x5a, 0xbe, 0xe5, 0x6c, + 0xa9, 0x1d, 0xd7, 0x85, 0xb5, 0xd2, 0x50, 0xd5, 0xba, 0x52, 0x79, 0x42, 0xbc, 0x71, 0x6a, 0x84, + 0xb5, 0xc1, 0x50, 0x8e, 0xce, 0xd2, 0x1b, 0x31, 0xec, 0xca, 0x51, 0xe0, 0x74, 0xd0, 0x5c, 0x49, + 0xe5, 0xbf, 0x21, 0xb3, 0xeb, 0x21, 0x60, 0x21, 0x3b, 0xe3, 0xe7, 0x44, 0x6a, 0x7d, 0x85, 0x6c, + 0xae, 0x36, 0x3f, 0x49, 0x45, 0x7b, 0x31, 0xea, 0x5a, 0x80, 0x78, 0x58, 0xf2, 0x03, 0x16, 0x43, + 0x05, 0x20, 0x13, 0x90, 0xe7, 0x48, 0x22, 0x41, 0xf9, 0x5f, 0xe4, 0x20, 0x5e, 0xbd, 0x5c, 0x88, + 0x35, 0xf1, 0x6f, 0x6f, 0xce, 0x48, 0xaf, 0x09, 0x08, 0x7d, 0x41, 0x77, 0x93, 0xf7, 0x75, 0xe0, + 0x21, 0xdd, 0x76, 0xce, 0xc6, 0x89, 0x27, 0xd4, 0xdf, 0x70, 0xa6, 0x5c, 0xba, 0xfb, 0x10, 0x53, + 0xc9, 0xaf, 0x82, 0x56, 0x67, 0x12, 0x36, 0x8b, 0x8d, 0x61, 0xb7, 0xb9, 0x24, 0x0f, 0xfd, 0x97, + 0x47, 0x7f, 0x95, 0x33, 0xba, 0x5b, 0x07, 0x95, 0x29, 0x42, 0xd6, 0x08, 0x48, 0x90, 0x49, 0x34, + 0x80, 0xa1, 0x37, 0x40, 0x42, 0x44, 0x9a, 0x83, 0x7b, 0x71, 0x93, 0x02, 0x6f, 0x13, 0x02, 0x9c, + 0xa1, 0x2a, 0x41, 0xc7, 0x48, 0xf3, 0x6c, 0x23, 0x90, 0x78, 0xa6, 0xbf, 0x7e, 0xb7, 0x2d, 0xf3, + 0x9f, 0x8d, 0x31, 0x94, 0x7d, 0x1d, 0x72, 0x56, 0x6a, 0xeb, 0x18, 0xf6, 0xd5, 0x11, 0x60, 0x38, + 0x53, 0xf8, 0x14, 0x37, 0x39, 0xc8, 0xe5, 0x4d, 0x3b, 0x90, 0x9d, 0xc6, 0xc5, 0xe3, 0x96, 0x8d, + 0x36, 0x56, 0x17, 0xa7, 0xa2, 0x28, 0x8f, 0x88, 0xf7, 0x2b, 0xe7, 0x70, 0xf4, 0x7a, 0xec, 0xd4, + 0x0f, 0xe4, 0x33, 0x2b, 0x64, 0x76, 0xcd, 0xd9, 0x27, 0x0a, 0xe6, 0x70, 0xd8, 0xad, 0x5f, 0x20, + 0x60, 0x78, 0x58, 0xee, 0xd9, 0x78, 0x61, 0xd3, 0x11, 0x6d, 0x3a, 0x4a, 0xb3, 0xeb, 0xc7, 0x7d, + 0x6b, 0x5f, 0xa9, 0xe3, 0x65, 0x4d, 0xb9, 0x2c, 0x4d, 0x0c, 0x02, 0xb4, 0x65, 0xaa, 0xfc, 0xa9, + 0x0b, 0x6b, 0xab, 0x6c, 0x29, 0x0f, 0xbc, 0xee, 0xee, 0x4f, 0x8c, 0x10, 0x6a, 0xd0, 0xe4, 0xb3, + 0xaf, 0x34, 0x92, 0x39, 0xda, 0x7e, 0xb5, 0xd7, 0xeb, 0xf5, 0xfe, 0x34, 0x08, 0xde, 0xad, 0xdf, + 0xfc, 0xe0, 0x3a, 0xdf, 0xa4, 0x8c, 0xc0, 0xe1, 0x28, 0x58, 0xf5, 0x4b, 0xb5, 0xb1, 0xee, 0x17, + 0x42, 0xff, 0x89, 0xd7, 0x8d, 0xed, 0x57, 0x6f, 0x0e, 0x0e, 0x0e, 0xc8, 0x6b, 0x55, 0xe4, 0xbe, + 0xdc, 0x29, 0x39, 0xeb, 0x5d, 0x90, 0x34, 0xde, 0x7d, 0x8b, 0xd5, 0xc0, 0x4c, 0x5f, 0xaf, 0xfe, + 0x03, 0xa5, 0x2a, 0x91, 0xe0, 0xd7, 0x3e, 0x15, 0x75, 0x2a, 0x51, 0xf7, 0xa3, 0xf6, 0xb2, 0xda, + 0x16, 0x73, 0x92, 0x24, 0xed, 0x66, 0xf3, 0x47, 0xd9, 0x58, 0x02, 0xbb, 0xf1, 0x3f, 0x21, 0xdb, + 0xa5, 0x12, 0xc2, 0x2f, 0x2a, 0x33, 0xaa, 0x39, 0xfa, 0x2f, 0xd5, 0x7f, 0x00, 0x30, 0xbd, 0x63, + 0x27, 0xbb, 0x12, 0x00, 0x00 }; // Autogenerated from wled00/data/settings_2D.htm, do not edit!! -const uint16_t PAGE_settings_2D_length = 1453; +const uint16_t PAGE_settings_2D_length = 1751; const uint8_t PAGE_settings_2D[] PROGMEM = { - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0x8d, 0x57, 0x6d, 0x6f, 0xdb, 0x36, - 0x10, 0xfe, 0xae, 0x5f, 0xc1, 0x12, 0x05, 0x6a, 0xb5, 0xb6, 0x15, 0x67, 0x5b, 0x51, 0xc4, 0x92, - 0xb2, 0x7a, 0x09, 0xe6, 0x02, 0x0d, 0x1a, 0xd4, 0x5d, 0x8a, 0x61, 0x1d, 0x5a, 0x59, 0x3a, 0x47, - 0x6c, 0x28, 0x52, 0x20, 0x29, 0x3b, 0x99, 0x9b, 0xff, 0xbe, 0x23, 0x25, 0x5b, 0xb6, 0x63, 0xa7, - 0xf9, 0x12, 0x99, 0x2f, 0xf7, 0x7e, 0xf7, 0x3c, 0x4c, 0xf8, 0xec, 0xec, 0xc3, 0x1f, 0x9f, 0xfe, - 0xbe, 0x3c, 0x27, 0xb9, 0x29, 0x78, 0x1c, 0xda, 0xbf, 0x84, 0x27, 0xe2, 0x3a, 0xa2, 0x20, 0x28, - 0xae, 0x21, 0xc9, 0xe2, 0xb0, 0x00, 0x93, 0x90, 0x34, 0x4f, 0x94, 0x06, 0x13, 0xd1, 0xca, 0xcc, - 0x7a, 0x6f, 0x68, 0xb3, 0xeb, 0x89, 0xa4, 0x80, 0x88, 0xce, 0x19, 0x2c, 0x4a, 0xa9, 0x0c, 0x25, - 0xa9, 0x14, 0x06, 0x04, 0x5e, 0x5b, 0xb0, 0xcc, 0xe4, 0xd1, 0x6f, 0x47, 0x47, 0xeb, 0xab, 0x3b, - 0x47, 0x19, 0xcc, 0x59, 0x0a, 0x3d, 0xb7, 0xe8, 0x32, 0xc1, 0x0c, 0x4b, 0x78, 0x4f, 0xa7, 0x09, - 0x87, 0x68, 0xd0, 0x2d, 0x92, 0x5b, 0x56, 0x54, 0xc5, 0x7a, 0x5d, 0x69, 0x50, 0x6e, 0x91, 0x4c, - 0x71, 0x2d, 0x24, 0x7d, 0x60, 0x39, 0x0e, 0x0d, 0x33, 0x1c, 0xe2, 0xe3, 0x33, 0x32, 0x01, 0xd3, - 0xab, 0xca, 0x30, 0xa8, 0x37, 0x42, 0x9d, 0x2a, 0x56, 0x9a, 0xd8, 0x9b, 0x27, 0x8a, 0x64, 0x51, - 0x26, 0xd3, 0xaa, 0x40, 0x37, 0x86, 0xb3, 0x4a, 0xa4, 0x86, 0x49, 0x41, 0xc6, 0x1d, 0x7f, 0xb9, - 0x60, 0x22, 0x93, 0x8b, 0xbe, 0x2c, 0x41, 0x74, 0x68, 0x6e, 0x4c, 0xa9, 0x4f, 0x82, 0xe0, 0x46, - 0xc8, 0xfe, 0x82, 0x43, 0xd6, 0xbf, 0x86, 0x60, 0x06, 0x89, 0xa9, 0x14, 0xe8, 0xe0, 0xf8, 0x8c, - 0xfa, 0xf7, 0x6b, 0xd9, 0xd1, 0xae, 0x6c, 0x80, 0x39, 0x32, 0x4c, 0x5c, 0x6b, 0xda, 0xa5, 0x5f, - 0x35, 0xf0, 0xd9, 0xe6, 0xed, 0xeb, 0x77, 0x59, 0x07, 0xfc, 0xa5, 0x02, 0x54, 0x25, 0x88, 0xd5, - 0x6b, 0xce, 0x39, 0x58, 0x6f, 0x46, 0x77, 0xee, 0xe8, 0xde, 0xfa, 0x88, 0xb1, 0x5f, 0x26, 0x02, - 0xb8, 0x8e, 0x5e, 0xff, 0xda, 0x7a, 0xf9, 0xd7, 0xbb, 0x0e, 0x44, 0xcf, 0x06, 0xfe, 0x92, 0xcd, - 0x3a, 0xf4, 0x88, 0x46, 0x51, 0x64, 0xb5, 0x51, 0x2d, 0x8b, 0x92, 0xfa, 0xfd, 0x79, 0xc2, 0x2b, - 0xf0, 0x1b, 0xc5, 0xee, 0xa0, 0x28, 0x33, 0x36, 0xc7, 0x13, 0x6d, 0xee, 0x38, 0xf4, 0x33, 0xa6, - 0x4b, 0x9e, 0xdc, 0x45, 0x54, 0x48, 0x01, 0xb4, 0x3b, 0x97, 0x2c, 0x23, 0x18, 0x0d, 0x98, 0xda, - 0x52, 0xc7, 0x1f, 0x3e, 0x26, 0x34, 0xe5, 0x32, 0xbd, 0xa1, 0xdd, 0xd6, 0xb1, 0xd2, 0xf6, 0xc2, - 0x3b, 0x61, 0x3a, 0x59, 0x7f, 0x32, 0xeb, 0x5f, 0x5c, 0x8e, 0x1b, 0x07, 0x5e, 0xee, 0x1e, 0x5c, - 0x35, 0x07, 0x43, 0x0e, 0x86, 0x88, 0xda, 0xe5, 0xd2, 0xe9, 0x40, 0x2b, 0x69, 0xce, 0x78, 0xa6, - 0x40, 0xf4, 0x39, 0x88, 0x6b, 0x93, 0x0f, 0x31, 0x32, 0x11, 0xae, 0x8d, 0xf8, 0x33, 0xa9, 0x3a, - 0x56, 0x0c, 0xeb, 0x3d, 0x84, 0x76, 0x7f, 0x08, 0xaf, 0x5e, 0xf9, 0x49, 0x96, 0xb9, 0x15, 0xe6, - 0xcc, 0x89, 0xc5, 0x07, 0xc4, 0xe2, 0x0d, 0xb1, 0x5e, 0x0f, 0x13, 0x54, 0xd4, 0x62, 0x1b, 0x45, - 0x59, 0xa9, 0xc2, 0x24, 0x2c, 0x6b, 0xb9, 0x43, 0xd1, 0x75, 0x45, 0x74, 0x30, 0xbe, 0x95, 0x55, - 0x13, 0x1d, 0x0d, 0x4d, 0x08, 0x2f, 0xc5, 0xd0, 0x6c, 0xba, 0x69, 0xf6, 0x18, 0xc4, 0x7a, 0x1e, - 0xd5, 0x26, 0x77, 0x12, 0xe3, 0x22, 0xda, 0xcd, 0x4e, 0x1c, 0xb5, 0x21, 0xd6, 0x75, 0x1e, 0xd6, - 0xf6, 0xbe, 0x85, 0x58, 0x33, 0xc2, 0xb2, 0x88, 0x96, 0x82, 0x3f, 0x5f, 0xc2, 0x3d, 0x8d, 0x9f, - 0x2f, 0x8f, 0xb0, 0x3f, 0xe0, 0x94, 0xd2, 0x93, 0x17, 0x61, 0xae, 0x88, 0x2b, 0x67, 0x33, 0x77, - 0x27, 0xc7, 0xaf, 0x8f, 0xca, 0x5b, 0x1a, 0xbf, 0xb8, 0x77, 0xca, 0x88, 0x95, 0x08, 0xa7, 0x2a, - 0x1e, 0x84, 0xba, 0x2a, 0x63, 0x6d, 0xc2, 0xc0, 0x7e, 0xc9, 0xfb, 0xf3, 0xb3, 0x13, 0x12, 0x62, - 0x03, 0x43, 0x8a, 0xfe, 0xb9, 0x51, 0xbb, 0xb4, 0x57, 0x47, 0x34, 0xfe, 0x22, 0xbe, 0x98, 0x50, - 0x96, 0x2e, 0x16, 0x17, 0x7d, 0x84, 0xfd, 0x18, 0x7f, 0x92, 0x38, 0x71, 0xf5, 0xee, 0xbe, 0x1b, - 0x03, 0x1a, 0x8f, 0xa4, 0x31, 0xb2, 0xd8, 0xb8, 0x84, 0xa6, 0x9c, 0xfe, 0x78, 0x8f, 0x9d, 0x8f, - 0x87, 0xec, 0xbc, 0x87, 0x99, 0xf9, 0x89, 0xa1, 0x8f, 0xec, 0x3a, 0x37, 0x7b, 0xed, 0x60, 0x9c, - 0x5f, 0xc4, 0x07, 0xc5, 0x70, 0xe2, 0x12, 0x7b, 0xb8, 0x37, 0xc4, 0xab, 0x43, 0xa6, 0xc7, 0x52, - 0xb1, 0xff, 0x10, 0xc4, 0x12, 0xfe, 0x13, 0x07, 0xae, 0x40, 0x19, 0x96, 0x6e, 0x5d, 0xdb, 0xf1, - 0x61, 0x02, 0x0a, 0xe1, 0x02, 0x81, 0x02, 0xd0, 0x05, 0x26, 0xca, 0x0a, 0x2b, 0x79, 0x57, 0xa2, - 0x74, 0x9a, 0x43, 0x7a, 0x33, 0x95, 0xb7, 0x74, 0xd3, 0xa3, 0x09, 0xa2, 0x5b, 0x80, 0x55, 0x8e, - 0xbf, 0x0d, 0x45, 0x9f, 0x09, 0xc4, 0x42, 0xf3, 0x36, 0xfb, 0x9e, 0xa4, 0xa8, 0x61, 0xfc, 0xe9, - 0xe2, 0x7d, 0x87, 0x4e, 0x01, 0xfb, 0x0f, 0x40, 0x64, 0xb4, 0xbb, 0xd9, 0x69, 0x6d, 0xbb, 0x37, - 0x9d, 0xbd, 0x7f, 0xfe, 0x86, 0x16, 0x75, 0x44, 0x04, 0xab, 0x39, 0x14, 0x61, 0x34, 0xf8, 0xf1, - 0x03, 0xfe, 0x11, 0xbd, 0xc1, 0xbf, 0x7d, 0xd4, 0x21, 0xe7, 0xd0, 0xd9, 0xd2, 0xba, 0x81, 0x1b, - 0xcb, 0xed, 0x19, 0x41, 0xa8, 0xde, 0x9e, 0x8c, 0x68, 0xb0, 0x1e, 0x0d, 0x20, 0x72, 0x46, 0xf6, - 0x7b, 0xe0, 0xc3, 0x1e, 0x3b, 0x53, 0x23, 0x56, 0x33, 0xbe, 0xac, 0xc5, 0x04, 0xff, 0x8a, 0xc3, - 0xf3, 0x00, 0x9f, 0x36, 0xc0, 0xe1, 0x94, 0x32, 0xc1, 0x31, 0xab, 0xf4, 0xa4, 0x41, 0xba, 0xb5, - 0x20, 0xea, 0x7f, 0x28, 0x18, 0x0f, 0x76, 0x05, 0x5a, 0xf3, 0x13, 0x0c, 0xee, 0x4f, 0x30, 0x57, - 0x1d, 0xbf, 0x8b, 0xd8, 0xeb, 0xdf, 0x7b, 0x58, 0xc2, 0x9a, 0x49, 0x1a, 0x46, 0x21, 0x5a, 0xa5, - 0x51, 0x0b, 0xf8, 0x81, 0xee, 0x7f, 0xd7, 0xa7, 0x65, 0x34, 0xb0, 0x8c, 0xd7, 0x5e, 0xb5, 0x06, - 0x63, 0xef, 0x77, 0x56, 0x58, 0x96, 0x22, 0x95, 0xe2, 0x88, 0xd9, 0xce, 0x89, 0x54, 0xdb, 0x51, - 0xc7, 0x9b, 0xee, 0x46, 0x18, 0xd4, 0x5c, 0x3b, 0x95, 0xd9, 0x1d, 0x91, 0x82, 0xcb, 0x04, 0x07, - 0x1a, 0x5d, 0x40, 0x5d, 0x98, 0xbf, 0xc2, 0xcd, 0xb7, 0xfd, 0xf1, 0x55, 0xaf, 0xa9, 0x6f, 0x32, - 0xa3, 0x04, 0x99, 0x35, 0x97, 0x76, 0xf4, 0xa5, 0xb6, 0x14, 0x68, 0x91, 0x20, 0xe5, 0x89, 0xd6, - 0x11, 0x35, 0xb2, 0x54, 0x72, 0xb1, 0xbd, 0x97, 0x03, 0x2f, 0x71, 0x80, 0xc3, 0x69, 0x85, 0x93, - 0x28, 0x88, 0x57, 0xb7, 0x5c, 0xbd, 0xa2, 0x68, 0x35, 0xe5, 0x2c, 0xbd, 0x89, 0xe8, 0xd8, 0x9a, - 0x3d, 0x0d, 0x83, 0xfa, 0xa0, 0x69, 0xbd, 0x95, 0xd0, 0x01, 0x99, 0x91, 0x95, 0xf1, 0x46, 0x49, - 0x7a, 0xd3, 0xca, 0x6d, 0x49, 0xe8, 0x6a, 0x5a, 0x30, 0xf4, 0x71, 0x92, 0xcc, 0xa1, 0xbd, 0x92, - 0xab, 0x95, 0xfa, 0xfc, 0xd8, 0x52, 0x37, 0x26, 0xd3, 0x32, 0x37, 0x2e, 0xbc, 0x89, 0xc1, 0x0c, - 0x12, 0xa9, 0x88, 0xeb, 0x96, 0x76, 0x52, 0x6d, 0x26, 0x1c, 0xeb, 0x35, 0x13, 0x32, 0xf9, 0x70, - 0x71, 0x89, 0x39, 0x41, 0x4f, 0x72, 0x7c, 0xb8, 0xe0, 0xc6, 0x56, 0x7f, 0x76, 0x37, 0xe0, 0xdd, - 0xd5, 0x11, 0xc3, 0x7f, 0x30, 0xd8, 0x03, 0x7c, 0x33, 0x58, 0x6b, 0xeb, 0x79, 0xf5, 0x1e, 0xce, - 0x34, 0x3a, 0x77, 0x91, 0xe0, 0xa5, 0xdb, 0xf5, 0xa5, 0xad, 0x91, 0x5e, 0x83, 0x70, 0x4d, 0xa1, - 0xc4, 0x6b, 0x30, 0xb7, 0x69, 0xb5, 0x13, 0xd7, 0x5c, 0x18, 0xe5, 0x2f, 0x9b, 0x8a, 0x70, 0x55, - 0x83, 0x70, 0xc6, 0xf0, 0x11, 0xa0, 0x51, 0xa9, 0x26, 0x9d, 0xcf, 0xb7, 0x63, 0x7f, 0x0d, 0x0a, - 0x0d, 0x08, 0x7c, 0xa6, 0xab, 0x62, 0x89, 0xaa, 0x98, 0x82, 0xc2, 0xc2, 0x33, 0x61, 0xdd, 0xb2, - 0x8f, 0x05, 0xfc, 0x1e, 0xbf, 0xa1, 0x2b, 0x57, 0xf1, 0x69, 0x46, 0x6e, 0x77, 0xc4, 0xc7, 0x94, - 0x6c, 0x4b, 0x7b, 0x8f, 0x89, 0xdb, 0x70, 0x5a, 0xa8, 0xab, 0xd3, 0xaf, 0x77, 0x3c, 0xba, 0xb0, - 0x3a, 0x1f, 0x73, 0xa9, 0xd5, 0x38, 0xb0, 0x5d, 0xe2, 0x64, 0x23, 0x5a, 0x17, 0x80, 0xac, 0xf0, - 0x71, 0x57, 0xb7, 0xb7, 0x52, 0x7e, 0xb5, 0xeb, 0xf0, 0x93, 0x75, 0x6f, 0x52, 0x99, 0xd7, 0x70, - 0xd9, 0x4e, 0x03, 0x35, 0x49, 0x19, 0xed, 0xeb, 0x84, 0x4d, 0x16, 0x7b, 0xd8, 0x03, 0xde, 0x0e, - 0x85, 0x1d, 0x22, 0xb0, 0x8f, 0xfb, 0x54, 0x6f, 0x11, 0x57, 0x73, 0xec, 0x1d, 0x64, 0xad, 0xad, - 0xe6, 0x7a, 0x8c, 0xb1, 0xae, 0x5a, 0x5b, 0xde, 0xa3, 0x54, 0xf5, 0x04, 0x9a, 0xda, 0x32, 0xea, - 0x3d, 0x9d, 0xa3, 0x2c, 0x3f, 0x1d, 0x78, 0x66, 0x84, 0x2c, 0xf6, 0xde, 0x62, 0xd9, 0x6c, 0xc3, - 0x13, 0xa6, 0xf1, 0x57, 0xe6, 0x78, 0x60, 0x60, 0x27, 0xbb, 0x40, 0xd2, 0x22, 0x65, 0x7e, 0xa7, - 0x5d, 0x33, 0xe0, 0x4b, 0xbb, 0x69, 0x08, 0x7b, 0xc1, 0xe4, 0x40, 0x34, 0xaa, 0xdf, 0x98, 0x8d, - 0xbe, 0x73, 0xab, 0x9e, 0x66, 0xa2, 0x73, 0x59, 0xf1, 0x8c, 0x4c, 0x81, 0x24, 0x4a, 0xd9, 0xc1, - 0xcf, 0xc8, 0x4c, 0xc9, 0x82, 0x20, 0xee, 0xf5, 0x38, 0xa6, 0x1a, 0x7f, 0x90, 0xa9, 0x2b, 0x57, - 0x4f, 0xd9, 0xcc, 0xa2, 0xbd, 0x0c, 0x54, 0x17, 0x9d, 0x4c, 0x94, 0xc5, 0x6b, 0xb2, 0x60, 0x26, - 0x27, 0x5c, 0x2e, 0xa0, 0x41, 0x18, 0x52, 0xf7, 0x1a, 0xb1, 0x88, 0x85, 0xb6, 0x9d, 0x8e, 0x0e, - 0x3a, 0x89, 0x0a, 0x09, 0x43, 0x7f, 0xd0, 0x88, 0x46, 0x98, 0x85, 0xcc, 0xef, 0x7b, 0xce, 0x91, - 0xf3, 0x24, 0xcd, 0x1b, 0xd1, 0x34, 0x11, 0x24, 0x47, 0x60, 0x43, 0x67, 0x67, 0x33, 0x40, 0x42, - 0xb3, 0xe6, 0xd6, 0x35, 0x23, 0x89, 0xc8, 0x02, 0xa9, 0x5a, 0xd3, 0xa5, 0x64, 0x78, 0xa3, 0xd9, - 0x45, 0x74, 0x90, 0x95, 0x41, 0x9d, 0x01, 0xab, 0x91, 0xe4, 0x50, 0x26, 0x6b, 0xec, 0xa8, 0x01, - 0xa3, 0x16, 0x72, 0x08, 0xd2, 0x3e, 0xff, 0x6a, 0x56, 0x6d, 0x00, 0xd5, 0x5b, 0xe1, 0xaa, 0x7a, - 0x12, 0x74, 0xef, 0x45, 0x6e, 0xef, 0x31, 0xe8, 0x0e, 0x2c, 0x1d, 0xe1, 0xc7, 0x32, 0x96, 0xa5, - 0x2f, 0xfb, 0x0f, 0xe4, 0xff, 0x77, 0x44, 0x75, 0x1f, 0x50, 0x0e, 0x00, 0x00 + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0x8d, 0x58, 0x6d, 0x73, 0xdb, 0x36, + 0x12, 0xfe, 0xce, 0x5f, 0x01, 0x63, 0x3a, 0x2d, 0xd9, 0x50, 0x94, 0xe4, 0xde, 0x75, 0x3a, 0x16, + 0x49, 0x37, 0x6e, 0xdc, 0xda, 0x1d, 0x7b, 0xe2, 0x89, 0x72, 0xce, 0xdc, 0x5c, 0x3a, 0x29, 0x44, + 0xae, 0x44, 0xc4, 0x24, 0xc0, 0x01, 0x40, 0xd9, 0xae, 0xe2, 0xff, 0x7e, 0x0b, 0x90, 0x7a, 0xb5, + 0xe4, 0xe4, 0x8b, 0x25, 0x82, 0xfb, 0x86, 0xdd, 0x67, 0x9f, 0x5d, 0x39, 0x3e, 0x7a, 0xf3, 0xf6, + 0xb7, 0xf7, 0xff, 0xbd, 0x39, 0x27, 0x85, 0xa9, 0xca, 0x34, 0xb6, 0x7f, 0x49, 0xc9, 0xc4, 0x2c, + 0xa1, 0x20, 0x28, 0x3e, 0x03, 0xcb, 0xd3, 0xb8, 0x02, 0xc3, 0x48, 0x56, 0x30, 0xa5, 0xc1, 0x24, + 0xb4, 0x31, 0xd3, 0xde, 0x2f, 0xb4, 0x3b, 0xf5, 0x04, 0xab, 0x20, 0xa1, 0x73, 0x0e, 0xf7, 0xb5, + 0x54, 0x86, 0x92, 0x4c, 0x0a, 0x03, 0x02, 0xc5, 0xee, 0x79, 0x6e, 0x8a, 0xe4, 0xdf, 0x83, 0xc1, + 0x4a, 0x74, 0xe7, 0x55, 0x0e, 0x73, 0x9e, 0x41, 0xcf, 0x3d, 0x84, 0x5c, 0x70, 0xc3, 0x59, 0xd9, + 0xd3, 0x19, 0x2b, 0x21, 0x19, 0x86, 0x15, 0x7b, 0xe0, 0x55, 0x53, 0xad, 0x9e, 0x1b, 0x0d, 0xca, + 0x3d, 0xb0, 0x09, 0x3e, 0x0b, 0x49, 0x9f, 0x79, 0x4e, 0x63, 0xc3, 0x4d, 0x09, 0xe9, 0xf1, 0x1b, + 0x32, 0x06, 0xd3, 0x6b, 0xea, 0xb8, 0xdf, 0x1e, 0xc4, 0x3a, 0x53, 0xbc, 0x36, 0xa9, 0x37, 0x67, + 0x8a, 0x94, 0x32, 0xe3, 0x75, 0x98, 0x27, 0xb9, 0xcc, 0x9a, 0x0a, 0x83, 0x09, 0xf1, 0x20, 0x39, + 0x1a, 0x8e, 0xa6, 0x8d, 0xc8, 0x0c, 0x97, 0x82, 0x5c, 0xf8, 0xc1, 0xe2, 0x9e, 0x8b, 0x5c, 0xde, + 0x47, 0xb2, 0x06, 0xe1, 0xd3, 0xc2, 0x98, 0x5a, 0x9f, 0xf4, 0xfb, 0x77, 0x42, 0x46, 0xf7, 0x25, + 0xe4, 0xd1, 0x0c, 0xfa, 0x53, 0x60, 0xa6, 0x51, 0xa0, 0xfb, 0xc7, 0x6f, 0x68, 0xf0, 0xb4, 0xd2, + 0x3d, 0xdb, 0xd5, 0xed, 0x63, 0xc2, 0x0c, 0x17, 0x33, 0x4d, 0x43, 0xfa, 0x49, 0x43, 0x39, 0xdd, + 0x94, 0x9e, 0x5d, 0xe6, 0x3e, 0x04, 0x0b, 0x05, 0x68, 0x4a, 0x10, 0x6b, 0xd7, 0x9c, 0x97, 0x60, + 0x83, 0x3a, 0x7b, 0x74, 0xaf, 0xd6, 0xa2, 0xa5, 0x64, 0xf9, 0x9f, 0x63, 0x1f, 0x42, 0x91, 0x1c, + 0x0d, 0x82, 0x45, 0x09, 0x86, 0x98, 0x24, 0x8f, 0x32, 0x85, 0x71, 0x40, 0xa7, 0xe4, 0xd3, 0xf6, + 0x9e, 0x34, 0x18, 0x99, 0x08, 0xfd, 0xbe, 0x36, 0x46, 0xf1, 0x49, 0x63, 0x00, 0x5f, 0xa8, 0x8c, + 0x86, 0x10, 0x84, 0xbb, 0xe7, 0xe6, 0xb1, 0x06, 0x8c, 0xcc, 0xc0, 0x83, 0xe9, 0x7f, 0x66, 0x73, + 0xb6, 0x34, 0xf0, 0x4c, 0x90, 0xe9, 0x47, 0x81, 0x26, 0x44, 0x10, 0xe6, 0xd1, 0x44, 0xe6, 0x8f, + 0x11, 0xab, 0xf1, 0x7e, 0xf9, 0x6f, 0x05, 0x2f, 0x73, 0xdf, 0x58, 0x79, 0x96, 0xe7, 0xe7, 0x73, + 0x8c, 0xe2, 0x8a, 0x6b, 0xac, 0x31, 0x28, 0x9f, 0xda, 0x98, 0x69, 0xe8, 0x07, 0x49, 0xba, 0xf8, + 0x03, 0xcc, 0xad, 0x1f, 0x84, 0xff, 0xb9, 0xf4, 0x83, 0xa7, 0xfd, 0xc2, 0xa0, 0x94, 0x54, 0x18, + 0x23, 0x0a, 0x23, 0x4a, 0xb4, 0x2c, 0x21, 0x2a, 0xe5, 0xcc, 0xa7, 0xe7, 0xf6, 0x9c, 0x74, 0x19, + 0xc0, 0x44, 0x92, 0x29, 0x2f, 0xc1, 0xdd, 0x05, 0x61, 0xa1, 0xf0, 0xce, 0x57, 0xdd, 0xb9, 0x9c, + 0x5a, 0xe4, 0x4d, 0xf9, 0xac, 0x51, 0xcc, 0xa5, 0xac, 0xbd, 0x0b, 0x99, 0x32, 0x6e, 0x6b, 0xf6, + 0x51, 0x5c, 0x8a, 0x4c, 0x56, 0x35, 0x66, 0x0e, 0x48, 0xcd, 0x66, 0x40, 0x72, 0x66, 0xd8, 0x11, + 0x96, 0x63, 0x23, 0xcb, 0x63, 0x2c, 0x1f, 0xb5, 0x0e, 0x4e, 0x68, 0x92, 0x74, 0x75, 0x44, 0x78, + 0x38, 0x7b, 0x51, 0xad, 0xa4, 0x91, 0x99, 0x2c, 0xbf, 0xff, 0xde, 0x77, 0x90, 0x19, 0x84, 0xbe, + 0xc3, 0x52, 0x62, 0x25, 0xca, 0xb1, 0x91, 0x0a, 0xad, 0xda, 0x1a, 0x5e, 0x1a, 0xa8, 0xec, 0xed, + 0xb3, 0xcb, 0x9a, 0x06, 0xc1, 0x97, 0x2f, 0x9d, 0x18, 0xea, 0x57, 0x35, 0x06, 0xfc, 0x3b, 0xda, + 0x27, 0xd7, 0x32, 0x87, 0x88, 0xdc, 0x94, 0xc0, 0x34, 0x10, 0x4c, 0x04, 0x28, 0xf2, 0xe1, 0xea, + 0xfc, 0x0d, 0xb9, 0xbc, 0xc1, 0x90, 0xc2, 0x2d, 0x8b, 0x7a, 0xdb, 0x62, 0xe8, 0xac, 0x05, 0x81, + 0x95, 0x72, 0x98, 0xb0, 0xe6, 0x4f, 0x1d, 0x48, 0x11, 0xa3, 0xf4, 0x95, 0x7b, 0x7d, 0x42, 0x69, + 0xf0, 0x6a, 0x0d, 0xbe, 0xbe, 0x8e, 0x3e, 0xeb, 0xd3, 0x3a, 0x19, 0x0e, 0x68, 0x78, 0x34, 0x0c, + 0x9e, 0x6c, 0x1f, 0x60, 0x7f, 0xdd, 0x30, 0x01, 0xa5, 0x4e, 0x7e, 0xfe, 0xd7, 0x1a, 0xfc, 0x58, + 0x21, 0xc0, 0x6e, 0x08, 0x16, 0x7c, 0xea, 0xd3, 0x01, 0x66, 0x21, 0xb1, 0x20, 0xa5, 0x1a, 0x43, + 0xa7, 0x41, 0x34, 0x67, 0x65, 0x03, 0x41, 0x87, 0x57, 0xf7, 0xa2, 0xaa, 0x73, 0x3e, 0xc7, 0x37, + 0xda, 0x3c, 0x62, 0xc5, 0x72, 0xae, 0xeb, 0x92, 0x3d, 0x26, 0x54, 0x48, 0x81, 0x45, 0x9a, 0x4b, + 0x9e, 0x13, 0x6c, 0x12, 0x30, 0xad, 0x27, 0x3f, 0x18, 0xbd, 0xa4, 0x34, 0xc1, 0xd0, 0xef, 0x68, + 0xb8, 0x0e, 0xac, 0xb6, 0x7c, 0x73, 0x89, 0xc0, 0xce, 0xa3, 0xf1, 0x34, 0xba, 0xbe, 0xb9, 0xe8, + 0x02, 0xf8, 0x71, 0xf7, 0xc5, 0x6d, 0xf7, 0x62, 0x64, 0xfb, 0x42, 0xb4, 0x21, 0xd7, 0xce, 0x06, + 0x7a, 0xc9, 0x2c, 0x46, 0x15, 0x88, 0xa8, 0x04, 0x31, 0x33, 0xc5, 0x08, 0x6f, 0x26, 0xe2, 0x95, + 0x93, 0x60, 0x2a, 0x95, 0x6f, 0xd5, 0x90, 0x53, 0x46, 0xb0, 0x3e, 0x1f, 0xc1, 0xab, 0x57, 0x01, + 0xc2, 0xd4, 0x3d, 0x61, 0x2b, 0x3a, 0xb5, 0xf4, 0x80, 0x5a, 0xba, 0xa1, 0xd6, 0xeb, 0x61, 0x82, + 0xaa, 0x56, 0x6d, 0x03, 0x5a, 0x4b, 0x53, 0x98, 0x84, 0x45, 0xab, 0x77, 0xe8, 0x76, 0xd8, 0xe2, + 0x07, 0xef, 0xb7, 0xf4, 0x6a, 0x92, 0xc1, 0xc8, 0xc4, 0xf0, 0xa3, 0x18, 0x99, 0xcd, 0x30, 0xcd, + 0x1e, 0x87, 0x58, 0xcf, 0x8e, 0x30, 0x76, 0x12, 0xe3, 0x6e, 0xb4, 0x9b, 0x9d, 0x34, 0x59, 0x5f, + 0xb1, 0xad, 0xf3, 0xa8, 0xf5, 0xf7, 0x77, 0x8c, 0x35, 0x23, 0x3c, 0x4f, 0x68, 0x2d, 0xca, 0xef, + 0x16, 0xf0, 0x44, 0xd3, 0xef, 0x16, 0x03, 0xc4, 0x07, 0x9c, 0x52, 0x7a, 0xf2, 0x43, 0x5c, 0x28, + 0xe2, 0xca, 0xd9, 0x71, 0xfb, 0xc9, 0xf1, 0xcf, 0x83, 0xfa, 0x81, 0xa6, 0x3f, 0x3c, 0x39, 0x63, + 0xc4, 0x6a, 0xc4, 0x13, 0x95, 0x0e, 0x63, 0xdd, 0xd4, 0xa9, 0x36, 0x71, 0xdf, 0x7e, 0x12, 0x84, + 0xfc, 0x09, 0x89, 0x91, 0x17, 0x21, 0xc3, 0xf8, 0x1c, 0x9d, 0xdf, 0x58, 0xd1, 0x33, 0x9a, 0x7e, + 0x14, 0x1f, 0x4d, 0x2c, 0x6b, 0x77, 0x17, 0x77, 0xfb, 0x04, 0xf1, 0x98, 0xbe, 0x97, 0xc8, 0xea, + 0xed, 0xe9, 0x3e, 0x89, 0x21, 0x4d, 0xcf, 0xa4, 0x31, 0xb2, 0xda, 0x10, 0x42, 0x57, 0xce, 0x7e, + 0xba, 0xc7, 0xcf, 0xbb, 0x43, 0x7e, 0xae, 0x60, 0x6a, 0xbe, 0xe2, 0xe8, 0x1d, 0x9f, 0x15, 0x66, + 0xaf, 0x1f, 0xbc, 0xe7, 0x47, 0xf1, 0x56, 0x71, 0xec, 0x6b, 0x47, 0x1d, 0x7b, 0xaf, 0x78, 0x7b, + 0xc8, 0xf5, 0x85, 0x54, 0xfc, 0x1f, 0x1c, 0x94, 0xac, 0xfc, 0x4a, 0x00, 0xb7, 0xc8, 0x7f, 0x3c, + 0xdb, 0x12, 0xdb, 0x89, 0x61, 0x0c, 0x0a, 0x59, 0x1a, 0x29, 0x00, 0x30, 0x04, 0x2e, 0xea, 0x06, + 0x2b, 0x89, 0x8c, 0x9f, 0xd0, 0xac, 0x80, 0xec, 0x6e, 0x22, 0x1f, 0xe8, 0x66, 0x44, 0x63, 0x9c, + 0xa0, 0x7d, 0xac, 0x72, 0xfa, 0xf7, 0x48, 0x44, 0x5c, 0xe0, 0xbc, 0x35, 0xaf, 0xf3, 0xcf, 0x2c, + 0x43, 0x0b, 0x17, 0xef, 0xaf, 0xaf, 0x7c, 0x3a, 0x01, 0xc4, 0x1f, 0x20, 0xed, 0xd3, 0x70, 0x13, + 0x69, 0x6b, 0xb8, 0x77, 0xc8, 0xde, 0xdf, 0x7f, 0x23, 0xcb, 0x3a, 0x22, 0x81, 0x65, 0x1f, 0x8a, + 0x38, 0x19, 0x7e, 0xf9, 0x02, 0xff, 0x13, 0xbd, 0xe1, 0x5f, 0x11, 0xda, 0x90, 0x73, 0xf0, 0xb7, + 0xac, 0x6e, 0xf0, 0xc6, 0x62, 0xbb, 0x47, 0x70, 0x1d, 0xd8, 0xee, 0x8c, 0x64, 0xb8, 0x6a, 0x0d, + 0xb0, 0x93, 0x60, 0x7f, 0x04, 0x01, 0xec, 0xf1, 0x33, 0x31, 0x62, 0xd9, 0xe3, 0x8b, 0x56, 0x4d, + 0x94, 0x9f, 0xb0, 0x79, 0x9e, 0xf1, 0xd3, 0x06, 0x39, 0x9c, 0x52, 0x2e, 0x4a, 0xcc, 0x2a, 0x3d, + 0xe9, 0x98, 0x6e, 0xa5, 0x88, 0xf6, 0x9f, 0x2b, 0xa6, 0xc3, 0x5d, 0x85, 0x27, 0x0f, 0x2b, 0xd5, + 0x2e, 0x25, 0xb1, 0x13, 0x4e, 0x7f, 0xe5, 0x95, 0x5d, 0x62, 0x48, 0xa3, 0x4a, 0xa4, 0x5b, 0xa7, + 0x9f, 0x69, 0xdb, 0xa5, 0x28, 0xe8, 0x04, 0xe2, 0x7e, 0xbb, 0x8a, 0xd9, 0xe9, 0x8b, 0xf3, 0xd0, + 0x92, 0x7f, 0x42, 0x71, 0x60, 0x61, 0xd1, 0xf0, 0xea, 0x95, 0xe7, 0x7a, 0xd3, 0x7e, 0xfb, 0xa4, + 0x97, 0x55, 0x1d, 0x4f, 0x29, 0xc1, 0xc5, 0xab, 0x90, 0xb6, 0x6b, 0xa5, 0xb6, 0x1b, 0x92, 0x6d, + 0xe2, 0xac, 0x64, 0x5a, 0x27, 0xd4, 0x48, 0x9c, 0x48, 0xf7, 0xdb, 0x67, 0x05, 0x94, 0x35, 0xf6, + 0x9e, 0x17, 0xe3, 0xd4, 0x37, 0x98, 0x9c, 0x16, 0x2d, 0xed, 0x03, 0x45, 0xaf, 0x59, 0xc9, 0xb3, + 0xbb, 0x84, 0x5e, 0x58, 0xb7, 0xa7, 0x71, 0xbf, 0x7d, 0xd1, 0xa1, 0x66, 0xbf, 0x8e, 0xb7, 0x52, + 0x3a, 0xb3, 0x4a, 0x67, 0x2c, 0xbb, 0x5b, 0xeb, 0x6d, 0x69, 0xe8, 0x66, 0x52, 0x71, 0x8c, 0x71, + 0xcc, 0xe6, 0xb0, 0x16, 0x29, 0xd4, 0xd2, 0x7c, 0x71, 0x9c, 0x7a, 0xb8, 0xda, 0x21, 0x2a, 0xec, + 0x66, 0x87, 0x4f, 0x63, 0xdc, 0x4e, 0x6a, 0x82, 0xdb, 0x81, 0x2b, 0xf4, 0xba, 0xc9, 0x6c, 0x22, + 0xdc, 0xc0, 0x5a, 0xa6, 0xe1, 0xed, 0xf5, 0x4d, 0x1b, 0x48, 0x81, 0x7b, 0x2d, 0x1e, 0x6c, 0x41, + 0x2b, 0xdc, 0x60, 0x66, 0xb7, 0xa0, 0x60, 0x46, 0x9e, 0xf5, 0xe4, 0x10, 0x57, 0x4a, 0xeb, 0x6d, + 0xd5, 0x6a, 0xde, 0xf3, 0x76, 0xc4, 0xd8, 0xae, 0x19, 0x0a, 0x3d, 0xac, 0x84, 0xb6, 0xba, 0x71, + 0xc5, 0x9f, 0xed, 0xf4, 0x23, 0x5e, 0x47, 0x97, 0x1d, 0x4a, 0x4e, 0x1c, 0x2e, 0xf0, 0x96, 0x3f, + 0x6d, 0x1a, 0xc2, 0xa7, 0x96, 0x3f, 0x73, 0x8e, 0x1b, 0x9e, 0x46, 0xa3, 0x9a, 0xf8, 0x1f, 0x1e, + 0x2e, 0x82, 0x55, 0x3f, 0x77, 0xfd, 0xfb, 0x01, 0x0d, 0xb6, 0x69, 0x14, 0x4d, 0x35, 0x01, 0x85, + 0x85, 0xe7, 0xc2, 0x86, 0x65, 0xe7, 0x3c, 0x7e, 0x1e, 0xff, 0x42, 0x97, 0xa1, 0xe2, 0xe6, 0x4e, + 0x1e, 0x76, 0xd4, 0x2f, 0x28, 0xd9, 0xd6, 0xf6, 0x5e, 0x52, 0xb7, 0xd7, 0x59, 0xb3, 0x54, 0x9b, + 0x7e, 0xbd, 0x13, 0xd1, 0xb5, 0xb5, 0xf9, 0x52, 0x48, 0x6b, 0x8b, 0x43, 0x8b, 0x2c, 0xa7, 0x9b, + 0xd0, 0xb6, 0x00, 0x64, 0x49, 0x6d, 0xbb, 0xb6, 0xbd, 0xa5, 0xf1, 0xdb, 0xdd, 0x80, 0xbf, 0xd9, + 0xf6, 0xe6, 0x14, 0xf2, 0xba, 0x31, 0xb4, 0x03, 0xa0, 0x2e, 0x29, 0x67, 0xfb, 0x90, 0xb0, 0x39, + 0x80, 0x9e, 0x63, 0xc0, 0xdb, 0x99, 0x3e, 0x87, 0x66, 0xcf, 0xbb, 0x7d, 0xa6, 0xb7, 0x66, 0x4e, + 0xf7, 0xda, 0x3b, 0x38, 0x70, 0xb6, 0xc0, 0xf5, 0xd2, 0xb0, 0xb9, 0x5d, 0xfb, 0xf2, 0x5e, 0x9c, + 0x32, 0xdf, 0x30, 0x61, 0xb6, 0x9c, 0x7a, 0xdf, 0x3e, 0x5e, 0xec, 0x68, 0x39, 0xb0, 0x21, 0xc4, + 0x3c, 0xf5, 0x5e, 0x63, 0xd9, 0x2c, 0xe0, 0x09, 0xd7, 0xf8, 0x2d, 0x77, 0x14, 0x3e, 0xb4, 0x9d, + 0x5d, 0xe1, 0xbc, 0x21, 0x75, 0xf1, 0xa8, 0x1d, 0x18, 0x70, 0x8f, 0xef, 0x00, 0x61, 0x05, 0x4c, + 0x01, 0x44, 0xa3, 0xf9, 0x8d, 0xde, 0x88, 0x5c, 0x58, 0x6d, 0x37, 0x13, 0x5d, 0xc8, 0xa6, 0xcc, + 0xc9, 0x04, 0x08, 0x53, 0xca, 0x36, 0x7e, 0x4e, 0xa6, 0xb8, 0x82, 0x13, 0xe4, 0xbd, 0x5e, 0x89, + 0xa9, 0xc6, 0x2f, 0x64, 0xe2, 0xca, 0xd5, 0x53, 0x36, 0xb3, 0xe8, 0x2f, 0x07, 0x15, 0x62, 0x90, + 0x4c, 0xd9, 0xad, 0x99, 0xdc, 0x73, 0x53, 0xe0, 0xcf, 0x8e, 0x7b, 0xe8, 0x18, 0x86, 0xb4, 0x58, + 0xb3, 0x3f, 0x46, 0xac, 0x6f, 0x67, 0xc3, 0xc7, 0x20, 0xd1, 0x20, 0xe1, 0x18, 0x0f, 0x3a, 0xd1, + 0x48, 0xb3, 0x90, 0x07, 0x91, 0xe7, 0x02, 0x39, 0x67, 0x59, 0xd1, 0xa9, 0x66, 0x4c, 0x90, 0x02, + 0x89, 0x0d, 0x83, 0x9d, 0x4e, 0x01, 0x67, 0x91, 0x75, 0xb7, 0xaa, 0x19, 0x61, 0x22, 0xef, 0x4b, + 0xb5, 0x76, 0x5d, 0x4b, 0x8e, 0x12, 0xdd, 0x29, 0xb2, 0x83, 0x6c, 0x0c, 0xda, 0xec, 0xf3, 0x96, + 0x49, 0x0e, 0x65, 0xb2, 0xe5, 0x8e, 0x96, 0x30, 0x5a, 0x25, 0xc7, 0x20, 0xeb, 0xcd, 0xad, 0x1d, + 0x88, 0x1d, 0xa1, 0x7a, 0x4b, 0x5e, 0x55, 0xe9, 0x57, 0xe8, 0xfe, 0x30, 0x73, 0x7b, 0x2f, 0x51, + 0x77, 0xdf, 0x4e, 0x23, 0xfc, 0xb0, 0x13, 0xcb, 0x8e, 0x2f, 0xfb, 0xff, 0x85, 0xff, 0x03, 0xf0, + 0x4e, 0xfb, 0x34, 0x6f, 0x10, 0x00, 0x00 }; diff --git a/wled00/html_ui.h b/wled00/html_ui.h index 8372bbd6..c5381967 100644 --- a/wled00/html_ui.h +++ b/wled00/html_ui.h @@ -7,1771 +7,1778 @@ */ // Autogenerated from wled00/data/index.htm, do not edit!! -const uint16_t PAGE_index_L = 28231; +const uint16_t PAGE_index_L = 28346; const uint8_t PAGE_index[] PROGMEM = { - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xdc, 0x7d, 0x69, 0x7b, 0xe2, 0xb8, - 0xd2, 0xe8, 0xf7, 0xfc, 0x0a, 0xb7, 0x7b, 0xa6, 0x1b, 0x0f, 0x0e, 0x98, 0x35, 0x04, 0x9a, 0xe4, - 0x90, 0x7d, 0xdf, 0xc8, 0xde, 0xb7, 0x9f, 0xb7, 0x0d, 0x18, 0x70, 0x62, 0x6c, 0xc7, 0x36, 0x5b, - 0x68, 0xee, 0x6f, 0xbf, 0x55, 0x92, 0x6c, 0xcb, 0xc6, 0x24, 0xe9, 0x99, 0x79, 0xef, 0x36, 0xe7, - 0x74, 0xb0, 0xe5, 0xd2, 0x56, 0x2a, 0x95, 0xaa, 0x4a, 0xa5, 0xd2, 0xb7, 0x4f, 0x3b, 0xe7, 0xdb, - 0xd7, 0x0f, 0x17, 0xbb, 0x42, 0xdf, 0x1b, 0x18, 0x1b, 0xc2, 0x37, 0xfc, 0x11, 0x0c, 0xd5, 0xec, - 0xd5, 0x45, 0xcd, 0x14, 0x31, 0x41, 0x53, 0x3b, 0xf0, 0x33, 0xd0, 0x3c, 0x55, 0x30, 0xd5, 0x81, - 0x56, 0x17, 0x47, 0xba, 0x36, 0xb6, 0x2d, 0xc7, 0x13, 0x85, 0x95, 0xb6, 0x65, 0x7a, 0x9a, 0xe9, - 0xd5, 0xc5, 0xb1, 0xde, 0xf1, 0xfa, 0xf5, 0x8e, 0x36, 0xd2, 0xdb, 0xda, 0x2a, 0x79, 0x91, 0x75, - 0x53, 0xf7, 0x74, 0xd5, 0x58, 0x75, 0xdb, 0xaa, 0xa1, 0xd5, 0x73, 0xf2, 0x00, 0x12, 0x06, 0xc3, - 0x81, 0xff, 0x2e, 0xfa, 0x85, 0xae, 0xb4, 0xfb, 0xaa, 0xe3, 0x6a, 0x50, 0xc8, 0xd0, 0xeb, 0xae, - 0x56, 0xc4, 0x68, 0x65, 0x5e, 0x5f, 0x1b, 0x68, 0xab, 0x6d, 0xcb, 0xb0, 0x1c, 0x51, 0x08, 0xaa, - 0xfb, 0x9c, 0x27, 0xff, 0x71, 0x65, 0xf8, 0x5f, 0xa6, 0x9a, 0x2b, 0xb2, 0xac, 0xaa, 0x6d, 0x1b, - 0xda, 0xea, 0xc0, 0x6a, 0xe9, 0xf0, 0x33, 0xd6, 0x5a, 0xab, 0x90, 0xb0, 0xda, 0x56, 0x6d, 0xb5, - 0x65, 0x68, 0x98, 0xd3, 0xd0, 0xcd, 0x67, 0xc1, 0xd1, 0x8c, 0xba, 0xe8, 0xf6, 0xa1, 0x3b, 0xed, - 0xa1, 0x27, 0xe8, 0x50, 0x0e, 0x74, 0xab, 0xef, 0x68, 0xdd, 0xba, 0xd8, 0x51, 0x3d, 0xb5, 0xaa, - 0x0f, 0xd4, 0x9e, 0x96, 0x9d, 0xac, 0xe2, 0x97, 0x5a, 0x4b, 0x75, 0xb5, 0x72, 0x51, 0x6e, 0x34, - 0x1a, 0x5b, 0x8d, 0xc6, 0x6e, 0x63, 0x17, 0xfe, 0xe2, 0xef, 0x7e, 0x63, 0x7b, 0x1f, 0x9f, 0xf6, - 0x7a, 0xf0, 0xe7, 0xd0, 0xb8, 0xbc, 0x7e, 0x6e, 0x9f, 0x6d, 0xf7, 0xad, 0x63, 0x4c, 0xdb, 0xb9, - 0x31, 0x0e, 0xaf, 0xf6, 0x0e, 0xf1, 0xf1, 0x92, 0x42, 0xf7, 0x08, 0xec, 0x41, 0xf6, 0x22, 0xfb, - 0x80, 0x29, 0xbb, 0xb9, 0xa3, 0xab, 0xdd, 0xbd, 0x9b, 0xf3, 0xc3, 0xdc, 0x13, 0x24, 0x65, 0x2f, - 0xc6, 0xe7, 0x93, 0xde, 0xd9, 0xbe, 0xd6, 0xb8, 0x39, 0x9d, 0xec, 0xae, 0xef, 0x97, 0xdb, 0x97, - 0xdb, 0xc7, 0x3b, 0x77, 0x8d, 0xbe, 0xdd, 0xd8, 0x79, 0xcc, 0x77, 0x2b, 0x17, 0xa7, 0x4f, 0x5b, - 0xcd, 0xc2, 0xe5, 0x9d, 0x52, 0xb9, 0x3c, 0xce, 0x2b, 0xc7, 0xea, 0xe3, 0x76, 0xbe, 0xd7, 0xdd, - 0x5e, 0xef, 0x6f, 0x9b, 0x2f, 0xd6, 0xd0, 0x3a, 0xeb, 0x35, 0xae, 0x7a, 0x0f, 0x6b, 0xaf, 0xa7, - 0x93, 0xc6, 0xf4, 0xcc, 0xb8, 0xe9, 0x5c, 0x1e, 0x18, 0xf7, 0x7a, 0xc3, 0x38, 0xcf, 0x9f, 0xee, - 0x34, 0x76, 0xca, 0x85, 0xdd, 0xdb, 0x97, 0xb3, 0x83, 0x86, 0xa6, 0x34, 0x48, 0x43, 0x8c, 0xbd, - 0xeb, 0xe7, 0xe6, 0xf0, 0x72, 0xb0, 0xbd, 0x2d, 0x6e, 0xac, 0x08, 0xdf, 0x3c, 0xdd, 0x33, 0xb4, - 0x8d, 0xbb, 0x93, 0xdd, 0x9d, 0x6f, 0x59, 0xfa, 0x2c, 0x7c, 0x73, 0xdb, 0x8e, 0x6e, 0x7b, 0x1b, - 0x2b, 0xdd, 0xa1, 0xd9, 0xf6, 0x74, 0xcb, 0x14, 0xba, 0x9a, 0xd6, 0x69, 0xa9, 0xed, 0xe7, 0x94, - 0x34, 0x9b, 0x8f, 0x54, 0x47, 0x80, 0x21, 0xb7, 0xda, 0xc3, 0x01, 0x60, 0x3e, 0xd3, 0xd3, 0xbc, - 0x5d, 0x43, 0xc3, 0x47, 0x77, 0x6b, 0x7a, 0xad, 0xf6, 0xce, 0x60, 0x0c, 0x52, 0x22, 0x52, 0x8f, - 0x28, 0x7d, 0x57, 0x7e, 0xc8, 0x46, 0x08, 0xda, 0x76, 0x34, 0xd5, 0xd3, 0x18, 0x74, 0x4a, 0xa4, - 0xb5, 0x88, 0x52, 0xcd, 0xc8, 0x78, 0x53, 0x9b, 0x0d, 0x9c, 0xde, 0x56, 0xb1, 0xc6, 0xec, 0x93, - 0x3a, 0x52, 0x19, 0x80, 0x6c, 0x64, 0x5c, 0xa7, 0x5d, 0x17, 0x75, 0xc7, 0xca, 0x3c, 0xb9, 0xf8, - 0xaa, 0x76, 0x3a, 0xbb, 0x23, 0x28, 0xe3, 0x44, 0x77, 0x61, 0xf4, 0x35, 0x27, 0x25, 0x1a, 0x16, - 0xd4, 0x27, 0x6b, 0xf5, 0x8d, 0x59, 0xdb, 0xd6, 0xdb, 0xcf, 0x75, 0x53, 0x1b, 0x0b, 0x08, 0xbf, - 0x8d, 0x04, 0x74, 0x01, 0x29, 0x08, 0xf4, 0xd9, 0x26, 0x0f, 0xa2, 0x3c, 0x23, 0x94, 0x5a, 0xcd, - 0x97, 0x15, 0x79, 0xdc, 0xd7, 0x34, 0xe3, 0x44, 0xef, 0xf5, 0x3d, 0x53, 0x73, 0xdd, 0xea, 0xa7, - 0x1c, 0x4d, 0x69, 0x98, 0x3d, 0x43, 0xab, 0xe6, 0xd7, 0x18, 0xc0, 0x8e, 0xee, 0x68, 0x04, 0x13, - 0x55, 0xb1, 0x6d, 0x58, 0xed, 0xe7, 0xb1, 0xee, 0x6a, 0xd0, 0x10, 0x75, 0x6a, 0x0d, 0xbd, 0xea, - 0xf7, 0x59, 0xdb, 0x1a, 0xd8, 0x96, 0x09, 0x0d, 0xaa, 0x62, 0x9d, 0x43, 0x3d, 0x73, 0x87, 0x99, - 0x64, 0xcb, 0xc6, 0x2c, 0x6e, 0x75, 0x36, 0x9f, 0xff, 0x98, 0x4b, 0x32, 0x69, 0x59, 0xc6, 0x32, - 0x53, 0xa2, 0x6e, 0xda, 0x90, 0x4f, 0x33, 0xa1, 0xc9, 0x29, 0x09, 0xda, 0x0c, 0xb3, 0x80, 0x34, - 0x34, 0x95, 0x93, 0x22, 0x70, 0x84, 0xfc, 0xab, 0x30, 0x4f, 0xcc, 0x9e, 0xc6, 0x40, 0x87, 0x36, - 0x90, 0xa7, 0x76, 0xd1, 0x34, 0xf4, 0x8e, 0xe6, 0xb8, 0x29, 0x80, 0xaf, 0xe1, 0x80, 0x78, 0xef, - 0x63, 0xd9, 0x7b, 0x07, 0xcb, 0x1e, 0xc5, 0xb2, 0x83, 0x95, 0x79, 0xd6, 0xb0, 0xdd, 0x27, 0xc8, - 0xf6, 0xde, 0x44, 0x36, 0x01, 0x76, 0xeb, 0x57, 0xf8, 0x73, 0x4d, 0xf2, 0x40, 0x57, 0x86, 0x76, - 0xea, 0x2b, 0xe9, 0xe1, 0x77, 0x5a, 0x21, 0x01, 0x12, 0x7f, 0x7c, 0x95, 0x67, 0xd0, 0x58, 0x43, - 0xf3, 0xa0, 0xb1, 0x00, 0x75, 0x08, 0x13, 0xd7, 0x19, 0xa9, 0x46, 0x8a, 0x74, 0x4b, 0x44, 0x14, - 0xc2, 0x37, 0x4d, 0xac, 0xd7, 0xc3, 0xae, 0x40, 0x4f, 0x3a, 0xd3, 0xa6, 0x07, 0xdd, 0xf9, 0xf2, - 0x25, 0xd5, 0x36, 0x34, 0xd5, 0x09, 0x72, 0x79, 0x92, 0x6c, 0x99, 0x27, 0xd0, 0x90, 0x94, 0x24, - 0xcd, 0xe5, 0x9c, 0xa2, 0x20, 0xe6, 0xa0, 0xd8, 0x6b, 0x7d, 0xa0, 0xc1, 0xa0, 0xd0, 0x52, 0xfb, - 0x19, 0xe8, 0x2c, 0xa0, 0x79, 0xbb, 0xaf, 0x1b, 0x1d, 0xc8, 0x32, 0x97, 0x4b, 0x1f, 0x80, 0x33, - 0x28, 0xdc, 0xca, 0xb7, 0x2c, 0x9b, 0x07, 0x30, 0x21, 0xbc, 0x29, 0x4c, 0x8c, 0x95, 0xff, 0x74, - 0x81, 0xdd, 0xac, 0x76, 0xd5, 0xb6, 0x36, 0x63, 0x4f, 0x03, 0xdd, 0x98, 0x56, 0xef, 0x0e, 0x81, - 0x49, 0xb8, 0x35, 0x40, 0x5f, 0x75, 0xe8, 0x18, 0x29, 0xc2, 0x3f, 0xf0, 0x7b, 0x76, 0x6c, 0x75, - 0xbb, 0xf9, 0x9a, 0xcf, 0xe7, 0x08, 0x9b, 0xf3, 0x79, 0x49, 0x47, 0x59, 0xdf, 0x3f, 0xed, 0x35, - 0x08, 0x27, 0x69, 0x34, 0xcc, 0x9b, 0x46, 0xc3, 0xa5, 0xd3, 0x33, 0x87, 0x7f, 0x07, 0x7b, 0x8d, - 0xc6, 0xfe, 0xe3, 0xa0, 0xd7, 0x58, 0xfa, 0xdf, 0xd6, 0xa0, 0xd1, 0xe8, 0xdd, 0x8f, 0xaf, 0xb6, - 0x1b, 0x2f, 0xed, 0x87, 0xa3, 0xc7, 0xc3, 0xc6, 0xf5, 0xc3, 0xf6, 0x51, 0xe3, 0x6c, 0xbc, 0xfd, - 0x6a, 0x35, 0xb6, 0xb6, 0x81, 0x25, 0x8d, 0x1f, 0x0e, 0x0e, 0xb7, 0xdc, 0xb5, 0x9d, 0x8a, 0x7e, - 0x3e, 0x7e, 0xed, 0x0d, 0x0a, 0xa7, 0xf7, 0xa7, 0xe6, 0xeb, 0xe3, 0xf6, 0xb3, 0x67, 0x3e, 0xb5, - 0x5b, 0x67, 0xe9, 0x4b, 0xe3, 0xe8, 0x44, 0x3d, 0x2a, 0x0c, 0x8d, 0x9b, 0x13, 0xdb, 0xb0, 0xef, - 0xca, 0x37, 0x2f, 0x77, 0xba, 0xa5, 0x35, 0xd7, 0x73, 0x47, 0x53, 0x4d, 0x79, 0xba, 0x31, 0x8e, - 0xc6, 0x8f, 0x4e, 0xc9, 0xbc, 0xee, 0xec, 0x16, 0x4e, 0x4c, 0xaf, 0x73, 0x31, 0x6a, 0xf4, 0xd2, - 0x5d, 0x2f, 0xdb, 0x6d, 0xb9, 0x27, 0xee, 0xbe, 0x71, 0x76, 0x32, 0xec, 0x1b, 0x83, 0xcb, 0xa7, - 0x63, 0x7d, 0xed, 0xec, 0x62, 0x67, 0xf7, 0xb0, 0x37, 0xbe, 0x1e, 0x00, 0x0f, 0x53, 0xcb, 0x83, - 0x8e, 0x91, 0x6e, 0x1e, 0xdc, 0x6c, 0xf5, 0x77, 0x0f, 0x3b, 0x07, 0x7b, 0x13, 0xf5, 0x79, 0xcd, - 0x2d, 0xee, 0x66, 0xa7, 0xaf, 0xfd, 0xa3, 0xe6, 0xd3, 0xf6, 0xda, 0xd6, 0xe5, 0xe5, 0x49, 0x77, - 0x67, 0x6c, 0xd9, 0x7b, 0x59, 0xbd, 0xac, 0xbe, 0x34, 0x77, 0x8d, 0xdd, 0xbd, 0x9d, 0xfb, 0x49, - 0xe5, 0xf1, 0xf6, 0xee, 0x69, 0x5a, 0x70, 0xa6, 0x83, 0xe2, 0x59, 0x79, 0xcf, 0x78, 0xbc, 0x2c, - 0xf6, 0x87, 0x69, 0xf3, 0xde, 0xdd, 0x3f, 0xdc, 0x39, 0xbd, 0xdc, 0x2b, 0xf4, 0x1a, 0x13, 0x35, - 0x57, 0x6c, 0xf4, 0x1a, 0x8e, 0x77, 0x7b, 0xda, 0xef, 0x3e, 0xf7, 0x9e, 0xba, 0xbb, 0x8d, 0x96, - 0xbe, 0xdd, 0x1f, 0x0f, 0x9b, 0x87, 0xe3, 0xdd, 0x9b, 0xed, 0xc1, 0xb0, 0x73, 0xd1, 0xd7, 0x2f, - 0x3b, 0xd7, 0x65, 0x67, 0x74, 0xf8, 0x74, 0xd2, 0xbc, 0x7a, 0xdc, 0x1d, 0xef, 0xf4, 0xf7, 0xd6, - 0xb7, 0x0e, 0x5d, 0xcb, 0x3a, 0x2c, 0x15, 0xae, 0x0f, 0xaf, 0x0e, 0xad, 0xc3, 0x9b, 0x9d, 0xca, - 0xf3, 0xf4, 0xec, 0xf1, 0x70, 0xed, 0xe6, 0xa9, 0x31, 0x3d, 0x75, 0xae, 0xb2, 0xea, 0x69, 0x76, - 0x67, 0xac, 0x9e, 0xdb, 0xd6, 0xab, 0xda, 0x5f, 0x3f, 0xd9, 0xdf, 0x76, 0x1f, 0xf2, 0xaf, 0x67, - 0xf9, 0x87, 0xf3, 0x57, 0x37, 0x7f, 0x52, 0x98, 0xbc, 0x68, 0x67, 0x76, 0xf1, 0xf5, 0xfe, 0xe9, - 0xa5, 0xd2, 0xba, 0xbf, 0xce, 0xf6, 0x4f, 0xb7, 0x4e, 0x9e, 0xb2, 0xa5, 0xc2, 0xc3, 0x4e, 0xe3, - 0xb0, 0x99, 0x5e, 0x1b, 0x96, 0xcb, 0x15, 0xb3, 0x70, 0x90, 0x3e, 0xb8, 0xba, 0xe8, 0x3c, 0x76, - 0x72, 0xc3, 0xc2, 0xf5, 0x6b, 0xe7, 0xea, 0xb1, 0x73, 0x7b, 0x7a, 0xdd, 0x3d, 0x34, 0x4a, 0x07, - 0xdd, 0xe3, 0x5e, 0x27, 0xd7, 0x5a, 0x6b, 0x8e, 0x5e, 0x3a, 0xeb, 0x77, 0xeb, 0x43, 0xdb, 0xe9, - 0x5c, 0x54, 0x2e, 0xaf, 0xcf, 0x07, 0x9a, 0xfa, 0x5a, 0xba, 0xbe, 0x38, 0xbf, 0x3a, 0x32, 0x76, - 0x76, 0x9e, 0x0e, 0x6e, 0x9f, 0xf6, 0x95, 0xc6, 0xd9, 0xe9, 0xe5, 0x83, 0x3b, 0xb8, 0x72, 0x8e, - 0x8d, 0x81, 0x3d, 0x7d, 0xb9, 0x5d, 0x7b, 0x1e, 0xb6, 0x0e, 0x2f, 0xb7, 0xf3, 0xfb, 0xcd, 0xc3, - 0xe7, 0xbd, 0x66, 0xfa, 0xd4, 0xd4, 0xb6, 0x8f, 0x8a, 0x95, 0xa3, 0xa3, 0xbd, 0xdb, 0xed, 0xfe, - 0x65, 0x77, 0x38, 0x3e, 0x3e, 0xb5, 0xf3, 0xd3, 0x9b, 0x75, 0x7b, 0xf0, 0x92, 0xbb, 0x3d, 0xbe, - 0xb9, 0x2a, 0x3b, 0x9a, 0xa7, 0xec, 0xdb, 0x4a, 0xf3, 0xe9, 0xf6, 0xe1, 0xea, 0x6a, 0x2f, 0x7d, - 0xff, 0xb4, 0x96, 0x3e, 0xd7, 0x6f, 0x9a, 0xcf, 0xd9, 0xfd, 0xc3, 0xd7, 0x61, 0x6e, 0xa0, 0x1f, - 0x3c, 0xde, 0x4d, 0xd2, 0xbd, 0xca, 0x43, 0xee, 0xea, 0xe6, 0xd9, 0xbb, 0x18, 0xbc, 0x1c, 0xea, - 0xde, 0xd5, 0xf5, 0xfd, 0xed, 0xd9, 0xeb, 0xeb, 0xb6, 0x37, 0xdc, 0xbb, 0x38, 0x6e, 0x1f, 0x28, - 0xaf, 0x57, 0x5b, 0xfb, 0xe9, 0x87, 0xf5, 0xec, 0xb6, 0xd9, 0xdf, 0x52, 0xf3, 0xca, 0xa8, 0x64, - 0x1d, 0x74, 0xdd, 0xdd, 0x9b, 0xd3, 0xde, 0xfd, 0xe9, 0xc5, 0x6e, 0xf7, 0xbc, 0xf4, 0xd8, 0x3e, - 0x9a, 0x28, 0x7b, 0x87, 0x17, 0xfa, 0xed, 0x74, 0xdc, 0x7b, 0x6a, 0x95, 0x4f, 0x0f, 0x87, 0xb7, - 0x69, 0xeb, 0xb1, 0x38, 0xca, 0x3f, 0x3f, 0x97, 0xb3, 0xaf, 0xe6, 0xe1, 0x64, 0xe7, 0xd8, 0xe9, - 0x0d, 0x4f, 0xf3, 0xf9, 0x69, 0xba, 0x75, 0x57, 0x19, 0xdf, 0xec, 0xbf, 0xe8, 0x6b, 0xea, 0x49, - 0xa5, 0x7b, 0x79, 0xf4, 0x3a, 0x36, 0xb7, 0x9f, 0x2a, 0xde, 0xa1, 0x6d, 0x77, 0x0e, 0xd7, 0x5b, - 0x0f, 0x3b, 0xcd, 0xdb, 0xa3, 0xdb, 0xed, 0xcb, 0x43, 0x53, 0xb7, 0xef, 0x94, 0x83, 0x96, 0xd7, - 0x36, 0xda, 0xd7, 0x6b, 0xa3, 0xed, 0xe9, 0xc9, 0xe0, 0x5e, 0x6d, 0xde, 0x3a, 0x97, 0xcd, 0xb3, - 0xd3, 0x69, 0x4b, 0x3d, 0x3a, 0xda, 0xea, 0xe7, 0x2f, 0xf4, 0x7b, 0xe7, 0xbe, 0xd5, 0xeb, 0x94, - 0x1b, 0xad, 0x17, 0xad, 0xdd, 0xd9, 0xb9, 0x3e, 0x5f, 0xdf, 0xbd, 0xdc, 0x3d, 0xd4, 0xee, 0x94, - 0xdb, 0x8b, 0xbb, 0xcb, 0x76, 0xe7, 0xb2, 0x62, 0x78, 0x17, 0xe7, 0xbb, 0xc3, 0xf4, 0x5a, 0xf9, - 0x25, 0x7f, 0x38, 0xb9, 0xb9, 0xb6, 0x8e, 0xb4, 0x3b, 0xbb, 0xfb, 0x74, 0xa9, 0x1f, 0x1c, 0x1c, - 0x94, 0x60, 0x2a, 0xed, 0x9c, 0x3c, 0xe5, 0x5a, 0x07, 0xbd, 0xcb, 0xc9, 0xbd, 0x7b, 0x03, 0x1d, - 0x3a, 0x7e, 0x68, 0xf5, 0xd2, 0xdb, 0x13, 0xf8, 0x5f, 0x79, 0x5d, 0x3b, 0x68, 0x9f, 0x8f, 0x80, - 0x41, 0x1f, 0xe5, 0x8c, 0x72, 0x4b, 0x31, 0x77, 0xd6, 0x9e, 0xf6, 0xd3, 0xad, 0x66, 0x23, 0xd7, - 0xd9, 0x7e, 0xbc, 0x9d, 0x0c, 0xc6, 0x95, 0xc7, 0xa3, 0xec, 0xe1, 0x83, 0x37, 0xb9, 0xf0, 0x5a, - 0x47, 0x13, 0xc3, 0xbe, 0xcc, 0x9e, 0xec, 0x3f, 0x35, 0x5f, 0x14, 0xe5, 0x7a, 0xd0, 0x39, 0x3b, - 0x7c, 0x9c, 0x38, 0xfb, 0x9a, 0x91, 0x9e, 0xa6, 0x9d, 0xc7, 0x23, 0xc7, 0x4a, 0x9b, 0x37, 0xfd, - 0xc2, 0x85, 0x73, 0x76, 0xb8, 0x3f, 0x3e, 0x2e, 0xdf, 0x39, 0xf7, 0x67, 0xa7, 0xb7, 0xf9, 0xc9, - 0xb5, 0x76, 0x75, 0x77, 0xd0, 0x7c, 0x6a, 0xb6, 0x9f, 0xbd, 0x93, 0xa3, 0xae, 0x96, 0x73, 0xda, - 0x6b, 0xae, 0x3d, 0x1d, 0x3d, 0x17, 0x5a, 0xe5, 0xdb, 0xe2, 0x73, 0xb1, 0xd2, 0x74, 0x0a, 0x8d, - 0x41, 0xee, 0x62, 0x94, 0xbd, 0xd4, 0xbb, 0x7d, 0xf7, 0x30, 0x3f, 0x3c, 0x1d, 0xb5, 0x2b, 0xe5, - 0xc2, 0xb9, 0x7e, 0x79, 0x79, 0x75, 0x66, 0x69, 0x1d, 0xfb, 0xa2, 0x7b, 0x60, 0x36, 0xc7, 0x6d, - 0xe0, 0x85, 0x69, 0x75, 0x67, 0x77, 0xb7, 0xbc, 0xd6, 0x3e, 0x7e, 0xbd, 0xee, 0x6d, 0x19, 0x97, - 0xbd, 0x27, 0xfb, 0xa9, 0x77, 0xbd, 0x63, 0x1e, 0x79, 0xfb, 0xe6, 0x7d, 0xfe, 0xa5, 0x35, 0xb8, - 0x3f, 0x2a, 0xef, 0x9d, 0x6f, 0x9d, 0x3c, 0xae, 0x8d, 0x5d, 0x27, 0x7d, 0xf4, 0xf8, 0xfa, 0x60, - 0xb6, 0x9e, 0x3a, 0xad, 0xe7, 0xed, 0xe1, 0x6e, 0xf7, 0x46, 0x39, 0x18, 0x19, 0xe3, 0x97, 0x96, - 0x77, 0xd3, 0x3b, 0x5a, 0x7b, 0xbd, 0xba, 0xdf, 0x3b, 0x3b, 0x72, 0x47, 0xcd, 0x89, 0x31, 0x7e, - 0xcd, 0xdf, 0x3d, 0x78, 0x6a, 0x71, 0xf2, 0xe4, 0xe8, 0xd9, 0xae, 0x3b, 0x34, 0x4c, 0x73, 0xef, - 0xf6, 0x62, 0x6a, 0x99, 0xf6, 0x85, 0x72, 0x75, 0x52, 0xb2, 0x6e, 0xcf, 0x8e, 0x9f, 0x9f, 0xbb, - 0xbb, 0xc6, 0x7e, 0xb1, 0xed, 0x5e, 0xef, 0x9c, 0x35, 0xdc, 0xde, 0xeb, 0x76, 0xa1, 0xb2, 0xbf, - 0xd6, 0x6b, 0x1e, 0xdf, 0xf6, 0x9a, 0x8f, 0x6b, 0x83, 0x6c, 0x7b, 0x77, 0x74, 0xdc, 0x38, 0x19, - 0x4c, 0x8e, 0x5f, 0xb3, 0xd9, 0xe1, 0x5a, 0xbf, 0xac, 0xf5, 0x0e, 0xf6, 0xd6, 0x4e, 0x9d, 0x83, - 0xe2, 0xd3, 0x91, 0x9d, 0x7d, 0x9c, 0x14, 0x5f, 0x0a, 0x79, 0xb5, 0x72, 0xbd, 0x96, 0x9b, 0x98, - 0x07, 0xb7, 0x57, 0xdb, 0xfb, 0x46, 0x77, 0xef, 0xf1, 0xcc, 0xf3, 0x3a, 0xf9, 0xbd, 0xf6, 0x8d, - 0xaa, 0x4e, 0xcb, 0xda, 0xfa, 0xc5, 0x73, 0x7f, 0xd8, 0x9e, 0x5e, 0x29, 0xd6, 0xc5, 0x30, 0xf7, - 0x9a, 0x7b, 0xcd, 0xee, 0x6c, 0xa5, 0x2b, 0x63, 0x7d, 0xd2, 0xd8, 0xeb, 0x9c, 0xde, 0xe4, 0x7a, - 0xe6, 0x60, 0xab, 0x38, 0x69, 0x8c, 0xcb, 0x15, 0x7b, 0x7c, 0xd0, 0xbe, 0x7b, 0x32, 0xf6, 0x9c, - 0x2d, 0xf3, 0x7e, 0x72, 0xf2, 0xf4, 0x54, 0x2e, 0xdc, 0xec, 0xf7, 0x46, 0x67, 0xfb, 0xb7, 0xfb, - 0x8d, 0xa3, 0xbd, 0xd7, 0xc9, 0xde, 0x38, 0x7d, 0x67, 0x0d, 0xcc, 0xb5, 0xd3, 0x86, 0xde, 0xba, - 0x6d, 0x0d, 0xcb, 0x86, 0x76, 0x70, 0xb5, 0x55, 0x72, 0xdb, 0x39, 0xa5, 0x7b, 0xe2, 0xb5, 0x9c, - 0x8e, 0x93, 0x3d, 0x7a, 0xb9, 0x2d, 0x3f, 0x38, 0x69, 0x6b, 0x34, 0xde, 0xf3, 0xae, 0x0e, 0x76, - 0xd7, 0x4e, 0x8b, 0xaf, 0xfb, 0xeb, 0xca, 0xcb, 0xd9, 0x56, 0xf9, 0xe1, 0x6a, 0xd7, 0xb2, 0x4a, - 0xb9, 0xe7, 0xbd, 0x23, 0xb5, 0xf5, 0x52, 0x38, 0xd3, 0x0e, 0x6e, 0x8f, 0x3b, 0x5a, 0x37, 0xdb, - 0x77, 0x4f, 0xf7, 0xf6, 0x9a, 0xb6, 0x57, 0x1a, 0x54, 0xee, 0x07, 0x47, 0x2f, 0x3b, 0x3b, 0x0d, - 0xf3, 0x4a, 0x69, 0x17, 0x73, 0x95, 0xc1, 0x64, 0x30, 0x71, 0x2e, 0x5f, 0x2f, 0x87, 0xd3, 0x0b, - 0xd3, 0xb5, 0xaf, 0xc6, 0xdd, 0xc6, 0xc3, 0xb3, 0xed, 0xf5, 0x5f, 0x1d, 0x40, 0xcb, 0x75, 0x6e, - 0x72, 0xd6, 0xec, 0x16, 0xef, 0xbc, 0xad, 0xd3, 0xd3, 0xf5, 0x9d, 0xcb, 0xeb, 0xdc, 0xfa, 0xf0, - 0x24, 0xdd, 0x6b, 0x15, 0xd7, 0x7a, 0x7b, 0x27, 0x17, 0x85, 0xf6, 0xb5, 0x52, 0xd9, 0xab, 0x1c, - 0x16, 0x3b, 0x8f, 0x93, 0x23, 0xa3, 0x98, 0xdb, 0x77, 0x27, 0xeb, 0x77, 0x07, 0xaf, 0x27, 0x5b, - 0xe7, 0x07, 0xaf, 0x77, 0x4f, 0x57, 0xcd, 0xf5, 0xb3, 0x93, 0xed, 0xf3, 0x9b, 0xad, 0xed, 0xbd, - 0xcb, 0xf4, 0x70, 0xbf, 0xbf, 0x95, 0xbd, 0x5d, 0x7b, 0x7c, 0xbd, 0x19, 0x1f, 0xef, 0x36, 0xaf, - 0x07, 0x3b, 0x8e, 0x7e, 0x94, 0xbe, 0x41, 0xda, 0xcf, 0xb6, 0xf6, 0xee, 0xf7, 0x4e, 0x4f, 0x4e, - 0xdc, 0xa7, 0x9e, 0xde, 0xf0, 0x8a, 0xb6, 0xbd, 0x36, 0x34, 0xec, 0x49, 0x2b, 0xef, 0xbd, 0xee, - 0x56, 0x0e, 0x2b, 0x93, 0xfe, 0xf4, 0xe0, 0x7c, 0x67, 0xeb, 0xb8, 0xd0, 0xdc, 0xef, 0x95, 0x2f, - 0x2f, 0x72, 0xf9, 0x2d, 0xfd, 0xa2, 0xf0, 0x70, 0x3a, 0xce, 0x3b, 0x3b, 0x7b, 0xde, 0xdd, 0xcd, - 0xce, 0xfd, 0x49, 0x5a, 0x73, 0xcd, 0x51, 0xe1, 0x60, 0xfd, 0x72, 0xf2, 0xd2, 0x1d, 0xb4, 0x76, - 0xcc, 0xd6, 0xe9, 0xc9, 0xd3, 0xfe, 0xcd, 0x9e, 0xfd, 0xf2, 0xf2, 0xd8, 0x32, 0xef, 0x9a, 0x3d, - 0xc5, 0xe8, 0xdf, 0x8d, 0xd6, 0xc7, 0x37, 0x85, 0xd2, 0xcb, 0xf5, 0xc1, 0xcb, 0xc5, 0xfa, 0xeb, - 0xcb, 0x8d, 0x73, 0xb2, 0xf6, 0xfc, 0x72, 0xfc, 0x54, 0x79, 0x78, 0x7a, 0x7c, 0xed, 0x29, 0x39, - 0xbb, 0xb5, 0x9e, 0x9e, 0x5e, 0x56, 0xdc, 0xfb, 0x47, 0xfb, 0x61, 0x72, 0xbc, 0xaf, 0xef, 0x1d, - 0x5d, 0x9f, 0xb9, 0x87, 0xe3, 0xb1, 0x3d, 0xbd, 0x2a, 0x16, 0x7b, 0xbb, 0xe7, 0xe6, 0x6d, 0x36, - 0xad, 0x01, 0x21, 0x75, 0x0e, 0x76, 0xb2, 0x79, 0xe3, 0xb2, 0x30, 0x6c, 0x96, 0xa6, 0xb9, 0x97, - 0xd7, 0xc3, 0x57, 0xef, 0xfe, 0xe6, 0xec, 0x62, 0xb7, 0x6c, 0x75, 0x1e, 0x8e, 0x94, 0x8b, 0x97, - 0x1b, 0xfd, 0xee, 0xc8, 0xeb, 0x1d, 0xef, 0x1f, 0x9f, 0x1e, 0x9e, 0x3c, 0x94, 0x95, 0xce, 0x44, - 0x7b, 0x98, 0x9a, 0xad, 0x56, 0xda, 0xdd, 0x3b, 0x3e, 0x7e, 0x39, 0x33, 0x95, 0xbb, 0xd7, 0xbc, - 0x73, 0xe2, 0x9d, 0xb6, 0xb6, 0x2e, 0xef, 0x2e, 0xcc, 0x07, 0x6f, 0x70, 0xa4, 0x16, 0xef, 0x5e, - 0xf6, 0xae, 0xac, 0x56, 0x76, 0x7d, 0x30, 0x18, 0x4e, 0xdb, 0x97, 0xb7, 0xa3, 0x35, 0xbd, 0xbb, - 0x7d, 0x36, 0xba, 0x77, 0x8c, 0xfe, 0x6b, 0x6f, 0xe7, 0x64, 0x67, 0x04, 0x22, 0x78, 0xba, 0x72, - 0x50, 0x9a, 0x3c, 0x1d, 0xaf, 0x17, 0x2b, 0xed, 0x1d, 0xcd, 0x4b, 0xef, 0xa9, 0xf7, 0xdd, 0x66, - 0xfa, 0xe4, 0xd9, 0xca, 0xde, 0x79, 0xe9, 0x51, 0xb3, 0xfd, 0xa2, 0x3a, 0x2f, 0xe5, 0xe7, 0xc7, - 0xeb, 0xd6, 0x73, 0xf1, 0x4c, 0x3d, 0x7e, 0xb1, 0xcf, 0x5b, 0xcf, 0xbb, 0xbb, 0xb6, 0xab, 0xb6, - 0xd7, 0x4f, 0x72, 0xce, 0xd5, 0xd9, 0xfd, 0x51, 0xef, 0xa2, 0xe5, 0xdc, 0x4d, 0x77, 0x3a, 0x0f, - 0x4f, 0x5a, 0xd9, 0xdb, 0xba, 0x6c, 0xbc, 0x7a, 0xcf, 0xad, 0x87, 0x6d, 0x65, 0xbc, 0xa3, 0x15, - 0x6f, 0xcc, 0x33, 0xdd, 0x1e, 0x98, 0x8f, 0x20, 0xab, 0x0c, 0xb3, 0xc3, 0xa7, 0x6e, 0xf9, 0xb8, - 0xbb, 0x36, 0xd2, 0x72, 0xb9, 0xfc, 0xc1, 0xb0, 0xbb, 0x9e, 0xdf, 0x1d, 0x65, 0xd7, 0x34, 0x73, - 0x2b, 0x9b, 0x36, 0x2f, 0xd6, 0xec, 0x16, 0x08, 0x99, 0x97, 0x47, 0x8f, 0x2d, 0x5d, 0x79, 0xda, - 0x6e, 0xda, 0xd6, 0xd9, 0x3a, 0x74, 0xfc, 0xfa, 0xf9, 0x69, 0xed, 0xe8, 0x74, 0x6c, 0xb7, 0xee, - 0x7a, 0x96, 0xdd, 0x68, 0xf5, 0xbd, 0xd6, 0xf9, 0xdd, 0xf3, 0xd4, 0x6b, 0xec, 0x15, 0x8e, 0xd3, - 0xd9, 0x17, 0x4b, 0x69, 0x36, 0x9a, 0x67, 0x77, 0xf9, 0xfd, 0x7c, 0xeb, 0xa4, 0x6b, 0xba, 0x7d, - 0x7b, 0xab, 0xa8, 0xae, 0x77, 0x06, 0xaf, 0x6b, 0xd9, 0x83, 0x49, 0x36, 0xdb, 0x69, 0x17, 0xce, - 0xef, 0xcf, 0x1e, 0x8b, 0x40, 0xab, 0xd3, 0xfb, 0x9b, 0xdb, 0x7c, 0xe7, 0xe1, 0xca, 0xdd, 0x59, - 0x5f, 0x7b, 0x39, 0x3e, 0x59, 0x5b, 0x7f, 0x51, 0x5f, 0x87, 0xd0, 0xb5, 0xc3, 0xdc, 0xe8, 0xe2, - 0xfe, 0x7a, 0xad, 0xb0, 0x56, 0x6a, 0xdd, 0x35, 0xf7, 0xad, 0xf6, 0x96, 0xd5, 0xdd, 0xc9, 0x6b, - 0x87, 0x57, 0xaf, 0x47, 0x4a, 0xfb, 0x74, 0x5b, 0x01, 0x59, 0x6d, 0x7c, 0xa9, 0xf4, 0xba, 0xa3, - 0x61, 0xb3, 0x33, 0xea, 0xe4, 0x8a, 0xdd, 0xdc, 0x10, 0xa8, 0xfe, 0xe4, 0x62, 0xb7, 0x70, 0x74, - 0x74, 0x70, 0x52, 0x1e, 0x6e, 0x77, 0xb2, 0x66, 0xc9, 0xac, 0x74, 0x0a, 0xa5, 0x9b, 0xf3, 0xe3, - 0x0b, 0xb3, 0x6c, 0xf6, 0x1d, 0x58, 0x20, 0x9d, 0xdb, 0x82, 0xda, 0x29, 0x98, 0xaf, 0x79, 0xfd, - 0x5a, 0x3f, 0x3b, 0x29, 0xe6, 0x8a, 0xbb, 0xa6, 0xd6, 0x3d, 0xc9, 0x1e, 0xed, 0x9f, 0x18, 0x77, - 0x8f, 0xde, 0xe3, 0x9d, 0xfa, 0x62, 0xed, 0xf6, 0x8b, 0x93, 0xe6, 0xd3, 0xc8, 0xdd, 0x6f, 0x65, - 0xcb, 0x83, 0x75, 0x47, 0xdd, 0x33, 0xdc, 0x93, 0x41, 0x71, 0x78, 0xf0, 0x7c, 0x79, 0x67, 0x8c, - 0xd6, 0xae, 0xb3, 0x63, 0xed, 0xf1, 0xf5, 0xe9, 0xe0, 0x40, 0x5b, 0x9b, 0x3c, 0xea, 0x37, 0xaf, - 0xf6, 0x51, 0xe9, 0xae, 0x71, 0xb7, 0x75, 0xb2, 0x73, 0x36, 0xbe, 0x3a, 0x9e, 0x8c, 0xaf, 0x1e, - 0xcc, 0x3d, 0xeb, 0x7e, 0x7f, 0xd2, 0x56, 0x8f, 0x27, 0x67, 0xe5, 0x9d, 0xab, 0xca, 0xd6, 0x99, - 0x99, 0xb7, 0xd6, 0xcf, 0x5e, 0x60, 0x84, 0xbd, 0x91, 0xa3, 0x96, 0xae, 0xcd, 0xc3, 0xa7, 0xfb, - 0xd3, 0x2d, 0x63, 0x70, 0xb8, 0xf7, 0x58, 0x98, 0x5e, 0x3c, 0xdc, 0x17, 0x4e, 0xbd, 0xf5, 0x51, - 0x69, 0x30, 0x38, 0x18, 0x8e, 0x1f, 0x46, 0xa3, 0xc9, 0xc5, 0x48, 0x73, 0x4e, 0xd6, 0xb5, 0xe6, - 0xc8, 0x7d, 0xbd, 0x3f, 0x7b, 0xba, 0xb9, 0x77, 0x9e, 0x5b, 0x2f, 0xed, 0xfd, 0xf3, 0xdb, 0xbb, - 0x7c, 0x6b, 0xb7, 0xb5, 0xb3, 0x7f, 0xac, 0x17, 0x4e, 0x4f, 0x6e, 0xaf, 0xef, 0x5e, 0x5f, 0xef, - 0x0e, 0xf6, 0x4a, 0xc5, 0xad, 0x61, 0x36, 0xef, 0x34, 0x72, 0x2f, 0xcf, 0x56, 0xd9, 0x58, 0xef, - 0xee, 0xf5, 0x6e, 0x5b, 0x5b, 0x43, 0xa7, 0x7b, 0xbb, 0x75, 0xb7, 0xb7, 0x67, 0xdc, 0xde, 0xe5, - 0x86, 0xbd, 0xc9, 0xf9, 0xb8, 0xed, 0xa6, 0x2b, 0x77, 0xd9, 0x2c, 0xf0, 0xa7, 0xc7, 0x23, 0x5d, - 0x3b, 0x31, 0xd6, 0xef, 0xee, 0x1b, 0x15, 0x6d, 0xff, 0xa4, 0xd4, 0x76, 0xb6, 0xd6, 0xba, 0xfd, - 0xf3, 0xd3, 0xe9, 0xc4, 0xa8, 0xb4, 0x9e, 0x2e, 0xef, 0xf6, 0x9f, 0xb6, 0x72, 0xad, 0xbb, 0xac, - 0xf5, 0x5c, 0xbe, 0x69, 0xbf, 0x68, 0xa6, 0xeb, 0xac, 0xed, 0x55, 0x0e, 0xd6, 0x86, 0x9e, 0x3b, - 0xe8, 0xbc, 0x58, 0x07, 0x83, 0xd7, 0xf5, 0x75, 0x67, 0x34, 0xd5, 0x76, 0xb3, 0x17, 0xaf, 0x20, - 0x20, 0x14, 0x07, 0xa3, 0xdb, 0xfb, 0x93, 0xa7, 0xe9, 0x43, 0x65, 0x54, 0x79, 0x2a, 0xdd, 0xf7, - 0x1f, 0xb5, 0x83, 0x82, 0x7a, 0x71, 0xbf, 0x56, 0xea, 0xd8, 0xfa, 0x79, 0x49, 0x3b, 0xcb, 0x9e, - 0xbf, 0x8e, 0xdb, 0xfb, 0x6b, 0xaf, 0xcf, 0x5d, 0xc3, 0xcb, 0xba, 0x9d, 0x92, 0xb6, 0xf6, 0xd0, - 0x7e, 0x69, 0x9d, 0x5b, 0xe3, 0xee, 0x55, 0x2f, 0x9f, 0xbf, 0x2a, 0x95, 0x2a, 0x25, 0xd5, 0xcb, - 0x8f, 0xee, 0xef, 0x2b, 0x6b, 0x77, 0xb9, 0x07, 0xa5, 0x77, 0xa9, 0xac, 0xad, 0x17, 0xd7, 0xd7, - 0xb4, 0x87, 0xeb, 0xdc, 0xee, 0xf3, 0xd4, 0xda, 0x7d, 0x39, 0x7d, 0x00, 0x19, 0xf0, 0xa0, 0x53, - 0xb9, 0x1c, 0x1d, 0xef, 0x3b, 0x57, 0xfb, 0xe5, 0xd6, 0xd1, 0xc3, 0xf5, 0xce, 0xf6, 0xf6, 0xe3, - 0xc3, 0xfe, 0xee, 0x5d, 0x7b, 0x50, 0xda, 0xcf, 0x01, 0x1a, 0xf3, 0x7a, 0xa9, 0xf8, 0xb0, 0x7e, - 0xe7, 0xe9, 0x5b, 0xc3, 0x67, 0xe3, 0xa2, 0xb4, 0xf6, 0xe0, 0x6d, 0x3d, 0x9e, 0x36, 0xee, 0x8c, - 0x61, 0xbe, 0xfb, 0xf0, 0xba, 0x73, 0xba, 0x76, 0x99, 0x2e, 0xed, 0x01, 0x27, 0x6f, 0x16, 0xce, - 0x5f, 0x4b, 0x4f, 0xb0, 0x86, 0x1d, 0xaa, 0x6d, 0xaf, 0x75, 0x77, 0x61, 0x8d, 0x87, 0x97, 0xbd, - 0xb3, 0xe9, 0x81, 0x31, 0x3c, 0x36, 0xd4, 0xf1, 0xfa, 0xd8, 0x6c, 0x9d, 0x0f, 0xbc, 0xa1, 0xfa, - 0x64, 0x65, 0x6f, 0x9b, 0xe3, 0x75, 0xe0, 0xc8, 0xcd, 0xab, 0xf1, 0x69, 0x7b, 0x08, 0x64, 0xf9, - 0x38, 0xde, 0xeb, 0xf7, 0xcb, 0xee, 0x5a, 0xdf, 0x7d, 0x71, 0xf4, 0xbb, 0x6d, 0xb7, 0xd7, 0xc8, - 0xbb, 0x05, 0x73, 0x0f, 0xc4, 0xe6, 0xe2, 0xe1, 0xda, 0x79, 0x5a, 0x75, 0x27, 0xe3, 0xc9, 0x63, - 0xcb, 0x3b, 0x39, 0x51, 0x0a, 0xbb, 0xeb, 0xad, 0x7e, 0xfb, 0xaa, 0xfc, 0xf0, 0xba, 0x3e, 0x38, - 0x6c, 0xed, 0x29, 0x37, 0xeb, 0xe5, 0x63, 0x65, 0xb2, 0xdf, 0x58, 0x6b, 0x4d, 0xd6, 0xa7, 0x69, - 0x23, 0x9f, 0xcd, 0xae, 0x15, 0x9e, 0xd2, 0x07, 0x79, 0x5d, 0xd9, 0xdd, 0xef, 0xe4, 0xd7, 0x86, - 0x8d, 0xdb, 0xb3, 0xc3, 0xec, 0x5d, 0x7f, 0xfb, 0x61, 0x78, 0xf7, 0x72, 0xb8, 0xa3, 0x3e, 0x4c, - 0xd4, 0x8e, 0xab, 0x18, 0xed, 0xdb, 0xbd, 0xdb, 0x74, 0xe7, 0xdc, 0x38, 0x18, 0x6c, 0x4d, 0xb2, - 0x2f, 0xe7, 0x6b, 0xed, 0x72, 0x76, 0xf8, 0x78, 0xaf, 0x78, 0x57, 0xda, 0x8d, 0x77, 0x74, 0x39, - 0x2a, 0x17, 0xa7, 0x40, 0xbe, 0x8d, 0xd1, 0x7d, 0x79, 0xb2, 0xa3, 0xbd, 0x36, 0xee, 0xb3, 0x95, - 0xbb, 0x41, 0x65, 0xbb, 0xd7, 0xcf, 0xae, 0x97, 0xce, 0xd7, 0xcf, 0x27, 0xee, 0xd9, 0xf6, 0x83, - 0xe9, 0xde, 0xdf, 0x5d, 0xa6, 0xd7, 0xec, 0xed, 0xd7, 0x4a, 0xf6, 0xec, 0xf4, 0xb1, 0xb4, 0xf6, - 0xd8, 0x38, 0xdc, 0xdf, 0xed, 0x5c, 0x8f, 0xd3, 0xaa, 0x5d, 0xb9, 0x4d, 0x1f, 0x16, 0xce, 0x6e, - 0x6e, 0x35, 0x98, 0x53, 0x63, 0x7d, 0x94, 0x36, 0xda, 0xed, 0x97, 0xa7, 0xdc, 0x5a, 0xfe, 0x7e, - 0xed, 0x61, 0x5c, 0xea, 0x1d, 0x35, 0x6e, 0x2e, 0xf7, 0x1f, 0x2e, 0x2e, 0xcb, 0x97, 0xd3, 0xc9, - 0x55, 0xb7, 0xa7, 0x6d, 0xa7, 0x2f, 0xdb, 0xa5, 0x3b, 0xb3, 0x71, 0xba, 0xdd, 0x38, 0xd8, 0x1b, - 0x95, 0xaf, 0x8f, 0x3c, 0xcd, 0x2b, 0xd8, 0x66, 0xb6, 0x52, 0x68, 0x15, 0x1f, 0xb6, 0x1b, 0x87, - 0x5b, 0xa3, 0x42, 0xc9, 0xea, 0xda, 0xd7, 0x57, 0x53, 0xaf, 0x74, 0xf1, 0x04, 0x32, 0xe9, 0x75, - 0xe5, 0xf8, 0xa1, 0xb1, 0x7b, 0x79, 0x5c, 0x31, 0xf7, 0x7a, 0x5b, 0x6d, 0x10, 0x8b, 0x6f, 0xc6, - 0x40, 0xfb, 0x2f, 0x07, 0xcd, 0xad, 0x63, 0x6b, 0x77, 0x7f, 0xed, 0xf8, 0xf1, 0xf2, 0xe4, 0xd4, - 0x7e, 0xb2, 0x4a, 0xc3, 0xbe, 0x9a, 0xbd, 0x38, 0xcc, 0x4f, 0x87, 0x5b, 0x77, 0xe7, 0xdb, 0xd7, - 0xcd, 0x9d, 0x47, 0xf5, 0xc9, 0x7e, 0xb9, 0x2c, 0x57, 0xd2, 0x8f, 0x6a, 0xae, 0xf2, 0xd4, 0xdb, - 0xef, 0x3d, 0x9c, 0x5e, 0x57, 0xcc, 0xad, 0xfe, 0xd3, 0x71, 0x7b, 0xcf, 0x39, 0xde, 0x7e, 0xd8, - 0x2b, 0x4f, 0x8f, 0x9b, 0x8f, 0x57, 0x27, 0x7b, 0x25, 0xef, 0xaa, 0xf4, 0x70, 0xdc, 0xbf, 0x79, - 0x7d, 0x3d, 0xbb, 0x3b, 0x2d, 0xe5, 0x07, 0x5b, 0xa3, 0xe1, 0xc5, 0xa9, 0x7e, 0xb2, 0x36, 0xb9, - 0x98, 0x14, 0x6f, 0xd4, 0xab, 0xde, 0x9e, 0x7e, 0xf4, 0xd8, 0xb8, 0xdd, 0x73, 0xdb, 0x8f, 0xf9, - 0x83, 0x9b, 0xc3, 0xfe, 0xcd, 0x45, 0x7b, 0x57, 0x3d, 0x28, 0xdd, 0xdd, 0xed, 0x8c, 0x46, 0x83, - 0x51, 0xe7, 0xa2, 0x6b, 0x94, 0x8e, 0xd5, 0xed, 0xd1, 0x79, 0xc5, 0xca, 0xa5, 0xbb, 0x7b, 0xdb, - 0x5b, 0xad, 0x72, 0x7f, 0x34, 0x3c, 0x79, 0xad, 0x18, 0xa7, 0x57, 0xe7, 0xe3, 0xee, 0xd3, 0xc5, - 0x59, 0x45, 0x57, 0x9d, 0x75, 0xe5, 0x6a, 0x7b, 0x5b, 0xbf, 0xda, 0x3e, 0x72, 0x0a, 0xc3, 0xde, - 0xcb, 0x41, 0xb7, 0x7c, 0xf2, 0xd2, 0xbb, 0x79, 0x78, 0x70, 0x4b, 0xfd, 0xd7, 0xd1, 0x70, 0xdd, - 0x3b, 0x3d, 0x3c, 0xbf, 0x71, 0xb2, 0x13, 0x7b, 0x74, 0xe5, 0x9e, 0xdd, 0x8e, 0x3a, 0x8f, 0x59, - 0x3b, 0x3d, 0xd8, 0xaa, 0x98, 0x6b, 0xb7, 0x79, 0xe0, 0x8a, 0xca, 0x75, 0x5a, 0xbd, 0xea, 0x5f, - 0xd8, 0x67, 0x7d, 0xf7, 0x6c, 0xef, 0xfc, 0x65, 0x62, 0xed, 0xe6, 0x87, 0x8a, 0x3b, 0x7c, 0xb9, - 0xd6, 0xed, 0xde, 0xa4, 0x54, 0x39, 0x3c, 0x6a, 0x10, 0x13, 0x45, 0x5d, 0x12, 0xba, 0x96, 0x33, - 0x50, 0xbd, 0xd4, 0x57, 0x54, 0xa0, 0xbe, 0x4a, 0xf3, 0xaa, 0x63, 0x59, 0xde, 0x6c, 0x75, 0xb5, - 0xbd, 0x9a, 0xab, 0x7e, 0xce, 0xe5, 0x72, 0x35, 0x7c, 0xec, 0x56, 0x3f, 0x77, 0xbb, 0x5d, 0xf2, - 0x98, 0xaf, 0xa2, 0x61, 0x88, 0x3c, 0x16, 0xaa, 0x9f, 0x0b, 0x85, 0x02, 0x79, 0x2c, 0x56, 0x3f, - 0x17, 0x8b, 0x45, 0xf2, 0x58, 0xaa, 0x7e, 0x2e, 0x95, 0x4a, 0xe4, 0xb1, 0x5c, 0xfd, 0x5c, 0x2e, - 0x97, 0xc9, 0x63, 0xa5, 0xfa, 0xb9, 0x52, 0xa9, 0x90, 0xc7, 0x56, 0xf5, 0x73, 0xab, 0xd5, 0x22, - 0x8f, 0xed, 0xea, 0xe7, 0x76, 0xbb, 0x4d, 0x1e, 0xb5, 0xea, 0x67, 0x4d, 0xd3, 0xc8, 0x63, 0xa7, - 0xfa, 0xb9, 0xd3, 0xe9, 0x90, 0x47, 0x07, 0x00, 0x0a, 0xb4, 0xb6, 0x1e, 0x54, 0xdc, 0xa6, 0xcd, - 0x31, 0xa0, 0xb6, 0x8a, 0x4a, 0x1e, 0xa7, 0xd5, 0xcf, 0xea, 0xba, 0x02, 0x8f, 0x1e, 0x94, 0xab, - 0x64, 0x68, 0xbd, 0x56, 0xd5, 0xe9, 0xb5, 0xd4, 0x54, 0xa1, 0x28, 0x0b, 0xfe, 0x3f, 0x25, 0xb3, - 0x2e, 0x91, 0x6f, 0x5e, 0x6b, 0xf1, 0x23, 0x68, 0xf5, 0x29, 0x52, 0x82, 0xe4, 0xc3, 0xa8, 0x14, - 0x28, 0xa7, 0xe4, 0x65, 0x21, 0xfc, 0xb3, 0x08, 0xd7, 0xa7, 0x70, 0xa5, 0x9c, 0x2c, 0xf8, 0xff, - 0xa2, 0x40, 0x5e, 0xbf, 0xba, 0xa6, 0xd8, 0x13, 0x7c, 0xb2, 0xfd, 0x27, 0xc8, 0x55, 0x2e, 0xd0, - 0xb4, 0x96, 0x5d, 0xcd, 0x15, 0xed, 0x89, 0x40, 0xff, 0x28, 0xec, 0x09, 0x61, 0xe0, 0xcb, 0x3a, - 0xbc, 0x2a, 0xc2, 0x1a, 0xfe, 0x25, 0xb9, 0x3a, 0x55, 0xd3, 0x32, 0x11, 0x45, 0x6e, 0xcf, 0xae, - 0x8a, 0x2d, 0x34, 0x8e, 0x88, 0xf8, 0x61, 0xe0, 0x55, 0x21, 0xe7, 0x1c, 0xcd, 0x8a, 0x33, 0x62, - 0x4d, 0x58, 0x55, 0xa9, 0x01, 0x65, 0xa0, 0x82, 0xfc, 0x3f, 0x34, 0x88, 0xfd, 0x61, 0xde, 0xb2, - 0x3a, 0xd3, 0xd9, 0x40, 0x75, 0x7a, 0xba, 0x59, 0x55, 0x6a, 0x68, 0x61, 0xea, 0x39, 0xd6, 0xd0, - 0xec, 0x50, 0xc3, 0x5f, 0x95, 0x36, 0x1b, 0x46, 0x5d, 0xaa, 0xf1, 0xfa, 0xf6, 0x81, 0x66, 0x8c, - 0x34, 0x4f, 0x6f, 0xab, 0xf2, 0xad, 0xe6, 0x74, 0x54, 0x53, 0x95, 0x5d, 0xd5, 0x74, 0x57, 0x5d, - 0xcd, 0xd1, 0xbb, 0x14, 0xd0, 0xd5, 0x5f, 0xb5, 0x6a, 0x0e, 0x5a, 0x59, 0x8b, 0x16, 0xd4, 0x95, - 0x6a, 0x9e, 0x36, 0xf1, 0x56, 0x55, 0x43, 0xef, 0x99, 0xd5, 0xb6, 0x86, 0xd6, 0x84, 0x1a, 0xda, - 0x08, 0x9f, 0x75, 0x6f, 0x95, 0x36, 0xb3, 0xad, 0x1a, 0x06, 0x5a, 0x75, 0x68, 0xb7, 0xd8, 0xa7, - 0x21, 0x94, 0x0d, 0xe5, 0x1b, 0x5a, 0xdb, 0xff, 0x30, 0xb0, 0x5e, 0x93, 0x52, 0xdd, 0xc5, 0xc4, - 0x45, 0x28, 0xbf, 0x3e, 0xd5, 0x5e, 0xed, 0xeb, 0xbd, 0xbe, 0x81, 0xd6, 0x27, 0xd6, 0x63, 0xcf, - 0x81, 0x9e, 0xd8, 0xaa, 0x03, 0x2d, 0xab, 0xb9, 0x6d, 0xc7, 0x32, 0x8c, 0x96, 0xea, 0x50, 0xc3, - 0x6a, 0xb5, 0x0c, 0xdd, 0x09, 0xd3, 0xa2, 0x1d, 0x73, 0x5b, 0x92, 0xc0, 0xe5, 0x25, 0x88, 0x95, - 0x09, 0xf2, 0xfb, 0x1a, 0x16, 0x5f, 0xcd, 0x29, 0xca, 0x9f, 0x35, 0x5a, 0x0e, 0x79, 0xb4, 0x2d, - 0x57, 0x27, 0xe3, 0xd1, 0xd5, 0x27, 0x5a, 0xa7, 0x66, 0xc1, 0xb2, 0x4a, 0xcb, 0x5e, 0x6d, 0x69, - 0x7d, 0x75, 0xa4, 0x43, 0xd9, 0xd8, 0xd8, 0xf9, 0xe7, 0x56, 0x8f, 0x2b, 0x62, 0xd4, 0x0f, 0xcb, - 0x18, 0x8d, 0xe3, 0x85, 0xbc, 0xae, 0xea, 0x66, 0x47, 0x9b, 0x54, 0x57, 0x73, 0x91, 0xb1, 0x0c, - 0xa0, 0x18, 0xbe, 0xb9, 0x4f, 0x8e, 0x66, 0x6b, 0x2a, 0xa2, 0x85, 0x3d, 0xf1, 0xdf, 0xc8, 0x18, - 0xb6, 0xb1, 0x61, 0x35, 0xcb, 0x56, 0xdb, 0xba, 0x37, 0x05, 0x12, 0x21, 0x7d, 0xa4, 0xa5, 0xb1, - 0x44, 0x21, 0xef, 0xce, 0x6d, 0x9f, 0x86, 0x08, 0xb5, 0x2a, 0x42, 0x1e, 0xff, 0xce, 0x55, 0x59, - 0xad, 0x8e, 0x74, 0x80, 0xd6, 0x3a, 0xb2, 0x3d, 0x8b, 0xe2, 0xab, 0x23, 0xf1, 0x9f, 0x67, 0x84, - 0x28, 0x3a, 0x5a, 0xdb, 0x72, 0x08, 0x5d, 0xd2, 0xae, 0xb7, 0x86, 0x9e, 0x67, 0x99, 0x33, 0x20, - 0x06, 0x43, 0x37, 0x35, 0xa8, 0xbc, 0x3d, 0x74, 0x5c, 0x28, 0xc3, 0xb6, 0x74, 0xec, 0xc7, 0x3c, - 0x63, 0xa8, 0x2d, 0xcd, 0x70, 0x43, 0xfa, 0xb5, 0xd5, 0x4e, 0x47, 0x37, 0x7b, 0xd5, 0x0a, 0xd7, - 0x88, 0xcf, 0x68, 0x93, 0x26, 0x80, 0xb3, 0x18, 0xb6, 0x5a, 0x16, 0x14, 0x3f, 0xa8, 0x02, 0xbd, - 0xb5, 0x53, 0xb4, 0x59, 0xad, 0xbe, 0x24, 0xa4, 0x05, 0x18, 0x66, 0xa9, 0xe6, 0x10, 0x8c, 0x97, - 0x17, 0x08, 0xb8, 0x23, 0xc5, 0x5a, 0x51, 0x1b, 0x3b, 0x50, 0xa8, 0xd9, 0x03, 0x82, 0xec, 0x68, - 0x55, 0x40, 0x16, 0xce, 0x0b, 0x63, 0xd5, 0x31, 0x28, 0xaa, 0x90, 0x91, 0x02, 0xf7, 0x44, 0x13, - 0x5a, 0x2a, 0x57, 0x51, 0x3a, 0x5a, 0x4f, 0x9a, 0x67, 0x5a, 0x8e, 0x3e, 0xf3, 0xdb, 0x0a, 0x33, - 0x7b, 0x9e, 0x19, 0x3b, 0x68, 0xff, 0x72, 0xe2, 0x2d, 0xf4, 0x2c, 0x1b, 0x7a, 0x65, 0x68, 0x5d, - 0x98, 0xcb, 0xac, 0x45, 0xfc, 0xc0, 0x06, 0x8d, 0xf2, 0x5a, 0x52, 0x30, 0xf6, 0xb9, 0x79, 0x06, - 0x4d, 0xe6, 0x6e, 0x92, 0x81, 0x8c, 0x4e, 0x4d, 0x34, 0xa5, 0x01, 0x82, 0x81, 0xc1, 0x1b, 0xdc, - 0x64, 0xcd, 0x23, 0x8b, 0x41, 0x3c, 0xaf, 0xfa, 0xd4, 0x56, 0xeb, 0xe8, 0xae, 0x6d, 0xa8, 0xd3, - 0xaa, 0x6e, 0x92, 0x74, 0xc2, 0x5b, 0xa0, 0xf1, 0x96, 0x27, 0xd0, 0x2a, 0xe4, 0x0c, 0x34, 0x90, - 0x3d, 0xfb, 0x83, 0xb0, 0x4a, 0xb0, 0x2e, 0x14, 0x09, 0xee, 0x33, 0xfd, 0x61, 0x8f, 0x59, 0xea, - 0x48, 0x1d, 0xc5, 0x3c, 0x76, 0xd6, 0x36, 0x80, 0x0c, 0x9d, 0xa9, 0x70, 0xdd, 0xd8, 0x3a, 0xd9, - 0x95, 0x33, 0xae, 0xd6, 0xf3, 0x66, 0x1e, 0xee, 0x0d, 0xac, 0x32, 0x7b, 0x2e, 0xed, 0x7c, 0x38, - 0x57, 0xe6, 0x04, 0x46, 0xb8, 0xde, 0x09, 0x90, 0x06, 0xe5, 0x7c, 0xd2, 0x07, 0xb8, 0x17, 0xa2, - 0xc2, 0x3c, 0x5d, 0xe0, 0x28, 0x5c, 0x1d, 0x3b, 0x72, 0x90, 0x99, 0x63, 0x4c, 0xc8, 0x68, 0xfd, - 0xb2, 0x94, 0x5a, 0x30, 0x68, 0xb4, 0x8c, 0x81, 0xde, 0xe9, 0x18, 0xda, 0x3c, 0xf3, 0xac, 0x4d, - 0x3d, 0x46, 0x99, 0xf4, 0x03, 0x0e, 0xc4, 0x3c, 0x33, 0x52, 0x8d, 0x68, 0x32, 0x19, 0x18, 0x96, - 0x2e, 0xe8, 0x5c, 0x35, 0x2e, 0x60, 0xd8, 0x80, 0xc6, 0x13, 0x53, 0x31, 0xd9, 0xc8, 0x98, 0x85, - 0x34, 0x41, 0x9e, 0x0c, 0x24, 0x0b, 0x68, 0x8c, 0x0c, 0xff, 0x80, 0x2e, 0xb4, 0xa5, 0x40, 0x0f, - 0x29, 0x0a, 0x01, 0x6c, 0x6c, 0x29, 0xcc, 0x7d, 0x8a, 0x2f, 0x45, 0x0e, 0x60, 0xe5, 0x48, 0x0b, - 0x62, 0xd4, 0xbb, 0x30, 0x2b, 0x21, 0x9b, 0xea, 0x00, 0x1b, 0x26, 0xc0, 0x01, 0x3d, 0xaa, 0x2d, - 0xd7, 0x32, 0x86, 0x9e, 0x46, 0x48, 0xb2, 0x82, 0x94, 0x82, 0x44, 0x99, 0xcb, 0x23, 0x1e, 0x69, - 0x49, 0xab, 0x1a, 0xda, 0xa8, 0x5d, 0xca, 0x61, 0x99, 0x79, 0x1f, 0x49, 0x8a, 0x51, 0x53, 0x9e, - 0xd0, 0x39, 0x31, 0x21, 0x2f, 0x2b, 0xda, 0x27, 0x37, 0x52, 0x82, 0x5f, 0x0f, 0xa5, 0xfa, 0x75, - 0x9c, 0x87, 0xb1, 0xc9, 0xdf, 0x35, 0x9c, 0xd9, 0xe2, 0xe2, 0x12, 0x9f, 0x73, 0x8a, 0xc4, 0xb3, - 0xac, 0xe0, 0xb3, 0x90, 0x29, 0xb8, 0xb5, 0xe4, 0xde, 0x85, 0x33, 0x8d, 0x63, 0x27, 0x80, 0xd5, - 0x89, 0x2d, 0xe3, 0x1f, 0x15, 0x66, 0x59, 0x47, 0x20, 0xb5, 0x2f, 0x9f, 0xe0, 0xba, 0x31, 0x4b, - 0x9a, 0x3c, 0x4b, 0x28, 0xed, 0xb3, 0xa1, 0x8f, 0x34, 0xdc, 0xdc, 0xf3, 0x19, 0x3d, 0xe2, 0x2d, - 0x82, 0x0d, 0x6e, 0xdd, 0x68, 0x59, 0x0e, 0x8c, 0x65, 0x15, 0x26, 0x17, 0xcc, 0x99, 0xd9, 0xc2, - 0x8a, 0xcd, 0xaf, 0x5f, 0x8b, 0x63, 0x0b, 0x73, 0x77, 0x09, 0x17, 0x0c, 0xd8, 0x0c, 0x5f, 0xd5, - 0x32, 0x71, 0x00, 0xf8, 0x0d, 0xa9, 0x5e, 0x60, 0x1c, 0xfa, 0xcd, 0x56, 0x74, 0x0d, 0x0b, 0x56, - 0x18, 0x2c, 0xdd, 0x6f, 0x3b, 0x1d, 0xe0, 0x70, 0x54, 0x48, 0x1e, 0x1c, 0x11, 0x39, 0x5e, 0x10, - 0x19, 0xa6, 0x37, 0x05, 0x8a, 0xb6, 0x54, 0x1b, 0xe8, 0x26, 0x5b, 0xa0, 0x8b, 0x84, 0xc8, 0x90, - 0x29, 0xb1, 0x86, 0xf9, 0x23, 0xc8, 0xc4, 0xaf, 0x96, 0x0d, 0xd0, 0x6c, 0xb1, 0xa0, 0x8c, 0x2c, - 0x11, 0xae, 0x85, 0x70, 0x8c, 0x84, 0x4b, 0x7f, 0x72, 0x39, 0xc2, 0x2e, 0x57, 0xfb, 0xb8, 0x2e, - 0xce, 0xde, 0xc0, 0x50, 0x5f, 0x8a, 0xb5, 0x54, 0x8b, 0xe0, 0x2c, 0x83, 0xd2, 0xd8, 0x48, 0x7b, - 0xab, 0x04, 0x55, 0xe2, 0x78, 0x5c, 0x9c, 0xd2, 0xe7, 0xef, 0x16, 0x50, 0x7e, 0x3b, 0x3b, 0x6e, - 0xdc, 0xaa, 0x40, 0x99, 0x0e, 0x88, 0xf5, 0xb0, 0x6e, 0xf3, 0xe3, 0x4e, 0x1f, 0xb9, 0x75, 0xd1, - 0x94, 0xfe, 0xc2, 0x0f, 0x92, 0x3f, 0x99, 0xc9, 0x27, 0x4c, 0x11, 0x56, 0x7d, 0xc9, 0xd6, 0x96, - 0x82, 0x67, 0xe8, 0xba, 0x8f, 0xe6, 0x55, 0x9c, 0x50, 0x01, 0x44, 0x2d, 0x89, 0xfb, 0x71, 0xd5, - 0xe8, 0xb2, 0x22, 0x65, 0x85, 0xa0, 0xca, 0x55, 0x52, 0xa7, 0xb4, 0x5c, 0x34, 0x42, 0x74, 0xb2, - 0xfd, 0xe7, 0x19, 0x47, 0x65, 0x01, 0x81, 0x3b, 0x1a, 0x4a, 0xb9, 0x23, 0x6d, 0x49, 0xdf, 0xf0, - 0x3d, 0xeb, 0xd7, 0x26, 0x01, 0x71, 0x4e, 0x90, 0xca, 0x90, 0x0c, 0x28, 0x9d, 0xae, 0x42, 0x4a, - 0x30, 0xdd, 0x48, 0x2b, 0xa0, 0x92, 0x71, 0x55, 0x1d, 0x7a, 0x56, 0x8d, 0x17, 0xea, 0x96, 0x8b, - 0x6e, 0xbb, 0xdd, 0x2e, 0x08, 0x9d, 0xee, 0xcc, 0x17, 0x38, 0xfd, 0x32, 0x56, 0x29, 0x38, 0x56, - 0x45, 0x64, 0xde, 0xf9, 0x67, 0x1b, 0xfb, 0x21, 0x7f, 0xb6, 0x5f, 0x0c, 0xf8, 0x33, 0xf4, 0x74, - 0xf8, 0x81, 0x65, 0x8b, 0x26, 0xc2, 0x43, 0x90, 0x82, 0x0f, 0x79, 0x7f, 0xf7, 0xb4, 0x82, 0x02, - 0x3e, 0x07, 0x1e, 0x83, 0xc2, 0x79, 0xe1, 0x33, 0x14, 0x64, 0xd4, 0xbe, 0x88, 0x06, 0xab, 0x84, - 0x80, 0x9d, 0x40, 0xe1, 0x88, 0x01, 0x0b, 0xb8, 0x48, 0xea, 0xc1, 0x3c, 0x20, 0xc3, 0x86, 0xcc, - 0x3d, 0xda, 0x30, 0xd6, 0xa2, 0x40, 0xde, 0x22, 0xa5, 0xb0, 0x06, 0x04, 0x53, 0xa8, 0x44, 0xd6, - 0x7f, 0x98, 0x2c, 0xee, 0x00, 0x74, 0xc6, 0xfe, 0x2c, 0x91, 0xfb, 0x72, 0x83, 0xde, 0x95, 0x73, - 0xd2, 0x5f, 0x99, 0x92, 0x2b, 0x09, 0x9a, 0xea, 0x6a, 0xab, 0xb0, 0xfe, 0x93, 0x71, 0x5d, 0xa5, - 0x22, 0x5b, 0x50, 0x95, 0x22, 0xac, 0x92, 0x92, 0x7d, 0xa6, 0xbc, 0xca, 0xf8, 0x16, 0xcf, 0x2a, - 0x7d, 0xf2, 0x43, 0x4e, 0x87, 0xa8, 0x86, 0xb4, 0x38, 0xb7, 0x5b, 0x22, 0x8c, 0x47, 0x04, 0xad, - 0xa5, 0x33, 0xaa, 0x20, 0xc5, 0xe5, 0x25, 0xbf, 0xe6, 0xae, 0xa1, 0x4d, 0x6a, 0x84, 0xa7, 0xaf, - 0x82, 0x38, 0x3b, 0x70, 0x7d, 0x49, 0xfb, 0x69, 0xe8, 0x7a, 0x7a, 0x77, 0xba, 0xca, 0xa8, 0xd4, - 0x4f, 0x0e, 0x64, 0xb5, 0x5c, 0x20, 0x59, 0x67, 0xd6, 0x4b, 0x3c, 0x4b, 0xcc, 0xac, 0xb9, 0x49, - 0x0b, 0x2b, 0x60, 0xd5, 0x53, 0xa7, 0xd0, 0x75, 0x99, 0x3c, 0x40, 0xb3, 0x83, 0x75, 0x86, 0x2e, - 0x30, 0x41, 0x77, 0x7d, 0x92, 0x83, 0xfa, 0xdb, 0xcf, 0xd3, 0x30, 0x9d, 0xbe, 0xf3, 0xc2, 0x13, - 0xe9, 0xba, 0xdf, 0xa2, 0x7c, 0x2d, 0x32, 0xb8, 0x74, 0x84, 0xfd, 0x4a, 0x67, 0x0c, 0xe7, 0x25, - 0x24, 0x8c, 0xee, 0x64, 0x96, 0xc0, 0x0d, 0x72, 0xf9, 0x1c, 0x4a, 0xcf, 0x01, 0xa1, 0x4f, 0xab, - 0x94, 0xd4, 0x83, 0x61, 0x23, 0x38, 0x2e, 0x63, 0x01, 0x54, 0x28, 0x71, 0x19, 0x31, 0x17, 0x50, - 0x73, 0xa8, 0xc5, 0x28, 0x8b, 0x81, 0x08, 0xbe, 0xa0, 0xcf, 0x93, 0x67, 0x21, 0x2c, 0x43, 0x91, - 0xd9, 0x43, 0xce, 0x7f, 0xc8, 0xfb, 0x0f, 0x05, 0xff, 0xa1, 0x38, 0x4b, 0x90, 0x9b, 0xf3, 0xc8, - 0xa7, 0x26, 0xab, 0x91, 0x16, 0x04, 0x8b, 0x09, 0x99, 0x5e, 0x31, 0x74, 0x40, 0xcf, 0x19, 0x47, - 0x58, 0x75, 0xd4, 0x8e, 0x3e, 0x74, 0xab, 0x39, 0x82, 0x0c, 0x9c, 0x1e, 0x19, 0xad, 0x03, 0xf8, - 0x26, 0xb2, 0x0d, 0xbf, 0x76, 0x83, 0x10, 0x0c, 0xf5, 0x47, 0x92, 0x42, 0xec, 0x83, 0x14, 0xa3, - 0x3b, 0xae, 0x3f, 0xa3, 0xe8, 0xb4, 0x23, 0x93, 0xda, 0xb3, 0x54, 0x48, 0x0e, 0xd5, 0xae, 0xa5, - 0x34, 0x59, 0x92, 0x7c, 0x16, 0x05, 0x88, 0x17, 0x40, 0x8c, 0xd1, 0x3b, 0x42, 0x62, 0xf7, 0xd6, - 0x81, 0xcc, 0x3f, 0xa0, 0x8b, 0x47, 0x7b, 0x57, 0xe2, 0xe4, 0xe4, 0x3c, 0x15, 0xf6, 0x12, 0x15, - 0xce, 0x12, 0x9d, 0x3b, 0x25, 0x9c, 0x4a, 0x49, 0x82, 0xe9, 0x6a, 0x09, 0x57, 0x8f, 0x65, 0x0a, - 0x17, 0x96, 0x2c, 0xc5, 0x97, 0xf9, 0x24, 0xea, 0xa7, 0x68, 0xc9, 0xb8, 0x7d, 0x6b, 0x1c, 0xe0, - 0x26, 0x57, 0x53, 0x4d, 0x7d, 0x40, 0xb5, 0xc6, 0xae, 0xda, 0xd1, 0x74, 0x53, 0x00, 0x6e, 0x22, - 0x87, 0x8f, 0x42, 0x1e, 0xff, 0x38, 0x1a, 0x72, 0xe9, 0xa0, 0x08, 0xcd, 0x71, 0x2c, 0x87, 0x2b, - 0x63, 0x01, 0xbf, 0x9f, 0x5b, 0xf9, 0xe4, 0x92, 0xe7, 0x19, 0x50, 0xf4, 0xd4, 0x05, 0x65, 0xd2, - 0xe7, 0x1d, 0xbe, 0x34, 0xe5, 0xcb, 0x90, 0x38, 0xa4, 0x5c, 0x87, 0xbd, 0x3e, 0xae, 0x93, 0x64, - 0x8e, 0x2c, 0x1d, 0x52, 0x2b, 0x71, 0xa1, 0x7c, 0x48, 0xd1, 0x25, 0x38, 0x59, 0x9a, 0x2d, 0xba, - 0xbc, 0xb4, 0xca, 0xb3, 0x29, 0x24, 0xe2, 0xc8, 0xda, 0x85, 0x52, 0xb8, 0xe5, 0x6a, 0xb3, 0x18, - 0x4b, 0x60, 0x8c, 0x80, 0xae, 0xa3, 0x54, 0xa5, 0xf9, 0xac, 0x9b, 0x5d, 0x4b, 0xfe, 0x6c, 0x82, - 0x62, 0xeb, 0xce, 0xfc, 0xa1, 0x2e, 0xce, 0x3f, 0x3b, 0x44, 0xf6, 0xf1, 0x13, 0x0a, 0xa0, 0x62, - 0x77, 0x8c, 0x60, 0x55, 0xc8, 0x31, 0xb5, 0x9b, 0x00, 0x01, 0xe3, 0x48, 0x54, 0x6a, 0x63, 0x18, - 0x49, 0xe3, 0xc4, 0x92, 0x98, 0x4e, 0x11, 0x97, 0x7d, 0x63, 0x72, 0xff, 0x67, 0x98, 0x60, 0x26, - 0xd4, 0xfc, 0x51, 0x6d, 0x3e, 0x2c, 0xb9, 0xc8, 0x11, 0xf3, 0xe2, 0x44, 0x26, 0x29, 0x0b, 0x54, - 0x80, 0x66, 0xc4, 0xc0, 0xaa, 0x92, 0x07, 0x8c, 0x0c, 0x7a, 0xe3, 0x64, 0xd1, 0x9e, 0x75, 0x1f, - 0x75, 0x85, 0xcf, 0xcf, 0xa6, 0xfc, 0xf9, 0x79, 0x94, 0x08, 0x47, 0x91, 0x2a, 0x10, 0x7d, 0x97, - 0xa1, 0x96, 0xbe, 0xbc, 0xa3, 0x02, 0xb3, 0x6c, 0x9d, 0x20, 0x4f, 0x67, 0x16, 0x5b, 0x09, 0x49, - 0xcd, 0x04, 0x2a, 0xd3, 0xf2, 0x4c, 0x7f, 0x38, 0x4a, 0x41, 0x2a, 0x29, 0x9f, 0x7c, 0x8b, 0xd4, - 0x1b, 0x81, 0x56, 0x18, 0x6c, 0x47, 0x1f, 0xf9, 0x40, 0xf0, 0x38, 0x0b, 0xb9, 0x48, 0x71, 0x3d, - 0x81, 0x4d, 0x1b, 0x3c, 0x44, 0x59, 0x51, 0xb8, 0x11, 0x8c, 0x76, 0xbd, 0x0f, 0xda, 0x9f, 0x37, - 0x5b, 0x94, 0xfc, 0xd7, 0x23, 0x42, 0x7e, 0x68, 0x74, 0x71, 0xb4, 0xce, 0x1c, 0x30, 0xce, 0x95, - 0x4e, 0x56, 0x6b, 0x7c, 0xe5, 0x16, 0xf2, 0x79, 0x66, 0xac, 0xcf, 0x88, 0xbb, 0xe0, 0x2a, 0x28, - 0x1c, 0x30, 0xa4, 0x38, 0xc0, 0x36, 0x20, 0x10, 0xa7, 0x4d, 0xa7, 0x16, 0xff, 0xd2, 0x76, 0xa0, - 0x6d, 0xab, 0x5a, 0xa7, 0xa7, 0xb9, 0xbe, 0x90, 0x4f, 0x78, 0xee, 0x7f, 0x40, 0xdf, 0xef, 0x3a, - 0xea, 0x00, 0xfa, 0x4c, 0x67, 0xfb, 0xac, 0xeb, 0x58, 0x83, 0x59, 0x30, 0xa3, 0x03, 0x66, 0x3c, - 0xf7, 0xac, 0xd9, 0xdb, 0xac, 0x2c, 0xe0, 0x2b, 0x73, 0x5f, 0xfb, 0x67, 0xf8, 0x98, 0xf9, 0x82, - 0xc0, 0xd7, 0xaf, 0x4b, 0xb4, 0x4f, 0xa2, 0x52, 0x13, 0x72, 0x0d, 0xb5, 0xdf, 0x4a, 0xa8, 0x46, - 0x47, 0xa9, 0x34, 0x60, 0x19, 0x45, 0x29, 0xbe, 0x2c, 0x95, 0x97, 0x68, 0xe6, 0xa1, 0x89, 0x10, - 0x8d, 0xc4, 0x3d, 0x5e, 0x25, 0xf8, 0xec, 0xa0, 0x19, 0x4a, 0x88, 0xb5, 0x98, 0x40, 0x91, 0xac, - 0x5c, 0xbd, 0x38, 0xa8, 0xa0, 0xc8, 0xf7, 0xb0, 0x36, 0x74, 0x72, 0x5b, 0x47, 0xbd, 0x57, 0xfe, - 0xac, 0x28, 0x20, 0xa6, 0xe5, 0x4a, 0x7f, 0xca, 0x30, 0x70, 0x50, 0x5e, 0xef, 0x5f, 0x2b, 0xef, - 0xb3, 0xd2, 0x55, 0xa0, 0xc0, 0xd6, 0xbf, 0x58, 0xa0, 0x82, 0x3d, 0x1e, 0xff, 0x7b, 0x05, 0x76, - 0xbb, 0x58, 0xe0, 0x73, 0x42, 0x81, 0xf2, 0xe7, 0x71, 0x4b, 0x35, 0xe2, 0xb5, 0xbc, 0x5f, 0x76, - 0xb7, 0x5b, 0xe9, 0xe6, 0xba, 0x82, 0x42, 0xca, 0x16, 0x60, 0x05, 0x95, 0x3f, 0xb7, 0x5b, 0x9d, - 0x16, 0xa9, 0xa7, 0xaf, 0x4d, 0xc6, 0x32, 0xad, 0x4d, 0xfe, 0xfc, 0xd2, 0x76, 0x57, 0xe1, 0xcd, - 0xe9, 0xb5, 0xe8, 0x3b, 0x56, 0x27, 0xd3, 0xbe, 0xc5, 0x44, 0x11, 0xda, 0x84, 0xd6, 0xb0, 0x85, - 0x0c, 0x87, 0x33, 0xd2, 0x2c, 0xaa, 0x4c, 0x89, 0x3c, 0x2e, 0x46, 0x63, 0x4a, 0x32, 0x31, 0x16, - 0xa4, 0x45, 0x41, 0x83, 0xb3, 0x76, 0x12, 0xdb, 0x60, 0x3e, 0xb2, 0x48, 0x91, 0xed, 0x0d, 0x4a, - 0xeb, 0x68, 0x99, 0xe3, 0x18, 0x04, 0xda, 0x87, 0x5b, 0xba, 0x81, 0x66, 0xe6, 0x4c, 0x1e, 0x96, - 0x71, 0xd4, 0x11, 0x64, 0xdf, 0xf0, 0x1c, 0xa4, 0x70, 0xf6, 0xe9, 0x30, 0x43, 0x15, 0xe4, 0xae, - 0x8e, 0x66, 0xce, 0x81, 0x9d, 0x82, 0x86, 0x12, 0xe9, 0x3a, 0x11, 0x20, 0x38, 0x48, 0xf2, 0x68, - 0x68, 0xdc, 0xbc, 0xe5, 0xdc, 0x27, 0x89, 0xf7, 0xe4, 0x8f, 0x40, 0x87, 0x43, 0x43, 0xad, 0x0a, - 0x69, 0x6d, 0x6d, 0xc1, 0x34, 0x13, 0x5a, 0x14, 0x97, 0xef, 0xa8, 0x44, 0xec, 0x33, 0xd1, 0x95, - 0x6d, 0xa1, 0xce, 0x6a, 0xd7, 0x6a, 0x0f, 0xdd, 0xd0, 0xfe, 0x9d, 0x00, 0x11, 0xca, 0xf9, 0xd4, - 0xc4, 0xe7, 0x0c, 0x4d, 0x93, 0xac, 0x23, 0x50, 0x4f, 0xfb, 0x79, 0xc6, 0x35, 0x8e, 0x31, 0x90, - 0x82, 0xb2, 0x60, 0x4a, 0xe3, 0xc7, 0x10, 0x35, 0xb7, 0xf7, 0x6b, 0xf1, 0xfa, 0xc3, 0x41, 0x2b, - 0xd8, 0x95, 0x40, 0x56, 0xc3, 0x2a, 0x2a, 0x2f, 0x2e, 0xab, 0x11, 0x3b, 0x12, 0x4f, 0x12, 0xb1, - 0x46, 0x2c, 0xc3, 0x2f, 0x27, 0x1a, 0x83, 0x58, 0x98, 0xd8, 0x38, 0xdc, 0x0a, 0x22, 0x2f, 0x6f, - 0xf7, 0x7a, 0x61, 0x2c, 0xc8, 0x2e, 0x9d, 0x22, 0x93, 0xff, 0x49, 0xef, 0x95, 0x4c, 0xba, 0xec, - 0x5b, 0x03, 0x98, 0xa0, 0xcd, 0x0f, 0xe6, 0x3f, 0xc4, 0x46, 0xa2, 0xc4, 0x87, 0xb2, 0xcb, 0xfc, - 0x33, 0xf1, 0x4c, 0x76, 0x85, 0xdf, 0x1d, 0x96, 0x4a, 0xd8, 0x90, 0x4a, 0xd0, 0x10, 0xb4, 0x9c, - 0xc7, 0xb4, 0x84, 0x5c, 0xc4, 0x58, 0x43, 0xe4, 0x85, 0x37, 0x6a, 0x5c, 0x82, 0x91, 0xa4, 0x62, - 0x7d, 0x76, 0x43, 0xf8, 0x10, 0x3f, 0x10, 0x8c, 0xf1, 0x90, 0xe7, 0x45, 0xce, 0xe3, 0xaf, 0x50, - 0x4a, 0xd0, 0x0e, 0xbe, 0x9c, 0xc0, 0x71, 0x9c, 0x33, 0x68, 0x28, 0xbe, 0xc9, 0xa1, 0xdf, 0x99, - 0x25, 0xd8, 0x02, 0x3e, 0xb7, 0x1c, 0x9d, 0xe4, 0xe5, 0x64, 0xdb, 0x45, 0xfb, 0x54, 0x6b, 0xe0, - 0xc5, 0xf9, 0xaa, 0xad, 0x1a, 0x68, 0x8e, 0x21, 0x3e, 0xeb, 0x8b, 0x5c, 0x76, 0xb4, 0xc8, 0x6c, - 0x23, 0x72, 0x51, 0x8d, 0x6b, 0xea, 0x9c, 0x95, 0xb2, 0xa0, 0xe8, 0x11, 0xe1, 0x8b, 0x97, 0xdc, - 0xf9, 0x3e, 0x15, 0x63, 0xb8, 0xe2, 0x18, 0xe6, 0xfa, 0x07, 0x36, 0xa6, 0xa2, 0xa4, 0x97, 0x2f, - 0x45, 0x38, 0xeb, 0x6a, 0x67, 0xc8, 0xb6, 0xda, 0xd0, 0xc4, 0xea, 0x13, 0x12, 0xd2, 0x26, 0x7a, - 0x57, 0xaf, 0x2e, 0xb0, 0xd1, 0x70, 0xd3, 0x74, 0x91, 0x50, 0x0b, 0x1d, 0x3a, 0x8b, 0xa8, 0x4e, - 0xb3, 0x24, 0xff, 0x9b, 0xf9, 0x02, 0x05, 0xa5, 0x6d, 0xe8, 0x36, 0xd5, 0x4a, 0xa3, 0x49, 0x4b, - 0x75, 0xdc, 0x82, 0xf4, 0x96, 0xbd, 0x86, 0x19, 0xa7, 0x88, 0x8c, 0xbb, 0xea, 0x52, 0xa3, 0xad, - 0x1c, 0x1a, 0xbd, 0x92, 0x52, 0xf3, 0xd1, 0x64, 0x7c, 0xf1, 0x8d, 0xbd, 0xcb, 0xda, 0x50, 0x92, - 0xde, 0xd2, 0xcf, 0xe7, 0xb4, 0xbc, 0x59, 0x44, 0x80, 0x0d, 0x6c, 0xd0, 0xf0, 0x89, 0x98, 0x0c, - 0xfc, 0xed, 0x33, 0x7f, 0x81, 0x04, 0x7a, 0x4e, 0xde, 0x2d, 0x58, 0xb6, 0x2b, 0x07, 0x05, 0x99, - 0x33, 0x9e, 0x5a, 0x02, 0x62, 0xac, 0xf8, 0xd3, 0x03, 0x61, 0xfc, 0x19, 0x94, 0xcb, 0x73, 0x30, - 0x25, 0xba, 0x5b, 0x47, 0xbe, 0x43, 0x6d, 0x9d, 0x8e, 0xec, 0x3f, 0x77, 0x34, 0x83, 0x3e, 0x4f, - 0xfc, 0x0e, 0x14, 0xa3, 0x7b, 0x6f, 0x9c, 0x81, 0x91, 0x37, 0x6b, 0xb0, 0x2c, 0xac, 0x7c, 0xba, - 0x27, 0x88, 0x6d, 0xe0, 0xc7, 0x23, 0xfc, 0x1e, 0x4d, 0x0f, 0x50, 0x55, 0x20, 0xcc, 0x88, 0xaa, - 0x21, 0x19, 0xd4, 0x4b, 0xa2, 0x9a, 0x0a, 0x9f, 0x25, 0x3e, 0xa8, 0x0b, 0xc3, 0x39, 0x7b, 0xcb, - 0xaa, 0xf7, 0x06, 0x75, 0x2d, 0xc3, 0x4a, 0xb8, 0xe9, 0x3c, 0xee, 0xeb, 0x9e, 0xb6, 0x0a, 0xcb, - 0x00, 0x59, 0xb1, 0x90, 0x0f, 0xcc, 0x29, 0xaf, 0x58, 0x9c, 0xec, 0x90, 0xcc, 0xa1, 0x24, 0x2e, - 0x4e, 0x15, 0x97, 0xe8, 0x4d, 0x3e, 0x0f, 0xe0, 0xd4, 0x00, 0xf2, 0xcc, 0x6f, 0xd6, 0xe6, 0x2b, - 0xac, 0xfc, 0x56, 0xc0, 0x21, 0x39, 0xe8, 0x72, 0x1c, 0x3a, 0x5c, 0x99, 0xb8, 0x4e, 0xa3, 0x98, - 0x49, 0x39, 0xe0, 0x2c, 0xb6, 0x20, 0x50, 0xe7, 0x09, 0x7e, 0xcb, 0x3a, 0x94, 0x70, 0x62, 0x4c, - 0xe9, 0x2d, 0x34, 0x7f, 0x8c, 0x61, 0x25, 0x1b, 0xb2, 0x16, 0x95, 0xf5, 0x44, 0x5e, 0x56, 0xfa, - 0x3f, 0xce, 0xcb, 0xe6, 0x9f, 0x3d, 0x6f, 0x96, 0xb0, 0x23, 0xdd, 0x36, 0x16, 0x49, 0x10, 0xd5, - 0x07, 0xba, 0xa7, 0x6b, 0xcf, 0xf8, 0xa9, 0x48, 0x9c, 0x7e, 0xd8, 0xb0, 0x97, 0xb4, 0x01, 0x03, - 0x31, 0x66, 0xc9, 0x7b, 0x73, 0xc1, 0x12, 0x9a, 0x2b, 0x22, 0xea, 0x50, 0xec, 0xf0, 0x73, 0x68, - 0x7c, 0x96, 0xc5, 0x46, 0xd1, 0xf3, 0x51, 0xb3, 0x8f, 0x8f, 0x59, 0x37, 0x22, 0x26, 0x99, 0x20, - 0x00, 0x68, 0xce, 0x0f, 0x99, 0x4b, 0xc2, 0x3a, 0x7e, 0xcc, 0x3e, 0xa8, 0x14, 0xc4, 0xa4, 0xa9, - 0x37, 0x47, 0x3b, 0xd9, 0xba, 0x45, 0x48, 0x8e, 0x53, 0x17, 0x16, 0xf7, 0x0f, 0xf3, 0x6e, 0x2d, - 0xf4, 0x1f, 0x49, 0x90, 0x31, 0xb1, 0xc1, 0x5d, 0x5d, 0x33, 0x3a, 0xd4, 0xa3, 0x28, 0xf1, 0x4b, - 0x52, 0x62, 0x02, 0x1e, 0x16, 0x7c, 0x02, 0xfc, 0x11, 0x54, 0xa2, 0x72, 0x2b, 0xc5, 0xd1, 0xe2, - 0x68, 0x2c, 0x96, 0x48, 0x15, 0x80, 0x05, 0xfc, 0x32, 0xbd, 0x20, 0x01, 0xcb, 0xe5, 0xa4, 0xf1, - 0x09, 0xe5, 0x44, 0xdd, 0x34, 0xd1, 0x15, 0xca, 0x86, 0xa9, 0x4d, 0x77, 0x21, 0xe5, 0xb7, 0xa0, - 0x01, 0x6f, 0x51, 0xe8, 0x65, 0x3a, 0x10, 0x65, 0x1a, 0xc2, 0x42, 0x17, 0x99, 0x41, 0x08, 0x08, - 0x38, 0xfe, 0x29, 0x63, 0x7b, 0x13, 0x6f, 0x16, 0xdb, 0x8b, 0x13, 0x56, 0x05, 0x54, 0x46, 0xa5, - 0x39, 0x82, 0x80, 0x50, 0xad, 0x2e, 0x31, 0xd9, 0x2f, 0xd0, 0xd1, 0x62, 0x39, 0xc8, 0x4b, 0x83, - 0xdd, 0x4a, 0x62, 0xb2, 0x4a, 0x30, 0xf6, 0x2d, 0x93, 0x5c, 0x61, 0x39, 0x0f, 0x49, 0xc6, 0xd1, - 0x08, 0xa1, 0x11, 0x55, 0x24, 0x46, 0x77, 0x9c, 0x2d, 0x71, 0x9e, 0x51, 0x6d, 0x1d, 0xbb, 0xc4, - 0xaa, 0x5c, 0x83, 0x3e, 0x57, 0xab, 0x94, 0x6d, 0x46, 0x67, 0x58, 0xd0, 0x6e, 0xdc, 0x42, 0x27, - 0x58, 0x08, 0xd6, 0x69, 0xb6, 0xf4, 0x73, 0x8b, 0x6b, 0x4c, 0x79, 0x0f, 0x71, 0x86, 0x24, 0xc5, - 0x2f, 0xb7, 0x36, 0x3a, 0x39, 0x11, 0x4f, 0x17, 0x7c, 0x98, 0x2d, 0x2e, 0x49, 0x71, 0x56, 0xbb, - 0x68, 0xf8, 0x7f, 0x4b, 0x04, 0xd3, 0x0c, 0x48, 0x73, 0x75, 0x37, 0xba, 0x88, 0x14, 0xa3, 0xd3, - 0x52, 0x50, 0xb8, 0xdd, 0x86, 0x5c, 0x79, 0xc1, 0x4e, 0xb8, 0x28, 0xea, 0xcf, 0x83, 0x06, 0x47, - 0x76, 0x87, 0xe8, 0x5a, 0xc6, 0x3e, 0x2d, 0xf1, 0xb4, 0x50, 0xa4, 0x39, 0xe7, 0x8c, 0xe1, 0x17, - 0xc3, 0xd5, 0x5f, 0x89, 0xb7, 0x8e, 0x3a, 0xa0, 0xb8, 0x2d, 0x97, 0x5f, 0xc6, 0x98, 0xa7, 0x52, - 0x65, 0x61, 0x13, 0xd1, 0xed, 0xd9, 0x12, 0x43, 0xeb, 0x8c, 0xac, 0xdf, 0xd4, 0x71, 0x29, 0x78, - 0x07, 0xb6, 0x6d, 0xeb, 0x9d, 0x0f, 0xf9, 0xc7, 0xc4, 0x2c, 0x9b, 0x8b, 0x98, 0x8f, 0xd2, 0x33, - 0xd2, 0x85, 0xa9, 0x8d, 0xa1, 0x4b, 0xbe, 0xab, 0x4e, 0x47, 0xeb, 0xaa, 0x43, 0xc3, 0x43, 0xbf, - 0xae, 0xa0, 0xed, 0xe5, 0x40, 0xa2, 0xca, 0x4c, 0x40, 0x8e, 0x5a, 0x4a, 0xcb, 0x1a, 0xef, 0x04, - 0x10, 0x3a, 0x49, 0x04, 0x62, 0x5b, 0x31, 0x22, 0x04, 0x92, 0xc2, 0x40, 0x70, 0x61, 0x93, 0x85, - 0xd1, 0x5a, 0x84, 0x24, 0x39, 0xf1, 0x25, 0x24, 0xc5, 0xc0, 0x3a, 0x49, 0x54, 0x9d, 0xc0, 0xe1, - 0x4e, 0x26, 0x02, 0x0f, 0xe9, 0xb0, 0xdb, 0x57, 0x3b, 0x40, 0x48, 0xab, 0xb8, 0x40, 0x91, 0x3f, - 0x8a, 0x10, 0xda, 0x2e, 0xe5, 0xe4, 0x54, 0x92, 0x92, 0x08, 0x1b, 0x4f, 0x84, 0xc1, 0x70, 0x3d, - 0x77, 0xd1, 0x1b, 0x88, 0x35, 0x96, 0x8c, 0xbc, 0x3d, 0x8e, 0xbb, 0x0b, 0x95, 0x93, 0x1d, 0x12, - 0xa0, 0x70, 0x99, 0x6c, 0xd0, 0xc4, 0x1d, 0x8e, 0x54, 0x10, 0x81, 0x16, 0xfd, 0x28, 0x3a, 0xbc, - 0x63, 0x61, 0x40, 0x06, 0xa1, 0x4d, 0x3e, 0xb4, 0xe1, 0xce, 0x33, 0x5d, 0xe7, 0x75, 0x46, 0x08, - 0xa3, 0x50, 0xe6, 0x55, 0xdf, 0x08, 0xf1, 0xac, 0x16, 0x16, 0x0d, 0x34, 0xfc, 0xe2, 0xc7, 0xf9, - 0xf9, 0x71, 0xde, 0x48, 0x50, 0x70, 0x94, 0x59, 0xb4, 0xfb, 0x5a, 0xfb, 0x59, 0xce, 0x20, 0xbf, - 0xb3, 0x96, 0xed, 0x11, 0x07, 0x2a, 0x77, 0xbc, 0xa7, 0x8e, 0x36, 0x6a, 0xf7, 0x9f, 0x8d, 0xd8, - 0x4c, 0x51, 0x04, 0x14, 0xc8, 0x7d, 0xcd, 0x39, 0xb0, 0x8b, 0x73, 0xb2, 0x22, 0x76, 0xf2, 0x7a, - 0x47, 0x58, 0xc8, 0xaf, 0xd0, 0xdc, 0xa1, 0x13, 0xc2, 0x2a, 0x9b, 0x43, 0xa4, 0x95, 0x74, 0xe1, - 0x60, 0x6d, 0xa5, 0x2f, 0x09, 0x18, 0x0d, 0x4d, 0x7c, 0x31, 0xe4, 0x30, 0xda, 0xf3, 0x3d, 0x97, - 0xfc, 0x52, 0xa1, 0x22, 0xbf, 0xff, 0xf8, 0x98, 0x50, 0x22, 0xcf, 0xc7, 0x38, 0x5b, 0x28, 0xdd, - 0x07, 0x8b, 0xbb, 0x45, 0xfd, 0x2d, 0xf5, 0x21, 0x0f, 0xf4, 0x11, 0xb6, 0x20, 0xc2, 0x1a, 0x78, - 0x61, 0x3e, 0x9c, 0x4c, 0xf9, 0xfc, 0x3b, 0x26, 0xa3, 0x45, 0x2b, 0x22, 0xd7, 0xdd, 0xd9, 0xa2, - 0x7d, 0x96, 0x7d, 0xa5, 0x1a, 0x2c, 0xc5, 0xed, 0xff, 0x5c, 0xc0, 0x4f, 0xf4, 0x6b, 0xd8, 0xe0, - 0x37, 0x95, 0xda, 0xa0, 0x90, 0xaa, 0xda, 0xf5, 0x50, 0x51, 0x0e, 0xf2, 0xd1, 0x84, 0x60, 0xab, - 0x43, 0x14, 0x6b, 0x6f, 0xfb, 0xfa, 0xf9, 0x64, 0x10, 0x2f, 0x92, 0x4e, 0x95, 0x75, 0x36, 0x24, - 0xe1, 0x28, 0x95, 0x42, 0xd4, 0xe5, 0xc2, 0xa5, 0xbd, 0x1a, 0x45, 0x7d, 0x20, 0x5e, 0x32, 0x2e, - 0x06, 0xe4, 0x07, 0xc3, 0x53, 0xa0, 0x8a, 0x6e, 0x72, 0x7d, 0xd0, 0x05, 0xcb, 0x2b, 0x96, 0x66, - 0x8b, 0xda, 0x01, 0x5b, 0x74, 0x8a, 0x25, 0xf4, 0xee, 0x23, 0x4e, 0xe6, 0xcb, 0xbe, 0x2d, 0x49, - 0x67, 0x64, 0x20, 0x2c, 0x20, 0x89, 0xad, 0x56, 0x1c, 0x4b, 0xce, 0xf9, 0x34, 0x88, 0x03, 0x1f, - 0xec, 0xaa, 0xfb, 0xe6, 0x81, 0xb5, 0x8f, 0x9b, 0x14, 0xc9, 0x4c, 0x0c, 0x87, 0x9a, 0xcc, 0xcb, - 0x08, 0x2d, 0xae, 0x12, 0x45, 0xa1, 0x1f, 0xf7, 0x8b, 0xfd, 0xc8, 0x02, 0xd5, 0xf2, 0xf5, 0x95, - 0x55, 0xce, 0x25, 0x24, 0x63, 0x83, 0xb0, 0x44, 0x84, 0x90, 0xe5, 0x94, 0x93, 0xff, 0xb8, 0x1a, - 0x10, 0x75, 0x4f, 0x20, 0x9e, 0x5d, 0x6f, 0x4a, 0xfa, 0x25, 0x77, 0x41, 0x17, 0x8d, 0x1a, 0xc0, - 0x72, 0x8b, 0xee, 0x1d, 0x44, 0xcc, 0x20, 0xc8, 0x40, 0x09, 0x85, 0x5b, 0xe6, 0x58, 0xb7, 0xa2, - 0xa9, 0x04, 0x1a, 0xa4, 0x0d, 0xca, 0xdb, 0x12, 0xb9, 0xf7, 0x9a, 0x3f, 0xbf, 0xd7, 0xb1, 0x70, - 0x43, 0x77, 0x39, 0x56, 0x16, 0x73, 0x47, 0xa3, 0xfe, 0x25, 0xef, 0x75, 0x89, 0x0d, 0x7c, 0xe0, - 0x8c, 0x23, 0xe4, 0x13, 0x2c, 0x81, 0x71, 0xb1, 0x0c, 0x6a, 0x76, 0xbd, 0xc3, 0x59, 0x82, 0x43, - 0xd2, 0x52, 0xcb, 0xff, 0xe2, 0x38, 0x05, 0xd2, 0x1f, 0x53, 0x7a, 0xe3, 0xfe, 0x02, 0x49, 0xd8, - 0x5d, 0xf0, 0x30, 0xab, 0xf1, 0x4e, 0x68, 0x4a, 0x92, 0xd5, 0x81, 0xe3, 0x95, 0xa1, 0x0d, 0x87, - 0x34, 0x3f, 0xba, 0x54, 0x50, 0x61, 0x5a, 0xeb, 0xcc, 0x12, 0xb7, 0x3f, 0xe7, 0xbe, 0x73, 0x1a, - 0x11, 0x06, 0x29, 0x43, 0x03, 0xe6, 0xe2, 0xa5, 0xbe, 0xb7, 0x0d, 0xd5, 0x75, 0xff, 0xaa, 0xfb, - 0x6b, 0xe5, 0x0f, 0x49, 0x26, 0xa5, 0xbf, 0x09, 0x92, 0x54, 0x47, 0x49, 0x0a, 0xdb, 0xc0, 0xcf, - 0x2b, 0x2e, 0x31, 0x98, 0x5e, 0x5c, 0x62, 0x82, 0xba, 0x9c, 0xf8, 0x31, 0xae, 0x38, 0x2f, 0x9a, - 0x32, 0x49, 0xb3, 0x43, 0x34, 0x44, 0x97, 0xa9, 0xd8, 0x57, 0x99, 0xbd, 0x92, 0x91, 0x9a, 0x85, - 0x22, 0x03, 0x75, 0xe7, 0x13, 0x02, 0xb8, 0xa5, 0xfd, 0x67, 0xb3, 0x3a, 0xef, 0x33, 0xdf, 0x3c, - 0x75, 0xf9, 0x42, 0x82, 0x16, 0x12, 0x1a, 0x82, 0xd2, 0x76, 0xfc, 0x3b, 0xad, 0x3b, 0xcc, 0x8d, - 0xd6, 0xf4, 0x37, 0xb3, 0xc7, 0x00, 0x62, 0xf9, 0x49, 0xaa, 0xef, 0xed, 0xe9, 0x0b, 0x16, 0xc1, - 0x61, 0xa8, 0x24, 0xe5, 0x02, 0x33, 0x2c, 0x51, 0x87, 0xe8, 0x47, 0xe0, 0x57, 0xa3, 0x84, 0xcd, - 0xa2, 0xb5, 0x44, 0xd9, 0x2c, 0x2e, 0x10, 0x84, 0x1b, 0xe9, 0x20, 0xd7, 0x99, 0x9d, 0xd9, 0x52, - 0xa7, 0xb1, 0xa4, 0xa6, 0x41, 0x86, 0xc5, 0xc1, 0x8f, 0x4a, 0x69, 0x11, 0x97, 0xef, 0x24, 0xcf, - 0x54, 0x5e, 0xb9, 0xc1, 0xa9, 0x45, 0xec, 0xbc, 0x31, 0x81, 0xde, 0x9f, 0x85, 0x71, 0x46, 0x9a, - 0x30, 0x77, 0x93, 0x75, 0xed, 0x37, 0x2d, 0xa3, 0x49, 0xbd, 0x58, 0xb0, 0x4d, 0xc4, 0x08, 0xb9, - 0xb8, 0x2c, 0x1f, 0x33, 0xb7, 0x27, 0x7e, 0x43, 0x2a, 0xad, 0x02, 0x6e, 0xda, 0x5a, 0xdf, 0x32, - 0xb0, 0xe1, 0xb8, 0x81, 0x6b, 0x4a, 0x6f, 0x4f, 0x17, 0x5c, 0x8d, 0x74, 0x72, 0x0c, 0x82, 0xf3, - 0x6c, 0x25, 0x72, 0xd7, 0x52, 0x8e, 0x5c, 0x2e, 0xb2, 0x2d, 0x99, 0x55, 0x53, 0xf6, 0xcd, 0xc6, - 0x6f, 0xd9, 0x24, 0x97, 0x73, 0x4f, 0xe6, 0x25, 0x26, 0x84, 0xdb, 0x07, 0xac, 0x21, 0xc2, 0xbf, - 0xb1, 0xa1, 0x80, 0x5d, 0x13, 0xf8, 0x09, 0xe1, 0xf7, 0x32, 0x49, 0xac, 0xa2, 0xb1, 0x8e, 0xc8, - 0xb3, 0xd6, 0xf9, 0x9f, 0x8b, 0x42, 0x8f, 0x3f, 0xed, 0xf9, 0xd3, 0x0d, 0x81, 0x2b, 0x23, 0x9f, - 0xe8, 0x23, 0x94, 0xd3, 0xbb, 0x5b, 0xae, 0x1c, 0x55, 0xc3, 0xf1, 0x3b, 0x27, 0xc7, 0x87, 0xd5, - 0xc6, 0x04, 0x1f, 0x99, 0x3a, 0xf1, 0x25, 0x99, 0xbb, 0xf9, 0xf5, 0xb6, 0x9d, 0x64, 0x49, 0xb5, - 0xad, 0x7c, 0xa4, 0xa3, 0x71, 0x0d, 0x04, 0x54, 0x3d, 0xd5, 0x31, 0x67, 0xa1, 0x0b, 0x51, 0xa6, - 0x0f, 0xea, 0x11, 0x1d, 0x62, 0xde, 0x79, 0x3b, 0xff, 0x96, 0xb9, 0xba, 0x15, 0x68, 0x8f, 0x54, - 0x66, 0xe4, 0x36, 0x5b, 0xfd, 0x13, 0x80, 0xb3, 0xe0, 0x54, 0x60, 0xd2, 0x57, 0xb6, 0x17, 0x1d, - 0xdb, 0x5b, 0x4f, 0x04, 0xa4, 0x1b, 0xa9, 0x8b, 0xf3, 0xcf, 0x6d, 0x85, 0xae, 0x44, 0x99, 0xfc, - 0xa2, 0x09, 0x6b, 0x79, 0x69, 0x0b, 0xc7, 0x13, 0xb8, 0x32, 0xfb, 0xd2, 0xfc, 0x3f, 0x03, 0x18, - 0x60, 0x55, 0x80, 0x69, 0x25, 0x00, 0xcf, 0x15, 0x60, 0xf8, 0x84, 0x94, 0xbf, 0x1e, 0x9a, 0x9a, - 0x34, 0xe3, 0x36, 0x5c, 0x69, 0x49, 0xe9, 0x04, 0x27, 0x8a, 0xb7, 0x1d, 0x28, 0xfc, 0x3a, 0x82, - 0xf2, 0x39, 0x47, 0x5b, 0x54, 0x23, 0x83, 0x4a, 0x58, 0x61, 0x11, 0xca, 0x7d, 0x23, 0x73, 0x09, - 0x6d, 0x0c, 0x12, 0x4b, 0x0d, 0x84, 0xb9, 0xc2, 0x1a, 0x1a, 0xfc, 0x66, 0x1f, 0x70, 0x74, 0x63, - 0x33, 0x5d, 0x51, 0x42, 0x6f, 0x39, 0xb6, 0xb3, 0x24, 0xc7, 0x77, 0x9a, 0x7c, 0xd9, 0x3c, 0x74, - 0xa1, 0x8b, 0xb9, 0xc5, 0xb1, 0xba, 0x51, 0x22, 0x7b, 0xb3, 0xc9, 0xc8, 0x9d, 0xa1, 0xbf, 0xdc, - 0xb9, 0x14, 0xdf, 0x48, 0x96, 0x29, 0xff, 0x19, 0x3b, 0xb4, 0x48, 0x0f, 0xce, 0x2d, 0x96, 0x16, - 0x74, 0xb5, 0x84, 0x46, 0x7e, 0x29, 0x5e, 0xc7, 0x1a, 0xca, 0x81, 0x89, 0x75, 0x14, 0x33, 0xf9, - 0x8f, 0xd6, 0xb1, 0x50, 0x1a, 0xb7, 0x9f, 0x1e, 0xf3, 0x5b, 0x0e, 0xf6, 0xd4, 0x79, 0x21, 0x8d, - 0x93, 0x9f, 0xe9, 0x56, 0xfb, 0x7b, 0x83, 0xb9, 0xb6, 0x5e, 0x21, 0xc3, 0x46, 0x5b, 0x7c, 0x46, - 0xfc, 0x4c, 0x3f, 0x4a, 0x08, 0xb9, 0x7c, 0x71, 0x9d, 0xcb, 0x7c, 0xd1, 0x1e, 0xc4, 0xb2, 0x62, - 0xf8, 0x30, 0x12, 0x35, 0x4c, 0xf8, 0x96, 0x65, 0xb1, 0x14, 0xf1, 0x50, 0x2e, 0xfc, 0xc0, 0xd8, - 0x09, 0x7a, 0xa7, 0x2e, 0xb6, 0x47, 0xa2, 0x40, 0x64, 0x9f, 0xba, 0xc8, 0x8e, 0x0b, 0x88, 0x1b, - 0x18, 0xd1, 0x0c, 0x30, 0x25, 0x60, 0x3c, 0x3e, 0xe1, 0xe6, 0x30, 0x93, 0xc9, 0x7c, 0xcb, 0x02, - 0xfc, 0x86, 0xb0, 0xf2, 0xcd, 0xb4, 0x58, 0x38, 0x32, 0x52, 0x40, 0x2c, 0xa3, 0x40, 0xea, 0x82, - 0x77, 0x7f, 0x06, 0x88, 0x1b, 0x2b, 0x4d, 0xcb, 0x71, 0xa6, 0xb2, 0x5f, 0x94, 0x60, 0x6a, 0x5a, - 0xc7, 0x15, 0x8e, 0xd4, 0x91, 0xda, 0x24, 0xe5, 0x7c, 0xa2, 0x25, 0x7f, 0xcb, 0x06, 0x05, 0x87, - 0x4d, 0x6b, 0xf5, 0xc4, 0x0d, 0x56, 0x31, 0x49, 0x5b, 0x61, 0xd5, 0xb1, 0x83, 0xa2, 0x22, 0x01, - 0x02, 0xa4, 0x8b, 0xec, 0x3b, 0xfb, 0x8c, 0xe7, 0x8b, 0x16, 0x53, 0x81, 0x98, 0x31, 0x1f, 0xa6, - 0x52, 0x64, 0x09, 0x2b, 0xa4, 0x0e, 0x8a, 0x38, 0x6b, 0x8c, 0xe5, 0x59, 0x66, 0xdb, 0xc0, 0xb8, - 0x7d, 0x50, 0x68, 0xaf, 0x67, 0x68, 0x24, 0x35, 0x25, 0x05, 0xf8, 0xf1, 0x7a, 0x06, 0x34, 0x48, - 0xf7, 0x5f, 0xc9, 0x91, 0x4f, 0x71, 0xe3, 0xcb, 0xe7, 0x89, 0xa6, 0x54, 0xba, 0x35, 0x40, 0xb5, - 0xbe, 0xf1, 0xcd, 0xe6, 0x5a, 0x41, 0x8f, 0x6f, 0x88, 0x1b, 0xa4, 0x9c, 0x6f, 0x59, 0x1b, 0x3a, - 0x43, 0xab, 0x0b, 0xdb, 0x10, 0x36, 0xe1, 0xcc, 0x10, 0x85, 0x95, 0x58, 0x03, 0xce, 0x0c, 0xa8, - 0x3d, 0xb9, 0xc6, 0xbc, 0x9a, 0xaf, 0x2d, 0xad, 0x10, 0xc3, 0xca, 0x91, 0x0a, 0x57, 0xde, 0xaa, - 0xb1, 0x39, 0x35, 0xdb, 0x0b, 0x7d, 0xc6, 0xc4, 0xc4, 0x4a, 0x57, 0xb0, 0xd6, 0x5c, 0xae, 0xbc, - 0xbc, 0x56, 0xcc, 0xfa, 0x5e, 0x2f, 0x9b, 0xce, 0x62, 0x2f, 0x4f, 0xd8, 0xc1, 0xbf, 0xa5, 0x7d, - 0x2d, 0xe6, 0x94, 0xe5, 0xb5, 0xae, 0x5c, 0x68, 0xda, 0xf3, 0x7b, 0xd5, 0x1e, 0x2e, 0xf4, 0xf3, - 0x10, 0x58, 0xd9, 0xf2, 0x7e, 0x2a, 0xe5, 0x37, 0xfa, 0x89, 0x59, 0xdf, 0x1d, 0x4d, 0x9c, 0xc6, - 0x09, 0x03, 0x8a, 0xc9, 0xcb, 0xc7, 0x34, 0xdf, 0x59, 0x5e, 0x2b, 0xc9, 0xba, 0x92, 0x5c, 0xaf, - 0x5f, 0xcb, 0xd7, 0x31, 0x88, 0xe3, 0xd6, 0x38, 0x03, 0x12, 0x04, 0xd9, 0x0a, 0xce, 0xd0, 0x50, - 0xa2, 0x59, 0x57, 0xf3, 0xf0, 0x74, 0xb6, 0x2b, 0x7e, 0xc5, 0x8a, 0x57, 0x12, 0xe8, 0xf7, 0x2d, - 0x6a, 0xda, 0xb6, 0xcc, 0xae, 0xde, 0x4b, 0xae, 0x99, 0x9f, 0x43, 0xed, 0xc1, 0xe2, 0x0c, 0x6a, - 0x9f, 0x42, 0xb3, 0x53, 0x9f, 0x94, 0xa5, 0x5d, 0x2e, 0x04, 0x5d, 0x5e, 0x49, 0x98, 0x38, 0xdb, - 0x02, 0xe6, 0x8f, 0x55, 0xcd, 0x71, 0x04, 0x52, 0x3b, 0x65, 0xc2, 0x38, 0xb1, 0x83, 0xd6, 0xf7, - 0x3b, 0x30, 0x90, 0x5b, 0x8e, 0x1f, 0x50, 0x13, 0x0b, 0x88, 0x30, 0x03, 0xdd, 0x40, 0xf0, 0x68, - 0x83, 0x04, 0xee, 0x80, 0x70, 0x64, 0xe4, 0x7a, 0xc6, 0x35, 0x86, 0x81, 0xc5, 0x61, 0xa3, 0x33, - 0x8f, 0xd2, 0x46, 0xa4, 0xc0, 0x50, 0x56, 0x10, 0x58, 0xd9, 0x28, 0xf9, 0x51, 0xf4, 0xd0, 0x6f, - 0xd0, 0x1a, 0x82, 0x1e, 0x12, 0x46, 0x13, 0x12, 0x35, 0x0f, 0x52, 0x90, 0xb9, 0x58, 0x26, 0x81, - 0xad, 0x8b, 0x34, 0xa8, 0xe6, 0xb5, 0xa3, 0xea, 0x46, 0xca, 0xeb, 0xeb, 0x2e, 0x7c, 0x03, 0x4e, - 0x5f, 0x17, 0xf3, 0xa5, 0x12, 0xb4, 0x07, 0x16, 0xbf, 0xba, 0x98, 0x13, 0x05, 0x3e, 0x9a, 0x25, - 0xc8, 0xca, 0xc6, 0x10, 0xde, 0x72, 0xf9, 0x8a, 0x98, 0xd4, 0x1e, 0xb6, 0x16, 0x84, 0x5c, 0xd4, - 0xe7, 0xe2, 0x54, 0x92, 0x89, 0x02, 0x53, 0x19, 0x04, 0x61, 0xe9, 0xd7, 0x10, 0xd3, 0xec, 0x47, - 0x27, 0x8e, 0xe1, 0x04, 0xe7, 0xfe, 0x59, 0x5d, 0x68, 0x17, 0x09, 0xd7, 0xa9, 0xb6, 0xd0, 0x5f, - 0xbf, 0x65, 0xa8, 0xe6, 0x33, 0x16, 0x40, 0x21, 0x17, 0x0a, 0xe0, 0xda, 0x17, 0x1c, 0xbc, 0xf4, - 0xdb, 0x4d, 0x30, 0x45, 0x5d, 0xdd, 0x44, 0x8e, 0x06, 0x99, 0x68, 0x2f, 0x72, 0xe3, 0xcd, 0xc2, - 0xa7, 0xfa, 0x40, 0xb0, 0x6e, 0x60, 0xf3, 0x63, 0x2b, 0x05, 0x02, 0xf6, 0x7d, 0xb2, 0x78, 0x7f, - 0x9c, 0xc2, 0x61, 0x3a, 0x58, 0x28, 0x18, 0x49, 0x81, 0x8d, 0x10, 0xfa, 0xc2, 0x1f, 0xd0, 0x31, - 0xe3, 0xc6, 0x91, 0x06, 0x4d, 0x55, 0xfc, 0xe1, 0x2a, 0x94, 0xd6, 0xe1, 0x09, 0x47, 0x4b, 0x89, - 0x8d, 0xd6, 0x0a, 0x1b, 0x2e, 0x05, 0x17, 0x4a, 0xcd, 0x06, 0xb4, 0x99, 0xd3, 0x37, 0xc7, 0x0d, - 0xb0, 0x4b, 0x17, 0xd4, 0x77, 0xfd, 0xa4, 0x41, 0xc2, 0x17, 0xf2, 0xc4, 0x01, 0x5b, 0x11, 0x72, - 0xeb, 0xd4, 0x57, 0x5c, 0x28, 0x50, 0xa7, 0xf1, 0xae, 0x50, 0xca, 0x53, 0x67, 0x6f, 0xa1, 0x5c, - 0x41, 0x18, 0x78, 0xa8, 0x30, 0xff, 0x74, 0x11, 0x97, 0x08, 0x6e, 0x90, 0xbe, 0xb5, 0x9c, 0xc5, - 0x19, 0xe6, 0x7e, 0x1c, 0x91, 0x1c, 0xc1, 0x37, 0x17, 0x31, 0x19, 0x41, 0x64, 0xf3, 0x3d, 0x44, - 0x82, 0xda, 0xef, 0xd3, 0xbd, 0xb2, 0x84, 0xee, 0x95, 0xff, 0x06, 0x54, 0x7e, 0x56, 0x55, 0x55, - 0x50, 0x18, 0x76, 0x96, 0x22, 0x67, 0x25, 0xc0, 0xce, 0xe8, 0xef, 0x90, 0xd9, 0xad, 0x18, 0xf0, - 0xbb, 0x64, 0xec, 0xdc, 0x7e, 0x08, 0x3b, 0x3e, 0x72, 0x56, 0xfe, 0x21, 0x76, 0xa2, 0xfd, 0x5c, - 0x49, 0xa4, 0x82, 0xe7, 0xbf, 0xd3, 0xcf, 0xe3, 0xf7, 0xfa, 0x79, 0xfc, 0x81, 0x7e, 0xae, 0xe7, - 0x58, 0x4f, 0x73, 0xeb, 0xca, 0xb2, 0xce, 0x96, 0x41, 0x27, 0xfa, 0x1d, 0x1e, 0xb8, 0xc0, 0x2d, - 0x98, 0x4b, 0x6b, 0x64, 0x19, 0xa1, 0x27, 0x2e, 0x05, 0x5c, 0x4d, 0xae, 0xf6, 0xb7, 0x04, 0xa2, - 0x1c, 0x87, 0x6b, 0x09, 0xc9, 0x45, 0xf2, 0x44, 0x96, 0x95, 0x95, 0xdf, 0x42, 0xd0, 0xd5, 0x7b, - 0xfc, 0xe6, 0xaa, 0xd7, 0x7a, 0x0f, 0x45, 0x64, 0x81, 0x78, 0x93, 0xe3, 0xfc, 0xe6, 0x02, 0x11, - 0x1f, 0xfa, 0x1e, 0xed, 0xe5, 0x4a, 0x64, 0xf5, 0xfc, 0x9d, 0x5e, 0xee, 0xff, 0xbf, 0xd0, 0xcb, - 0xd6, 0x3f, 0xed, 0xe5, 0xd6, 0xff, 0xcd, 0xbd, 0x8c, 0xd3, 0xfb, 0xf8, 0x2d, 0x6a, 0xbf, 0x43, - 0x63, 0xb1, 0x80, 0xad, 0x34, 0x35, 0x23, 0x4a, 0xf1, 0xe3, 0xbe, 0xde, 0x42, 0x51, 0x66, 0xe5, - 0xa3, 0x58, 0xb9, 0x7b, 0x67, 0x1d, 0xb8, 0x43, 0x94, 0xac, 0xfc, 0x3d, 0x9c, 0x2c, 0xa2, 0x64, - 0xe5, 0xef, 0x8c, 0x3c, 0xba, 0xaf, 0x2f, 0x43, 0xc5, 0x0a, 0xc5, 0x05, 0x40, 0xa0, 0xab, 0xd7, - 0x82, 0x24, 0xf9, 0x6e, 0xf7, 0x1b, 0x89, 0x1c, 0x90, 0x17, 0x03, 0x69, 0xc9, 0x44, 0xe4, 0xcb, - 0x90, 0x0e, 0x25, 0xf6, 0x7b, 0xe5, 0x5f, 0x10, 0xfc, 0x16, 0x88, 0x80, 0xb8, 0xe8, 0xc6, 0x4a, - 0x80, 0xb4, 0x50, 0x8e, 0xff, 0x6a, 0x6f, 0xa7, 0x44, 0x94, 0x2a, 0xe0, 0x3f, 0x51, 0xfa, 0x2a, - 0x90, 0xd8, 0xfc, 0x75, 0xf1, 0x4a, 0xeb, 0x24, 0xad, 0xa8, 0xab, 0x81, 0xb9, 0x31, 0x2a, 0x8e, - 0xbd, 0x55, 0xb2, 0xca, 0x4a, 0x5e, 0x61, 0x45, 0x9f, 0xb3, 0x1e, 0x2e, 0x2b, 0xdc, 0xcf, 0xb2, - 0xb4, 0x82, 0x95, 0x78, 0x0d, 0xed, 0x4a, 0xa4, 0xed, 0x0f, 0x9a, 0x61, 0x58, 0xe3, 0x37, 0x2b, - 0x20, 0x39, 0x36, 0x22, 0x2b, 0xfd, 0x5b, 0x5d, 0x00, 0xf5, 0x89, 0xaf, 0xe0, 0x4e, 0x75, 0x06, - 0x02, 0xa1, 0x9a, 0x37, 0x70, 0xe4, 0x67, 0xfb, 0x78, 0x37, 0xf0, 0x3f, 0xbe, 0x16, 0x5a, 0xc1, - 0x1b, 0xe5, 0x77, 0x93, 0xad, 0x27, 0x50, 0xba, 0x80, 0x3e, 0xd2, 0xf1, 0x7e, 0x28, 0x4a, 0x6c, - 0x90, 0xb7, 0x0c, 0x28, 0xf4, 0xad, 0x2e, 0x70, 0xc3, 0x40, 0x25, 0x86, 0x77, 0xfb, 0x00, 0x32, - 0x28, 0xdf, 0x87, 0x0b, 0x1d, 0xf4, 0x85, 0x37, 0xba, 0xa0, 0x2c, 0xef, 0x42, 0x52, 0xeb, 0x23, - 0x65, 0x6f, 0xc1, 0x04, 0x79, 0xa3, 0x6c, 0x05, 0xcb, 0x5e, 0xf9, 0x18, 0x91, 0x62, 0xc9, 0xed, - 0x0a, 0x57, 0xf6, 0xf6, 0x54, 0x35, 0xdf, 0x46, 0x0c, 0xc9, 0xf0, 0xd1, 0xb1, 0x55, 0x2a, 0x88, - 0x19, 0xae, 0xfc, 0x7d, 0x47, 0xd3, 0xcc, 0xb7, 0x1a, 0x4f, 0x33, 0x7c, 0x90, 0x42, 0x1d, 0xb3, - 0xc3, 0x4f, 0x5d, 0xd5, 0xec, 0x58, 0x83, 0x0f, 0xc9, 0xc3, 0x9e, 0x25, 0x10, 0x15, 0x1a, 0x65, - 0x61, 0xd9, 0x22, 0xf3, 0x92, 0x68, 0x18, 0x72, 0x0f, 0xdb, 0x47, 0x34, 0x0a, 0xd9, 0x1e, 0x3a, - 0xb6, 0xa1, 0x2d, 0x39, 0xba, 0xb5, 0x9a, 0x43, 0x33, 0x2d, 0xe0, 0xf9, 0x6a, 0x09, 0xe3, 0x6d, - 0xbb, 0x86, 0x18, 0x35, 0x9f, 0x40, 0x8a, 0x22, 0x72, 0x36, 0x3b, 0x61, 0x32, 0x71, 0xe1, 0x95, - 0x57, 0xc8, 0xe9, 0xae, 0x69, 0xd3, 0xb0, 0x3c, 0xb2, 0x44, 0xe0, 0x45, 0x07, 0xab, 0x0e, 0xe1, - 0x91, 0xe4, 0xb1, 0x17, 0x3e, 0xb6, 0xc2, 0xc7, 0x31, 0x3e, 0x6e, 0xe4, 0x42, 0x33, 0xc2, 0x4a, - 0xac, 0xd6, 0x5c, 0x62, 0xad, 0x49, 0x95, 0xe6, 0xa2, 0x95, 0xae, 0xbc, 0x5b, 0x6b, 0x3e, 0xd9, - 0x52, 0x04, 0x95, 0xe6, 0xc3, 0xc5, 0xe1, 0xbd, 0x5a, 0xf3, 0x1f, 0xe9, 0xea, 0x0a, 0x57, 0x6b, - 0x61, 0xd1, 0x64, 0xb2, 0xb0, 0xbe, 0x89, 0x7e, 0x43, 0x4e, 0xa8, 0xc1, 0x25, 0x5c, 0xde, 0xa8, - 0x06, 0xad, 0x4d, 0xc6, 0x49, 0x86, 0x12, 0x16, 0x53, 0x8d, 0x37, 0xf7, 0xf4, 0x0c, 0x2a, 0xdc, - 0x44, 0x0c, 0x59, 0x11, 0xad, 0x10, 0x0a, 0x6b, 0xfb, 0xcb, 0x37, 0x6e, 0x68, 0x25, 0x89, 0x05, - 0xcf, 0xda, 0xb4, 0x63, 0x8d, 0x4d, 0x02, 0xbc, 0x8b, 0x1b, 0x5d, 0x28, 0x1b, 0xe0, 0x76, 0x95, - 0x7f, 0x31, 0x47, 0x5d, 0xb4, 0x60, 0x96, 0x83, 0x56, 0xa8, 0x4e, 0x0c, 0xcd, 0xec, 0x79, 0xfd, - 0xba, 0x58, 0x89, 0x51, 0x10, 0xd6, 0x63, 0x76, 0x23, 0xa3, 0x49, 0x0f, 0xda, 0x70, 0xcd, 0x25, - 0x8a, 0xbc, 0x36, 0x61, 0x96, 0xb8, 0x88, 0x41, 0x4c, 0xf0, 0x4f, 0x23, 0xd1, 0xae, 0x14, 0xd6, - 0x99, 0xed, 0xf1, 0x3d, 0x64, 0x52, 0x54, 0xe2, 0xf6, 0x3d, 0xf2, 0x95, 0x0f, 0x61, 0x8c, 0xb5, - 0x80, 0x60, 0xac, 0x55, 0xa0, 0x18, 0x23, 0xa2, 0x8f, 0x00, 0xc5, 0x68, 0x9e, 0x17, 0x4a, 0x1b, - 0x2b, 0x7e, 0xe1, 0xe3, 0xa8, 0xae, 0x11, 0x59, 0xf9, 0x69, 0x2c, 0x1c, 0xa1, 0x0b, 0xd3, 0x3d, - 0xc0, 0x3c, 0x8f, 0xee, 0x15, 0x6e, 0xf3, 0xb8, 0x2e, 0x36, 0x49, 0x84, 0xbb, 0x50, 0x16, 0xfb, - 0x4a, 0x43, 0xde, 0x11, 0x31, 0x44, 0x16, 0x99, 0x1b, 0x02, 0x59, 0x98, 0x2d, 0x93, 0x6c, 0x67, - 0x2f, 0x85, 0x58, 0x24, 0x90, 0x30, 0xc2, 0x1d, 0x3f, 0x6f, 0x31, 0xd5, 0x64, 0x96, 0x2d, 0x8a, - 0xdb, 0x4a, 0xd7, 0x27, 0x93, 0x38, 0xba, 0x82, 0xe8, 0x7b, 0xbe, 0x7d, 0x32, 0x47, 0x21, 0x57, - 0xe2, 0x1c, 0xc4, 0x6f, 0x46, 0x30, 0x18, 0xf8, 0x12, 0x45, 0x0c, 0x6e, 0x11, 0x93, 0x1b, 0x97, - 0x70, 0x9c, 0x82, 0xc1, 0xa6, 0x1b, 0xb4, 0xc4, 0x8d, 0x89, 0x1b, 0x15, 0xbc, 0x54, 0xe6, 0x82, - 0x22, 0x9f, 0xd8, 0x69, 0x17, 0x0a, 0xe2, 0x0c, 0x52, 0xae, 0xad, 0x9a, 0x41, 0x71, 0xbe, 0x9f, - 0x05, 0x7c, 0x60, 0xbb, 0x27, 0x99, 0x4c, 0x06, 0x68, 0x05, 0x81, 0x38, 0xf9, 0x8b, 0xb4, 0x61, - 0x99, 0x6c, 0x4e, 0x95, 0xef, 0xb0, 0x6f, 0x2c, 0x72, 0xd6, 0x3b, 0xf6, 0xb0, 0xee, 0x64, 0x89, - 0xe8, 0x4a, 0xa7, 0x1d, 0x46, 0xe4, 0x64, 0xb3, 0x9b, 0x96, 0x27, 0x0c, 0x98, 0x49, 0x75, 0x29, - 0xf5, 0xb0, 0x62, 0xf7, 0x74, 0x9e, 0x92, 0x56, 0x78, 0x52, 0xfa, 0x0d, 0x4a, 0xa2, 0xfe, 0x30, - 0x6f, 0x10, 0x52, 0x00, 0xf0, 0x7f, 0x94, 0x8e, 0x58, 0x2b, 0xfe, 0x45, 0x32, 0xda, 0xbb, 0xff, - 0xdf, 0x4e, 0x40, 0x01, 0xe3, 0x66, 0x31, 0xa3, 0x96, 0x11, 0x46, 0x08, 0x42, 0x28, 0x43, 0x09, - 0x48, 0xc3, 0xb5, 0x35, 0xad, 0x13, 0x5b, 0x04, 0x58, 0x78, 0xa9, 0xf7, 0x0c, 0xe6, 0x4c, 0x9c, - 0x88, 0xfa, 0xd6, 0xc5, 0xec, 0xe8, 0x7b, 0x20, 0x37, 0xbc, 0x06, 0x86, 0xf4, 0x42, 0xbe, 0xf4, - 0x77, 0x0c, 0xe9, 0x4d, 0x6c, 0x63, 0xd2, 0xe2, 0xc1, 0xe9, 0x54, 0x04, 0x86, 0xe9, 0x95, 0x1f, - 0xb1, 0xae, 0xff, 0xab, 0xca, 0xe5, 0xc7, 0x8c, 0xeb, 0x2b, 0x4b, 0x17, 0xe5, 0xc5, 0x01, 0xca, - 0x05, 0x03, 0x84, 0x58, 0x45, 0x57, 0xc9, 0x69, 0xe2, 0x20, 0xe5, 0xfe, 0x8d, 0x41, 0x22, 0x35, - 0xba, 0xfe, 0x20, 0x15, 0x95, 0xf5, 0xbf, 0x33, 0x48, 0x87, 0x7e, 0x3b, 0xdf, 0x19, 0xa8, 0x00, - 0xee, 0xff, 0x9f, 0xc1, 0xca, 0x8b, 0x1b, 0xdb, 0x43, 0xd7, 0xb3, 0x06, 0x42, 0x2e, 0x6a, 0x39, - 0x61, 0x51, 0xd9, 0x42, 0x91, 0xaf, 0x4f, 0xf6, 0x2d, 0xde, 0x1c, 0xb1, 0xc8, 0xfe, 0x67, 0x52, - 0xbf, 0xde, 0xb0, 0x3c, 0x6c, 0xe7, 0x12, 0xed, 0x51, 0xbc, 0x9d, 0x85, 0xb4, 0x93, 0x08, 0xb4, - 0xbf, 0x87, 0xfa, 0x64, 0x13, 0xec, 0x6f, 0x99, 0x22, 0x18, 0xe2, 0x57, 0x3e, 0xb8, 0x07, 0xf5, - 0x01, 0xc4, 0x17, 0x40, 0xf0, 0x62, 0x98, 0xcf, 0x27, 0x61, 0xbe, 0x10, 0xa0, 0xe3, 0x23, 0x88, - 0x5f, 0xe1, 0xf7, 0x45, 0x7f, 0xcf, 0xe4, 0xb3, 0x9d, 0xff, 0x20, 0xe2, 0xf3, 0xff, 0x7f, 0x20, - 0xbe, 0x18, 0x22, 0xbe, 0x90, 0x84, 0xf8, 0xe2, 0xdf, 0x40, 0xbc, 0x56, 0xf9, 0x3b, 0x88, 0x2f, - 0x7c, 0x10, 0xf1, 0x85, 0xff, 0x07, 0x10, 0x9f, 0xac, 0x31, 0x37, 0xb5, 0x1e, 0xb9, 0xe5, 0x52, - 0xe4, 0xf7, 0xcb, 0x13, 0xa4, 0x42, 0xe6, 0x09, 0x1e, 0x97, 0x26, 0x62, 0x1b, 0x7b, 0xd4, 0xd5, - 0x9c, 0x33, 0xe6, 0xd2, 0x18, 0x97, 0xe2, 0xc6, 0x32, 0xd0, 0x3c, 0xa7, 0x6c, 0xc5, 0x14, 0x2c, - 0x97, 0x09, 0x9c, 0x8e, 0x0b, 0x6f, 0x9c, 0x2c, 0xe4, 0x40, 0x93, 0xc9, 0x72, 0x72, 0xa5, 0xc1, - 0x00, 0x80, 0x4c, 0x46, 0x3b, 0x90, 0xa0, 0x50, 0x6d, 0x5c, 0x87, 0xe7, 0x00, 0x80, 0xe5, 0x86, - 0xa3, 0xeb, 0x25, 0x28, 0x8b, 0x74, 0x3c, 0xa8, 0x3b, 0x79, 0x38, 0x4c, 0x64, 0xe0, 0xca, 0xa5, - 0x4c, 0xc9, 0xdf, 0xf9, 0x52, 0x32, 0x39, 0x6e, 0xe3, 0x35, 0xb3, 0x06, 0x1c, 0xd5, 0x6c, 0xb9, - 0x76, 0x8d, 0xf9, 0x04, 0xc4, 0x7a, 0x79, 0xe1, 0x60, 0x1b, 0xdf, 0x92, 0xb8, 0x49, 0x17, 0xed, - 0x17, 0x43, 0x7c, 0x73, 0x86, 0x6c, 0xb0, 0x82, 0xde, 0x16, 0xb3, 0x69, 0x59, 0x6e, 0x54, 0xce, - 0x7e, 0x57, 0xcc, 0x5e, 0x59, 0xa2, 0xb1, 0x91, 0xe1, 0x06, 0x31, 0x7b, 0x89, 0xba, 0xc6, 0x3e, - 0x93, 0xc9, 0xb7, 0xb2, 0x54, 0xca, 0xfe, 0x98, 0x90, 0xbd, 0xf2, 0x41, 0x29, 0x7b, 0x41, 0x59, - 0x23, 0x8d, 0x88, 0xc9, 0xd8, 0x2b, 0x54, 0x0e, 0x8e, 0xaa, 0x60, 0x14, 0x7d, 0x48, 0x35, 0x21, - 0xf9, 0xc6, 0x65, 0xe1, 0xa0, 0xd4, 0xf7, 0x68, 0x78, 0xa9, 0x17, 0x02, 0x89, 0x44, 0x0d, 0xa0, - 0x74, 0xfb, 0x87, 0xe6, 0xf1, 0x1d, 0x5b, 0x42, 0x10, 0xbc, 0xa9, 0x97, 0x37, 0x1e, 0x58, 0xb6, - 0x66, 0x5e, 0xab, 0xad, 0xd4, 0x72, 0xa7, 0x16, 0xa6, 0xcc, 0x27, 0x3b, 0xb5, 0x50, 0x27, 0x87, - 0x64, 0x77, 0x9a, 0x85, 0x4a, 0x57, 0x16, 0x6a, 0xcd, 0x7d, 0xc0, 0x95, 0x66, 0xb1, 0x52, 0xa6, - 0x4a, 0xae, 0x7c, 0xb0, 0xda, 0x85, 0x5a, 0xf3, 0x4b, 0x5d, 0xa5, 0x0a, 0xc5, 0xd6, 0x1b, 0x2e, - 0x61, 0xc1, 0x64, 0xff, 0x9b, 0xbd, 0x2d, 0x2c, 0xeb, 0xad, 0x52, 0x6c, 0x2f, 0xaf, 0x96, 0x91, - 0xcf, 0xca, 0xdb, 0x8e, 0x43, 0x2c, 0x86, 0x66, 0xd4, 0x4c, 0x4b, 0x5d, 0x0a, 0x55, 0x54, 0x05, - 0xa3, 0x1a, 0xa7, 0xb3, 0x8b, 0xd1, 0x52, 0xaf, 0xf1, 0x13, 0x1e, 0xb0, 0x97, 0x16, 0xb3, 0x05, - 0x47, 0x7e, 0xdf, 0xf2, 0xfb, 0x8a, 0xe5, 0x41, 0x8f, 0xda, 0x60, 0x42, 0x10, 0x6f, 0xf9, 0x04, - 0x1a, 0x0c, 0x4d, 0x58, 0x02, 0x89, 0x5a, 0xfa, 0x51, 0x67, 0x36, 0x81, 0x1c, 0xe5, 0xa3, 0xf8, - 0xca, 0x55, 0x54, 0xe6, 0xa1, 0x18, 0xe2, 0x23, 0x68, 0xc4, 0xa0, 0x47, 0xcd, 0x7c, 0x83, 0x9e, - 0x9f, 0x7f, 0xac, 0x8b, 0x82, 0x6a, 0x78, 0xcc, 0xbd, 0x87, 0xbb, 0x8b, 0xda, 0x36, 0x7b, 0xfe, - 0xe5, 0xb1, 0xfa, 0xed, 0xd6, 0xf9, 0xd5, 0x58, 0x39, 0xde, 0xef, 0x59, 0x78, 0x61, 0xd2, 0x59, - 0xf3, 0xa6, 0xbf, 0x7b, 0x83, 0x97, 0xc5, 0x6e, 0x91, 0x0b, 0x94, 0xf6, 0xb6, 0x1b, 0x0f, 0xf0, - 0xb3, 0x5d, 0xda, 0x1b, 0x76, 0x4b, 0xe4, 0xb6, 0xd8, 0xfb, 0xb3, 0xe6, 0x95, 0x72, 0xd8, 0x70, - 0xdc, 0x62, 0xbb, 0x4c, 0xae, 0xa3, 0xbe, 0x32, 0x2f, 0x6f, 0x72, 0x5b, 0x00, 0x33, 0x79, 0x1a, - 0x8f, 0x2a, 0x0f, 0x97, 0x37, 0x98, 0x78, 0xd4, 0xde, 0xed, 0x3f, 0xb6, 0xc7, 0x8d, 0xc6, 0x8e, - 0x7b, 0x0a, 0xaf, 0x6b, 0x3b, 0x8d, 0x76, 0x67, 0xf4, 0xb2, 0x8f, 0x19, 0xb6, 0x5a, 0xcd, 0x9b, - 0xab, 0xad, 0xdb, 0xed, 0xfe, 0xb5, 0xf1, 0xb0, 0xde, 0xda, 0xb1, 0x1a, 0xe3, 0x9d, 0xd3, 0xb3, - 0xbb, 0x35, 0x73, 0xdd, 0x1c, 0x6f, 0xeb, 0xf6, 0xd4, 0xbb, 0x3c, 0x2b, 0x3e, 0x56, 0xbc, 0x96, - 0x73, 0x7d, 0x30, 0xd8, 0x19, 0xec, 0x15, 0xad, 0x8b, 0xd7, 0xa9, 0xd1, 0x19, 0x5f, 0xbd, 0xd8, - 0xb9, 0x66, 0xb3, 0x63, 0xde, 0x66, 0xcf, 0x86, 0x8f, 0xc3, 0xd7, 0x17, 0xcd, 0x69, 0x6c, 0x4d, - 0x27, 0xf7, 0xaf, 0xe6, 0xd6, 0xb8, 0xa0, 0xf7, 0x9e, 0xb5, 0xbd, 0xdd, 0xee, 0xfd, 0xf4, 0x66, - 0xd8, 0x3f, 0xce, 0x4e, 0xf7, 0x4e, 0x95, 0xed, 0xc9, 0x51, 0x77, 0xfa, 0x72, 0xff, 0xb8, 0x7b, - 0xde, 0x2e, 0x67, 0x9b, 0xce, 0x7a, 0xb6, 0xd5, 0x5d, 0x1b, 0x1e, 0x6e, 0x97, 0xce, 0xc6, 0x9d, - 0x35, 0xcb, 0x39, 0x1d, 0x35, 0x2e, 0x12, 0x2f, 0xb0, 0x8e, 0xed, 0x82, 0x10, 0x87, 0x89, 0x51, - 0x94, 0x7b, 0x45, 0x20, 0x12, 0x97, 0x51, 0xe6, 0x74, 0xcd, 0xd3, 0x8f, 0xa3, 0xbd, 0x0c, 0x35, - 0xd7, 0x3b, 0x72, 0x2d, 0x93, 0xae, 0xa1, 0x5d, 0xa0, 0xed, 0xfe, 0xd2, 0xb9, 0xb4, 0xa4, 0x94, - 0x18, 0x15, 0x1e, 0x9a, 0xc0, 0x24, 0xcd, 0xb6, 0x26, 0xe0, 0x6d, 0xca, 0xbf, 0x59, 0x96, 0xef, - 0x63, 0x88, 0x33, 0x34, 0x25, 0x66, 0xa9, 0xf0, 0x24, 0xca, 0xe2, 0x7f, 0xb9, 0x9a, 0x81, 0xfb, - 0x2f, 0x1b, 0x37, 0x24, 0x45, 0xa0, 0x77, 0x79, 0x2f, 0xf8, 0x0b, 0x26, 0x95, 0x4d, 0xa4, 0x06, - 0x9c, 0xb1, 0x51, 0xc1, 0xa1, 0x6d, 0x76, 0x89, 0xc8, 0x40, 0xfb, 0xdd, 0xb2, 0x2c, 0x2f, 0x56, - 0x68, 0xa0, 0x95, 0x11, 0xa4, 0x92, 0x55, 0xc4, 0x97, 0x33, 0xc5, 0x8d, 0x53, 0xb5, 0xa3, 0x09, - 0x63, 0xdd, 0xeb, 0xb3, 0x2f, 0xd4, 0x34, 0xac, 0x3a, 0x1e, 0xce, 0x07, 0x98, 0xc0, 0x95, 0x62, - 0x0d, 0xe6, 0xc5, 0xde, 0xae, 0xb2, 0x5b, 0x63, 0x0b, 0xcb, 0x8a, 0xd0, 0x9a, 0x0a, 0x0d, 0xdd, - 0x69, 0x5b, 0x96, 0xf5, 0xac, 0x6b, 0xc4, 0xd7, 0xda, 0xeb, 0x6b, 0xc2, 0x37, 0x55, 0xa0, 0x7e, - 0x94, 0x7d, 0xcf, 0xb3, 0xdd, 0x6a, 0x36, 0x3b, 0x36, 0xb4, 0x4e, 0x06, 0xa4, 0xbc, 0xb6, 0x05, - 0x7a, 0xb4, 0x96, 0xc1, 0xdd, 0x13, 0x3b, 0x0b, 0x12, 0x89, 0xea, 0xf4, 0xf0, 0x22, 0xf9, 0xff, - 0x62, 0x7e, 0x70, 0x2b, 0xc4, 0xe7, 0xb9, 0x6d, 0x0d, 0x06, 0x43, 0x93, 0x68, 0xec, 0xea, 0xc6, - 0xb2, 0x25, 0xcc, 0xa4, 0xee, 0xa2, 0xff, 0x94, 0x0f, 0x2c, 0x73, 0x2f, 0xfd, 0x28, 0x23, 0xc0, - 0x10, 0xc6, 0x22, 0xb9, 0x85, 0x1d, 0x06, 0x87, 0x92, 0x88, 0xbb, 0xe0, 0x06, 0x64, 0x2e, 0x52, - 0x35, 0xdb, 0x81, 0x62, 0xd6, 0x85, 0xc5, 0x33, 0x92, 0xf4, 0xd0, 0x98, 0xf8, 0x51, 0x6a, 0x45, - 0x09, 0x20, 0xe8, 0xca, 0x22, 0xc5, 0x27, 0x0b, 0xc6, 0x24, 0xd4, 0x72, 0x28, 0x05, 0x04, 0x38, - 0x8c, 0x61, 0x02, 0x2f, 0xe3, 0x89, 0x79, 0x15, 0x47, 0x26, 0xad, 0x01, 0x93, 0x76, 0x33, 0x9c, - 0xab, 0xd4, 0x15, 0xea, 0xda, 0x12, 0x86, 0xae, 0x26, 0xb4, 0x86, 0xba, 0x81, 0xf1, 0x63, 0x04, - 0x8d, 0xae, 0xa6, 0x32, 0x49, 0x45, 0xd9, 0x05, 0xaa, 0x76, 0x40, 0x2a, 0x65, 0xa7, 0x0e, 0x04, - 0x58, 0x03, 0x60, 0x86, 0x90, 0xfc, 0xc2, 0x83, 0x35, 0x14, 0xda, 0x00, 0xe3, 0x68, 0xde, 0xd0, - 0x31, 0x05, 0xdc, 0x53, 0xd3, 0x80, 0xb3, 0xea, 0x03, 0x8d, 0x18, 0x62, 0x91, 0xe6, 0xf0, 0x4c, - 0x91, 0x8b, 0xfe, 0xf6, 0x48, 0x6d, 0x18, 0x2d, 0x1a, 0x90, 0x42, 0x9e, 0x51, 0x52, 0xc4, 0xa3, - 0x6a, 0x40, 0x44, 0x8e, 0xa9, 0x39, 0x19, 0xe6, 0x98, 0xb5, 0x80, 0xc4, 0xc8, 0x8e, 0x91, 0x77, - 0x42, 0xae, 0x70, 0x17, 0x37, 0xce, 0xfd, 0x56, 0x59, 0xc4, 0x71, 0xe1, 0x8d, 0xa9, 0xb8, 0x98, - 0x3f, 0xcf, 0xe7, 0x1f, 0x9a, 0x78, 0x1e, 0xd5, 0x21, 0x53, 0x30, 0x28, 0x87, 0x9b, 0x74, 0x2b, - 0xe1, 0xac, 0x5b, 0xd9, 0xb3, 0x1c, 0xe8, 0xbe, 0xeb, 0x09, 0xb6, 0xe6, 0x90, 0xfb, 0xf3, 0xa0, - 0x6e, 0x59, 0xd0, 0x41, 0x8e, 0xc7, 0xf0, 0xe3, 0x38, 0x19, 0x34, 0x72, 0x4e, 0x0a, 0xf0, 0x40, - 0xf0, 0x61, 0x75, 0xbb, 0xac, 0xdb, 0x80, 0x96, 0x01, 0x22, 0xc1, 0x85, 0x59, 0x05, 0xac, 0x69, - 0xdc, 0xd7, 0x4c, 0x72, 0x38, 0x07, 0x70, 0x01, 0x68, 0xce, 0xac, 0xc4, 0xe7, 0x8e, 0x1e, 0x0e, - 0x3b, 0xe2, 0x4c, 0x4c, 0x18, 0xe7, 0x85, 0x6e, 0x29, 0x52, 0x38, 0xf6, 0x2b, 0xe1, 0xe0, 0xb3, - 0x93, 0x07, 0x2b, 0x78, 0x87, 0xbd, 0x61, 0xb5, 0x75, 0x5b, 0x1e, 0xdf, 0xc9, 0x6c, 0x0f, 0xc6, - 0xdd, 0x81, 0xc5, 0x4f, 0x1e, 0xbb, 0x72, 0x1b, 0x1d, 0x4f, 0x65, 0x7a, 0xd7, 0xbc, 0xec, 0xd1, - 0x8b, 0xdb, 0x65, 0x80, 0xae, 0x7f, 0xca, 0xc9, 0xa6, 0x75, 0xa6, 0x8d, 0x51, 0xcf, 0xc1, 0x17, - 0xdd, 0x3d, 0x37, 0x49, 0xa2, 0xd1, 0xa0, 0xaf, 0x27, 0x23, 0xfa, 0x8b, 0xcb, 0x34, 0x7d, 0x22, - 0xd4, 0x8d, 0x8f, 0xee, 0xd4, 0x6c, 0x37, 0x01, 0x23, 0xfe, 0xf3, 0x75, 0xcf, 0xb8, 0xd2, 0xda, - 0x00, 0xaf, 0xc8, 0x7d, 0xd5, 0x25, 0x7b, 0xfc, 0xf8, 0x09, 0x9e, 0xaf, 0xf6, 0xb7, 0xd8, 0xd3, - 0xf6, 0xf6, 0x35, 0x2d, 0x7e, 0x67, 0xe8, 0xd4, 0xcb, 0x0a, 0x3c, 0x5c, 0xab, 0x4e, 0x1d, 0x7f, - 0xd1, 0x59, 0x9a, 0x94, 0xc4, 0xce, 0x95, 0xee, 0x4d, 0x20, 0x19, 0x0f, 0x78, 0xc2, 0xc3, 0x6a, - 0x98, 0x7c, 0xa1, 0x1a, 0x90, 0xde, 0x86, 0x57, 0xfc, 0x19, 0x3a, 0x18, 0x41, 0x81, 0x8a, 0x4c, - 0x08, 0x85, 0xf0, 0x17, 0x4d, 0x7c, 0x02, 0x7c, 0x7a, 0x94, 0x9b, 0x03, 0x1c, 0xe8, 0x6d, 0xdb, - 0x16, 0x50, 0x02, 0x3c, 0x02, 0xfb, 0x0b, 0x1e, 0xad, 0x31, 0x0c, 0xf6, 0x8d, 0x09, 0x23, 0xd4, - 0x81, 0x57, 0x50, 0xbf, 0x00, 0x0b, 0x98, 0x4e, 0x7f, 0xec, 0xb6, 0xdf, 0x24, 0xfa, 0x44, 0x10, - 0x82, 0xc5, 0x8e, 0xe1, 0xa3, 0xe7, 0xd4, 0xd7, 0xe4, 0x4e, 0xbd, 0x03, 0xda, 0x0a, 0x0a, 0x89, - 0x72, 0x77, 0x82, 0x72, 0x46, 0xfd, 0xfb, 0x0f, 0xd9, 0xc6, 0xe5, 0xae, 0x3e, 0x9b, 0xcb, 0x9a, - 0xff, 0x60, 0xf8, 0x0f, 0xf6, 0x59, 0x5d, 0x14, 0x65, 0xfb, 0x10, 0x0b, 0x3f, 0x1b, 0x0e, 0xf0, - 0x67, 0xe0, 0xd5, 0x73, 0xf8, 0xf7, 0xa4, 0x49, 0xdf, 0x4e, 0xa0, 0x7c, 0x6c, 0x02, 0xfc, 0x20, - 0x73, 0xc1, 0x5c, 0xba, 0x7b, 0x8a, 0x35, 0x0f, 0xb0, 0xda, 0x41, 0x1f, 0x7b, 0xdd, 0xed, 0xd5, - 0x67, 0x1e, 0xba, 0x75, 0x57, 0x67, 0x28, 0xce, 0x54, 0x41, 0xc6, 0x71, 0x9e, 0x45, 0xb9, 0xd5, - 0xab, 0xce, 0x86, 0x8e, 0x51, 0x15, 0xc5, 0xb9, 0xac, 0x1a, 0x76, 0x5f, 0x85, 0xcf, 0xbd, 0x6a, - 0xa6, 0x2c, 0x83, 0x74, 0x59, 0xcd, 0x54, 0xe6, 0x32, 0xdd, 0x81, 0xc7, 0x44, 0x00, 0xc1, 0xd7, - 0x81, 0x5d, 0xa5, 0xa7, 0xec, 0xdc, 0xea, 0x8c, 0xba, 0x26, 0x57, 0x61, 0xf0, 0x9c, 0x5e, 0xab, - 0x0a, 0x15, 0xbe, 0x0c, 0x21, 0x05, 0xdf, 0xfb, 0xda, 0x04, 0xde, 0xa1, 0x1f, 0x44, 0x45, 0xc4, - 0x14, 0xbb, 0x3d, 0x00, 0xc6, 0x88, 0x40, 0xb6, 0xde, 0xc1, 0x04, 0x40, 0xb0, 0xa1, 0x99, 0x55, - 0x32, 0x7c, 0x3d, 0x7b, 0xec, 0xe0, 0x53, 0xdb, 0x25, 0xb0, 0xfd, 0x8e, 0x3a, 0x75, 0x31, 0xff, - 0x5c, 0x06, 0x6d, 0xb0, 0xfe, 0xfd, 0xbb, 0x22, 0xe7, 0x72, 0x72, 0xbe, 0x28, 0x17, 0xe5, 0x60, - 0x51, 0x52, 0x83, 0x85, 0x2b, 0xd3, 0x83, 0x55, 0x6f, 0xd8, 0xca, 0xe8, 0x56, 0x76, 0x32, 0x50, - 0xdd, 0x0c, 0x88, 0x6c, 0xe2, 0x0f, 0x19, 0xf2, 0xe4, 0xe5, 0xdc, 0x9a, 0x9c, 0x0b, 0xb3, 0x10, - 0x89, 0xce, 0xcd, 0x90, 0x7e, 0xb6, 0x2d, 0xdc, 0x30, 0xc8, 0x40, 0x7f, 0xb2, 0xc5, 0xf5, 0x1c, - 0xfe, 0xcb, 0xe5, 0x0b, 0x99, 0x27, 0x9b, 0x64, 0xcd, 0x2b, 0xf9, 0x92, 0x5c, 0x90, 0xf3, 0x58, - 0xc4, 0xdb, 0x15, 0x6a, 0x80, 0x74, 0x60, 0x54, 0xac, 0x4a, 0xc8, 0x57, 0x80, 0x7c, 0xeb, 0xbf, - 0x9f, 0xad, 0x08, 0x59, 0x0a, 0xb9, 0xdf, 0xcc, 0xa7, 0xc8, 0x65, 0xc0, 0x08, 0xdf, 0x41, 0x58, - 0x77, 0x75, 0x20, 0xdf, 0x85, 0x2e, 0xe2, 0x26, 0x33, 0xae, 0x32, 0xd9, 0xb1, 0x6a, 0x18, 0xb6, - 0x0a, 0xbc, 0x2a, 0x5b, 0xca, 0x95, 0xd7, 0xd6, 0xf3, 0x0c, 0x27, 0x59, 0xe8, 0x38, 0xa4, 0x28, - 0xeb, 0xf9, 0x5c, 0xa1, 0x5c, 0xc8, 0xaf, 0xe7, 0x4b, 0x85, 0x32, 0xad, 0x01, 0x30, 0xff, 0x77, - 0x6b, 0xc8, 0xe5, 0xd6, 0x2b, 0x15, 0x45, 0xe1, 0xab, 0xc8, 0x97, 0xf2, 0xf9, 0x8a, 0xb2, 0x56, - 0xac, 0xe4, 0x4a, 0x95, 0x52, 0x59, 0x51, 0xc4, 0x1f, 0x3f, 0x6a, 0xdd, 0xa1, 0x49, 0xe2, 0x65, - 0x09, 0x7d, 0x10, 0x40, 0x0c, 0xed, 0x36, 0x38, 0x60, 0xb8, 0x4d, 0xcc, 0x58, 0x29, 0x69, 0xf6, - 0xa9, 0x93, 0xa1, 0xe1, 0x08, 0xbe, 0x7c, 0x31, 0xb5, 0xb1, 0x00, 0x0c, 0x0a, 0x43, 0xe6, 0xfb, - 0x73, 0x75, 0xa3, 0xa0, 0x15, 0xbe, 0x7c, 0x89, 0xc8, 0x8d, 0xf3, 0xa0, 0x4c, 0x17, 0xb4, 0xcf, - 0x94, 0x26, 0x7b, 0xd2, 0x0c, 0x24, 0x18, 0x36, 0xf1, 0x76, 0x0d, 0x0d, 0x7f, 0x32, 0x64, 0xf9, - 0xce, 0x00, 0x17, 0xb8, 0x70, 0x40, 0xb8, 0x73, 0xbc, 0x29, 0x01, 0x0c, 0xf3, 0xf6, 0x0e, 0x3b, - 0x29, 0x4d, 0x9a, 0xb1, 0x85, 0xac, 0x93, 0x01, 0x61, 0x87, 0x65, 0xdd, 0x9a, 0x92, 0x4f, 0x1c, - 0xe8, 0xee, 0xd6, 0xf6, 0xd9, 0x12, 0x60, 0x77, 0x6b, 0xba, 0x8d, 0x9c, 0xfa, 0x0c, 0xd4, 0xa5, - 0x48, 0x26, 0xdd, 0xdd, 0x1d, 0xd8, 0x58, 0x6b, 0x90, 0x4d, 0xa9, 0xd7, 0xeb, 0xe7, 0xad, 0x27, - 0x60, 0x5a, 0x78, 0x0f, 0x9d, 0x0b, 0x5f, 0x32, 0x74, 0xd7, 0x9f, 0xcf, 0x04, 0x00, 0x5c, 0x16, - 0xed, 0xcb, 0x17, 0xd1, 0x22, 0x59, 0xc4, 0x7a, 0x1d, 0x6d, 0x29, 0x56, 0x17, 0xd3, 0x3e, 0x35, - 0x1c, 0x47, 0x9d, 0x66, 0x74, 0x97, 0xfc, 0xc6, 0xaa, 0xbd, 0xea, 0xb5, 0x88, 0xaf, 0x53, 0xb4, - 0x66, 0x5b, 0x05, 0xe1, 0xee, 0xd0, 0xf4, 0x52, 0x5a, 0xc6, 0x91, 0xbe, 0x7c, 0x89, 0xa6, 0xf4, - 0x16, 0x52, 0x5a, 0x5c, 0x91, 0x30, 0xfb, 0x9b, 0x9e, 0x13, 0x16, 0x87, 0xce, 0xc5, 0x29, 0x31, - 0x0d, 0x05, 0xa5, 0x41, 0x52, 0x86, 0xdf, 0x1e, 0xfb, 0x6d, 0xa5, 0x45, 0x49, 0x8c, 0xe4, 0xc3, - 0x43, 0x21, 0x41, 0xbe, 0x4c, 0x3e, 0x97, 0x2f, 0xff, 0x15, 0x69, 0x48, 0x3a, 0xb3, 0x96, 0x2b, - 0xe5, 0xff, 0x8a, 0x34, 0x25, 0x9d, 0x51, 0xd6, 0xf2, 0x91, 0x34, 0xbe, 0x31, 0x68, 0xf5, 0x6c, - 0x9e, 0x60, 0xa1, 0xb0, 0x9e, 0x09, 0x5e, 0x5d, 0xcb, 0x20, 0x9b, 0x85, 0xd4, 0xcc, 0x78, 0x93, - 0xcb, 0x12, 0x24, 0x4a, 0x55, 0xe0, 0x45, 0x28, 0x92, 0x9a, 0x9a, 0xf8, 0xa9, 0x5e, 0xef, 0xa1, - 0x3b, 0xe6, 0xc0, 0x1e, 0xc2, 0xba, 0xd1, 0x44, 0x02, 0xc1, 0x41, 0x40, 0xeb, 0x54, 0x93, 0x04, - 0xb3, 0xaa, 0xd1, 0x95, 0x09, 0x10, 0xcc, 0xa3, 0xd1, 0x2f, 0x4c, 0xda, 0x84, 0x67, 0x4a, 0x56, - 0xa1, 0x9b, 0x11, 0xb1, 0x7f, 0xd4, 0x7d, 0x14, 0x05, 0xa0, 0xb2, 0xfb, 0xeb, 0x57, 0x00, 0xdd, - 0xf6, 0x61, 0x08, 0x3a, 0x02, 0x98, 0x8d, 0x5c, 0x7e, 0x6d, 0x93, 0xf8, 0x7a, 0x89, 0x55, 0xe2, - 0x12, 0x27, 0x4a, 0xc1, 0x32, 0xf9, 0xe5, 0x8b, 0xb7, 0xa1, 0x7c, 0xf9, 0x92, 0x50, 0x61, 0xfd, - 0x67, 0xdc, 0xb1, 0x89, 0x5e, 0x51, 0x27, 0x0b, 0x7f, 0xcc, 0x16, 0x9a, 0x31, 0x17, 0x0a, 0xca, - 0x9f, 0x32, 0x8e, 0x44, 0xea, 0x8f, 0x99, 0x37, 0x97, 0x83, 0x3f, 0x92, 0xf4, 0x53, 0x92, 0xaa, - 0x29, 0xbf, 0x3a, 0x68, 0x2c, 0x2c, 0x32, 0x92, 0x9c, 0x54, 0x5d, 0x42, 0xe6, 0x9f, 0x09, 0xdd, - 0xf3, 0x12, 0xba, 0xc3, 0x8d, 0x9b, 0x6a, 0xdb, 0xc6, 0x74, 0xbb, 0xdb, 0x83, 0x09, 0xdf, 0xa6, - 0x07, 0x90, 0x44, 0x72, 0x47, 0x2b, 0xd0, 0x75, 0x1d, 0x96, 0xaf, 0x0c, 0x59, 0xbd, 0x32, 0xb8, - 0x78, 0x49, 0x35, 0x14, 0x5c, 0x34, 0x2e, 0x95, 0x54, 0x90, 0x69, 0xf5, 0x6a, 0x80, 0x16, 0x32, - 0xe5, 0x45, 0x12, 0x8d, 0x5a, 0x94, 0x19, 0xac, 0x47, 0x60, 0x71, 0xf1, 0x62, 0xb7, 0x0a, 0xd5, - 0x7c, 0x28, 0xaf, 0x65, 0x8b, 0xb2, 0xb7, 0x29, 0x26, 0xdc, 0xbd, 0x0b, 0x8d, 0x24, 0xcf, 0x18, - 0x9f, 0x89, 0xc6, 0xaf, 0x87, 0x07, 0x18, 0x01, 0x3f, 0x6b, 0x8b, 0x65, 0xe5, 0x2e, 0xe7, 0xf5, - 0xb3, 0xb0, 0xe3, 0xb6, 0x3c, 0x70, 0xbf, 0x43, 0x80, 0xe9, 0x5d, 0xbd, 0x55, 0x4a, 0x6e, 0xdc, - 0xe7, 0x81, 0x47, 0x3e, 0x2b, 0xa4, 0xda, 0x52, 0xa4, 0x1e, 0x6f, 0xb5, 0x25, 0xca, 0x61, 0x5f, - 0x09, 0xe7, 0xc5, 0xdb, 0xb2, 0x42, 0x08, 0xb7, 0x67, 0x53, 0x08, 0xd2, 0x43, 0xba, 0x9c, 0x6e, - 0xd2, 0x2a, 0xfc, 0xdb, 0x81, 0x01, 0x58, 0xc7, 0xad, 0x68, 0x94, 0xe0, 0x54, 0xa3, 0xe9, 0x59, - 0x0e, 0x30, 0x65, 0x64, 0x7e, 0x87, 0x9e, 0x36, 0x48, 0x89, 0xa8, 0xe2, 0xdd, 0xe8, 0x80, 0x7d, - 0x51, 0x3e, 0x6a, 0x9e, 0x9f, 0xc1, 0xb8, 0xe1, 0xb5, 0x19, 0x7a, 0x77, 0x9a, 0x82, 0x62, 0x25, - 0x29, 0x10, 0x2e, 0x80, 0x1f, 0x75, 0xdc, 0x2f, 0x5f, 0xa8, 0x16, 0x7c, 0x73, 0xc8, 0xb3, 0x5a, - 0xdf, 0xc1, 0x67, 0x16, 0x34, 0x84, 0x8a, 0x09, 0x19, 0x90, 0x05, 0xea, 0x9f, 0x12, 0x12, 0xe5, - 0x70, 0xc4, 0x23, 0xa5, 0xb0, 0xd3, 0x67, 0xb3, 0xe8, 0xa0, 0xd7, 0x97, 0x51, 0xc3, 0x26, 0x15, - 0x65, 0xaa, 0xec, 0xfb, 0xb2, 0x52, 0xfd, 0x6d, 0xde, 0x59, 0x8c, 0x12, 0xb8, 0xa6, 0xd1, 0x84, - 0x65, 0x05, 0x10, 0x7f, 0xaf, 0x85, 0xce, 0x01, 0xed, 0x2f, 0x76, 0x0e, 0x12, 0x13, 0x4b, 0x61, - 0x74, 0x0d, 0xac, 0x49, 0xdb, 0x4c, 0x45, 0xe8, 0x54, 0xc4, 0x2b, 0xaf, 0xb9, 0x31, 0x6f, 0xaf, - 0x76, 0x31, 0x91, 0x38, 0xa8, 0x72, 0x89, 0x79, 0x4c, 0xec, 0x74, 0x3a, 0x91, 0xc4, 0x02, 0x26, - 0xb6, 0x5a, 0xad, 0x48, 0x62, 0x11, 0x13, 0x55, 0x55, 0x8d, 0x24, 0x96, 0x30, 0x71, 0x7d, 0x7d, - 0x3d, 0x92, 0x58, 0x4e, 0x4a, 0xac, 0x60, 0x62, 0xa5, 0x52, 0x89, 0x24, 0xb6, 0x30, 0xb1, 0x58, - 0x2c, 0x46, 0x12, 0xdb, 0x98, 0x58, 0x28, 0x14, 0x22, 0x89, 0x68, 0x20, 0xc1, 0x2b, 0xc3, 0x23, - 0x89, 0x1d, 0x4c, 0xcc, 0xe7, 0xf3, 0x91, 0x44, 0x07, 0x13, 0xdb, 0xf9, 0x28, 0x64, 0x8f, 0x40, - 0xb6, 0xa3, 0x89, 0x06, 0x49, 0x2c, 0xb7, 0x23, 0x89, 0x16, 0x24, 0x92, 0x88, 0xfe, 0x79, 0xa5, - 0x28, 0x0b, 0xe1, 0x1f, 0xbc, 0xe4, 0x3b, 0x02, 0xe8, 0xb6, 0x18, 0x3e, 0x0b, 0xb1, 0xe4, 0x3e, - 0x4b, 0x2f, 0x47, 0xd2, 0xbd, 0xd6, 0x92, 0x82, 0xb9, 0x3b, 0xbd, 0x63, 0x19, 0x54, 0x3f, 0x47, - 0x6e, 0x4d, 0x91, 0x85, 0xf0, 0xcf, 0xf2, 0x1c, 0xfd, 0x0f, 0xd5, 0x81, 0x62, 0x08, 0x35, 0x59, - 0x4a, 0x8c, 0x9d, 0x76, 0x41, 0x2d, 0xc7, 0x1d, 0x12, 0xdd, 0xc4, 0x60, 0xe1, 0x29, 0x25, 0x53, - 0x01, 0xb8, 0x6a, 0x9c, 0xa0, 0xe2, 0xe8, 0x27, 0x04, 0x45, 0xd7, 0x90, 0x18, 0x41, 0xc5, 0xc7, - 0xa4, 0x90, 0x34, 0xa4, 0xc5, 0xa4, 0xc1, 0x27, 0x04, 0x55, 0x2a, 0x95, 0x16, 0x09, 0xaa, 0x5c, - 0x2e, 0x7f, 0x90, 0xa0, 0xe2, 0x94, 0x4b, 0x08, 0xaa, 0xdd, 0x6e, 0x2f, 0x12, 0x54, 0x7c, 0x8a, - 0x74, 0x92, 0x66, 0x03, 0x21, 0x28, 0xad, 0x98, 0x5f, 0x24, 0xa8, 0xa2, 0x96, 0x5f, 0x24, 0xa8, - 0x62, 0x45, 0x4d, 0x26, 0xa8, 0xf8, 0x95, 0xf1, 0x09, 0xd4, 0x04, 0xc8, 0x4c, 0xa4, 0x26, 0x48, - 0x2f, 0x2d, 0xa1, 0xa6, 0x25, 0x77, 0xcd, 0x2f, 0x25, 0xa5, 0xa5, 0xb7, 0xce, 0x2f, 0x23, 0xa5, - 0x25, 0xf7, 0xcf, 0xbf, 0x49, 0x47, 0x43, 0x13, 0xd6, 0x01, 0x91, 0xe3, 0x53, 0x28, 0xc8, 0x6f, - 0xf5, 0x42, 0x11, 0x8a, 0x64, 0x6d, 0xf5, 0xb0, 0xce, 0x7a, 0x27, 0xd3, 0x76, 0x34, 0x60, 0xfe, - 0x4c, 0xba, 0x25, 0x45, 0x8a, 0x52, 0x4d, 0xef, 0xa6, 0xdc, 0x0c, 0x1a, 0xcf, 0x35, 0x59, 0x04, - 0x1e, 0x0d, 0xf2, 0x42, 0xa0, 0x33, 0x80, 0x96, 0xe8, 0x0e, 0x07, 0x19, 0xbb, 0x6f, 0x79, 0x96, - 0x9b, 0xcd, 0xad, 0xe7, 0x95, 0x6c, 0x4e, 0xa9, 0x28, 0xc8, 0xc9, 0x35, 0xa9, 0x6b, 0x39, 0x78, - 0x97, 0x92, 0x60, 0xd6, 0x7d, 0xd1, 0x5e, 0x06, 0x2d, 0xbd, 0x66, 0x7c, 0x03, 0xc5, 0x8f, 0x09, - 0xbf, 0x35, 0x23, 0x9d, 0x96, 0x66, 0x08, 0xa4, 0xd6, 0x41, 0x06, 0x85, 0x0f, 0xdf, 0x8d, 0x1f, - 0xdf, 0x95, 0x1f, 0x9b, 0x26, 0x4a, 0xd9, 0x7b, 0x43, 0xc3, 0x78, 0x00, 0x69, 0x27, 0x25, 0x55, - 0x83, 0x2f, 0xb2, 0x15, 0x94, 0x96, 0x52, 0x65, 0x96, 0x9c, 0xfb, 0xe1, 0x3f, 0xe5, 0x7f, 0x48, - 0xb2, 0x1e, 0x42, 0x58, 0xd0, 0x7a, 0x5c, 0x09, 0xc9, 0x8b, 0x8e, 0x65, 0x92, 0x27, 0x29, 0xcd, - 0xc0, 0x0b, 0x00, 0x6e, 0x6e, 0xd4, 0x2d, 0xd0, 0x3e, 0xbe, 0xd5, 0x75, 0x10, 0xb9, 0x68, 0x47, - 0xd9, 0xd7, 0xe2, 0x0f, 0x69, 0x0e, 0x3a, 0x65, 0xa7, 0xb3, 0x8b, 0x17, 0x2e, 0xa1, 0x81, 0x59, - 0x33, 0x35, 0x27, 0x45, 0x8c, 0x7a, 0x20, 0x7f, 0xd4, 0x37, 0x66, 0xb4, 0x7b, 0x44, 0xf4, 0xdc, - 0xc3, 0x08, 0x19, 0xa9, 0xf8, 0x5a, 0xde, 0xea, 0x41, 0x0b, 0x40, 0x3f, 0x38, 0x4b, 0x99, 0x20, - 0x66, 0xa7, 0xcc, 0x7a, 0xa6, 0x2c, 0xc9, 0xbe, 0x7e, 0xc2, 0x62, 0x4b, 0xd4, 0xcd, 0x20, 0x25, - 0x14, 0xbd, 0x0e, 0x51, 0xb3, 0xaa, 0xff, 0x04, 0x05, 0x1e, 0xe4, 0x2f, 0xd2, 0x2a, 0x22, 0x79, - 0xd5, 0x4d, 0xc0, 0xc9, 0x3c, 0x36, 0x9e, 0xcd, 0x67, 0xdd, 0xdc, 0x6e, 0x36, 0x71, 0x50, 0x61, - 0xac, 0x3e, 0x51, 0xe5, 0x86, 0xa2, 0xd5, 0xab, 0xc7, 0xf4, 0x95, 0x6b, 0xb5, 0x47, 0xb4, 0x15, - 0x34, 0x20, 0xc3, 0xec, 0x42, 0x8c, 0x26, 0x0c, 0x3c, 0x6e, 0x62, 0xc1, 0xc8, 0xbb, 0x19, 0xbd, - 0x03, 0xa3, 0x0e, 0xab, 0x9e, 0x66, 0xe0, 0x6e, 0xe4, 0x14, 0xaf, 0xda, 0xd1, 0x80, 0xa0, 0x20, - 0x29, 0xdc, 0xdc, 0xcd, 0x82, 0x6a, 0x8f, 0x29, 0xc4, 0xb2, 0x9c, 0x02, 0x21, 0x64, 0x93, 0xd0, - 0x07, 0x90, 0x87, 0x98, 0x26, 0x26, 0xa8, 0xaa, 0x98, 0x11, 0xa5, 0xb4, 0x98, 0x75, 0xa1, 0x9d, - 0x19, 0x06, 0x4c, 0xe2, 0x80, 0xd4, 0x45, 0xf4, 0x31, 0x86, 0xde, 0x63, 0x10, 0x0c, 0x10, 0xa7, - 0xfb, 0xba, 0xd1, 0x49, 0xb9, 0xd2, 0x3c, 0xec, 0x9e, 0x65, 0xa2, 0x81, 0x16, 0x16, 0x67, 0x11, - 0x28, 0x5a, 0xab, 0x02, 0x61, 0xc5, 0xe3, 0x02, 0xd8, 0x8e, 0x85, 0x3e, 0xd5, 0x06, 0x60, 0x97, - 0x58, 0xb0, 0x14, 0x39, 0x45, 0x2a, 0xad, 0x47, 0xa4, 0xa1, 0x9e, 0x2f, 0x0d, 0x41, 0xea, 0xa1, - 0x0d, 0xc2, 0x29, 0x88, 0xb0, 0x14, 0x0c, 0xf2, 0x83, 0xaa, 0x96, 0x12, 0xf7, 0xa0, 0x7c, 0x72, - 0x44, 0x3f, 0x23, 0x5c, 0x18, 0x78, 0x09, 0x91, 0x40, 0xc2, 0x13, 0xd1, 0x68, 0x1f, 0x87, 0x17, - 0x9f, 0xc4, 0x65, 0xf2, 0x15, 0x2d, 0x51, 0x26, 0xa5, 0x49, 0x92, 0x2f, 0xc0, 0x26, 0xd7, 0x1e, - 0xca, 0x62, 0x12, 0xca, 0xb3, 0x48, 0x2e, 0xf5, 0x81, 0xe6, 0xf4, 0xb4, 0x1d, 0x4d, 0xb3, 0xf1, - 0x8d, 0x8a, 0x68, 0x84, 0xa0, 0x70, 0x0c, 0x25, 0x99, 0xd8, 0xb2, 0x2e, 0x6e, 0x3c, 0xdd, 0x00, - 0x01, 0x2f, 0x14, 0x3c, 0x42, 0x91, 0x90, 0x18, 0x54, 0x36, 0xbb, 0x9a, 0xd7, 0xee, 0xa7, 0xde, - 0x42, 0x7e, 0x1f, 0x23, 0x52, 0x01, 0x68, 0xe6, 0x09, 0xf4, 0x68, 0x51, 0x9e, 0x0d, 0x34, 0xaf, - 0x6f, 0x75, 0xaa, 0x22, 0xb4, 0x4d, 0x9c, 0x4b, 0x48, 0xb4, 0x66, 0x0a, 0x48, 0x5a, 0x23, 0xdf, - 0x53, 0x52, 0x98, 0x32, 0x8b, 0xeb, 0x9b, 0xd0, 0x6e, 0x34, 0xdd, 0x80, 0xe2, 0x29, 0x65, 0x60, - 0x10, 0xa0, 0x5e, 0x84, 0x42, 0x53, 0xa5, 0x05, 0x24, 0x6c, 0x58, 0xbd, 0x94, 0x78, 0x66, 0x09, - 0x2a, 0x42, 0x0b, 0xa0, 0xb2, 0xfa, 0x15, 0xa3, 0xf5, 0x33, 0xd2, 0x88, 0x8c, 0xb0, 0x43, 0x23, - 0x21, 0xbb, 0x84, 0x8a, 0xb5, 0x0e, 0x34, 0x14, 0x8a, 0xec, 0xea, 0x26, 0x50, 0xc5, 0x34, 0x95, - 0x92, 0xa0, 0x54, 0xc6, 0xae, 0x38, 0xb1, 0xb0, 0x97, 0x81, 0x39, 0x01, 0x70, 0xd5, 0x65, 0x9f, - 0x42, 0xd4, 0x00, 0xa9, 0x7d, 0xf9, 0xc2, 0x4f, 0x10, 0x11, 0x29, 0x70, 0x1b, 0x08, 0x50, 0x92, - 0x23, 0x27, 0x2f, 0x64, 0xe6, 0x37, 0xc3, 0x76, 0x6f, 0x31, 0x85, 0x1a, 0xe1, 0x96, 0x8f, 0xe2, - 0x05, 0x48, 0xf5, 0x48, 0x11, 0x9c, 0x8f, 0x75, 0xd0, 0xe0, 0xbd, 0x7b, 0x34, 0xb4, 0xf2, 0xef, - 0xf4, 0x19, 0x46, 0xf2, 0x9a, 0x1a, 0x5b, 0xc3, 0x6f, 0x17, 0x9c, 0x69, 0x96, 0xa6, 0x46, 0xcd, - 0x1d, 0xd2, 0x5c, 0xc6, 0x2d, 0xda, 0x39, 0xf9, 0x1f, 0xa5, 0x06, 0x46, 0x0c, 0x9d, 0x04, 0xce, - 0x14, 0x86, 0x70, 0xa2, 0x8e, 0x42, 0xa2, 0x9c, 0x6c, 0x79, 0x91, 0x3f, 0xe5, 0x02, 0xad, 0x81, - 0xac, 0x00, 0xed, 0x51, 0xb0, 0x74, 0xf8, 0x5c, 0x49, 0x91, 0x45, 0xcf, 0x19, 0x6a, 0x30, 0xe5, - 0x92, 0xb1, 0x60, 0xb7, 0x07, 0x22, 0xd0, 0x42, 0x3c, 0x3a, 0x46, 0xcd, 0x67, 0x3b, 0xd0, 0x0b, - 0x67, 0xda, 0x24, 0x68, 0xb6, 0x9c, 0x86, 0x61, 0xa4, 0xbe, 0x72, 0x71, 0xe0, 0x98, 0xf7, 0xd1, - 0x8f, 0xaf, 0x78, 0x4f, 0x28, 0x5d, 0x26, 0x5c, 0x24, 0x16, 0x4f, 0x4a, 0x62, 0xb8, 0xe4, 0x52, - 0x65, 0xb4, 0x8c, 0xa3, 0x26, 0x45, 0xea, 0xdb, 0x22, 0xbe, 0x46, 0xd0, 0x87, 0x65, 0xd0, 0xc0, - 0x4e, 0x62, 0xb0, 0x21, 0x53, 0x89, 0x8d, 0xb6, 0xe6, 0xb3, 0x4a, 0x6a, 0xea, 0x09, 0x37, 0xf1, - 0x13, 0xda, 0x46, 0x0c, 0xf3, 0x58, 0x15, 0xb0, 0xc4, 0x81, 0x35, 0x02, 0x3e, 0x4a, 0xaf, 0xed, - 0x06, 0x58, 0x6a, 0x16, 0xfe, 0xf5, 0xcb, 0xfb, 0xae, 0xfd, 0xe0, 0xe0, 0xa0, 0x7d, 0x21, 0x10, - 0xc7, 0xd8, 0x98, 0x57, 0x80, 0x26, 0x7b, 0x75, 0x18, 0x8c, 0x19, 0xcd, 0xfd, 0xe5, 0xcb, 0x27, - 0x0f, 0x38, 0x93, 0xde, 0x44, 0xc7, 0x20, 0xe0, 0xbc, 0xff, 0xb5, 0xcd, 0x95, 0x44, 0x7b, 0x03, - 0x44, 0x4c, 0x2e, 0x62, 0x16, 0xc9, 0x18, 0x02, 0xc0, 0xa2, 0xad, 0x0b, 0x04, 0x07, 0x5d, 0x94, - 0x69, 0x21, 0x0b, 0xb4, 0xad, 0xf1, 0x8a, 0x39, 0x06, 0x6d, 0xa3, 0x7e, 0x00, 0x7e, 0x3b, 0x3c, - 0x98, 0xdd, 0x94, 0x22, 0x98, 0x4b, 0x81, 0xb4, 0xc4, 0xea, 0x21, 0xfa, 0x11, 0xc8, 0x1c, 0x90, - 0x40, 0xc8, 0xa0, 0xbb, 0x54, 0x98, 0xa0, 0x2e, 0x07, 0x64, 0xf1, 0xc0, 0xeb, 0x09, 0x0e, 0xae, - 0x4f, 0x4f, 0xc8, 0x1a, 0x12, 0x45, 0x09, 0x28, 0xc4, 0xe4, 0xce, 0x56, 0x50, 0xee, 0xb0, 0x11, - 0x30, 0x97, 0x88, 0x67, 0x82, 0x3f, 0x3f, 0xd8, 0xa6, 0x04, 0x0e, 0x30, 0xad, 0x3e, 0xb8, 0xba, - 0x95, 0x99, 0x73, 0xfc, 0x6d, 0x8b, 0x7a, 0x7c, 0x52, 0x25, 0x8d, 0x11, 0xad, 0x61, 0x2e, 0xe7, - 0xd7, 0x61, 0x2a, 0xc9, 0xd0, 0x45, 0x9e, 0x59, 0x69, 0x31, 0x7c, 0x70, 0xce, 0x11, 0xd2, 0x2c, - 0x44, 0x90, 0xb8, 0x0d, 0x08, 0xd1, 0x98, 0xca, 0x68, 0x09, 0x44, 0x23, 0x15, 0xba, 0x2a, 0xac, - 0x1a, 0x9d, 0x4f, 0x30, 0x16, 0x0a, 0xaf, 0x0b, 0xc6, 0x7c, 0x2c, 0xb4, 0x7a, 0x49, 0x2b, 0x04, - 0x44, 0xc6, 0xe3, 0xc8, 0xe3, 0x1a, 0xcb, 0xe2, 0x88, 0xb8, 0x29, 0x86, 0x18, 0xe4, 0xb3, 0xc9, - 0x38, 0x59, 0xd6, 0x75, 0x6f, 0x69, 0xd7, 0xe5, 0xa4, 0x4f, 0xac, 0x9a, 0xb9, 0x1c, 0x21, 0x09, - 0x98, 0xdf, 0x57, 0xb8, 0x4b, 0x36, 0xd0, 0x98, 0xdd, 0x8f, 0x36, 0x3b, 0x34, 0xaf, 0xa1, 0xa4, - 0x78, 0xaa, 0x7a, 0xfd, 0x4c, 0xd7, 0xb0, 0x60, 0x7a, 0x78, 0xd9, 0x4a, 0xb9, 0x88, 0x68, 0x35, - 0xf9, 0xd4, 0x94, 0xb7, 0x4a, 0x92, 0xff, 0x72, 0xa5, 0x6c, 0xa1, 0x8c, 0x9f, 0x8d, 0xe4, 0xcf, - 0xab, 0xf8, 0xf5, 0x2f, 0x53, 0xca, 0x96, 0x01, 0x46, 0xad, 0xbb, 0x9b, 0x6e, 0x5a, 0x14, 0xc4, - 0x74, 0x2a, 0x57, 0x87, 0x67, 0x50, 0xff, 0xa7, 0x22, 0xee, 0x67, 0x4c, 0x5d, 0x5c, 0xc3, 0x64, - 0x41, 0xc4, 0xe8, 0xd3, 0xcc, 0xae, 0xa9, 0xa6, 0xeb, 0xe6, 0xaf, 0x5f, 0xee, 0xa6, 0x19, 0x64, - 0x30, 0x61, 0xed, 0xb3, 0x86, 0x48, 0x52, 0xf8, 0x03, 0x59, 0x00, 0x5a, 0xfe, 0x04, 0x6b, 0x80, - 0x09, 0xa8, 0x04, 0x70, 0x2c, 0x00, 0x50, 0xb1, 0x51, 0x5a, 0x87, 0x79, 0xe6, 0xd2, 0x34, 0x23, - 0x4d, 0x3c, 0xee, 0x30, 0xfd, 0x1b, 0x36, 0x05, 0x6d, 0x6f, 0xf8, 0x9d, 0x83, 0x67, 0xe9, 0x98, - 0xe2, 0xad, 0x96, 0x95, 0xbf, 0x30, 0x8b, 0xab, 0xa1, 0x12, 0xa3, 0x72, 0xa6, 0x57, 0x13, 0x78, - 0x85, 0x35, 0xc6, 0x79, 0x84, 0x26, 0x47, 0xd1, 0xb7, 0x7b, 0xfe, 0xfc, 0xe6, 0x39, 0x1b, 0xdf, - 0xbc, 0x8e, 0xbf, 0xa5, 0xf7, 0xac, 0x4d, 0xbd, 0x8e, 0xb8, 0xf1, 0xc7, 0x4c, 0x9b, 0x7f, 0xcb, - 0x7a, 0x1d, 0xfe, 0xd3, 0x48, 0x35, 0xe8, 0x27, 0x6f, 0x0e, 0x22, 0x1f, 0xfb, 0x9c, 0x85, 0xec, - 0x3f, 0x23, 0xa3, 0x73, 0xc2, 0xed, 0x53, 0x5d, 0xa4, 0xe8, 0xf8, 0x68, 0xf5, 0x5c, 0xc0, 0xab, - 0xc8, 0x36, 0x23, 0xd9, 0x76, 0x92, 0x3c, 0x10, 0xc3, 0xbf, 0x7c, 0xd1, 0xd2, 0x69, 0x1f, 0x67, - 0xda, 0x46, 0xbe, 0x44, 0x2c, 0x8b, 0x75, 0xf8, 0x95, 0x64, 0x8d, 0xa3, 0x59, 0x0c, 0xec, 0x78, - 0x03, 0x45, 0x72, 0xec, 0x10, 0x28, 0xf5, 0xa7, 0x8d, 0x2d, 0xd5, 0x3b, 0x3f, 0x25, 0x7a, 0x9e, - 0xbb, 0xf6, 0x89, 0x94, 0xfc, 0xdd, 0xfb, 0xf1, 0xeb, 0x97, 0xf2, 0x09, 0x4b, 0xc7, 0x3a, 0x36, - 0x43, 0x50, 0x0c, 0xd5, 0x08, 0xc0, 0xe1, 0xd4, 0xf7, 0xb0, 0xca, 0x4d, 0xf1, 0xcb, 0xe7, 0x75, - 0x50, 0x11, 0x6b, 0xc2, 0xe1, 0x8e, 0x30, 0x18, 0xba, 0x9e, 0xd0, 0xd2, 0x04, 0x48, 0x17, 0x2c, - 0x47, 0x00, 0x99, 0xd2, 0xcd, 0xe0, 0xc0, 0x56, 0xdf, 0x28, 0xe5, 0xa7, 0x9f, 0x1f, 0x77, 0x72, - 0xc7, 0x8e, 0x8e, 0x31, 0xa0, 0x84, 0x3f, 0x66, 0x36, 0x91, 0x65, 0x3d, 0x69, 0xfe, 0x89, 0xc3, - 0x91, 0xcd, 0xcc, 0xf1, 0xac, 0x1b, 0xcc, 0x13, 0x12, 0x68, 0x44, 0xf3, 0xd1, 0x40, 0xfa, 0xf0, - 0xe5, 0x0b, 0xed, 0x8a, 0xf6, 0x23, 0x7c, 0xca, 0x20, 0xa5, 0x00, 0xb1, 0x07, 0xaf, 0x30, 0xfc, - 0xbc, 0x79, 0xfd, 0xc2, 0x50, 0xa7, 0xe8, 0xeb, 0xc7, 0x99, 0xd7, 0x03, 0x58, 0x9b, 0x7d, 0xe3, - 0x4a, 0xf3, 0x93, 0x32, 0xb6, 0xcb, 0x35, 0x4f, 0xb5, 0xf5, 0x5b, 0xd5, 0xf0, 0xa5, 0x75, 0x02, - 0xfc, 0xeb, 0xd7, 0x27, 0x3f, 0x93, 0xc4, 0xec, 0xec, 0x22, 0x5b, 0x48, 0xd9, 0xa6, 0x01, 0x50, - 0x88, 0xde, 0x33, 0x53, 0xb8, 0x6d, 0xe8, 0x03, 0xfa, 0xbd, 0xf1, 0x32, 0x20, 0x13, 0x6f, 0x92, - 0xbf, 0xd5, 0x54, 0x47, 0xc3, 0xb3, 0x85, 0x90, 0x66, 0xca, 0xc1, 0xa3, 0x1d, 0x3e, 0xbe, 0x18, - 0x71, 0x23, 0xa0, 0xc7, 0x4f, 0xfe, 0x17, 0xc3, 0xc7, 0xdd, 0xbb, 0x98, 0x7a, 0x31, 0x36, 0xb9, - 0x67, 0xdc, 0x42, 0x0c, 0x69, 0xc9, 0xde, 0x6a, 0x3f, 0x07, 0x94, 0x49, 0x35, 0x4c, 0xb4, 0x53, - 0xd6, 0x34, 0x16, 0x26, 0x38, 0x45, 0x8c, 0xcd, 0x9a, 0xd7, 0xf4, 0x2f, 0x54, 0xb9, 0x22, 0xdb, - 0x41, 0x8a, 0xbc, 0x4e, 0xfe, 0x43, 0xd9, 0x46, 0x9b, 0x68, 0xed, 0x6d, 0x6b, 0x30, 0x00, 0xf1, - 0x05, 0xd7, 0x22, 0x7b, 0x8a, 0x32, 0x1b, 0xcf, 0x8c, 0x6d, 0x9d, 0x6e, 0xbd, 0xe3, 0xf5, 0x26, - 0x2d, 0x4b, 0x75, 0x80, 0x0b, 0x73, 0x1d, 0xb1, 0xc9, 0x98, 0x13, 0x1e, 0x1c, 0x52, 0x02, 0xee, - 0x47, 0xc2, 0xd4, 0xac, 0x79, 0xce, 0x74, 0x96, 0x72, 0xdf, 0x12, 0xee, 0x40, 0x41, 0x60, 0x1a, - 0xea, 0x46, 0x4e, 0x21, 0x24, 0x81, 0x0c, 0x9e, 0x09, 0xbb, 0xd2, 0x6c, 0x4e, 0xf5, 0xbe, 0x9f, - 0xbc, 0x03, 0x26, 0x89, 0xe1, 0xda, 0x16, 0x81, 0x28, 0xb5, 0xcd, 0xaf, 0xbe, 0xfb, 0x08, 0x17, - 0xa4, 0x56, 0xfc, 0x5a, 0xfd, 0xba, 0xc4, 0x31, 0x34, 0xf9, 0x2c, 0x4b, 0x2d, 0x9a, 0x7b, 0xbe, - 0xf1, 0xb3, 0x66, 0xa6, 0x61, 0xae, 0x89, 0xe8, 0x86, 0xd1, 0x57, 0x47, 0x9a, 0x60, 0x5a, 0xac, - 0x9f, 0xae, 0x30, 0xd5, 0xbc, 0x4f, 0x30, 0x87, 0x58, 0x84, 0x42, 0x90, 0x87, 0x1d, 0x4d, 0x18, - 0xab, 0x2e, 0x7a, 0x74, 0xe8, 0xae, 0x3b, 0xd4, 0x88, 0x84, 0x8d, 0x73, 0x66, 0x0a, 0x9c, 0xd1, - 0xcf, 0x05, 0xeb, 0x16, 0x2e, 0xf7, 0x50, 0xaa, 0x88, 0xce, 0x03, 0xf8, 0x4f, 0x94, 0x69, 0x1d, - 0x07, 0xc0, 0x64, 0x30, 0xc8, 0x2d, 0x2b, 0x4a, 0x77, 0x05, 0x5c, 0xff, 0x87, 0x36, 0xcb, 0x4a, - 0x0e, 0xea, 0xa2, 0x4c, 0xa4, 0x62, 0xc2, 0x48, 0xb7, 0x86, 0x2e, 0x75, 0xb3, 0x31, 0x0c, 0x95, - 0x5a, 0xfc, 0x47, 0xb0, 0x32, 0x62, 0x94, 0x4e, 0xe2, 0x3a, 0xf2, 0x3f, 0x4c, 0x41, 0x10, 0x52, - 0x4d, 0x75, 0x84, 0x2d, 0x50, 0xfd, 0x32, 0xc6, 0xba, 0x61, 0x08, 0xe8, 0x46, 0x2f, 0xa0, 0x6f, - 0x2e, 0xf1, 0x51, 0xb2, 0xd8, 0xec, 0xd6, 0x88, 0x23, 0x05, 0xad, 0x52, 0x82, 0x7e, 0x1d, 0xb0, - 0x46, 0xa8, 0x7e, 0x33, 0x2c, 0xea, 0x6a, 0x81, 0xb6, 0x6b, 0xe1, 0xd9, 0xb4, 0xc6, 0xc0, 0x19, - 0x2d, 0xab, 0x83, 0x1e, 0x27, 0x1e, 0x68, 0x89, 0xd8, 0x89, 0xaf, 0xdf, 0xfc, 0x6b, 0x87, 0xa8, - 0x4b, 0x6c, 0x9b, 0x84, 0xf3, 0xf2, 0xd3, 0x36, 0x82, 0x66, 0x2d, 0x71, 0x01, 0xb7, 0x79, 0xef, - 0x2d, 0x4a, 0xcf, 0xe8, 0xef, 0x6a, 0x4f, 0x23, 0x34, 0x17, 0xb8, 0x90, 0x7c, 0x95, 0x64, 0x82, - 0x46, 0xe2, 0xd0, 0x21, 0x52, 0x99, 0x9a, 0xf9, 0x29, 0x73, 0x5c, 0xcc, 0x94, 0x03, 0xf1, 0x8a, - 0x4c, 0x08, 0xca, 0x53, 0xeb, 0x6e, 0x4c, 0x9f, 0xf7, 0x29, 0x43, 0x23, 0xda, 0x3e, 0x61, 0x13, - 0xc0, 0x68, 0xd1, 0x39, 0xa0, 0x4e, 0xd4, 0x12, 0xf2, 0xbc, 0xa1, 0x48, 0xfe, 0x1c, 0xb5, 0xec, - 0x21, 0x1e, 0x52, 0xf7, 0xb3, 0x7d, 0x62, 0xea, 0x0b, 0xfa, 0x0e, 0xc0, 0xaf, 0x3c, 0xb2, 0xf4, - 0x8e, 0x00, 0x92, 0x7e, 0x2d, 0x05, 0xd2, 0x29, 0x24, 0x7c, 0xaa, 0xb3, 0xaf, 0x20, 0x61, 0xbc, - 0xa5, 0x37, 0x12, 0xb5, 0x91, 0x91, 0xca, 0x3b, 0x5a, 0x63, 0x0a, 0xd4, 0x86, 0x67, 0x58, 0x8c, - 0x63, 0xe2, 0x93, 0x1c, 0x68, 0x93, 0x9c, 0x3a, 0x49, 0x3d, 0x22, 0xb4, 0x48, 0x13, 0xe3, 0x5d, - 0x88, 0xaa, 0x96, 0xbc, 0x94, 0x4a, 0x3a, 0xc7, 0x4d, 0x6e, 0x90, 0x59, 0xe3, 0x3a, 0x23, 0x6e, - 0x14, 0x85, 0x92, 0x91, 0x06, 0x4c, 0x45, 0x8a, 0x5b, 0x4c, 0x02, 0x9d, 0xcd, 0x47, 0xf1, 0xbb, - 0x78, 0xc0, 0x7e, 0x64, 0x7d, 0x3f, 0x9a, 0x7f, 0x07, 0x11, 0xd4, 0x11, 0x84, 0xf1, 0x77, 0xd0, - 0x60, 0x1c, 0x1d, 0x1b, 0x24, 0x85, 0xc8, 0x08, 0x0e, 0xef, 0xbe, 0x85, 0x8d, 0x84, 0xde, 0xa3, - 0x56, 0xc7, 0x6d, 0xe3, 0xc4, 0xfa, 0x0e, 0xda, 0xe8, 0xef, 0xf5, 0x9a, 0xb9, 0x88, 0xfd, 0x3b, - 0x9d, 0xd6, 0xde, 0xe9, 0x34, 0xf3, 0xee, 0xfe, 0xd7, 0xfb, 0x4c, 0xf4, 0xeb, 0xdf, 0xeb, 0x37, - 0x75, 0xe2, 0xf9, 0x77, 0xba, 0x9d, 0x62, 0x1e, 0x41, 0x30, 0x03, 0xbf, 0xff, 0x00, 0x95, 0xaa, - 0xaf, 0x77, 0x11, 0x94, 0xa6, 0x66, 0x86, 0x26, 0x4d, 0x10, 0xff, 0x53, 0xfb, 0x54, 0x53, 0xc4, - 0x68, 0xdf, 0x43, 0x5f, 0xa2, 0xbf, 0x81, 0x05, 0x5c, 0xa8, 0xb0, 0x35, 0x6c, 0x36, 0xc8, 0xf6, - 0xe5, 0x09, 0x94, 0x14, 0x3a, 0x66, 0xf8, 0x68, 0xbf, 0x3c, 0x09, 0xd6, 0x6b, 0x58, 0x20, 0x81, - 0xe1, 0x00, 0xa0, 0xbf, 0x02, 0x2a, 0x80, 0xb0, 0x40, 0xb6, 0xb4, 0xe8, 0x27, 0x58, 0xa7, 0x40, - 0xe9, 0x40, 0xa7, 0x8a, 0xfa, 0x86, 0xf6, 0x5d, 0xf9, 0xb1, 0xe1, 0xc1, 0x1f, 0xe8, 0x3a, 0xf2, - 0xdd, 0xa4, 0x43, 0x24, 0x97, 0xe8, 0x3d, 0x44, 0x86, 0x02, 0x1d, 0xd9, 0xbf, 0x62, 0x3b, 0x08, - 0x26, 0x24, 0xc8, 0xf1, 0x73, 0x09, 0x0b, 0x9e, 0xb8, 0x02, 0x5e, 0x03, 0xc5, 0xa2, 0x11, 0x80, - 0x58, 0x0c, 0x55, 0xcc, 0x5f, 0x8c, 0x96, 0xe8, 0xc7, 0xff, 0xc0, 0xa4, 0xfc, 0x8f, 0x4d, 0xfc, - 0x83, 0xf2, 0x47, 0xd4, 0x47, 0x8e, 0xb2, 0x92, 0x14, 0xcb, 0x26, 0xd5, 0x88, 0x60, 0xfd, 0x3d, - 0xf7, 0x63, 0x1e, 0xf0, 0xec, 0x9f, 0x35, 0xca, 0xa6, 0x5f, 0x0c, 0xe0, 0xc4, 0x31, 0x85, 0xdd, - 0x0f, 0x82, 0x0e, 0x63, 0x01, 0x5d, 0xd0, 0x84, 0x44, 0xc8, 0x40, 0x91, 0x0a, 0x80, 0xf9, 0x12, - 0x39, 0xed, 0x77, 0xbe, 0x80, 0xef, 0x80, 0xc5, 0xfb, 0xdc, 0x3d, 0x45, 0xd9, 0x22, 0x67, 0xfe, - 0x7b, 0x5b, 0x3c, 0x91, 0xa8, 0x1c, 0x28, 0xcd, 0x98, 0x68, 0x47, 0x65, 0x31, 0xe5, 0x07, 0x93, - 0x1a, 0x41, 0xf1, 0x71, 0xe3, 0xb3, 0x8c, 0x66, 0x00, 0xbd, 0x9c, 0x0c, 0x5e, 0x7b, 0x60, 0x5f, - 0x48, 0x3e, 0x3d, 0x50, 0x79, 0x06, 0x09, 0x83, 0x0d, 0xb4, 0x41, 0x06, 0x9a, 0x7a, 0xa5, 0xb9, - 0x74, 0xa4, 0x88, 0xb4, 0x4a, 0x7d, 0x54, 0x0c, 0xc0, 0xa3, 0x24, 0xe1, 0xf2, 0xa6, 0x9b, 0xa0, - 0x13, 0xe0, 0x4e, 0x82, 0x16, 0x6a, 0x88, 0x06, 0x92, 0x42, 0x8d, 0x1a, 0xf5, 0x11, 0x12, 0xc4, - 0xc3, 0x9a, 0x0a, 0x6b, 0x16, 0x90, 0x8d, 0x3d, 0x74, 0xfb, 0xa9, 0xef, 0x9a, 0xac, 0xca, 0xbe, - 0x90, 0x8e, 0x06, 0x78, 0x9a, 0x0c, 0x4c, 0xc0, 0x4b, 0x27, 0xc8, 0x54, 0xe4, 0xb0, 0xba, 0x4f, - 0x03, 0xda, 0xdc, 0x12, 0x37, 0x7e, 0x86, 0x26, 0x3e, 0x5b, 0xef, 0xa0, 0x78, 0x16, 0xcf, 0xa7, - 0x07, 0x2a, 0x16, 0xae, 0xc7, 0x3f, 0x13, 0x4a, 0x26, 0x77, 0xd1, 0x05, 0x07, 0xd5, 0x93, 0x29, - 0x47, 0x9b, 0x4b, 0x58, 0x4c, 0x44, 0xec, 0xdf, 0x14, 0x03, 0x37, 0xdc, 0xaf, 0xd1, 0x20, 0x1b, - 0x5f, 0xa9, 0x4f, 0x72, 0x81, 0x1e, 0x32, 0x46, 0x85, 0x66, 0xee, 0x2b, 0x28, 0x9a, 0x34, 0x07, - 0x59, 0x23, 0xee, 0xbf, 0x1b, 0x04, 0xe5, 0xe7, 0x7a, 0x67, 0x62, 0x62, 0x34, 0xb4, 0x46, 0x53, - 0x03, 0xb9, 0x1f, 0xbe, 0xa5, 0x73, 0x8a, 0x32, 0xf7, 0x63, 0x6c, 0xb4, 0x59, 0x50, 0x5f, 0xd2, - 0xbf, 0xa4, 0xb2, 0x49, 0xc1, 0x42, 0xd7, 0x60, 0xa1, 0xa5, 0x5d, 0xad, 0xa7, 0xf9, 0x65, 0x70, - 0xc5, 0x53, 0xca, 0x8d, 0x97, 0x5e, 0x58, 0xa7, 0xa7, 0xd9, 0xb1, 0xdc, 0xd8, 0x68, 0x80, 0x6a, - 0xc9, 0x9f, 0xfc, 0xf7, 0xcb, 0x0e, 0x8a, 0x0e, 0x5a, 0xc4, 0x30, 0x4f, 0x3c, 0x1b, 0xd3, 0xe9, - 0xf9, 0x12, 0x81, 0xc8, 0x23, 0xdf, 0x37, 0x94, 0xcd, 0x14, 0x11, 0x6c, 0x88, 0x64, 0xf2, 0xe5, - 0x8b, 0xc2, 0x7e, 0x53, 0xcb, 0x1d, 0x1a, 0xd0, 0xfc, 0x8a, 0x12, 0x04, 0x9b, 0x06, 0x40, 0x71, - 0xc4, 0xb5, 0x72, 0x39, 0xfc, 0x82, 0xf3, 0x03, 0x9d, 0x0d, 0x92, 0x6f, 0xe9, 0xc5, 0xb2, 0xaa, - 0x11, 0xc1, 0x22, 0x30, 0x0b, 0x5f, 0x34, 0x52, 0xe1, 0xfa, 0x84, 0x8c, 0x92, 0xb2, 0x04, 0x4e, - 0xc6, 0xe0, 0x84, 0x36, 0x19, 0x15, 0x6b, 0x5e, 0xd9, 0x23, 0x93, 0xa2, 0x6b, 0x91, 0x1d, 0x37, - 0xdf, 0x8d, 0x53, 0x63, 0xb3, 0x54, 0xcb, 0x20, 0xf5, 0x51, 0xa6, 0x11, 0x1e, 0xb9, 0x89, 0x22, - 0x48, 0xcb, 0x60, 0x84, 0x5a, 0xa2, 0x83, 0x88, 0x29, 0x8c, 0x2f, 0x2d, 0x81, 0x26, 0xeb, 0x91, - 0xcd, 0x08, 0x3f, 0x91, 0xa5, 0x74, 0x32, 0x94, 0x2f, 0x7a, 0xa1, 0x57, 0xab, 0x46, 0x9c, 0x3a, - 0x60, 0xaa, 0xc0, 0x4b, 0xc4, 0x29, 0x17, 0xdd, 0x77, 0x1c, 0xdf, 0xc7, 0x95, 0x41, 0xc1, 0x1b, - 0x0c, 0x25, 0x71, 0x42, 0xd5, 0x32, 0x5d, 0x37, 0x83, 0x82, 0xd9, 0x60, 0x1c, 0x7e, 0x05, 0xd4, - 0x4d, 0x36, 0x23, 0x6f, 0x99, 0x71, 0x95, 0x38, 0xa1, 0xbe, 0x05, 0xd2, 0x07, 0x90, 0x14, 0x3a, - 0xad, 0x0e, 0xc6, 0xe8, 0xd4, 0x34, 0xc0, 0xf5, 0xe4, 0xd7, 0x2f, 0x14, 0xfb, 0xf3, 0x3b, 0xa7, - 0xd4, 0x33, 0x7e, 0x91, 0x3d, 0xfa, 0x18, 0xe3, 0x98, 0x19, 0x34, 0xc9, 0xd1, 0xb4, 0xbe, 0xa6, - 0xda, 0xd9, 0x9c, 0x56, 0xa8, 0xb9, 0x75, 0x37, 0xe3, 0x59, 0x7b, 0xfa, 0x44, 0xeb, 0xa4, 0x72, - 0x12, 0x63, 0x60, 0xac, 0x66, 0x7b, 0xec, 0xc8, 0x46, 0x5d, 0x3c, 0xb3, 0x3c, 0x01, 0x2f, 0x11, - 0x25, 0x25, 0x76, 0xc4, 0x9a, 0xb9, 0x01, 0x19, 0x37, 0x8d, 0x7a, 0xca, 0x84, 0xff, 0x67, 0xeb, - 0xf0, 0x22, 0x05, 0x45, 0xc0, 0x37, 0x65, 0x53, 0xa9, 0xe6, 0x24, 0x58, 0xfd, 0x85, 0x86, 0x58, - 0x35, 0x89, 0x03, 0x16, 0x81, 0x2d, 0x29, 0x7f, 0x11, 0xcb, 0x15, 0xb1, 0x7d, 0x42, 0x46, 0x18, - 0x5f, 0x04, 0x1a, 0x34, 0x44, 0x9f, 0xc9, 0xd1, 0x15, 0x53, 0xcb, 0x0c, 0xc9, 0x96, 0x27, 0xce, - 0x3f, 0xef, 0x3b, 0xa0, 0xfb, 0x07, 0x28, 0x29, 0x71, 0x41, 0x07, 0x60, 0x24, 0x17, 0x78, 0xe2, - 0xa6, 0x9a, 0xae, 0xfb, 0x26, 0x23, 0x00, 0x25, 0xdb, 0x70, 0xc8, 0x54, 0xab, 0xd1, 0x74, 0x5a, - 0x83, 0x55, 0x17, 0x8f, 0x87, 0xc3, 0xbe, 0xfa, 0x3c, 0x14, 0x41, 0x85, 0x06, 0x15, 0x29, 0x43, - 0x6c, 0xe1, 0xee, 0x9d, 0xee, 0xf5, 0x53, 0x78, 0x2c, 0xb4, 0x90, 0x21, 0xd6, 0x42, 0x80, 0xbb, - 0xb6, 0x9e, 0x75, 0x11, 0x45, 0x10, 0x84, 0xd2, 0x61, 0x9a, 0x0f, 0x11, 0xc3, 0xe2, 0x6a, 0xcb, - 0xf0, 0x21, 0xae, 0xa6, 0xc3, 0x27, 0x62, 0xef, 0xd2, 0x32, 0x6d, 0x93, 0x24, 0xe1, 0x03, 0xe5, - 0x90, 0x23, 0x98, 0xc7, 0x98, 0x73, 0x2e, 0xc0, 0xda, 0x6a, 0xcd, 0x03, 0xad, 0xf0, 0x1b, 0xb9, - 0x70, 0x01, 0x66, 0xf5, 0x1f, 0x33, 0x75, 0x8e, 0x7f, 0xfd, 0x26, 0x8a, 0x5b, 0x43, 0xdd, 0xc0, - 0xbd, 0xd0, 0xcc, 0x48, 0xef, 0x48, 0xd1, 0x4f, 0x4d, 0xbd, 0x07, 0xc2, 0x09, 0xf1, 0x86, 0x47, - 0x31, 0x02, 0x81, 0xc6, 0x7a, 0x57, 0xcf, 0xb8, 0x24, 0x3d, 0x2d, 0xfe, 0x29, 0x10, 0x3f, 0x42, - 0x92, 0xe6, 0xb8, 0xae, 0x2e, 0x8b, 0x42, 0x67, 0x6b, 0x20, 0x89, 0xb1, 0x62, 0x6e, 0x6c, 0xb4, - 0x45, 0x82, 0x4a, 0x15, 0xb5, 0x4b, 0x66, 0x86, 0x24, 0x5d, 0x8a, 0x41, 0x63, 0x58, 0x0e, 0x01, - 0x89, 0x04, 0x48, 0x06, 0x0a, 0x7c, 0xde, 0x62, 0xc5, 0x69, 0x19, 0xdb, 0x75, 0xd4, 0xc1, 0x66, - 0x14, 0xf0, 0xa2, 0x79, 0xd5, 0x38, 0x15, 0xe5, 0x14, 0xfb, 0x9a, 0xcd, 0x29, 0xf9, 0xa2, 0xc4, - 0x91, 0x15, 0x2b, 0x01, 0x59, 0x79, 0xa4, 0x96, 0x5d, 0x98, 0xc7, 0x03, 0x24, 0x2a, 0x81, 0xb9, - 0x9c, 0x8b, 0xb2, 0x11, 0x6b, 0x48, 0x03, 0xd0, 0x08, 0x5c, 0x48, 0xd8, 0xbb, 0x68, 0x62, 0xcf, - 0x09, 0x5d, 0x76, 0x6d, 0x37, 0x06, 0x75, 0xda, 0xd8, 0x16, 0x40, 0xde, 0xc0, 0x43, 0x13, 0x08, - 0x35, 0x50, 0xdb, 0xf1, 0xfe, 0xe8, 0x86, 0xe6, 0x4e, 0x5d, 0xe0, 0x63, 0xf8, 0x1d, 0x26, 0xe5, - 0x10, 0xa4, 0x53, 0x44, 0x1b, 0x3c, 0x7a, 0x69, 0x6c, 0x1e, 0x62, 0x91, 0xa3, 0x4f, 0xe0, 0xc2, - 0x7f, 0x51, 0xc0, 0x2c, 0x05, 0x02, 0x5a, 0xfd, 0x73, 0x01, 0xa9, 0xbb, 0xe6, 0x48, 0x77, 0x2c, - 0x73, 0x40, 0x9a, 0xae, 0x65, 0xf0, 0xd0, 0x2b, 0xb1, 0xa2, 0xa2, 0xbb, 0x9d, 0xa3, 0xc1, 0x23, - 0x19, 0x1a, 0x63, 0xac, 0xdb, 0xe8, 0xd5, 0x89, 0x99, 0x41, 0x75, 0x26, 0x34, 0xf0, 0x93, 0xea, - 0xb6, 0xcf, 0xa3, 0x28, 0x9b, 0x5a, 0x9c, 0xc2, 0xfe, 0x79, 0x49, 0x7e, 0x1a, 0x13, 0x49, 0xc1, - 0xad, 0xfb, 0x7c, 0xb0, 0xc6, 0x3b, 0xe2, 0x47, 0xbd, 0xef, 0xa9, 0xd3, 0x7d, 0x2d, 0x74, 0x21, - 0x50, 0x6a, 0xe6, 0x37, 0x74, 0x3a, 0xd4, 0x7a, 0x54, 0x82, 0x66, 0xfe, 0x03, 0x26, 0xfa, 0x0f, - 0xf8, 0xc5, 0xa4, 0xd3, 0x64, 0xba, 0x18, 0x75, 0x02, 0xf7, 0xdd, 0xfc, 0x41, 0xea, 0x53, 0x39, - 0xc9, 0x24, 0x03, 0x54, 0x5a, 0x53, 0x71, 0x47, 0x2b, 0xac, 0x8d, 0xac, 0x33, 0x5c, 0xe5, 0x6a, - 0x1a, 0x06, 0x5e, 0xdd, 0xc0, 0x16, 0xe0, 0x27, 0x6c, 0x88, 0x2a, 0x91, 0x92, 0x2c, 0x6a, 0xcb, - 0x82, 0xb2, 0xc5, 0xb4, 0x8a, 0x7e, 0x06, 0x9f, 0x3e, 0x59, 0x5f, 0xbe, 0x58, 0xc9, 0x36, 0xfc, - 0x40, 0x26, 0x94, 0x1d, 0x26, 0x7a, 0xb0, 0xb5, 0xd2, 0xc6, 0x49, 0x14, 0x1c, 0xf1, 0x70, 0x5b, - 0xae, 0x48, 0x0c, 0x11, 0x4b, 0x56, 0x70, 0xe0, 0x65, 0xc2, 0x1f, 0x33, 0x23, 0x63, 0x99, 0x9b, - 0xb8, 0x8b, 0x24, 0x52, 0x41, 0x37, 0x58, 0x76, 0xd5, 0x39, 0x00, 0x44, 0xc5, 0x17, 0x68, 0xf0, - 0xc5, 0xd8, 0x49, 0xe1, 0x37, 0x29, 0xbc, 0xd2, 0x81, 0xad, 0xe7, 0x6f, 0x05, 0x21, 0xa0, 0xe6, - 0x10, 0x2e, 0x10, 0x01, 0xad, 0x80, 0x84, 0x48, 0x7d, 0x3b, 0x44, 0x8d, 0xd6, 0x43, 0xe7, 0x56, - 0x5a, 0xe3, 0xef, 0x04, 0x23, 0x58, 0x12, 0x03, 0x1e, 0xfb, 0x0b, 0xb5, 0x42, 0x3f, 0xb3, 0xac, - 0x51, 0xef, 0x05, 0x26, 0x20, 0x3d, 0x0b, 0x64, 0x21, 0x26, 0x7a, 0xb4, 0x01, 0xef, 0x34, 0xc2, - 0x91, 0x1f, 0xa9, 0x9d, 0xdc, 0x9f, 0xc4, 0x2e, 0x33, 0xc5, 0xe3, 0x58, 0x78, 0xde, 0x46, 0x13, - 0x50, 0xc2, 0x3b, 0xdd, 0x14, 0x71, 0xa3, 0x41, 0x77, 0xa8, 0x3d, 0x52, 0x9c, 0x47, 0x8e, 0xb0, - 0x93, 0x8c, 0x2d, 0x6b, 0x12, 0x41, 0x3c, 0x94, 0x13, 0xc3, 0x03, 0x14, 0xe8, 0x23, 0x01, 0xbb, - 0x00, 0x00, 0x9b, 0x22, 0xbb, 0x30, 0x89, 0x8c, 0xdb, 0x46, 0xe4, 0x60, 0x5f, 0x70, 0x71, 0x13, - 0x09, 0xb9, 0x24, 0xfa, 0x07, 0xea, 0xfc, 0xb8, 0x48, 0x3f, 0xe5, 0xce, 0x3b, 0xed, 0x3f, 0xd5, - 0x51, 0x50, 0x79, 0xbf, 0xa1, 0x83, 0x78, 0xb4, 0xfe, 0x53, 0x9d, 0x6f, 0xe6, 0x40, 0xff, 0x47, - 0xad, 0xb4, 0x71, 0x79, 0xee, 0x91, 0x35, 0xd0, 0x3d, 0x45, 0x3d, 0xe6, 0x63, 0x58, 0xff, 0x00, - 0x7e, 0x1f, 0x16, 0xd1, 0xfb, 0x10, 0xc1, 0xef, 0xc3, 0x3f, 0x6a, 0x78, 0xef, 0xdf, 0x42, 0xef, - 0xc3, 0x02, 0x7a, 0x23, 0xcd, 0x1c, 0xfc, 0xa3, 0x66, 0x2e, 0xaa, 0x2e, 0x78, 0x67, 0x25, 0xca, - 0xe0, 0x50, 0x38, 0x70, 0x32, 0x5c, 0x34, 0x80, 0xe1, 0x68, 0xbd, 0x4d, 0xd1, 0x3f, 0x13, 0x45, - 0x6a, 0x41, 0xaa, 0xde, 0x0c, 0xb9, 0xd0, 0x02, 0xdb, 0x20, 0xd3, 0x3d, 0xa9, 0xff, 0x34, 0xfe, - 0x17, 0x63, 0x49, 0xef, 0xf5, 0xdd, 0xd5, 0x8c, 0x68, 0xe7, 0x91, 0x5d, 0xf2, 0x9d, 0x87, 0x94, - 0x58, 0xef, 0x49, 0xc1, 0x1f, 0xc0, 0x00, 0x99, 0xc8, 0x14, 0x09, 0x6f, 0xe8, 0x37, 0xce, 0x6b, - 0xa4, 0x3d, 0xe4, 0x3d, 0xd4, 0x6e, 0xd0, 0x2f, 0x00, 0xaf, 0x39, 0xc3, 0x5f, 0xe6, 0x6b, 0x92, - 0x92, 0x6a, 0x61, 0xf4, 0x2e, 0xd2, 0xd0, 0x1a, 0x61, 0x92, 0xd8, 0x58, 0xc8, 0xbd, 0xe9, 0x32, - 0x71, 0x9b, 0xfe, 0x42, 0xb1, 0xf5, 0xba, 0x0a, 0x78, 0x2c, 0xe6, 0xd0, 0x01, 0x1c, 0x63, 0xb9, - 0xe0, 0x4f, 0x21, 0x5f, 0x12, 0xe7, 0x49, 0x2a, 0x12, 0xbb, 0xb8, 0x3c, 0x1a, 0xf6, 0x12, 0x50, - 0xb2, 0x3b, 0xf1, 0xf9, 0x31, 0x76, 0x1f, 0xeb, 0x32, 0x37, 0xe1, 0x5f, 0xd5, 0x8f, 0x81, 0x02, - 0x4b, 0x2f, 0x0a, 0x56, 0xc2, 0x72, 0x1d, 0x31, 0xa2, 0xca, 0x61, 0x59, 0xcb, 0x35, 0x45, 0x35, - 0xae, 0x25, 0x06, 0x3c, 0xf1, 0xc3, 0x8a, 0xa2, 0x9a, 0xa8, 0x24, 0xaa, 0x09, 0x0a, 0xe2, 0x1f, - 0xb3, 0xb8, 0x73, 0xba, 0x43, 0xc5, 0xa5, 0x38, 0x5e, 0x74, 0x33, 0xd2, 0x7c, 0x78, 0x5d, 0xa4, - 0xb1, 0x48, 0x2c, 0x4d, 0xdb, 0x9b, 0x78, 0x42, 0xb0, 0xe0, 0x70, 0x59, 0xbd, 0xc4, 0x38, 0x9a, - 0x61, 0x18, 0xcd, 0x42, 0x9e, 0x5f, 0x48, 0x18, 0xa2, 0x91, 0xfc, 0x23, 0x31, 0x48, 0x48, 0x4c, - 0x4e, 0x01, 0x47, 0x2b, 0x93, 0xc9, 0x88, 0x74, 0xa1, 0xa1, 0x72, 0x6e, 0x80, 0x20, 0x10, 0x51, - 0x48, 0x90, 0x17, 0x8f, 0x35, 0xd5, 0xf3, 0xb7, 0x0c, 0xbc, 0xce, 0x06, 0x5b, 0x34, 0x9a, 0x28, - 0x88, 0x0b, 0xf7, 0xb8, 0xf5, 0x42, 0x9e, 0x4e, 0x76, 0x77, 0x44, 0xba, 0x73, 0x1b, 0x83, 0xe4, - 0xb1, 0x04, 0xed, 0xdc, 0x14, 0xef, 0xf0, 0xd6, 0x2b, 0x92, 0xcf, 0xb2, 0xb1, 0x80, 0x05, 0x00, - 0x7a, 0xe2, 0x1a, 0xc4, 0x1a, 0x1f, 0x68, 0x69, 0xd9, 0xb8, 0x74, 0x9d, 0x77, 0xbb, 0xe8, 0xe9, - 0x19, 0x7e, 0x27, 0x3b, 0xc7, 0x0b, 0xcd, 0x66, 0xe8, 0x8e, 0x2e, 0xe7, 0xd8, 0xc7, 0xe8, 0xe8, - 0xb8, 0x6f, 0x06, 0xa5, 0xf9, 0x63, 0x86, 0x0a, 0xdd, 0xe6, 0x60, 0x5c, 0xf5, 0x15, 0x4d, 0x69, - 0x35, 0x37, 0x8f, 0x2c, 0xdf, 0x44, 0x41, 0x99, 0x2f, 0x08, 0x03, 0x27, 0x9a, 0x19, 0x8a, 0x09, - 0x41, 0x84, 0x54, 0xa8, 0x94, 0x46, 0x48, 0x65, 0x24, 0x16, 0xed, 0xe3, 0x07, 0x9b, 0xac, 0xfd, - 0x76, 0x93, 0x53, 0x71, 0x94, 0xb3, 0x66, 0x57, 0x41, 0x81, 0x8f, 0x75, 0xc6, 0xb2, 0xdf, 0x81, - 0xfe, 0xe7, 0xfd, 0xf4, 0x37, 0x01, 0xb9, 0x0b, 0x12, 0x91, 0x71, 0x39, 0x5e, 0x4d, 0x64, 0xc3, - 0xdc, 0x49, 0x13, 0x85, 0x4c, 0x4c, 0xb7, 0x91, 0x9c, 0x97, 0xa3, 0xc5, 0x17, 0x68, 0x48, 0x84, - 0xaa, 0x05, 0xc6, 0x6f, 0x75, 0xe3, 0x88, 0xe2, 0x7a, 0x6a, 0x75, 0xdf, 0xea, 0xcb, 0xc6, 0x22, - 0x71, 0xb1, 0xaa, 0x98, 0x93, 0xc3, 0x06, 0x9d, 0x04, 0x0f, 0xbe, 0x67, 0x03, 0xb4, 0x75, 0x01, - 0x6d, 0xe2, 0x01, 0xb9, 0xad, 0xd1, 0x27, 0xea, 0x07, 0x51, 0x4a, 0x7f, 0x0d, 0xe0, 0x43, 0x9f, - 0x07, 0xbf, 0xc4, 0x0f, 0x8c, 0xfe, 0xd7, 0xb4, 0x9a, 0xfe, 0xea, 0x3e, 0xbc, 0x39, 0xfe, 0x5f, - 0xd3, 0xa9, 0x41, 0x7f, 0x35, 0x07, 0x75, 0x05, 0xfd, 0xfd, 0x9a, 0x66, 0x23, 0xf8, 0x80, 0x89, - 0x09, 0x9d, 0x26, 0xe5, 0x2e, 0x19, 0x41, 0xf6, 0x6d, 0x23, 0x6c, 0xf9, 0x07, 0xdb, 0xa9, 0x7d, - 0xa4, 0x9d, 0xcb, 0x68, 0xed, 0xa1, 0x8a, 0xb6, 0x07, 0xbe, 0x0b, 0x29, 0x4a, 0x9d, 0x0f, 0xef, - 0x67, 0xf9, 0x87, 0x1d, 0x7c, 0x8b, 0x3c, 0xbf, 0xa6, 0x7b, 0x3e, 0x69, 0x82, 0xbe, 0x18, 0x8e, - 0xa1, 0xc8, 0x56, 0x82, 0x28, 0x0b, 0xda, 0xc7, 0x18, 0x13, 0xba, 0xd9, 0x8b, 0xce, 0xf2, 0x26, - 0x7a, 0x1d, 0xc6, 0x13, 0xff, 0xc7, 0xa4, 0xd0, 0xfe, 0xb4, 0xba, 0xda, 0x40, 0xb7, 0xd7, 0xd5, - 0x55, 0x78, 0xd3, 0xfe, 0x1d, 0xf6, 0xd6, 0x73, 0xec, 0xc4, 0x51, 0xc8, 0xf1, 0x1a, 0x0a, 0x37, - 0x2d, 0x00, 0xfe, 0x7f, 0x2b, 0x2f, 0x73, 0xed, 0xf6, 0x9b, 0x54, 0x12, 0x6f, 0x1f, 0xc0, 0xff, - 0x4b, 0xed, 0x5b, 0xb6, 0x13, 0xb3, 0xa0, 0x62, 0x06, 0xf9, 0x63, 0xf2, 0x44, 0x10, 0x72, 0x3a, - 0x08, 0xdd, 0x46, 0xa5, 0xcd, 0xc4, 0x00, 0xd4, 0x09, 0xa3, 0x99, 0xf5, 0x4d, 0x4d, 0x51, 0xad, - 0xaf, 0x2f, 0xb4, 0xec, 0x08, 0x8a, 0x80, 0xc4, 0x79, 0xe5, 0x2f, 0x58, 0x08, 0xdb, 0x94, 0xe0, - 0xde, 0x12, 0xec, 0x49, 0x6f, 0x59, 0x06, 0x12, 0xa6, 0xcd, 0xc6, 0x00, 0x24, 0x55, 0x91, 0x0a, - 0xfc, 0x2c, 0x22, 0x06, 0x25, 0xdc, 0x0f, 0x88, 0xc0, 0xac, 0x20, 0xcf, 0x86, 0x12, 0x40, 0xd3, - 0x9a, 0xf3, 0xf2, 0x30, 0x5b, 0x75, 0x10, 0x65, 0xd7, 0x76, 0x0a, 0x5d, 0x1d, 0x89, 0xf2, 0x05, - 0x2c, 0x8f, 0x09, 0xc8, 0xf8, 0xd5, 0xc8, 0x78, 0x76, 0x44, 0x46, 0xae, 0x26, 0xe8, 0x64, 0xb4, - 0x31, 0x1f, 0x13, 0x9b, 0x79, 0xb9, 0x39, 0x82, 0xc4, 0x8e, 0x16, 0x68, 0xf9, 0xcb, 0xc7, 0x99, - 0x75, 0xcd, 0xa1, 0x42, 0x60, 0x70, 0x49, 0x86, 0xad, 0xa9, 0x1e, 0x8b, 0x9e, 0x81, 0xae, 0xb5, - 0x5c, 0x4c, 0x3c, 0xfb, 0x43, 0xe4, 0x10, 0xbd, 0x15, 0xd0, 0x27, 0x80, 0x0f, 0x36, 0xa6, 0x13, - 0x69, 0xcc, 0x0e, 0xd9, 0xf1, 0xe2, 0x9a, 0xd0, 0xe1, 0xd5, 0x8e, 0x77, 0x9a, 0xa0, 0x14, 0xd6, - 0x16, 0x9b, 0x10, 0x33, 0x1d, 0x24, 0x8a, 0xb5, 0x30, 0x2e, 0xce, 0x3c, 0xd8, 0xd7, 0x98, 0xfb, - 0x96, 0xa0, 0x84, 0x2d, 0x0d, 0xde, 0x9a, 0xb4, 0x51, 0xa7, 0x36, 0xf6, 0xcd, 0x94, 0x9f, 0x81, - 0x44, 0x78, 0xe3, 0x33, 0x7c, 0x5d, 0x0c, 0xf7, 0x33, 0xd1, 0x07, 0xc3, 0x81, 0x40, 0xa7, 0x3e, - 0xba, 0xba, 0xf8, 0x81, 0x06, 0x31, 0xde, 0x0a, 0x8c, 0x7b, 0xc7, 0x8f, 0x1f, 0xf7, 0x95, 0x8f, - 0xd6, 0xa1, 0x48, 0xd5, 0xe0, 0x0d, 0xf4, 0x70, 0xde, 0x55, 0x9c, 0x8f, 0xe9, 0x11, 0x3a, 0x35, - 0xab, 0x75, 0xa5, 0xa6, 0x7e, 0xab, 0x23, 0xee, 0x6a, 0x6a, 0x3a, 0x2d, 0x85, 0x6c, 0x43, 0x0d, - 0xbc, 0x86, 0x89, 0xf1, 0x86, 0xf8, 0xe5, 0x85, 0xd6, 0xa0, 0x9f, 0x12, 0x73, 0x1a, 0x47, 0x32, - 0x41, 0x4b, 0x18, 0x73, 0xd1, 0x65, 0x36, 0x19, 0xdf, 0x41, 0x97, 0xcf, 0x05, 0x5a, 0xd0, 0x4f, - 0x29, 0xc3, 0x28, 0xfa, 0xd7, 0x2f, 0x1f, 0x19, 0x06, 0x1e, 0xff, 0x08, 0xd2, 0x49, 0xe3, 0x7c, - 0x5b, 0xde, 0xb7, 0xbc, 0xef, 0x29, 0x83, 0xe3, 0x2f, 0xa6, 0xb1, 0x95, 0xc9, 0x15, 0x49, 0xf2, - 0x27, 0x62, 0x79, 0xf8, 0xc4, 0xf7, 0x3e, 0xbe, 0x1a, 0x06, 0x26, 0xc0, 0xb0, 0x55, 0x58, 0xe2, - 0xdc, 0xf5, 0x1d, 0x1b, 0x25, 0x58, 0x27, 0xd3, 0xcb, 0xa0, 0xb4, 0x00, 0xea, 0x9b, 0x2f, 0x3e, - 0x72, 0xad, 0x73, 0x96, 0xb4, 0x8e, 0x5e, 0x82, 0xed, 0x1f, 0xcf, 0xa2, 0xb1, 0x24, 0xe3, 0x40, - 0x7e, 0x77, 0x37, 0x72, 0x9b, 0x3e, 0x3c, 0x3b, 0x40, 0xbc, 0x68, 0x51, 0x0d, 0x5c, 0x23, 0xd8, - 0x46, 0x3d, 0x71, 0xa5, 0x90, 0x89, 0x5d, 0x55, 0xf3, 0x3d, 0x0a, 0xc8, 0xe0, 0xd2, 0x93, 0x5d, - 0x4a, 0xcd, 0xfb, 0xa6, 0xf9, 0x76, 0x52, 0x0f, 0xc6, 0x57, 0xfb, 0xee, 0xfd, 0xa8, 0xcf, 0xf4, - 0x4e, 0x15, 0x1f, 0x70, 0xc7, 0x01, 0x95, 0x1f, 0xfa, 0x92, 0xfb, 0x31, 0xc7, 0x32, 0xf8, 0x4d, - 0x7d, 0xb2, 0x35, 0x45, 0x8e, 0xd9, 0x18, 0x1a, 0x9e, 0x9a, 0x57, 0x1d, 0x2d, 0xe5, 0x91, 0x44, - 0x09, 0xf7, 0x0e, 0x7c, 0x97, 0x05, 0x2c, 0x4f, 0xa1, 0x25, 0x89, 0x4d, 0x3c, 0xdd, 0x21, 0xce, - 0xc3, 0x46, 0x50, 0xb3, 0xad, 0xc6, 0x1b, 0x6b, 0x71, 0xa3, 0xe4, 0xbb, 0xf9, 0x83, 0x96, 0xae, - 0x9b, 0x1d, 0x6d, 0x72, 0xde, 0x4d, 0x89, 0x18, 0x1c, 0xcb, 0x19, 0xa1, 0xb5, 0xf4, 0x9b, 0x42, - 0xbb, 0xe7, 0xd6, 0xa3, 0xc7, 0x4e, 0xa8, 0x17, 0x04, 0x7a, 0x2c, 0x51, 0x97, 0x09, 0xe6, 0x9b, - 0x60, 0x6e, 0xd2, 0x77, 0x2c, 0xd2, 0x1d, 0xb6, 0x5c, 0x0f, 0xe3, 0x05, 0xa1, 0x93, 0xb0, 0x97, - 0xae, 0xf7, 0xf0, 0x38, 0x00, 0x52, 0xb4, 0xee, 0x92, 0x9d, 0xc0, 0x03, 0x6f, 0x60, 0xa4, 0x30, - 0xc6, 0xbc, 0x4c, 0x5a, 0xa0, 0x77, 0xe4, 0xa0, 0x25, 0x32, 0x72, 0xe6, 0x7b, 0x51, 0xc6, 0x9d, - 0x26, 0x89, 0xce, 0x6d, 0x3f, 0x96, 0xfb, 0xdb, 0x56, 0xee, 0xd0, 0x47, 0x87, 0x0d, 0x0a, 0x71, - 0xea, 0xf9, 0xbf, 0x64, 0x3c, 0x98, 0xc9, 0x03, 0x47, 0x24, 0xb0, 0xc0, 0xfb, 0xed, 0x71, 0xa1, - 0x3d, 0x6e, 0xd8, 0x1e, 0x17, 0xda, 0xb3, 0x14, 0x65, 0xcc, 0xed, 0x09, 0xf1, 0xe6, 0x32, 0xbc, - 0xb9, 0x1c, 0xde, 0x2e, 0xfc, 0xcf, 0x3f, 0xe3, 0x01, 0xe2, 0x6d, 0x62, 0x23, 0x65, 0x92, 0xe3, - 0x1f, 0x33, 0x28, 0x1d, 0x60, 0x2f, 0x20, 0x71, 0xdb, 0x75, 0x53, 0xac, 0x30, 0x29, 0xd8, 0x34, - 0xfe, 0xe9, 0xbb, 0x4f, 0xf8, 0xd7, 0x31, 0x24, 0xa3, 0xde, 0xd1, 0x3a, 0x8e, 0x3a, 0x66, 0x05, - 0xa5, 0xe8, 0x39, 0x46, 0x2d, 0xe9, 0xbc, 0x89, 0xf8, 0x99, 0x95, 0x24, 0x64, 0x88, 0x0f, 0x81, - 0x54, 0xe3, 0xdd, 0x58, 0x04, 0xea, 0x8a, 0xc3, 0xb2, 0x7b, 0xd1, 0xec, 0x29, 0x31, 0x13, 0xb4, - 0x9f, 0x9e, 0xd4, 0x62, 0xf1, 0x0e, 0xea, 0xd1, 0x3e, 0x78, 0x41, 0xac, 0x09, 0xe8, 0x08, 0x7f, - 0x6e, 0x2d, 0xd6, 0x55, 0xe2, 0x3c, 0xc1, 0x47, 0x61, 0x0a, 0xdd, 0xea, 0xc3, 0xb4, 0xef, 0xda, - 0x0f, 0xdc, 0x47, 0xfc, 0xe4, 0xf9, 0x2e, 0xc0, 0xfe, 0xfd, 0xd7, 0x02, 0x61, 0x08, 0xb5, 0x5c, - 0x1d, 0x9a, 0x49, 0xc7, 0x0b, 0x77, 0x7e, 0x81, 0x48, 0xea, 0xe8, 0xdb, 0x22, 0x47, 0x27, 0x0a, - 0xa6, 0x4b, 0xec, 0x3b, 0x6e, 0x8b, 0x83, 0xac, 0x28, 0xf9, 0xe7, 0x33, 0x98, 0x83, 0x07, 0xed, - 0xb2, 0x52, 0xd3, 0xbe, 0xf9, 0xe5, 0xd5, 0x34, 0xdc, 0x47, 0x21, 0x3b, 0x97, 0x82, 0x51, 0xc7, - 0x13, 0x2c, 0x74, 0xeb, 0x44, 0xb6, 0x64, 0x5d, 0x76, 0x80, 0x31, 0x63, 0xc3, 0xa2, 0xf5, 0x18, - 0x92, 0xe4, 0xd4, 0xd1, 0xd5, 0x23, 0x0b, 0x35, 0xfc, 0x95, 0x53, 0x14, 0x99, 0x7a, 0x7b, 0xc8, - 0x16, 0xfc, 0xe4, 0x7f, 0xc8, 0x3a, 0xfc, 0x14, 0x7e, 0xd4, 0xc8, 0x56, 0x39, 0x64, 0x16, 0x1d, - 0x3c, 0x48, 0x24, 0xa9, 0xd8, 0x1e, 0xb6, 0x9f, 0x4a, 0x6e, 0xef, 0x81, 0xd5, 0xc9, 0x4a, 0x48, - 0xd3, 0x17, 0xd3, 0x48, 0x51, 0x6c, 0xb8, 0xb0, 0xa2, 0xd5, 0x1c, 0xdb, 0xf5, 0xa5, 0xc7, 0x55, - 0x5c, 0xba, 0x92, 0xe8, 0x46, 0xc7, 0xd1, 0xcc, 0x1a, 0xb7, 0xe9, 0x43, 0x3c, 0x94, 0xfd, 0x61, - 0x72, 0xb0, 0xba, 0xe4, 0x4f, 0x3d, 0xac, 0x35, 0xf9, 0x53, 0x4b, 0x9a, 0x7f, 0x02, 0xec, 0xd7, - 0x1d, 0x5c, 0x57, 0xeb, 0x5a, 0xd6, 0x47, 0x1b, 0x76, 0x1b, 0x8f, 0xa8, 0x10, 0xff, 0x15, 0x16, - 0x2b, 0x43, 0xc5, 0x30, 0x19, 0x16, 0xfe, 0xd1, 0xe7, 0x12, 0x86, 0xe5, 0x98, 0xff, 0xf9, 0x53, - 0x9a, 0xb3, 0xc3, 0x00, 0xdc, 0x0d, 0x45, 0xc2, 0xd2, 0x2b, 0x8a, 0xf0, 0xbc, 0xe7, 0x93, 0xa5, - 0x93, 0xd3, 0x5f, 0xb5, 0x9f, 0x51, 0xa2, 0x5a, 0x9c, 0x9d, 0xe4, 0xc0, 0x81, 0x6c, 0xe2, 0x86, - 0xb7, 0x28, 0xab, 0x91, 0x93, 0x07, 0xb1, 0xd9, 0xf8, 0xc7, 0x4c, 0x01, 0x0a, 0xda, 0xc4, 0x09, - 0x89, 0xc1, 0xec, 0x98, 0x69, 0x80, 0x5c, 0xb3, 0x83, 0x72, 0x16, 0x9e, 0x3b, 0x60, 0xaf, 0x96, - 0xed, 0xe1, 0x3b, 0xb5, 0x02, 0x6e, 0x53, 0x21, 0xeb, 0x8f, 0x99, 0x39, 0x27, 0xa1, 0x40, 0xa4, - 0x04, 0xd3, 0x71, 0xf2, 0xd5, 0x11, 0xc9, 0xf6, 0xd7, 0x04, 0xbb, 0x1f, 0xc9, 0xce, 0x69, 0x34, - 0xd8, 0x10, 0x64, 0x2f, 0xf8, 0xac, 0xcd, 0xc5, 0x45, 0x9b, 0x31, 0xc9, 0xb0, 0x44, 0xf8, 0x5d, - 0x76, 0x49, 0xc5, 0xa2, 0x08, 0x1d, 0xde, 0x53, 0x41, 0xbe, 0x09, 0x78, 0xea, 0x82, 0x42, 0xf1, - 0xb2, 0x74, 0x20, 0x1a, 0x06, 0x42, 0x35, 0x48, 0x05, 0x9c, 0x24, 0x18, 0x0c, 0x4f, 0x0b, 0x3b, - 0x83, 0x73, 0xdd, 0x1d, 0xeb, 0xcc, 0x51, 0xbc, 0x8d, 0xe7, 0x48, 0x0b, 0xf9, 0x2a, 0x9b, 0xd0, - 0xbb, 0xcd, 0x8b, 0x42, 0x5e, 0xac, 0x91, 0xd4, 0x0a, 0x9f, 0x5a, 0xc9, 0x97, 0xcb, 0x22, 0x23, - 0x12, 0x71, 0x93, 0x5b, 0xfb, 0x5b, 0x66, 0xc4, 0x1f, 0x5f, 0xc4, 0xd3, 0xa8, 0x78, 0x06, 0x9b, - 0x70, 0xdf, 0x4d, 0x58, 0x41, 0xed, 0x2a, 0x7d, 0x5e, 0x5c, 0x9a, 0x68, 0xd8, 0x41, 0x12, 0x20, - 0x89, 0xce, 0x7e, 0xa0, 0x0f, 0x13, 0xff, 0xe0, 0x21, 0x6c, 0x98, 0x91, 0xb0, 0x78, 0x20, 0x84, - 0x34, 0x63, 0x0f, 0x1f, 0x5f, 0x6e, 0x62, 0x12, 0xa4, 0x9f, 0x9f, 0xb1, 0x12, 0xd5, 0x3f, 0xd2, - 0x6d, 0xd5, 0xd9, 0x97, 0xef, 0x2a, 0x61, 0x6c, 0x16, 0xcd, 0x6e, 0x86, 0x1e, 0x0e, 0x3f, 0x93, - 0xe2, 0xff, 0x05, 0xce, 0x7d, 0x16, 0xf4, 0x6e, 0x1e, 0xb9, 0x89, 0x84, 0x1d, 0xf9, 0x65, 0x67, - 0x21, 0xbe, 0x32, 0xd7, 0x4d, 0x06, 0xf9, 0x95, 0xfa, 0xf8, 0x51, 0x8c, 0x59, 0x12, 0xe7, 0xe7, - 0x27, 0xff, 0x84, 0x64, 0x32, 0x38, 0x16, 0x39, 0xb6, 0x0c, 0xdf, 0xd0, 0xa9, 0x41, 0xdf, 0x20, - 0x33, 0xc2, 0x42, 0xdf, 0x85, 0x4d, 0xf1, 0x2c, 0xdb, 0x10, 0xab, 0xe4, 0x79, 0x8e, 0xfa, 0xc1, - 0x4f, 0x49, 0x36, 0xd2, 0xe9, 0xf9, 0x1c, 0x10, 0xd1, 0x69, 0x7f, 0x53, 0x36, 0xdd, 0x74, 0x5d, - 0x8c, 0xc4, 0x1a, 0x45, 0x77, 0x74, 0x60, 0xd0, 0xa8, 0xad, 0x76, 0x32, 0x62, 0x15, 0x0a, 0xc2, - 0x23, 0xc8, 0x08, 0x76, 0x66, 0x09, 0x16, 0xba, 0xcd, 0x87, 0x81, 0x27, 0x85, 0x2e, 0x4e, 0xf9, - 0x0c, 0x1e, 0x61, 0xc0, 0xcd, 0x9c, 0x40, 0xc5, 0xe5, 0x76, 0xe4, 0xb7, 0xa9, 0x23, 0x41, 0x90, - 0xa7, 0x8a, 0xfb, 0xf2, 0x04, 0x5f, 0x73, 0x02, 0x68, 0x12, 0x93, 0x7a, 0x6c, 0x13, 0xde, 0x8c, - 0xac, 0x91, 0x6e, 0xd4, 0xe7, 0x95, 0x85, 0x9d, 0xfc, 0xa0, 0xb3, 0x2b, 0x0d, 0xdb, 0xf9, 0x11, - 0x5f, 0xd7, 0xe0, 0x04, 0xc6, 0xd0, 0xe8, 0x90, 0xa8, 0x86, 0x58, 0x99, 0x80, 0xb5, 0x09, 0xb8, - 0xd8, 0xd2, 0xc3, 0x70, 0x89, 0x4e, 0xb0, 0x49, 0xb1, 0x87, 0xe5, 0x28, 0xb9, 0xfa, 0xae, 0x01, - 0xb2, 0xf6, 0x8e, 0x03, 0xf0, 0xc2, 0x69, 0x4e, 0xa2, 0xa9, 0xd0, 0x85, 0x16, 0x9d, 0x7c, 0x31, - 0x00, 0x01, 0x9d, 0x33, 0x35, 0x3f, 0x56, 0x14, 0xd2, 0xb0, 0xe9, 0x61, 0x3d, 0xcb, 0x42, 0x78, - 0xc5, 0x36, 0x97, 0xf1, 0x74, 0x3c, 0x99, 0x29, 0x5f, 0xbe, 0x2c, 0x8f, 0x21, 0xe5, 0x49, 0x58, - 0x9a, 0x7f, 0xf6, 0xf2, 0x16, 0x59, 0x18, 0x89, 0xfa, 0xd3, 0x13, 0x25, 0x7f, 0xe2, 0x69, 0x99, - 0xbe, 0xea, 0x36, 0x3c, 0xcf, 0xd1, 0x81, 0x22, 0xe1, 0x2b, 0xa8, 0x84, 0xa2, 0x04, 0x93, 0x57, - 0xf5, 0x93, 0x88, 0xef, 0x15, 0xd5, 0x30, 0xaa, 0xb0, 0xee, 0xf9, 0x47, 0xe9, 0x78, 0x8f, 0x0e, - 0xf2, 0x31, 0xeb, 0x4a, 0x20, 0x4f, 0x93, 0x13, 0x5c, 0x30, 0x8b, 0xf2, 0x12, 0x73, 0x77, 0xf8, - 0x99, 0x7c, 0xfb, 0x33, 0x0b, 0x12, 0xd1, 0xea, 0x49, 0x84, 0x7e, 0xfe, 0xf4, 0x13, 0xda, 0xab, - 0x45, 0x96, 0x22, 0xfd, 0xac, 0x2d, 0x8b, 0x3c, 0x60, 0xcc, 0xe9, 0x04, 0x8f, 0xa0, 0x6d, 0x19, - 0x06, 0x83, 0xa0, 0x02, 0x34, 0xf0, 0x3f, 0x45, 0x9c, 0x8a, 0x47, 0xe6, 0x78, 0x2f, 0x58, 0xa6, - 0x42, 0x71, 0x91, 0x77, 0xb8, 0xe3, 0xb9, 0x24, 0x72, 0x4e, 0x86, 0xc6, 0x9d, 0xfd, 0xbb, 0x55, - 0x26, 0x9d, 0x95, 0xe5, 0x6e, 0x26, 0x60, 0xa7, 0x40, 0x63, 0x84, 0x83, 0xfa, 0x2e, 0x25, 0x9b, - 0x50, 0xe9, 0xd3, 0x50, 0x2f, 0x5c, 0x38, 0xf9, 0x18, 0xfb, 0xce, 0xba, 0x23, 0xbb, 0xc9, 0x10, - 0xa1, 0xce, 0x08, 0xc3, 0xe9, 0x2e, 0xda, 0x67, 0x95, 0xaa, 0x27, 0xb1, 0x2d, 0xf3, 0x65, 0x75, - 0x3c, 0x70, 0x45, 0xfc, 0x55, 0x4f, 0x2d, 0xab, 0x28, 0x04, 0x93, 0x92, 0xab, 0xf1, 0xe9, 0x44, - 0x64, 0xa7, 0xc3, 0x24, 0xe2, 0xaf, 0x66, 0x82, 0xce, 0x69, 0xd4, 0xf1, 0xf4, 0x24, 0xac, 0x29, - 0xae, 0x58, 0xc5, 0x03, 0x94, 0xc4, 0xe7, 0x4d, 0xcc, 0x91, 0xad, 0x26, 0xa8, 0x14, 0xe6, 0xd1, - 0xa7, 0x3a, 0x5f, 0x57, 0xcf, 0xb1, 0x7d, 0xc4, 0xa8, 0xc9, 0xad, 0x21, 0x10, 0x7e, 0xab, 0xad, - 0x25, 0x1d, 0xb3, 0xdb, 0x01, 0x4c, 0x0d, 0x18, 0x27, 0xa1, 0x94, 0x3a, 0xf3, 0xe2, 0xd3, 0x29, - 0xed, 0xb7, 0x35, 0x98, 0xce, 0x66, 0x36, 0xa5, 0xa6, 0x2d, 0x68, 0xff, 0x27, 0x1a, 0x43, 0x43, - 0x47, 0xc1, 0x56, 0xdd, 0xc8, 0xfd, 0xfa, 0x65, 0x6d, 0x28, 0xf8, 0x6c, 0x00, 0x3b, 0x15, 0x52, - 0x28, 0x6a, 0x09, 0x23, 0xdd, 0xf1, 0x86, 0xaa, 0x21, 0xfd, 0xa4, 0xfa, 0x9b, 0x5f, 0x17, 0xe0, - 0x20, 0x72, 0x90, 0xd0, 0x98, 0xc7, 0x09, 0x00, 0xdd, 0x3b, 0xa9, 0x58, 0x59, 0xd3, 0xfc, 0x23, - 0xe0, 0xe8, 0x08, 0x2a, 0x72, 0xca, 0x1b, 0xd1, 0x17, 0xa4, 0xc4, 0xf3, 0xb5, 0xfe, 0xa6, 0xbb, - 0xc4, 0xe5, 0x46, 0xaf, 0xf5, 0xdf, 0xcd, 0x0d, 0x23, 0x12, 0x89, 0x5f, 0xba, 0xa1, 0xc4, 0xcf, - 0x61, 0x46, 0x3e, 0xcf, 0x2d, 0x50, 0x97, 0x80, 0x31, 0x79, 0x71, 0xcf, 0xf5, 0xb0, 0x48, 0x39, - 0xb5, 0x2c, 0xef, 0x8b, 0xd1, 0x82, 0x61, 0x7c, 0x33, 0xf3, 0x02, 0x9a, 0xf0, 0x40, 0xc1, 0x8c, - 0x1e, 0x5d, 0x22, 0xcb, 0xea, 0x85, 0x35, 0xd6, 0x1c, 0xdf, 0x1d, 0x1e, 0xa7, 0x62, 0x1d, 0x83, - 0xc5, 0x6e, 0xfa, 0x47, 0xdd, 0xf1, 0xe8, 0x2d, 0x07, 0x7d, 0x66, 0x44, 0x40, 0x4d, 0xa3, 0xb1, - 0x0c, 0xb2, 0x39, 0x35, 0xdb, 0x11, 0x58, 0x3f, 0xae, 0x6c, 0x24, 0x03, 0xce, 0x65, 0xb6, 0xc0, - 0x31, 0x53, 0x55, 0x33, 0x8c, 0x08, 0x8b, 0x1a, 0xd5, 0x42, 0xfa, 0xde, 0x24, 0xb5, 0x68, 0xd5, - 0xf2, 0x6f, 0xbb, 0x76, 0x74, 0xe0, 0xd6, 0xcb, 0xbe, 0xd2, 0x5b, 0xba, 0x96, 0x7f, 0x0f, 0x2f, - 0x88, 0x5a, 0x0e, 0xb3, 0x9d, 0x7b, 0xeb, 0x63, 0xfe, 0xad, 0x8f, 0x05, 0xfc, 0xe8, 0xc7, 0x26, - 0x4c, 0x2d, 0x81, 0xba, 0x7a, 0xa3, 0x84, 0xfd, 0x37, 0xbe, 0x6d, 0x91, 0xa3, 0x04, 0x61, 0xe0, - 0xc1, 0x25, 0x60, 0x77, 0xa2, 0x6f, 0xf3, 0xa3, 0x77, 0x6d, 0xc7, 0xcd, 0x58, 0x7e, 0x01, 0xb1, - 0x20, 0x78, 0x2c, 0x0b, 0x5e, 0x49, 0x9d, 0x90, 0x63, 0x7b, 0xfb, 0x3a, 0x06, 0xcf, 0x05, 0xff, - 0xe3, 0x62, 0xae, 0x51, 0xab, 0x00, 0xb9, 0xc0, 0x33, 0x5e, 0x8a, 0x86, 0xc1, 0xe6, 0x12, 0x2b, - 0xa5, 0xf1, 0x6b, 0x93, 0xaa, 0x25, 0x78, 0x84, 0x85, 0x85, 0x00, 0x24, 0xe6, 0xed, 0x2f, 0xeb, - 0x23, 0x0d, 0x0f, 0xf9, 0x66, 0x5e, 0xf7, 0x1f, 0xe4, 0x1d, 0xbd, 0x91, 0x37, 0x31, 0xc3, 0xf3, - 0xdb, 0x95, 0x25, 0xe2, 0x98, 0x59, 0x23, 0x7b, 0xad, 0x37, 0xf3, 0x6a, 0x18, 0xe8, 0x2e, 0x31, - 0x27, 0xbd, 0x67, 0x7b, 0x79, 0x3e, 0x12, 0x27, 0x38, 0x9e, 0x93, 0x73, 0xa4, 0x67, 0x8f, 0x4d, - 0x7a, 0xad, 0x5f, 0x6a, 0x61, 0x3d, 0x5e, 0x98, 0xc7, 0xfc, 0x31, 0xe2, 0xc0, 0x34, 0x24, 0xa3, - 0x40, 0x17, 0x35, 0xd9, 0xfc, 0xa4, 0xe1, 0x45, 0xa8, 0xde, 0xe8, 0x9b, 0xac, 0x7e, 0x7c, 0x0f, - 0x94, 0x4a, 0x2e, 0x64, 0xf4, 0x5c, 0xfc, 0x41, 0xb9, 0x27, 0xa8, 0x34, 0x81, 0xf1, 0x59, 0xf1, - 0xad, 0x24, 0xda, 0x82, 0x2d, 0x88, 0x63, 0xd3, 0x2e, 0xba, 0x06, 0xbd, 0xc5, 0xc8, 0xe5, 0x85, - 0x76, 0x11, 0x53, 0xd2, 0x77, 0x4e, 0xcf, 0x8e, 0xb7, 0x84, 0xa2, 0xed, 0xf7, 0xf2, 0xbc, 0xc1, - 0xb9, 0x97, 0x20, 0x14, 0x19, 0x20, 0x8f, 0x4b, 0xdf, 0xc0, 0xf9, 0x1e, 0x2a, 0xbb, 0x93, 0x24, - 0x2c, 0xee, 0x4d, 0xfe, 0x3b, 0x91, 0x18, 0xf8, 0xf3, 0x7f, 0x14, 0x2d, 0x7e, 0x73, 0x50, 0x82, - 0x31, 0xdf, 0x58, 0x12, 0x71, 0xf3, 0x92, 0xde, 0x65, 0xcf, 0xe2, 0x98, 0x6c, 0x5b, 0xa6, 0xe7, - 0x58, 0x46, 0x2a, 0x2c, 0x88, 0x0b, 0x39, 0xfe, 0xa9, 0x4e, 0x23, 0x8e, 0x7f, 0xf9, 0xb2, 0x0a, - 0xd2, 0x51, 0x64, 0x0d, 0xfd, 0xf5, 0x8b, 0x06, 0x17, 0xff, 0x14, 0x4d, 0x4e, 0x80, 0xe4, 0xcf, - 0xd7, 0xb3, 0xe9, 0x72, 0x85, 0xe7, 0x9c, 0xa9, 0x6a, 0x4e, 0x67, 0x23, 0x09, 0xf8, 0xef, 0xcf, - 0xa9, 0xe0, 0xfe, 0xe9, 0xba, 0x7f, 0xf6, 0x43, 0x21, 0x96, 0x3f, 0xcb, 0x41, 0x42, 0x61, 0x6e, - 0x69, 0xa0, 0x92, 0x8a, 0xdc, 0xf5, 0xd4, 0x0a, 0x5e, 0x4e, 0x5d, 0xe5, 0x53, 0x40, 0x6d, 0xf8, - 0x53, 0x12, 0x83, 0xd1, 0x30, 0x74, 0x7b, 0x93, 0xfc, 0x45, 0xe3, 0xb8, 0xaf, 0xab, 0x6f, 0xe0, - 0x26, 0x0b, 0xe8, 0xdd, 0x02, 0x5e, 0x22, 0x2c, 0x88, 0x69, 0x97, 0x31, 0x79, 0x23, 0xea, 0xdd, - 0xfd, 0x93, 0x5e, 0xa3, 0x40, 0xa2, 0xde, 0x6b, 0x3a, 0x39, 0xc4, 0x8d, 0xad, 0xc0, 0xa3, 0xee, - 0x19, 0x63, 0x30, 0x27, 0x36, 0x23, 0xb4, 0x9d, 0x30, 0xb5, 0x34, 0x8c, 0x63, 0xbf, 0xc8, 0xae, - 0x69, 0x7f, 0x48, 0x67, 0x62, 0x3c, 0x82, 0x0b, 0x1f, 0x30, 0xb0, 0x2f, 0x28, 0x72, 0xd0, 0x1a, - 0xaa, 0xe1, 0x09, 0x32, 0xd3, 0x3f, 0xeb, 0x1c, 0x9c, 0x35, 0xac, 0x51, 0x63, 0x25, 0x74, 0x8d, - 0x7c, 0x07, 0x0a, 0x54, 0x61, 0x2c, 0x3b, 0x5a, 0x83, 0xc4, 0x73, 0x32, 0xeb, 0x5e, 0x42, 0x72, - 0x6d, 0x52, 0x77, 0x37, 0x8a, 0x6b, 0x40, 0x7c, 0xdf, 0x4a, 0x15, 0x50, 0x66, 0x37, 0xca, 0x45, - 0x7c, 0x5e, 0xcf, 0xe1, 0xf3, 0x7a, 0x19, 0x9f, 0x73, 0xf9, 0x02, 0xbe, 0x80, 0x12, 0xb6, 0x29, - 0xd6, 0xa1, 0x69, 0x1b, 0xa2, 0x3c, 0xad, 0x9b, 0x24, 0x93, 0x49, 0x32, 0x99, 0x24, 0x93, 0x49, - 0x32, 0x99, 0x24, 0x93, 0x49, 0x33, 0x99, 0x7c, 0x26, 0x16, 0x9a, 0x21, 0x95, 0x22, 0xad, 0xf3, - 0xc3, 0x40, 0x6c, 0x8a, 0xdf, 0xc4, 0xea, 0x44, 0x4a, 0xb3, 0x2e, 0xc5, 0xac, 0x2b, 0xc4, 0x62, - 0x1b, 0x85, 0x9d, 0x4a, 0x69, 0xda, 0x0f, 0x7a, 0x86, 0x5b, 0x91, 0x67, 0xe6, 0x70, 0xa0, 0x39, - 0x7a, 0xbb, 0xfa, 0x49, 0xe1, 0x55, 0xe0, 0x81, 0xfa, 0xac, 0xdd, 0x35, 0x61, 0x7a, 0x8f, 0xdd, - 0x5f, 0xbf, 0x82, 0x78, 0xae, 0x63, 0xf7, 0x9b, 0xf2, 0xeb, 0x57, 0x2a, 0x35, 0x76, 0x49, 0x40, - 0xbc, 0x3b, 0xad, 0xd5, 0x04, 0x7c, 0x6b, 0x5e, 0x2a, 0xc5, 0xe2, 0xf7, 0xbd, 0x11, 0x4d, 0x6d, - 0x53, 0x1c, 0xbb, 0xa0, 0x13, 0xc0, 0x5f, 0x34, 0x11, 0x10, 0x93, 0x01, 0xb1, 0x20, 0x50, 0xbb, - 0x41, 0x3c, 0x57, 0xdf, 0x72, 0x3d, 0x62, 0xab, 0x48, 0x8b, 0x59, 0xcc, 0x21, 0x65, 0x5a, 0xba, - 0xa9, 0x3a, 0xd3, 0x6b, 0x62, 0xdd, 0x23, 0x91, 0xc0, 0x5a, 0xc3, 0x6e, 0x17, 0x68, 0x5c, 0x1e, - 0xbb, 0x19, 0x3c, 0x77, 0xe0, 0xba, 0xa8, 0x64, 0xa2, 0x66, 0x8f, 0x63, 0xcc, 0x82, 0x16, 0x07, - 0xc6, 0x0f, 0x90, 0x97, 0x89, 0x91, 0x79, 0x8b, 0x64, 0x0a, 0x34, 0x31, 0x3e, 0x36, 0x1a, 0xc9, - 0x20, 0x51, 0x7b, 0x39, 0x39, 0x5d, 0x21, 0xcd, 0x22, 0xc1, 0x72, 0xb8, 0x43, 0xaf, 0x92, 0xcc, - 0xbd, 0x90, 0x13, 0xc0, 0xfc, 0x75, 0x00, 0x41, 0x6c, 0xc2, 0xb8, 0x75, 0xc2, 0x8f, 0x8c, 0xf5, - 0xd1, 0x38, 0x48, 0x46, 0x30, 0xdb, 0xbc, 0x0c, 0x3d, 0xdd, 0xb0, 0x99, 0x0a, 0x8f, 0x7f, 0xb9, - 0x52, 0x44, 0x66, 0xa5, 0x37, 0x28, 0x7c, 0xf9, 0x12, 0x39, 0xf0, 0xe4, 0x4a, 0x52, 0x95, 0x3b, - 0x1d, 0x41, 0x79, 0x20, 0x2a, 0xe8, 0x00, 0xb0, 0xc9, 0x7e, 0xab, 0x5e, 0x2d, 0xc2, 0x44, 0x5c, - 0xd9, 0xc4, 0xb0, 0x60, 0x6a, 0xa7, 0x89, 0x5f, 0x53, 0x26, 0x08, 0xee, 0x73, 0x8a, 0x64, 0x72, - 0xaf, 0x0a, 0x41, 0xf1, 0x6f, 0xc7, 0x73, 0x92, 0xb9, 0xb3, 0x6d, 0x94, 0xb6, 0xe4, 0x5c, 0x09, - 0x8d, 0x35, 0x63, 0x16, 0x80, 0x90, 0xd6, 0x80, 0x31, 0xac, 0x48, 0x05, 0x8e, 0xf6, 0xe2, 0x9e, - 0x68, 0x3d, 0xd5, 0xa8, 0x47, 0xe9, 0x32, 0x6c, 0x97, 0x1f, 0x5e, 0x8a, 0xcc, 0x68, 0x36, 0x99, - 0x71, 0x57, 0x01, 0xef, 0x97, 0xd0, 0xa0, 0x28, 0x39, 0x2e, 0x8d, 0xb3, 0xd0, 0x08, 0x1a, 0x1e, - 0x04, 0x20, 0xd7, 0x4f, 0x68, 0x19, 0x13, 0x4f, 0x41, 0xb0, 0xbb, 0x22, 0xc8, 0x5b, 0x67, 0xe8, - 0xb0, 0x1b, 0x23, 0xc8, 0xab, 0x47, 0x41, 0xf7, 0x54, 0x0c, 0x9d, 0x85, 0x09, 0x5d, 0x78, 0x0a, - 0xaf, 0xa5, 0xd0, 0x32, 0xc3, 0x8e, 0x6d, 0xc2, 0x32, 0x64, 0x76, 0xfc, 0x8b, 0x21, 0x22, 0x7c, - 0x3a, 0x76, 0x7d, 0x04, 0x48, 0x6a, 0x06, 0x30, 0x59, 0x3c, 0x1a, 0x54, 0xc5, 0x67, 0xbc, 0xe3, - 0x81, 0xf1, 0x66, 0x72, 0x25, 0x0c, 0x6d, 0xb1, 0xe7, 0x05, 0x4d, 0xf5, 0x9c, 0x6c, 0x4e, 0x91, - 0x13, 0x8e, 0xbf, 0x30, 0xaa, 0x50, 0x64, 0xdc, 0x0e, 0x65, 0xd7, 0x5f, 0x04, 0x37, 0x62, 0x04, - 0x97, 0x60, 0xc4, 0x76, 0x0a, 0x13, 0xce, 0xba, 0x78, 0x74, 0xfb, 0x54, 0x21, 0x7a, 0x3a, 0x3d, - 0xe2, 0xe2, 0xe1, 0x0e, 0x1a, 0xe7, 0x04, 0x4e, 0xd8, 0xb9, 0x07, 0x15, 0xe5, 0x68, 0x84, 0x15, - 0x02, 0x01, 0xeb, 0x99, 0x34, 0x33, 0xbf, 0x51, 0x5e, 0xef, 0x21, 0x73, 0xcc, 0x33, 0x83, 0x40, - 0x24, 0xf4, 0x33, 0xb1, 0x18, 0xb4, 0xbf, 0x73, 0x05, 0xff, 0x60, 0xad, 0xfd, 0x55, 0xff, 0xf4, - 0x29, 0x95, 0xfb, 0x62, 0x84, 0x8a, 0x02, 0x49, 0xa9, 0xb0, 0x14, 0x68, 0x3f, 0x79, 0x2f, 0xc2, - 0x7b, 0x60, 0x35, 0xc2, 0x42, 0x5c, 0x62, 0x3d, 0x43, 0xbb, 0x02, 0x28, 0xd8, 0x89, 0x95, 0xa9, - 0x5c, 0x2d, 0x0b, 0x95, 0xc4, 0xea, 0x08, 0xaa, 0x40, 0x1a, 0x52, 0xfd, 0x05, 0x81, 0xb3, 0x48, - 0x9e, 0x59, 0x82, 0x8f, 0x75, 0x66, 0x84, 0x24, 0x5c, 0x33, 0x54, 0x5f, 0xd9, 0x61, 0xba, 0xa4, - 0xfd, 0xa2, 0x70, 0x5b, 0xcc, 0x62, 0xe8, 0x5e, 0xcd, 0xd5, 0xb4, 0x0d, 0xdc, 0x24, 0x5b, 0x5d, - 0x95, 0xac, 0xc8, 0x16, 0x52, 0x5d, 0x45, 0xc5, 0x04, 0x92, 0x48, 0x38, 0xd2, 0xc8, 0x16, 0x52, - 0xf8, 0x29, 0x17, 0xfb, 0xd4, 0x0a, 0x3f, 0xe5, 0x7f, 0x70, 0x0a, 0x57, 0x2a, 0x02, 0x35, 0x0e, - 0xa1, 0x30, 0x34, 0x29, 0x8b, 0x77, 0x6f, 0x91, 0x68, 0x3f, 0x18, 0x86, 0x35, 0x0c, 0x5a, 0x88, - 0x57, 0x9e, 0xf8, 0x16, 0x1a, 0xc8, 0xd3, 0x06, 0xc9, 0x83, 0xfc, 0x40, 0x93, 0x03, 0xd7, 0x04, - 0x2a, 0xe8, 0x04, 0x04, 0x4a, 0xbe, 0x4b, 0xf2, 0xa2, 0x66, 0x1b, 0x7c, 0x77, 0x27, 0x72, 0xb2, - 0x5e, 0x1b, 0x40, 0xe8, 0x11, 0x08, 0xd4, 0x6a, 0xc3, 0xc2, 0x73, 0x9b, 0xf8, 0xa7, 0xaa, 0xc8, - 0x31, 0xd5, 0x36, 0x84, 0xc8, 0x23, 0x44, 0x3e, 0x06, 0x51, 0xe0, 0x21, 0x0a, 0x08, 0x51, 0x00, - 0x08, 0x2d, 0x43, 0xc2, 0x93, 0x91, 0xc3, 0xc0, 0xec, 0x99, 0x2e, 0x03, 0x3a, 0xee, 0x62, 0xfb, - 0x3b, 0x2c, 0xfe, 0x07, 0xb2, 0xa3, 0x92, 0x53, 0xaa, 0xf0, 0x31, 0xb4, 0x4b, 0x0f, 0xd0, 0xb1, - 0x42, 0xe8, 0x06, 0x27, 0xe8, 0x3e, 0x89, 0xb5, 0x16, 0x70, 0xa4, 0x67, 0xba, 0xff, 0x92, 0xcb, - 0x21, 0x34, 0x9e, 0x11, 0xd5, 0x4c, 0x6b, 0xd8, 0xeb, 0x0b, 0xae, 0xad, 0xb6, 0xf1, 0x9e, 0x22, - 0xc1, 0xc5, 0xd8, 0x3a, 0xf4, 0x28, 0x70, 0x2c, 0x4b, 0x1e, 0xb3, 0xb0, 0x70, 0x52, 0x58, 0x03, - 0x33, 0xeb, 0x47, 0x60, 0x0a, 0x08, 0x73, 0xaa, 0xd3, 0x5b, 0x90, 0x74, 0x87, 0x46, 0xba, 0x8c, - 0x82, 0xac, 0x23, 0x48, 0x83, 0x6b, 0x99, 0x40, 0xba, 0x21, 0x00, 0x55, 0x08, 0x56, 0x1b, 0xd8, - 0x10, 0xee, 0x28, 0xcc, 0x39, 0xca, 0x26, 0xab, 0x12, 0x39, 0x9e, 0x47, 0x00, 0x61, 0x41, 0x86, - 0x17, 0x9d, 0x18, 0xc2, 0xd9, 0x95, 0x38, 0x09, 0xe2, 0x2b, 0x5e, 0x8d, 0xa3, 0xc2, 0x72, 0x69, - 0xf0, 0x77, 0xe8, 0xa8, 0x99, 0xee, 0x44, 0x8e, 0xed, 0xa0, 0xcb, 0x49, 0x21, 0xdf, 0x97, 0x0a, - 0xca, 0x1c, 0x27, 0xff, 0x90, 0x87, 0x86, 0xe6, 0x5b, 0xc1, 0x91, 0xff, 0x89, 0xff, 0x01, 0x99, - 0x83, 0x79, 0x6c, 0x68, 0x81, 0xc7, 0x86, 0x22, 0xe7, 0x30, 0x3e, 0xdc, 0x42, 0x3a, 0x9e, 0xc3, - 0xab, 0x63, 0xc8, 0x61, 0x63, 0xf3, 0xfb, 0x8f, 0x2a, 0xba, 0x39, 0x1a, 0x3a, 0x60, 0xa3, 0x26, - 0xa2, 0x65, 0x11, 0xed, 0x86, 0xac, 0x8e, 0x5f, 0xbf, 0x10, 0x48, 0xc5, 0xb8, 0xc1, 0x00, 0x87, - 0xbf, 0x3e, 0xa8, 0x2c, 0xe2, 0xa6, 0xae, 0x0f, 0xf7, 0x2d, 0xef, 0x43, 0xe6, 0x18, 0x64, 0x2e, - 0x02, 0xe9, 0x84, 0x90, 0x05, 0x1f, 0x32, 0xcf, 0x20, 0xf3, 0x11, 0xc8, 0x76, 0x1d, 0x0f, 0x1d, - 0x56, 0x67, 0xb0, 0xd6, 0xda, 0xd4, 0x5e, 0x39, 0xd0, 0xcd, 0x54, 0x49, 0xe6, 0x42, 0xdc, 0x71, - 0x24, 0xee, 0x72, 0x9c, 0x86, 0x55, 0x90, 0xcd, 0x4b, 0xa1, 0x81, 0x90, 0x46, 0x45, 0xb6, 0xc3, - 0x60, 0xc8, 0xbd, 0x3a, 0x97, 0x5b, 0x4c, 0xc3, 0x44, 0x1f, 0xf2, 0x29, 0x24, 0xde, 0x3d, 0x26, - 0x13, 0xf1, 0x07, 0x16, 0x03, 0x03, 0x96, 0x0b, 0x90, 0x42, 0x2b, 0x9b, 0xf9, 0xaa, 0x2d, 0xfd, - 0xfa, 0xe5, 0xb3, 0xb0, 0x0d, 0xe3, 0xcb, 0x17, 0x51, 0xfc, 0x54, 0xb7, 0xbe, 0x1b, 0x3f, 0xc8, - 0x80, 0xf1, 0x1f, 0x30, 0x31, 0x74, 0xc0, 0xa9, 0x8b, 0x92, 0x6f, 0x70, 0xec, 0xd7, 0x17, 0x3e, - 0xc9, 0x5d, 0xd6, 0x49, 0x75, 0x02, 0x83, 0x15, 0xf4, 0x17, 0xb7, 0x2a, 0x02, 0x03, 0x2f, 0xc9, - 0xc4, 0x06, 0xae, 0x9f, 0xce, 0x49, 0x18, 0x0a, 0x17, 0x37, 0xc5, 0x36, 0x53, 0x5e, 0x94, 0x21, - 0x45, 0x99, 0x4e, 0x17, 0x90, 0x89, 0x8b, 0x01, 0xf0, 0x1e, 0x78, 0x46, 0x23, 0xf4, 0x62, 0x8e, - 0x45, 0x46, 0x14, 0xe4, 0xd2, 0x49, 0xae, 0x78, 0x86, 0x6d, 0x94, 0x56, 0x57, 0xa1, 0x0d, 0x31, - 0xf0, 0xef, 0x62, 0x9b, 0x7d, 0x49, 0x8b, 0xa0, 0xd5, 0x62, 0x3a, 0x36, 0xbb, 0xce, 0xb5, 0x1d, - 0x66, 0x2d, 0x74, 0xb1, 0x2f, 0xcd, 0x23, 0x48, 0xfc, 0xc4, 0xb0, 0xb8, 0x39, 0xe4, 0xd4, 0x22, - 0x4c, 0xa8, 0xf2, 0x09, 0xa4, 0xbb, 0x22, 0xbb, 0xde, 0xde, 0x25, 0xdd, 0xa4, 0x1d, 0x12, 0xe3, - 0x57, 0xde, 0x83, 0x64, 0x4d, 0xaf, 0x6f, 0x66, 0xcd, 0x91, 0x87, 0x09, 0xea, 0x30, 0xf1, 0xdf, - 0x07, 0x7e, 0xbd, 0xfc, 0x13, 0xd3, 0xa0, 0xea, 0x09, 0xdb, 0x52, 0x43, 0xc9, 0xd7, 0xba, 0x70, - 0xeb, 0xb2, 0x54, 0xa9, 0xc2, 0xdf, 0x42, 0x09, 0x0a, 0x83, 0x89, 0xcd, 0x6d, 0x45, 0x91, 0xcd, - 0x56, 0x51, 0xe6, 0x7a, 0xe1, 0x07, 0x3c, 0x89, 0x2b, 0xd1, 0xac, 0xca, 0x61, 0x72, 0xfa, 0xdc, - 0xc5, 0x20, 0x0e, 0x58, 0x93, 0x1c, 0x23, 0x7c, 0x2a, 0x6d, 0xb2, 0x58, 0x66, 0xd7, 0x96, 0x5d, - 0xa7, 0x57, 0x60, 0x54, 0xdf, 0x02, 0xab, 0xb3, 0x15, 0xa2, 0x3b, 0x09, 0xbe, 0xf4, 0xc9, 0xa9, - 0x81, 0xfa, 0x4f, 0x3c, 0xd0, 0x4f, 0x74, 0x5b, 0x61, 0x95, 0xec, 0xd7, 0x83, 0xde, 0xfb, 0x93, - 0xac, 0xeb, 0x23, 0xdc, 0xda, 0x1e, 0xe0, 0x9f, 0x16, 0x3b, 0x38, 0x1c, 0xba, 0xb9, 0x24, 0xac, - 0xf8, 0x11, 0xc7, 0x17, 0xcc, 0x7f, 0x18, 0xca, 0x05, 0x69, 0x8d, 0xcc, 0x2c, 0x3d, 0x60, 0x61, - 0x74, 0x1a, 0xe9, 0xb8, 0x0c, 0xe3, 0x34, 0x3a, 0x5c, 0xe2, 0xe9, 0x27, 0x47, 0x72, 0x7c, 0x0a, - 0xb2, 0x60, 0xf1, 0x53, 0xf2, 0x1c, 0x72, 0xbc, 0xbc, 0x54, 0x3b, 0xe4, 0x48, 0x67, 0x2a, 0x4f, - 0x29, 0x34, 0x10, 0xf2, 0x28, 0x5d, 0x1f, 0xa4, 0xa7, 0x69, 0x98, 0x78, 0x69, 0x4c, 0xc1, 0x4e, - 0x61, 0x20, 0x4a, 0x3a, 0x2e, 0x87, 0x51, 0x7a, 0xd3, 0x36, 0xc5, 0xbd, 0x09, 0xa1, 0x32, 0x78, - 0xda, 0xea, 0x21, 0x5d, 0xb9, 0x62, 0xed, 0x53, 0x4e, 0x6e, 0xa5, 0xd3, 0x34, 0x83, 0xb9, 0xb9, - 0xd8, 0x5e, 0x6a, 0x94, 0xd3, 0x30, 0xc6, 0x01, 0xb9, 0x3a, 0xad, 0x4e, 0x42, 0x66, 0x71, 0x01, - 0x91, 0x61, 0x4a, 0x2d, 0xed, 0x24, 0xdf, 0x02, 0x11, 0xe8, 0x57, 0xc3, 0xf3, 0xd2, 0xb4, 0x46, - 0xe6, 0x3a, 0x07, 0x38, 0x3c, 0x59, 0x88, 0x64, 0x31, 0x22, 0xa3, 0xf4, 0x1c, 0xd8, 0xf1, 0x30, - 0x2a, 0xe9, 0x1f, 0xa1, 0x55, 0x4f, 0x64, 0xcc, 0xec, 0xd7, 0x2f, 0x27, 0x88, 0x3b, 0x44, 0xd1, - 0xee, 0x00, 0x3f, 0xff, 0xf2, 0x85, 0x6e, 0x00, 0xe1, 0x33, 0x8d, 0x44, 0xf3, 0xbc, 0xc4, 0x4a, - 0x4a, 0x5b, 0xb9, 0x1a, 0x35, 0x3f, 0xf2, 0x45, 0x62, 0x11, 0x0b, 0x7c, 0xaf, 0x5f, 0x5f, 0x48, - 0xfe, 0x08, 0xcf, 0x23, 0x99, 0x62, 0x3c, 0x0f, 0x7b, 0x39, 0x8e, 0xbb, 0xa3, 0xa5, 0x7e, 0x06, - 0xbe, 0x68, 0xef, 0x58, 0x29, 0xbb, 0x81, 0x59, 0x6d, 0x0c, 0xa4, 0x30, 0xe6, 0x2c, 0x6b, 0x8c, - 0xe3, 0x41, 0x1e, 0xe4, 0x5b, 0x58, 0x75, 0x9d, 0xab, 0x3f, 0xe0, 0x5b, 0x11, 0xf4, 0x7d, 0x62, - 0xf8, 0xdb, 0xfc, 0x83, 0x1b, 0x09, 0x4c, 0xa8, 0xfe, 0x11, 0xf1, 0x40, 0x8e, 0x5f, 0x62, 0xaf, - 0x19, 0xf1, 0x4b, 0xb4, 0xfd, 0x2b, 0x60, 0xa2, 0xd7, 0x42, 0x0b, 0x44, 0x34, 0x10, 0x58, 0x3f, - 0xbe, 0x52, 0x8a, 0xfb, 0xef, 0x28, 0x9a, 0x88, 0x5b, 0xe8, 0x50, 0xfd, 0x55, 0x7e, 0x4e, 0xa6, - 0xe6, 0x64, 0xb2, 0xf9, 0xc4, 0xd1, 0x0d, 0x68, 0xdb, 0xfc, 0xc0, 0x49, 0x9f, 0xea, 0x9c, 0xa8, - 0x84, 0x3e, 0xc3, 0x01, 0x7e, 0xa3, 0x70, 0xe1, 0x42, 0xad, 0xe1, 0x4e, 0x5e, 0xcc, 0x47, 0x71, - 0xd1, 0xed, 0x90, 0x79, 0x1b, 0x12, 0xdd, 0xad, 0xf5, 0xad, 0xb0, 0x68, 0xdd, 0xa5, 0x10, 0xc4, - 0xf3, 0x88, 0xcd, 0x90, 0x6b, 0x6d, 0xe2, 0x85, 0xd4, 0xf7, 0x17, 0xcc, 0x76, 0x90, 0xe3, 0x41, - 0xf7, 0x4c, 0xe4, 0xb5, 0x55, 0x6d, 0xe9, 0x8a, 0x80, 0x1b, 0xa5, 0xf4, 0xe6, 0x31, 0xd2, 0x19, - 0xdc, 0xe2, 0x8b, 0xde, 0x9f, 0xd6, 0x96, 0xe6, 0x44, 0x45, 0xe3, 0x34, 0xf6, 0x5c, 0x8d, 0xd3, - 0xd7, 0x43, 0x48, 0x2e, 0xf8, 0xe0, 0xef, 0xd9, 0x0f, 0xa6, 0x12, 0x28, 0x5f, 0x1a, 0xcc, 0x63, - 0xbf, 0x0a, 0x69, 0xc6, 0xd9, 0x5f, 0x7e, 0xfd, 0xe2, 0x4d, 0x33, 0x0b, 0x21, 0x8c, 0xc7, 0x2e, - 0x10, 0x3e, 0xda, 0x86, 0x2d, 0x17, 0xb7, 0xf0, 0x98, 0xbd, 0x41, 0x8e, 0xc7, 0x58, 0x9b, 0xcb, - 0x05, 0xad, 0x20, 0xf9, 0x6e, 0xad, 0x14, 0xa4, 0xfe, 0x9e, 0x8b, 0x8b, 0xab, 0xa3, 0x03, 0x14, - 0xab, 0x01, 0x4d, 0x13, 0x53, 0x62, 0x9b, 0x80, 0xd5, 0x33, 0x30, 0x8d, 0x65, 0xce, 0x2f, 0x76, - 0xcf, 0x40, 0x14, 0x05, 0x66, 0x6a, 0x5b, 0x2e, 0x1e, 0x52, 0x43, 0x3f, 0x18, 0x12, 0xdd, 0x05, - 0xdd, 0x13, 0xc8, 0x65, 0x96, 0x5a, 0x06, 0x03, 0x8f, 0xf0, 0xd1, 0x8c, 0xd1, 0x7c, 0x94, 0x31, - 0xad, 0x71, 0x4a, 0xc2, 0xd0, 0x34, 0x7e, 0x54, 0x98, 0xc0, 0x3e, 0x80, 0xd9, 0x55, 0x94, 0x44, - 0xf4, 0x0e, 0x2c, 0xfd, 0xf4, 0xe1, 0xcb, 0x17, 0xe6, 0xa4, 0xc2, 0x59, 0x14, 0x7c, 0xaf, 0xa9, - 0x80, 0xfa, 0x72, 0xca, 0x5f, 0xaa, 0xbf, 0x4d, 0x6e, 0x7d, 0xaa, 0x7b, 0x0e, 0xf1, 0x43, 0x0d, - 0x33, 0xd4, 0x2d, 0x69, 0x9e, 0x62, 0x66, 0xb1, 0x30, 0xb0, 0x91, 0xc6, 0xc5, 0x2e, 0x2d, 0x16, - 0x88, 0xaf, 0x08, 0x0a, 0xec, 0x73, 0x73, 0x73, 0xec, 0x12, 0xeb, 0x47, 0x0a, 0x06, 0xe1, 0xeb, - 0x4c, 0x1c, 0x89, 0x55, 0x8c, 0xef, 0x3e, 0xff, 0x2a, 0x55, 0xa9, 0x8b, 0x90, 0x1b, 0x78, 0xff, - 0x18, 0x32, 0xde, 0x0e, 0xa1, 0xe1, 0x3d, 0x90, 0x18, 0xf6, 0x1a, 0xfd, 0xe7, 0x56, 0xd1, 0x71, - 0x0a, 0xf0, 0x81, 0x57, 0x10, 0xe8, 0xd4, 0xec, 0x47, 0xb0, 0x5a, 0x13, 0xd0, 0xc4, 0x8a, 0x06, - 0x93, 0x9b, 0xeb, 0xbd, 0xd5, 0x8a, 0x38, 0x97, 0x5b, 0x56, 0x67, 0x5a, 0xf5, 0x78, 0xdf, 0xa1, - 0xdf, 0x30, 0xcc, 0xfd, 0x4e, 0x48, 0xbd, 0x8f, 0x18, 0xf1, 0x90, 0x4c, 0x7e, 0xd3, 0x8e, 0xd7, - 0x93, 0xf0, 0x6e, 0x31, 0x98, 0x7c, 0xee, 0xb0, 0xdd, 0xd6, 0x5c, 0x7a, 0xd9, 0x99, 0x4e, 0xac, - 0x75, 0x9c, 0x3d, 0x8f, 0x26, 0x2d, 0x31, 0xe4, 0xf9, 0xa6, 0x0e, 0x89, 0x37, 0xcd, 0x69, 0xcc, - 0x90, 0xc7, 0x7e, 0xab, 0x1a, 0x8b, 0x5d, 0x45, 0x98, 0x14, 0x9d, 0xb4, 0x34, 0x26, 0x15, 0xf4, - 0x3f, 0xe9, 0xa2, 0x00, 0x16, 0x31, 0x8e, 0x9f, 0x26, 0x6f, 0x10, 0xf1, 0xaf, 0x5f, 0xbe, 0x51, - 0x18, 0xaf, 0x10, 0xc8, 0x97, 0xb0, 0x25, 0xa1, 0x91, 0x4e, 0xaa, 0xf2, 0xda, 0x25, 0xd6, 0x0d, - 0x73, 0xdf, 0xb5, 0x81, 0x41, 0x6b, 0x22, 0x0b, 0x2d, 0xf8, 0x96, 0xef, 0x55, 0xdc, 0x85, 0x87, - 0xf8, 0x02, 0x04, 0xbb, 0x4b, 0x33, 0xcb, 0xac, 0xd2, 0x8b, 0x63, 0xf1, 0xef, 0x9c, 0x18, 0xf9, - 0x40, 0x47, 0x61, 0x38, 0x09, 0x9f, 0xd8, 0x66, 0x40, 0xe4, 0x15, 0x98, 0x16, 0xb5, 0x60, 0xd0, - 0xad, 0x02, 0x0c, 0xd9, 0x4b, 0x6c, 0x49, 0x18, 0xfe, 0x90, 0x1a, 0x95, 0x14, 0xea, 0x33, 0x1f, - 0xcf, 0x25, 0x77, 0x9d, 0x57, 0xbc, 0x56, 0x94, 0xf4, 0x33, 0x64, 0x62, 0x0b, 0xde, 0x46, 0x67, - 0x46, 0x24, 0xaa, 0x7b, 0x8a, 0xdc, 0x6c, 0x0b, 0x7f, 0xa4, 0xcd, 0x9f, 0x88, 0x72, 0x98, 0xb8, - 0xc4, 0xc9, 0x20, 0x83, 0x97, 0x1d, 0x3b, 0x2c, 0xca, 0x3b, 0x09, 0x54, 0x4b, 0xac, 0x4d, 0x7f, - 0xcc, 0x88, 0xbd, 0x11, 0x64, 0x5d, 0x11, 0x96, 0xb0, 0x2a, 0x39, 0x79, 0x3e, 0x27, 0xa9, 0x18, - 0xca, 0x0a, 0x12, 0x71, 0x1f, 0x07, 0x26, 0x49, 0xd7, 0x83, 0x5f, 0xfa, 0x61, 0x67, 0xe8, 0xcc, - 0xf1, 0xf4, 0x1e, 0x71, 0xf3, 0xfa, 0x59, 0x15, 0x69, 0x2d, 0x1d, 0x8d, 0xd4, 0x83, 0x31, 0x84, - 0xd0, 0x2d, 0x90, 0x6f, 0x33, 0xe4, 0xa9, 0x22, 0x0a, 0xa1, 0x51, 0xf3, 0xf9, 0x42, 0xfb, 0xd1, - 0x3d, 0x22, 0xda, 0x83, 0xf0, 0xde, 0x5d, 0xff, 0x49, 0xda, 0x14, 0xcf, 0x89, 0x03, 0x22, 0x69, - 0xbe, 0xeb, 0x5f, 0xc1, 0x6c, 0x6a, 0xde, 0xd8, 0x72, 0x9e, 0x69, 0x77, 0x80, 0x5d, 0x09, 0x08, - 0x4f, 0x6e, 0x2f, 0xc6, 0xf0, 0xbb, 0xb0, 0x88, 0x62, 0x14, 0xee, 0x6b, 0x7c, 0xa6, 0xdd, 0x26, - 0x01, 0x79, 0xdf, 0x2f, 0x47, 0x30, 0x2c, 0xb3, 0x07, 0x40, 0x58, 0x5a, 0x46, 0xf4, 0xef, 0x3f, - 0x99, 0xa1, 0xb1, 0xb5, 0x3a, 0x43, 0x7e, 0x53, 0xf5, 0xdb, 0x35, 0x9f, 0xd7, 0xb8, 0x18, 0x64, - 0x64, 0x90, 0x89, 0x49, 0xd6, 0xc1, 0x88, 0x64, 0x41, 0xe3, 0xdf, 0x19, 0x40, 0x0c, 0x81, 0x36, - 0xd2, 0x35, 0x60, 0xb6, 0x33, 0x7a, 0x1d, 0x31, 0xfe, 0x65, 0xdb, 0x56, 0xec, 0xd3, 0xc2, 0xbe, - 0x13, 0x82, 0x24, 0xbb, 0x1a, 0xbc, 0xb1, 0x66, 0x04, 0xa5, 0xd5, 0x16, 0x0a, 0x77, 0xda, 0xb4, - 0x48, 0x0d, 0x86, 0xba, 0x05, 0xb3, 0xb4, 0x4a, 0xaf, 0x49, 0x8f, 0xb8, 0xb1, 0xc4, 0x7d, 0x63, - 0xb0, 0x05, 0x9c, 0x03, 0x0b, 0x69, 0x36, 0x4e, 0xe2, 0xf7, 0x26, 0x32, 0xf9, 0x4e, 0xd8, 0x36, - 0xf0, 0x6c, 0x03, 0x98, 0x76, 0x57, 0x05, 0x21, 0x0b, 0xb8, 0x36, 0xbb, 0xbf, 0x23, 0x8e, 0x1f, - 0xc2, 0x80, 0x10, 0x37, 0x64, 0xab, 0xc1, 0xbf, 0x9f, 0xc3, 0xdf, 0x77, 0x48, 0xf9, 0x57, 0x37, - 0xd3, 0x5f, 0x29, 0x76, 0xbb, 0x2a, 0xbb, 0x49, 0x0a, 0xbe, 0x24, 0xec, 0x46, 0xd2, 0x2c, 0x1f, - 0xda, 0x76, 0xe4, 0x31, 0x71, 0x18, 0x43, 0x04, 0x2d, 0x24, 0x44, 0xc5, 0xc2, 0x0c, 0x65, 0x7e, - 0xab, 0x3e, 0x67, 0xe5, 0xbb, 0x85, 0xed, 0x67, 0x17, 0x4e, 0xb3, 0x07, 0x89, 0xde, 0xf0, 0xe2, - 0xf7, 0x8f, 0x86, 0xd2, 0x23, 0xbe, 0xac, 0x49, 0x1d, 0x20, 0x60, 0xbf, 0xdd, 0x83, 0x33, 0x56, - 0x1e, 0xdf, 0x0b, 0x56, 0x52, 0x52, 0x37, 0x90, 0xf1, 0xe2, 0x79, 0x44, 0x9f, 0x1f, 0x2a, 0xb2, - 0x17, 0x09, 0x38, 0x45, 0x5c, 0x4a, 0x37, 0x82, 0x73, 0x4e, 0x09, 0x2e, 0x72, 0xde, 0x6a, 0x2e, - 0xf4, 0x1f, 0x94, 0x73, 0x8a, 0x94, 0xfe, 0xc8, 0x81, 0x36, 0xcc, 0xe5, 0xf2, 0xb9, 0xaa, 0x8a, - 0x54, 0x73, 0xf9, 0x13, 0x6b, 0x24, 0xd4, 0x74, 0xec, 0x20, 0xa2, 0xdb, 0x76, 0x2c, 0xc3, 0x80, - 0x92, 0xac, 0x5b, 0x9c, 0x55, 0xb3, 0x96, 0xd6, 0x57, 0x47, 0xba, 0xe5, 0x54, 0x83, 0x7b, 0x46, - 0xc8, 0xbc, 0x81, 0x57, 0x72, 0xff, 0xca, 0xdc, 0xdf, 0x9b, 0xff, 0x40, 0x3c, 0x05, 0xad, 0x4a, - 0xee, 0x7d, 0x48, 0x8e, 0x5e, 0x13, 0x84, 0xa6, 0xd9, 0x48, 0x8c, 0x15, 0xf2, 0x4e, 0x70, 0x90, - 0xc5, 0xb8, 0x20, 0xde, 0x6f, 0xc4, 0x05, 0x89, 0x85, 0x02, 0x39, 0x03, 0xe9, 0x81, 0x1d, 0xb1, - 0x14, 0xc8, 0xe1, 0x83, 0xa4, 0x68, 0x20, 0x61, 0x1c, 0x90, 0xf0, 0xc8, 0x39, 0x89, 0xdb, 0x30, - 0xc6, 0x40, 0x1e, 0x75, 0xb1, 0x50, 0xf9, 0x53, 0xfc, 0x60, 0x54, 0x90, 0x25, 0xd9, 0xfe, 0x1b, - 0x42, 0x84, 0x64, 0xc3, 0xc3, 0xf1, 0x5c, 0x93, 0x3f, 0x76, 0x0c, 0xdd, 0x7b, 0x37, 0x0a, 0x08, - 0xa5, 0x80, 0xd5, 0x5c, 0x40, 0x03, 0xd1, 0x28, 0x20, 0xda, 0xb2, 0x33, 0xe9, 0xde, 0xf2, 0x33, - 0xe9, 0x5e, 0xf4, 0x4c, 0xfa, 0xef, 0xb4, 0xf6, 0xbd, 0x00, 0x20, 0x26, 0xdf, 0x36, 0xf3, 0xdf, - 0x6a, 0xdb, 0xef, 0x1c, 0x98, 0x87, 0x02, 0x6a, 0xdc, 0xb1, 0xdc, 0x5a, 0xd2, 0x59, 0xe5, 0xfe, - 0xc2, 0xe9, 0x79, 0xef, 0xdd, 0xd3, 0xf3, 0xdc, 0x38, 0xff, 0x9b, 0xf1, 0x38, 0x7e, 0x3b, 0x0c, - 0x87, 0xf7, 0x77, 0xc2, 0x70, 0x28, 0x4b, 0x42, 0x53, 0x78, 0x6f, 0x84, 0xa6, 0xf0, 0xfe, 0x46, - 0xec, 0x0d, 0xef, 0x03, 0xb1, 0x37, 0x06, 0xfd, 0x48, 0x70, 0x0d, 0xfa, 0xfa, 0x8f, 0x5a, 0x87, - 0x38, 0xfc, 0x1a, 0x84, 0xc1, 0x58, 0x16, 0xdc, 0x20, 0x42, 0xc7, 0x24, 0xb2, 0xc1, 0x1f, 0xb3, - 0x60, 0x4e, 0x69, 0x73, 0xe2, 0xa0, 0xcd, 0x05, 0xba, 0xe3, 0xb2, 0xb6, 0xc5, 0x8d, 0x0f, 0x5c, - 0x60, 0xc0, 0x11, 0x9d, 0xb8, 0xb1, 0x8d, 0x1e, 0x16, 0x06, 0x47, 0x45, 0xb1, 0xb3, 0xef, 0xec, - 0x5c, 0x53, 0x6d, 0xe9, 0x81, 0x75, 0x83, 0xdf, 0xe0, 0x0f, 0x0a, 0x9e, 0xbd, 0x71, 0xc0, 0x3d, - 0xc6, 0xff, 0xfd, 0x26, 0xba, 0xc1, 0xd9, 0xd0, 0x96, 0xe5, 0x00, 0x27, 0x5e, 0xc5, 0xf3, 0x0b, - 0x43, 0xb7, 0x9a, 0x2f, 0xda, 0x93, 0xe0, 0xf6, 0x0b, 0x05, 0xa7, 0xc9, 0xf2, 0x38, 0x65, 0x6f, - 0x06, 0x68, 0x20, 0xe7, 0xcb, 0x17, 0xe2, 0x93, 0xa1, 0x91, 0x86, 0xc6, 0x23, 0xfc, 0xad, 0x50, - 0x6c, 0x6f, 0xc7, 0xf9, 0x0a, 0x16, 0xfd, 0xf7, 0x02, 0x10, 0xe4, 0x2a, 0x2a, 0x99, 0xc6, 0x6c, - 0xc1, 0xa1, 0xd8, 0xa6, 0x7f, 0xbf, 0x12, 0xd3, 0x8c, 0x4d, 0xef, 0x05, 0x98, 0x29, 0xd5, 0x99, - 0xed, 0x56, 0x71, 0x8f, 0xb9, 0x33, 0x74, 0xaa, 0xdf, 0x41, 0x2c, 0xf9, 0x21, 0x87, 0xba, 0x7f, - 0xf5, 0xfb, 0x6a, 0xee, 0x07, 0x88, 0xca, 0x18, 0x97, 0xa1, 0xaa, 0xc8, 0x4e, 0x15, 0x35, 0x25, - 0x90, 0xb5, 0x15, 0x10, 0xb2, 0x23, 0x92, 0xc8, 0x05, 0x74, 0xd9, 0x48, 0x69, 0x64, 0xcf, 0x2e, - 0x38, 0x05, 0x1c, 0x0f, 0x1a, 0x1e, 0xdc, 0x73, 0x96, 0x1c, 0x33, 0x5c, 0xa6, 0x07, 0xb9, 0xdd, - 0x48, 0xd4, 0x4d, 0xea, 0x42, 0xe0, 0x7e, 0x37, 0x7f, 0x10, 0x17, 0xa5, 0xcd, 0xe0, 0xa9, 0x1a, - 0xde, 0xb8, 0x43, 0xd2, 0xa0, 0xfc, 0x4f, 0x68, 0x60, 0x66, 0xdf, 0xc3, 0x7b, 0x72, 0xe2, 0x29, - 0x19, 0x1b, 0x95, 0x6d, 0x12, 0xef, 0xce, 0xb2, 0x49, 0x07, 0x42, 0xb7, 0x43, 0x5a, 0xd0, 0x9c, - 0xcc, 0x0c, 0x58, 0xe1, 0xe8, 0xf7, 0x8d, 0xe0, 0x64, 0xa5, 0x10, 0x39, 0x20, 0xdc, 0x85, 0xfa, - 0xfb, 0x17, 0xc6, 0x6e, 0xf4, 0x2e, 0x23, 0x11, 0xc4, 0x02, 0xdf, 0xb6, 0xef, 0x85, 0x31, 0xed, - 0xdd, 0x28, 0x81, 0x76, 0x75, 0xc7, 0x05, 0x5e, 0x22, 0x6e, 0xf8, 0x41, 0xbf, 0x05, 0x86, 0x0b, - 0x36, 0x46, 0x0c, 0x17, 0x74, 0x94, 0xc8, 0x25, 0x3f, 0x11, 0xb4, 0xb8, 0xe9, 0x3a, 0xc5, 0x3a, - 0x70, 0x03, 0x67, 0x0a, 0x1a, 0x33, 0x46, 0x5c, 0x4f, 0x47, 0xab, 0xe8, 0x3b, 0xaf, 0xfe, 0x99, - 0xe7, 0xaf, 0xb2, 0xc7, 0x9f, 0xe0, 0x62, 0x7e, 0x19, 0xde, 0xd2, 0x03, 0x4a, 0x64, 0x66, 0x1b, - 0xab, 0x18, 0xc9, 0x43, 0xaa, 0x19, 0xc1, 0xbe, 0x26, 0x1e, 0x85, 0x20, 0xb6, 0xe0, 0xa4, 0xf8, - 0x08, 0xbc, 0x3d, 0x8a, 0xc4, 0x2e, 0x4d, 0x91, 0x60, 0xdd, 0x92, 0xb4, 0xfc, 0x18, 0x14, 0x29, - 0x3e, 0x08, 0xbe, 0x4a, 0x2e, 0x7a, 0x91, 0xcc, 0xc0, 0x4b, 0x61, 0x44, 0xcc, 0xa5, 0xe1, 0x51, - 0x59, 0xfe, 0x83, 0x04, 0xba, 0xb1, 0xc9, 0xb6, 0xdd, 0x22, 0x1f, 0xaa, 0x3c, 0xc6, 0xbe, 0x87, - 0x9f, 0x88, 0xd5, 0xf3, 0x07, 0x77, 0xf0, 0xd6, 0x3f, 0xcb, 0xc2, 0x59, 0x19, 0x80, 0x15, 0x5c, - 0x18, 0xd4, 0x25, 0x30, 0x82, 0x77, 0xdc, 0x91, 0x6d, 0x6b, 0x40, 0x31, 0x39, 0x59, 0x91, 0xf1, - 0x2c, 0x59, 0xf0, 0x11, 0xa6, 0x4c, 0xf4, 0x6b, 0xe4, 0xd3, 0x77, 0xef, 0x07, 0x0f, 0x1c, 0xce, - 0xaa, 0x65, 0x79, 0x42, 0x08, 0x92, 0x35, 0x42, 0x61, 0x9c, 0x77, 0xa7, 0x66, 0x24, 0x36, 0x33, - 0xdc, 0x7d, 0x4e, 0x25, 0x36, 0x1f, 0xb7, 0xbf, 0x93, 0x9b, 0x1e, 0xfd, 0x92, 0xd0, 0x4e, 0x04, - 0x88, 0xb4, 0x86, 0x0f, 0xa6, 0x6d, 0x68, 0x17, 0x2e, 0x3d, 0x1f, 0x1c, 0x6d, 0x10, 0xc6, 0x1d, - 0x08, 0xf0, 0xed, 0x2e, 0x1c, 0xcb, 0x82, 0x7c, 0x3b, 0x43, 0xc7, 0xcf, 0xe8, 0x2e, 0x58, 0x2e, - 0x53, 0x71, 0x5c, 0xf2, 0xb6, 0xd0, 0x9c, 0xf2, 0x97, 0x1b, 0x8c, 0x20, 0x5f, 0xe4, 0xf5, 0xc7, - 0x4a, 0x8c, 0x60, 0xfa, 0x23, 0x05, 0x5f, 0x71, 0x77, 0xd4, 0xf9, 0xa5, 0xd4, 0xd0, 0x4b, 0x87, - 0x1e, 0x7d, 0x31, 0x50, 0x0e, 0x75, 0xbc, 0x1e, 0x17, 0x7f, 0x44, 0xe6, 0xbf, 0xd8, 0x91, 0x4f, - 0x9b, 0x29, 0xb4, 0xa8, 0x23, 0x4f, 0x05, 0xad, 0x2d, 0xb8, 0x34, 0x0b, 0x3d, 0xc6, 0xb8, 0x3c, - 0x56, 0xee, 0xe7, 0x92, 0x48, 0x24, 0xd5, 0x30, 0x7b, 0x54, 0x3f, 0xf3, 0x2b, 0x0b, 0x8f, 0x46, - 0x91, 0x52, 0x13, 0xa1, 0x60, 0xf2, 0xed, 0x9a, 0x9d, 0x10, 0xf2, 0x9d, 0x9a, 0xff, 0x57, 0x71, - 0x57, 0xdf, 0xd4, 0x36, 0x92, 0xf4, 0xff, 0xbf, 0x4f, 0x61, 0x94, 0x5d, 0xb0, 0x1e, 0x04, 0xc8, - 0x26, 0xd9, 0x4d, 0x6c, 0x04, 0x95, 0x23, 0xf7, 0x42, 0xdd, 0x6e, 0x9e, 0xd4, 0x92, 0xdb, 0xdc, - 0x16, 0x45, 0x1d, 0xb6, 0x91, 0xb1, 0x2a, 0x42, 0xd2, 0x5a, 0x22, 0xc0, 0x63, 0xfc, 0xdd, 0x9f, - 0x7e, 0x99, 0x77, 0x49, 0xb6, 0x49, 0xb6, 0xee, 0xaa, 0x42, 0x6c, 0x8f, 0x46, 0x33, 0x3d, 0x33, - 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0xbf, 0x66, 0xab, 0x86, 0xe3, 0x0c, 0xfa, 0xc1, 0xbe, 0xf7, 0x2b, - 0x24, 0x9e, 0x88, 0x56, 0xac, 0xfa, 0x9a, 0x49, 0x3d, 0x71, 0x13, 0x60, 0xc9, 0x2d, 0x0d, 0xc8, - 0x62, 0x18, 0x3b, 0xd6, 0xe5, 0xc5, 0x5a, 0x0d, 0x2b, 0x24, 0x6c, 0xd0, 0xf6, 0x40, 0x59, 0x1c, - 0xf4, 0x42, 0x0c, 0x4d, 0x25, 0x44, 0xd9, 0x4a, 0xcc, 0xa5, 0xf3, 0xd9, 0xdd, 0x74, 0x9a, 0xc6, - 0x04, 0x40, 0xd9, 0xba, 0x60, 0xeb, 0xc1, 0x32, 0x17, 0x6d, 0x1c, 0x62, 0x8e, 0xc5, 0x80, 0x01, - 0xdf, 0x34, 0xad, 0x4f, 0x4f, 0x19, 0x3a, 0x41, 0xbb, 0x30, 0x49, 0x9b, 0x81, 0x24, 0xe9, 0xdb, - 0xdc, 0x6b, 0xc0, 0x6a, 0x09, 0xf7, 0x08, 0x65, 0xd4, 0x34, 0xc9, 0x92, 0x2a, 0x4e, 0x1f, 0x37, - 0x6a, 0x42, 0xb1, 0xaa, 0x0d, 0x19, 0x9a, 0x0f, 0x81, 0x5e, 0x49, 0xf9, 0xd7, 0x91, 0xad, 0x87, - 0x87, 0x39, 0x43, 0x8d, 0x8f, 0x44, 0x8d, 0x10, 0x15, 0xd9, 0x4e, 0xd6, 0x9e, 0x7c, 0x55, 0xeb, - 0x8f, 0xa2, 0x8d, 0x8d, 0x4a, 0xb4, 0xab, 0x2f, 0x9b, 0x4d, 0x34, 0x34, 0x63, 0xa3, 0x79, 0xa8, - 0x49, 0xf7, 0xfa, 0x3f, 0x92, 0x66, 0x1d, 0x8a, 0xf5, 0x9b, 0x29, 0xc9, 0x06, 0xbd, 0xe5, 0x71, - 0x07, 0xcf, 0x4e, 0x94, 0x2e, 0x6b, 0xab, 0x54, 0xd0, 0xdf, 0xc0, 0xf8, 0xc2, 0xf3, 0x6a, 0xc0, - 0x01, 0xba, 0x8e, 0xf8, 0x88, 0xce, 0xc8, 0x44, 0x27, 0x88, 0xb8, 0x92, 0x1b, 0xc4, 0xf0, 0x94, - 0x69, 0xe9, 0x70, 0xba, 0x2d, 0x00, 0x84, 0x44, 0x26, 0xf7, 0xe0, 0x7d, 0x32, 0xeb, 0x17, 0x28, - 0x4e, 0x58, 0x9d, 0xad, 0x77, 0x84, 0xde, 0xf1, 0x7b, 0xe8, 0x36, 0xa5, 0x6e, 0xd4, 0x32, 0x20, - 0x10, 0x1b, 0x74, 0x60, 0x59, 0xe5, 0x73, 0xe9, 0x32, 0x66, 0x64, 0xfe, 0x6e, 0xa1, 0x15, 0x30, - 0x34, 0x9c, 0xe3, 0xf8, 0x71, 0x7b, 0x9c, 0x30, 0x19, 0xb5, 0x31, 0xd9, 0x40, 0xa7, 0xaf, 0xa0, - 0xd6, 0x0f, 0x29, 0x35, 0x32, 0xe8, 0x48, 0x75, 0x76, 0xa3, 0xd0, 0x24, 0x1f, 0xe1, 0x4d, 0x47, - 0xfd, 0xbf, 0x5a, 0x4a, 0x9c, 0x8e, 0x72, 0x0d, 0x2a, 0xb2, 0xcb, 0xaa, 0x16, 0x86, 0xc2, 0x19, - 0x07, 0x1c, 0xe8, 0x8c, 0x09, 0xc8, 0x22, 0x8b, 0xcb, 0x92, 0xf6, 0x15, 0x0a, 0xcf, 0x77, 0xc5, - 0xbc, 0xa1, 0x30, 0x93, 0x63, 0x9a, 0x36, 0x62, 0x5e, 0xfc, 0xe1, 0x93, 0x79, 0x25, 0xe9, 0xe7, - 0xe8, 0xf4, 0x27, 0x8d, 0x40, 0x63, 0x3c, 0x16, 0x7a, 0x1e, 0xed, 0xe5, 0x7f, 0x91, 0xf6, 0x53, - 0xae, 0x54, 0xc3, 0x84, 0xe5, 0x19, 0xcb, 0xa9, 0x67, 0x50, 0x4f, 0x54, 0x3d, 0x9b, 0xea, 0x2b, - 0x07, 0x7c, 0x46, 0x9d, 0xca, 0xdc, 0x8e, 0x0a, 0x32, 0xcd, 0x9a, 0xbf, 0x8d, 0x78, 0x52, 0x65, - 0x0d, 0xd3, 0x1a, 0xda, 0xf8, 0x53, 0x7c, 0x0d, 0xd9, 0x06, 0xdb, 0xd9, 0xb8, 0x2c, 0x86, 0x6d, - 0x13, 0xdf, 0x20, 0x3a, 0xbd, 0x2d, 0x80, 0x24, 0x7b, 0x42, 0x3a, 0x13, 0xf6, 0x6a, 0xa8, 0x22, - 0x72, 0xf0, 0x35, 0x5c, 0x8b, 0x20, 0x3a, 0xa1, 0x2f, 0x9b, 0xb6, 0x1b, 0xd5, 0x12, 0xed, 0x57, - 0xe8, 0x4a, 0xa0, 0x62, 0x5c, 0xa6, 0x44, 0x9d, 0x00, 0x50, 0x31, 0x91, 0xb6, 0x29, 0x60, 0xab, - 0x51, 0x63, 0x49, 0x71, 0x00, 0xad, 0x79, 0x2e, 0xa1, 0x3d, 0xae, 0x36, 0x43, 0x3b, 0xee, 0x10, - 0x2e, 0x45, 0x7c, 0xc2, 0xc1, 0x7b, 0x35, 0x82, 0x2b, 0xb5, 0xba, 0x7a, 0x78, 0x0e, 0xfe, 0x31, - 0xb4, 0xe1, 0x44, 0xc6, 0x20, 0xda, 0x08, 0x04, 0xd9, 0x11, 0x44, 0x3a, 0x6e, 0x57, 0x87, 0x46, - 0x7c, 0xb0, 0xc2, 0x26, 0x5b, 0x5a, 0x80, 0xcd, 0x9a, 0x1e, 0x83, 0x1c, 0x15, 0x5f, 0xd4, 0x6c, - 0xd1, 0xef, 0x69, 0x53, 0x83, 0x0e, 0x8e, 0x9b, 0x64, 0xe3, 0xcc, 0x3b, 0xee, 0xa6, 0x31, 0xce, - 0xd5, 0x98, 0x4e, 0x2d, 0x61, 0x78, 0xf1, 0x08, 0xca, 0x20, 0x93, 0xe5, 0x9a, 0x6f, 0xbd, 0xfc, - 0x1d, 0x86, 0xb5, 0x16, 0x5d, 0x4a, 0x8b, 0xe4, 0x8e, 0x5c, 0x24, 0x71, 0x55, 0xdc, 0x91, 0xba, - 0xc3, 0xd7, 0xcf, 0x40, 0xa8, 0xe0, 0xc4, 0x3b, 0x87, 0xd1, 0xea, 0x14, 0x6a, 0xd7, 0x08, 0x0a, - 0x2e, 0x86, 0xb7, 0xc6, 0x11, 0xf0, 0xfe, 0x57, 0xc5, 0xb5, 0xbc, 0x4f, 0xaa, 0x19, 0x87, 0xa9, - 0x84, 0x5a, 0xff, 0x09, 0x32, 0x57, 0xdc, 0x3a, 0x10, 0x69, 0x4b, 0x6b, 0xda, 0xae, 0x06, 0xa0, - 0xa4, 0xce, 0x9b, 0x94, 0x8e, 0xaa, 0x01, 0x3f, 0x4f, 0x4b, 0xad, 0x6c, 0x60, 0xab, 0x9f, 0x9e, - 0xaa, 0x26, 0x38, 0xc9, 0xaf, 0xc0, 0x93, 0x6c, 0x1a, 0x92, 0x22, 0xef, 0x9b, 0xe1, 0xb9, 0xfa, - 0x12, 0x4d, 0xe7, 0xed, 0x87, 0xb3, 0xce, 0x84, 0x23, 0xb8, 0xaa, 0x60, 0x9b, 0x1d, 0x1d, 0x94, - 0x53, 0xbc, 0x3d, 0x2a, 0x12, 0xe2, 0x68, 0x55, 0x00, 0x24, 0x58, 0x81, 0x3a, 0xdb, 0x2a, 0xed, - 0x99, 0x95, 0xf6, 0xc4, 0x28, 0x94, 0xcb, 0xd6, 0x25, 0x95, 0x04, 0x7c, 0x95, 0x63, 0x00, 0xe2, - 0x16, 0x55, 0x47, 0xaf, 0x43, 0xd7, 0xae, 0xde, 0xa3, 0x34, 0x1d, 0x1d, 0x26, 0xd9, 0xd0, 0x77, - 0x30, 0x90, 0x31, 0xea, 0x3b, 0x3d, 0xa5, 0xef, 0xe0, 0xa0, 0xc7, 0x83, 0x7a, 0xb0, 0xe6, 0xe5, - 0x71, 0x0b, 0x75, 0x38, 0xec, 0xeb, 0xd7, 0x7c, 0xf4, 0x4c, 0xff, 0xc0, 0x4b, 0xbe, 0x34, 0x47, - 0xaf, 0xb4, 0x35, 0x49, 0x93, 0x31, 0xb6, 0xdd, 0x04, 0xbc, 0x64, 0x02, 0x77, 0xda, 0x6b, 0xa4, - 0xae, 0xd8, 0xd9, 0x8d, 0x77, 0x77, 0xae, 0xe3, 0xd4, 0x46, 0xda, 0xfc, 0xd0, 0xa5, 0xf4, 0x8d, - 0x81, 0x36, 0x19, 0xad, 0x73, 0x67, 0xb0, 0xb3, 0xa9, 0x9d, 0xf2, 0x83, 0x6d, 0xa8, 0xdc, 0x59, - 0x1a, 0x94, 0x37, 0xb2, 0x02, 0x06, 0x8b, 0x16, 0x4d, 0xf2, 0xc6, 0x05, 0x47, 0x3f, 0x98, 0x18, - 0xc3, 0x89, 0xcf, 0x35, 0x56, 0xac, 0x6c, 0xbb, 0x2d, 0x54, 0x80, 0x2b, 0xb0, 0x59, 0x32, 0x80, - 0x2b, 0x96, 0x71, 0xe5, 0x6c, 0xa9, 0x84, 0x99, 0x93, 0xbd, 0x4a, 0xd9, 0x9e, 0xc4, 0xa6, 0xce, - 0x61, 0x93, 0x3f, 0x16, 0x4c, 0xe7, 0xc7, 0x71, 0x5e, 0x71, 0x9c, 0x25, 0xdb, 0x8b, 0x8b, 0xc1, - 0x25, 0x82, 0xd8, 0xbc, 0x61, 0xd9, 0x10, 0x67, 0x4d, 0x1f, 0x90, 0x09, 0x3d, 0xb2, 0x1b, 0xfa, - 0x32, 0xa0, 0x1d, 0xfa, 0x42, 0x6c, 0x7a, 0x6e, 0x37, 0x89, 0x33, 0xf2, 0x46, 0x10, 0x87, 0xa3, - 0x45, 0xf9, 0x57, 0x76, 0x83, 0x69, 0xa6, 0x19, 0xb6, 0x75, 0xb5, 0xcd, 0xa4, 0xb2, 0x65, 0x55, - 0x8d, 0xd8, 0x62, 0x20, 0xb4, 0xf1, 0xb9, 0x57, 0x8f, 0xd5, 0x62, 0x18, 0xba, 0x90, 0xc1, 0x95, - 0xf5, 0xfb, 0x48, 0x61, 0x37, 0xab, 0x73, 0xb0, 0xd7, 0xe1, 0xf7, 0xb0, 0x90, 0xe4, 0x29, 0x0a, - 0x9d, 0xa8, 0x2f, 0xc1, 0xba, 0x5a, 0x94, 0x7f, 0x5b, 0xd3, 0x47, 0x2b, 0x87, 0x9a, 0x13, 0x81, - 0x88, 0x34, 0xa3, 0xb4, 0x7e, 0xef, 0x3b, 0xd7, 0xf6, 0xa1, 0x40, 0xcf, 0xd0, 0xf2, 0x24, 0x56, - 0x7b, 0x79, 0x7a, 0xa2, 0x15, 0x76, 0x5f, 0x41, 0x81, 0xf1, 0x4a, 0x2e, 0x0c, 0xf8, 0xd7, 0x8a, - 0xf0, 0xf5, 0xda, 0x7a, 0xba, 0x07, 0xe3, 0x6d, 0xb0, 0x37, 0x9b, 0xb1, 0x36, 0x9f, 0xbe, 0xd2, - 0x54, 0x5c, 0x3b, 0xf1, 0x91, 0xe7, 0x3d, 0x66, 0x3f, 0x6a, 0x72, 0xde, 0xdd, 0xcd, 0xc9, 0x3f, - 0xab, 0x85, 0xda, 0x8f, 0xca, 0xc2, 0xd2, 0x92, 0xe1, 0x05, 0x10, 0xb7, 0xdb, 0x5b, 0x6e, 0x54, - 0x99, 0x1c, 0xbe, 0x97, 0x30, 0x7c, 0x2b, 0xcf, 0x61, 0x6c, 0x79, 0x6a, 0x29, 0x21, 0x92, 0x5e, - 0x16, 0xa6, 0x3f, 0xbc, 0x7a, 0x75, 0xb8, 0xcf, 0xf2, 0x34, 0xdc, 0xef, 0xc3, 0xb2, 0x18, 0x17, - 0xf0, 0xa5, 0x67, 0x6e, 0x36, 0xc9, 0x3c, 0x55, 0x1b, 0x71, 0xa5, 0x64, 0xb8, 0xe6, 0xa9, 0x83, - 0x1e, 0x06, 0x26, 0x2c, 0x9b, 0x5b, 0xfb, 0x47, 0x34, 0x40, 0xf7, 0xa8, 0x6c, 0x82, 0x6a, 0x40, - 0xd8, 0xdc, 0x80, 0x8f, 0x9b, 0xd1, 0x6f, 0x19, 0xc3, 0x56, 0x36, 0x63, 0x05, 0x0f, 0xd6, 0x25, - 0xf8, 0x73, 0x78, 0xb0, 0x86, 0x97, 0x2c, 0x0f, 0x2c, 0x1c, 0xe6, 0x50, 0x47, 0x5b, 0x35, 0x58, - 0x3c, 0x9e, 0x52, 0x42, 0x7a, 0x62, 0xb8, 0x47, 0x34, 0x57, 0x1b, 0xee, 0x67, 0x18, 0xce, 0x3c, - 0x8b, 0x61, 0xfb, 0x32, 0xaa, 0x3a, 0xa0, 0xda, 0x81, 0xea, 0xd4, 0x57, 0x61, 0xcd, 0x61, 0xbd, - 0xc6, 0xd7, 0x31, 0x66, 0xb8, 0xd0, 0xab, 0xb6, 0x3c, 0x65, 0x11, 0x0d, 0xad, 0x0e, 0x0a, 0x2f, - 0x8f, 0x42, 0x6d, 0x49, 0x74, 0x9f, 0x45, 0xd5, 0xdc, 0x1f, 0x7e, 0x85, 0xe8, 0x5e, 0x21, 0xa2, - 0xbd, 0xe3, 0x9a, 0xd7, 0x82, 0x96, 0xd9, 0xf2, 0x40, 0xaf, 0x17, 0x86, 0x86, 0xfc, 0x26, 0xf7, - 0x39, 0xf3, 0xc4, 0xe7, 0xca, 0x34, 0xde, 0x12, 0x6a, 0xda, 0x7f, 0x46, 0xac, 0x9b, 0x0b, 0xed, - 0xa2, 0xed, 0x7d, 0xc6, 0x4e, 0x90, 0x2f, 0xaf, 0xeb, 0x3d, 0x95, 0xbb, 0xbe, 0xea, 0x49, 0x42, - 0x1a, 0x16, 0xbe, 0x36, 0xad, 0xa0, 0x74, 0x8e, 0xd6, 0xa4, 0x52, 0x20, 0x8d, 0x5c, 0x53, 0xd0, - 0xf5, 0xab, 0x41, 0x1a, 0x4f, 0xab, 0xe1, 0xa6, 0x52, 0x54, 0x9a, 0x67, 0x24, 0x1f, 0x6f, 0x58, - 0x71, 0xda, 0x58, 0x33, 0x19, 0x38, 0x36, 0xaf, 0x5a, 0x30, 0xaf, 0x0e, 0x17, 0x6f, 0x38, 0x3d, - 0x91, 0xbe, 0x1e, 0xbb, 0x60, 0x4f, 0x42, 0xb3, 0xd7, 0xa6, 0xe9, 0xa1, 0x7e, 0xd2, 0x60, 0x06, - 0xae, 0x9a, 0xb0, 0x5a, 0x44, 0xee, 0x7e, 0x53, 0x6e, 0xca, 0x35, 0x10, 0x2f, 0x59, 0xd4, 0x50, - 0x14, 0xa1, 0x98, 0x15, 0x1d, 0xa6, 0x27, 0x3e, 0x02, 0x36, 0x3e, 0x91, 0x88, 0x5a, 0xd5, 0xd5, - 0x80, 0x0a, 0xde, 0xc3, 0x80, 0xaf, 0xa0, 0xbb, 0xd7, 0x71, 0xa8, 0x14, 0xf8, 0x1a, 0x01, 0xae, - 0x05, 0xcd, 0x30, 0xa0, 0x22, 0x19, 0xa3, 0x57, 0x20, 0x78, 0xde, 0xe8, 0x86, 0xd6, 0x00, 0xfb, - 0x0a, 0xa2, 0x3c, 0xad, 0x55, 0xbd, 0x43, 0xb7, 0xee, 0x2e, 0x2e, 0x97, 0x0e, 0x8c, 0x31, 0x63, - 0x98, 0x13, 0x86, 0x31, 0xfb, 0xf0, 0x23, 0x1e, 0x2b, 0x7a, 0x89, 0x96, 0x78, 0xf7, 0x11, 0xfd, - 0xe5, 0xb9, 0x0f, 0xc9, 0xff, 0x42, 0xbb, 0xbb, 0x55, 0xb5, 0xca, 0xfe, 0xf2, 0x80, 0x75, 0xb5, - 0xa1, 0x93, 0x0f, 0xbf, 0x85, 0x88, 0x12, 0x36, 0x62, 0x50, 0x7f, 0x25, 0xaf, 0x6a, 0x47, 0x71, - 0xb0, 0x9a, 0x96, 0x55, 0x94, 0xd8, 0x0e, 0xa3, 0x74, 0x15, 0x11, 0x71, 0xa4, 0xa9, 0x22, 0x0b, - 0x69, 0xcd, 0xc4, 0x5d, 0xb7, 0xbc, 0x49, 0x05, 0x6c, 0xbf, 0xcd, 0x77, 0x6a, 0x84, 0xa5, 0x13, - 0x59, 0xb9, 0x16, 0xfd, 0x2e, 0x5b, 0x87, 0x7e, 0x87, 0x67, 0x0f, 0xe1, 0x56, 0x94, 0xc9, 0x03, - 0x63, 0x33, 0x17, 0xb0, 0x84, 0x71, 0x2c, 0x33, 0xb2, 0x9e, 0xdd, 0x26, 0xc6, 0xa3, 0x3c, 0x6a, - 0x6d, 0x55, 0x90, 0x58, 0xcf, 0x8a, 0xfb, 0xb9, 0x05, 0x8e, 0xa3, 0x23, 0x32, 0x62, 0xf4, 0x44, - 0xbc, 0xe3, 0x69, 0x74, 0x57, 0x36, 0xa8, 0x02, 0x0e, 0xe2, 0x03, 0x63, 0x84, 0x07, 0x1a, 0x35, - 0xef, 0x98, 0x12, 0x61, 0xe1, 0x33, 0xe8, 0xee, 0x2f, 0x83, 0x34, 0xb8, 0x4d, 0x06, 0xa3, 0x00, - 0x9d, 0x9b, 0x83, 0xf1, 0x3c, 0x19, 0x34, 0xb6, 0x9b, 0xe0, 0xf1, 0x15, 0x32, 0x20, 0x8c, 0x46, - 0xbe, 0x5c, 0x0e, 0x1d, 0x6c, 0x41, 0x03, 0x44, 0x6f, 0xb2, 0x01, 0x88, 0xde, 0xf5, 0x7a, 0x10, - 0xbd, 0xa0, 0x68, 0xce, 0x93, 0x4f, 0xf5, 0x30, 0xcc, 0x89, 0x29, 0xa1, 0xe4, 0x68, 0x12, 0xf0, - 0x77, 0x28, 0x21, 0xba, 0x16, 0xdf, 0xf3, 0x69, 0x54, 0x2c, 0xf9, 0x2b, 0x70, 0x06, 0x5d, 0x73, - 0xe0, 0xa8, 0x5f, 0xb1, 0xed, 0x8f, 0x3b, 0x37, 0x8f, 0x65, 0x85, 0x63, 0xd3, 0x7f, 0x86, 0x87, - 0x9c, 0x91, 0x21, 0x7b, 0x4e, 0xf6, 0xf4, 0xb4, 0x55, 0x4b, 0xcf, 0x8e, 0xa2, 0xd2, 0xbf, 0x96, - 0x53, 0x88, 0x51, 0xa3, 0x99, 0xf5, 0xbe, 0x62, 0xe4, 0x79, 0xf4, 0x92, 0xf2, 0xe7, 0x95, 0xa0, - 0x87, 0x26, 0x52, 0x63, 0xbe, 0x16, 0xa5, 0x71, 0x98, 0x72, 0xf7, 0x53, 0x78, 0x9e, 0x68, 0x14, - 0xc8, 0x9f, 0x79, 0xf1, 0x5b, 0x54, 0x23, 0x63, 0x84, 0x64, 0xe4, 0xcb, 0x76, 0x16, 0x4a, 0x36, - 0x60, 0xa1, 0xf9, 0x06, 0x2c, 0x34, 0x59, 0xcf, 0x42, 0xa9, 0x62, 0xa1, 0x44, 0x12, 0x0d, 0x2c, - 0x34, 0x17, 0xdf, 0x81, 0x85, 0x26, 0x4b, 0x93, 0x57, 0x52, 0x93, 0x57, 0xd4, 0x80, 0x2c, 0x74, - 0x84, 0x87, 0x93, 0x26, 0x2d, 0x10, 0x54, 0xbe, 0x19, 0x9a, 0x6a, 0x6e, 0x61, 0x95, 0x48, 0x40, - 0x55, 0xd6, 0x56, 0x6d, 0x78, 0x22, 0x8e, 0x64, 0x61, 0xed, 0xda, 0xc2, 0xd3, 0x56, 0x59, 0xd4, - 0xde, 0x5e, 0xab, 0x40, 0xc4, 0xb1, 0x0d, 0x41, 0xf2, 0xd9, 0x57, 0xdb, 0x31, 0x52, 0x27, 0x81, - 0x2a, 0x37, 0xbe, 0x84, 0xb3, 0xbd, 0x55, 0x4c, 0x59, 0x52, 0x54, 0x46, 0xa5, 0x5c, 0x51, 0xd6, - 0x6f, 0x76, 0x51, 0xbf, 0xb5, 0x97, 0xf4, 0x73, 0xb2, 0xa2, 0x1c, 0x90, 0x3d, 0x6d, 0xd2, 0xb1, - 0x5e, 0xce, 0x2a, 0x82, 0x6e, 0x6d, 0x82, 0x6e, 0x57, 0x10, 0xf4, 0xb1, 0x58, 0x51, 0x4e, 0x55, - 0x58, 0xe5, 0x54, 0x45, 0x7b, 0x39, 0x22, 0x22, 0x6d, 0x7b, 0x59, 0x20, 0x53, 0xb7, 0x9e, 0x21, - 0xc4, 0x1b, 0xca, 0xc7, 0xf8, 0xb3, 0xed, 0xe5, 0x6f, 0x24, 0xae, 0xed, 0xcb, 0x16, 0x2a, 0x46, - 0xa4, 0xbc, 0x07, 0x67, 0xac, 0xfd, 0x0b, 0xbc, 0x6b, 0xe2, 0x55, 0x1e, 0x08, 0x07, 0x06, 0xe0, - 0x88, 0x28, 0x3e, 0x3b, 0x5f, 0x48, 0xbf, 0x86, 0x85, 0x5d, 0xdf, 0x75, 0x89, 0xa3, 0xc8, 0xbd, - 0xa9, 0x52, 0xbb, 0x00, 0xd3, 0x85, 0x62, 0x53, 0xd0, 0xf0, 0x7b, 0x4b, 0xdf, 0x5f, 0xa1, 0x13, - 0x54, 0xff, 0x52, 0xb4, 0xf0, 0xdd, 0xb1, 0x28, 0x3e, 0x89, 0xf5, 0xa4, 0x75, 0x6f, 0x9c, 0xee, - 0xbc, 0x60, 0x80, 0xb7, 0x8e, 0x8b, 0xe5, 0x36, 0x10, 0xa3, 0xb4, 0xa3, 0x22, 0x9f, 0xd4, 0x2f, - 0xab, 0xb6, 0xbc, 0x7a, 0x61, 0xfa, 0xf6, 0x5e, 0x5e, 0x19, 0x1a, 0x49, 0x28, 0x74, 0x23, 0xb7, - 0x28, 0x4f, 0x16, 0x65, 0xc2, 0xbf, 0x39, 0xea, 0x62, 0x03, 0x86, 0x5e, 0x2b, 0x45, 0x35, 0x00, - 0xb8, 0x78, 0x0d, 0x1a, 0x5e, 0x83, 0x60, 0x98, 0x3e, 0x68, 0x66, 0x88, 0x6b, 0xcc, 0x24, 0x71, - 0x07, 0x9f, 0xd7, 0xd7, 0x2b, 0x6f, 0xf7, 0x6e, 0xd2, 0xe3, 0x1b, 0x5e, 0x0f, 0xde, 0xbc, 0xdf, - 0x55, 0xec, 0x8b, 0x6f, 0xec, 0x78, 0x2b, 0x86, 0xc6, 0x37, 0xf6, 0x3c, 0x94, 0x35, 0x88, 0xdd, - 0x0e, 0xc7, 0xa9, 0xeb, 0xcc, 0xdc, 0xda, 0x7c, 0xad, 0x23, 0x43, 0xf9, 0xae, 0x0c, 0x40, 0xb8, - 0x85, 0x6e, 0x93, 0x04, 0x28, 0x1f, 0x1a, 0xcb, 0xb2, 0x60, 0x28, 0x6a, 0x5c, 0xa0, 0x20, 0x27, - 0x1a, 0x8b, 0x4c, 0x9a, 0x8b, 0xac, 0xe1, 0x54, 0xd4, 0x8a, 0x65, 0xd0, 0x07, 0xe0, 0x2d, 0x01, - 0x85, 0x85, 0x5b, 0xab, 0xa7, 0xa7, 0xf8, 0xf8, 0xd0, 0xb7, 0x05, 0xcc, 0x72, 0xe9, 0xaa, 0x4d, - 0x1a, 0xd9, 0x22, 0x56, 0xeb, 0xf1, 0x21, 0xf1, 0x25, 0xcb, 0x9d, 0xc9, 0x61, 0x54, 0x0e, 0xfa, - 0x66, 0x42, 0x1f, 0x12, 0xc4, 0xd7, 0x5e, 0x54, 0xba, 0x82, 0xc5, 0x22, 0xeb, 0xa7, 0xbc, 0x2e, - 0x9d, 0x51, 0x22, 0xc5, 0xee, 0xdc, 0xa0, 0x2d, 0xb4, 0xb1, 0x1d, 0x43, 0x6c, 0xac, 0xe5, 0x50, - 0x5c, 0x63, 0x94, 0x47, 0xa5, 0x20, 0xd1, 0xb6, 0xd4, 0xb1, 0xe9, 0x7d, 0x02, 0x4a, 0x9a, 0xf9, - 0x4b, 0x5f, 0x73, 0xfe, 0x80, 0xd6, 0x9e, 0xd8, 0xf3, 0x8f, 0x22, 0xc2, 0x72, 0x16, 0x9e, 0xa7, - 0x02, 0xdc, 0xbf, 0x0a, 0xe4, 0x4b, 0xbe, 0x76, 0xc4, 0xfa, 0x3d, 0xd5, 0xdf, 0x33, 0xbc, 0x7b, - 0x29, 0x7d, 0x34, 0x81, 0x24, 0x92, 0xc0, 0x79, 0x86, 0x97, 0x1b, 0x03, 0x43, 0xaf, 0xf8, 0x29, - 0x1f, 0xa1, 0x1b, 0xb1, 0xb0, 0x28, 0x75, 0xbc, 0x5d, 0x79, 0x1a, 0x2a, 0x82, 0xdc, 0x53, 0x7c, - 0xfb, 0x76, 0xa9, 0x4b, 0x07, 0x2e, 0x12, 0x8b, 0x10, 0xc6, 0xab, 0x38, 0x73, 0x7d, 0xb6, 0xf8, - 0xc0, 0x48, 0x43, 0x70, 0x43, 0x6b, 0xcf, 0x8e, 0x7a, 0x48, 0x0e, 0xe4, 0x6d, 0x3b, 0x07, 0x02, - 0x8d, 0xfd, 0xec, 0xb8, 0xff, 0x2a, 0xf4, 0x61, 0x86, 0xcf, 0x81, 0x4a, 0xe1, 0x30, 0x7b, 0xf6, - 0x0e, 0xd4, 0x1e, 0x98, 0x6b, 0xe3, 0xb8, 0x83, 0x67, 0x4a, 0x39, 0x28, 0xad, 0x71, 0x59, 0xe2, - 0xa5, 0x3a, 0xd2, 0x62, 0x11, 0x91, 0xa6, 0x5b, 0xbc, 0x37, 0x6c, 0x04, 0xb4, 0xfd, 0x16, 0x35, - 0x63, 0x8d, 0xef, 0xa3, 0x2e, 0xec, 0xed, 0x95, 0xe7, 0xaa, 0xa7, 0x5d, 0x71, 0xfd, 0xdd, 0xe2, - 0x4c, 0x22, 0x91, 0x2d, 0xf4, 0x96, 0xa4, 0xc9, 0xd2, 0xe0, 0x57, 0x27, 0xdd, 0x52, 0x39, 0xe5, - 0x6a, 0x7f, 0xb1, 0xa0, 0xe4, 0xfe, 0xc5, 0x4f, 0xba, 0x43, 0x0a, 0xb9, 0x92, 0xb1, 0x41, 0x0d, - 0xf9, 0x6f, 0x18, 0x3b, 0xb3, 0x72, 0xbf, 0x34, 0x1f, 0x97, 0xf5, 0xc7, 0x13, 0xeb, 0xf1, 0x64, - 0xf6, 0xd9, 0x78, 0xec, 0x11, 0xdc, 0xbe, 0x7a, 0x9c, 0xde, 0x2a, 0x85, 0x16, 0x81, 0xcc, 0xe4, - 0x79, 0x7c, 0xc3, 0x68, 0x18, 0x39, 0x11, 0x90, 0x41, 0x6d, 0x00, 0x32, 0xa3, 0xb4, 0x51, 0xa1, - 0x16, 0xfe, 0x61, 0x35, 0x7f, 0x5c, 0x94, 0x26, 0xb8, 0x60, 0xe6, 0x2f, 0xf9, 0xf6, 0x2b, 0x0f, - 0x7b, 0x89, 0x6c, 0x1b, 0x65, 0x41, 0xa6, 0x1c, 0x39, 0x25, 0xf8, 0x18, 0xe2, 0x8b, 0x19, 0x15, - 0xe3, 0x41, 0x93, 0x05, 0x36, 0xee, 0x6d, 0xbf, 0x78, 0xf3, 0xfa, 0xf5, 0xeb, 0x61, 0x87, 0x59, - 0xbd, 0x43, 0x26, 0xbb, 0xce, 0x23, 0xde, 0x2c, 0x35, 0x4e, 0x47, 0x3b, 0xe4, 0x72, 0xcc, 0xf7, - 0xc4, 0x8d, 0xe9, 0xb1, 0xf0, 0xfc, 0xe3, 0xbd, 0xde, 0xb3, 0xab, 0x3a, 0x7f, 0x04, 0x5d, 0xe9, - 0x41, 0x20, 0x4a, 0x25, 0x59, 0x67, 0x42, 0x22, 0xa7, 0x83, 0xcd, 0x33, 0x2b, 0xe5, 0xea, 0x70, - 0x0f, 0x55, 0x9f, 0x90, 0x5f, 0xdb, 0x3c, 0x61, 0xcb, 0xa4, 0x4b, 0xa2, 0xc5, 0xe8, 0x26, 0x06, - 0x3e, 0x9e, 0xa2, 0x63, 0xd4, 0x6d, 0x7e, 0x9d, 0x4c, 0x1f, 0x71, 0x16, 0xd2, 0x4d, 0x53, 0x9e, - 0x8a, 0x88, 0x19, 0x43, 0x7c, 0x04, 0x1f, 0x05, 0xce, 0xb3, 0xa8, 0x38, 0x03, 0x96, 0x80, 0xbd, - 0xe0, 0xfb, 0xa1, 0x61, 0x29, 0x10, 0x1e, 0x02, 0x6a, 0xb0, 0x52, 0x03, 0xe6, 0x01, 0x46, 0xe6, - 0xf7, 0x34, 0x4a, 0xad, 0xf9, 0x7e, 0x3e, 0x22, 0x7c, 0x52, 0x9c, 0xe7, 0x3c, 0xc3, 0x8b, 0xb3, - 0xfa, 0x14, 0x47, 0x30, 0xc6, 0xfd, 0xfc, 0x84, 0xbd, 0xdb, 0x2f, 0x8a, 0xb3, 0x4b, 0x90, 0x8f, - 0x96, 0x4b, 0x3c, 0x24, 0x31, 0x51, 0xf5, 0xe4, 0xbc, 0x9e, 0xf4, 0xa5, 0x9e, 0x84, 0x6e, 0x6e, - 0x30, 0x41, 0x74, 0x05, 0x8b, 0x6c, 0x50, 0xbc, 0x0f, 0x80, 0x91, 0x06, 0x5e, 0x5b, 0x6f, 0x21, - 0xf4, 0x58, 0x1c, 0x73, 0x1f, 0x65, 0xf1, 0x7d, 0xfa, 0x48, 0xe2, 0xe7, 0x5a, 0x8e, 0xd8, 0xbe, - 0x07, 0x8b, 0x02, 0xb2, 0x22, 0x4e, 0x74, 0x55, 0x11, 0xb2, 0x26, 0xa5, 0x62, 0x93, 0x7e, 0x4f, - 0xad, 0x67, 0xd0, 0x39, 0x98, 0xe6, 0xeb, 0x20, 0x1b, 0xf2, 0x12, 0x39, 0x76, 0x87, 0xb6, 0x00, - 0x9b, 0xf7, 0xb9, 0xd9, 0xab, 0x4c, 0x4a, 0x3c, 0x0a, 0x39, 0x25, 0x3d, 0xb5, 0xf1, 0x99, 0x64, - 0x0d, 0x3b, 0x15, 0xaf, 0x38, 0x9a, 0x7c, 0xb1, 0xb9, 0x1f, 0x9a, 0xc7, 0x18, 0x7d, 0x64, 0x05, - 0xc4, 0x2b, 0x51, 0x4e, 0xb9, 0xbd, 0xe7, 0x94, 0x7b, 0xf8, 0x7a, 0xca, 0xa7, 0xdd, 0x68, 0xaf, - 0xd6, 0xa2, 0x6e, 0xa5, 0x28, 0xb3, 0xb9, 0xc2, 0x10, 0xfc, 0x82, 0x20, 0x7b, 0x4d, 0x94, 0x05, - 0xe1, 0x02, 0xed, 0xf8, 0x7d, 0x37, 0x59, 0x70, 0xaf, 0xd1, 0x4e, 0x35, 0xb4, 0xfa, 0x70, 0x92, - 0x4d, 0x4f, 0xba, 0x76, 0x99, 0xd7, 0x68, 0xa1, 0x5c, 0xfa, 0x36, 0x0f, 0x01, 0x89, 0xb5, 0x31, - 0x23, 0xf7, 0x62, 0x36, 0xe4, 0x4e, 0xea, 0x90, 0x9d, 0xcf, 0xe8, 0x28, 0xfb, 0x68, 0x7e, 0x0b, - 0xdf, 0x35, 0xe8, 0x03, 0xdd, 0xc4, 0x32, 0x45, 0x4a, 0x54, 0x20, 0x0c, 0x67, 0x84, 0x60, 0x41, - 0xf1, 0xd0, 0xb8, 0x52, 0xd1, 0x06, 0xa3, 0x88, 0xbe, 0x56, 0x95, 0xdf, 0x74, 0x08, 0xf0, 0xf0, - 0x40, 0xf8, 0xe1, 0x43, 0x0c, 0x32, 0xe6, 0x2a, 0x8f, 0xe2, 0x19, 0xe2, 0x1e, 0x7e, 0x20, 0x98, - 0xf4, 0xee, 0xfc, 0x66, 0x7c, 0x5e, 0xcd, 0xbb, 0x95, 0x01, 0x92, 0x08, 0xec, 0x0c, 0x62, 0x6b, - 0x82, 0x38, 0xea, 0xdc, 0x0f, 0x72, 0x51, 0x70, 0x91, 0xc5, 0x03, 0x1b, 0xc0, 0x5e, 0x5c, 0x4a, - 0x50, 0x0b, 0x46, 0x65, 0x01, 0x2f, 0xb6, 0x22, 0xe4, 0x13, 0xf4, 0xbd, 0x83, 0x98, 0x47, 0xf7, - 0x74, 0x70, 0x17, 0x37, 0x43, 0xa8, 0x29, 0xe5, 0x8b, 0x7e, 0x2a, 0x02, 0x89, 0x78, 0x73, 0x90, - 0xaf, 0x18, 0x80, 0x66, 0x01, 0x9a, 0xde, 0x62, 0x36, 0x80, 0x15, 0x13, 0xfe, 0xbe, 0x0c, 0xd0, - 0x60, 0xee, 0xef, 0x97, 0xa6, 0x57, 0xfb, 0xab, 0xd0, 0x0e, 0x72, 0xb6, 0x0b, 0x3a, 0xc1, 0xf0, - 0x3a, 0x5f, 0xc4, 0xfb, 0x33, 0x33, 0xdb, 0xe1, 0x0f, 0x4e, 0x3e, 0x7f, 0x79, 0x0f, 0x7d, 0x1e, - 0x77, 0x29, 0x71, 0x34, 0x2e, 0xbb, 0xf0, 0xc2, 0x1e, 0x51, 0xe4, 0x1f, 0x61, 0x11, 0x4c, 0x1c, - 0x24, 0x2e, 0x75, 0x5f, 0xc6, 0x0c, 0x28, 0x89, 0x5d, 0x86, 0xae, 0x04, 0x6e, 0x18, 0x0c, 0xd5, - 0x6f, 0xe2, 0xda, 0xb2, 0xd9, 0xc3, 0x30, 0x0c, 0x43, 0x3b, 0xda, 0x80, 0xc2, 0x67, 0x9d, 0x07, - 0x76, 0xa8, 0x01, 0xf5, 0xe0, 0x26, 0xb0, 0xe3, 0x0c, 0x68, 0x44, 0x57, 0x66, 0x20, 0xd0, 0x70, - 0xcd, 0x2a, 0x66, 0xf1, 0xc3, 0x39, 0x61, 0x98, 0x18, 0x80, 0x46, 0xbd, 0x9a, 0x6d, 0xd0, 0x61, - 0xb8, 0x0b, 0xe4, 0x48, 0x73, 0x14, 0x87, 0x19, 0x2f, 0x0c, 0xbb, 0xb0, 0xae, 0x55, 0xf9, 0xb9, - 0x28, 0xe6, 0x07, 0x19, 0xbd, 0x00, 0x2a, 0x99, 0x28, 0x4a, 0x4a, 0x9d, 0x96, 0x4d, 0xd7, 0xe3, - 0x82, 0x1c, 0xfa, 0xde, 0x90, 0xd1, 0xfa, 0x2c, 0xb2, 0xef, 0xe2, 0x60, 0x64, 0xa5, 0x94, 0xa3, - 0x4a, 0x1c, 0x68, 0x07, 0x79, 0x9d, 0x4d, 0xcd, 0x6e, 0xfc, 0xbb, 0x22, 0x25, 0xb5, 0x50, 0x39, - 0x35, 0x20, 0xa6, 0x99, 0xfc, 0xab, 0x4a, 0xce, 0x83, 0x2a, 0x4a, 0xe6, 0xf9, 0xfe, 0x29, 0x53, - 0x50, 0x7e, 0xf9, 0x98, 0xff, 0x72, 0x33, 0xee, 0x02, 0xa7, 0xa5, 0xc0, 0x69, 0x18, 0x8a, 0x4f, - 0xf0, 0x9a, 0x5b, 0x6a, 0x16, 0x3f, 0xc8, 0x0b, 0x3f, 0xe7, 0xc9, 0x38, 0xa5, 0xce, 0x6e, 0x8c, - 0xfe, 0xe3, 0xb5, 0x44, 0x14, 0x7a, 0x31, 0x1a, 0x8d, 0x3a, 0x7b, 0xbd, 0x57, 0xdf, 0x07, 0x1d, - 0x8c, 0x76, 0xe7, 0xed, 0xc2, 0xbc, 0xde, 0xf5, 0x02, 0xfc, 0xbc, 0x11, 0x9f, 0x63, 0x58, 0x6e, - 0x51, 0x1c, 0xad, 0xa0, 0x70, 0xd4, 0x44, 0xdf, 0xaf, 0x7f, 0x08, 0x7d, 0x61, 0x18, 0x6e, 0x46, - 0x9f, 0x51, 0xf3, 0x3f, 0x54, 0xc7, 0x9a, 0xa3, 0xf5, 0x39, 0x4e, 0x41, 0x93, 0xd0, 0xb3, 0x04, - 0xd8, 0x84, 0x2f, 0x78, 0xfa, 0x8b, 0x1e, 0x6c, 0xbc, 0xf8, 0xf4, 0xea, 0x73, 0xfc, 0x88, 0xe8, - 0xe2, 0xdb, 0xdb, 0x08, 0xa0, 0x4e, 0x20, 0x56, 0xa6, 0xe8, 0x14, 0x37, 0x42, 0xe3, 0xc6, 0x37, - 0x94, 0xf1, 0x5c, 0xbf, 0xa1, 0x0a, 0x31, 0x61, 0xfa, 0x4d, 0x96, 0x15, 0xa1, 0xac, 0xb4, 0xf5, - 0xc2, 0x98, 0x2b, 0x3f, 0xf8, 0x01, 0xf0, 0x39, 0x2b, 0xb3, 0x6a, 0xca, 0x7b, 0x2f, 0x10, 0x34, - 0xd4, 0x44, 0x08, 0x83, 0xa9, 0x20, 0x94, 0x5b, 0x32, 0xc5, 0xea, 0x8c, 0xd3, 0xe9, 0x68, 0x14, - 0x86, 0x9e, 0x86, 0x70, 0x5b, 0x31, 0xcd, 0x22, 0x46, 0xd5, 0xaa, 0x7c, 0x0c, 0x2f, 0xa4, 0x85, - 0x4a, 0xdf, 0xd9, 0x2d, 0x4a, 0xb1, 0x23, 0x16, 0x46, 0x04, 0xe9, 0x51, 0x4c, 0x81, 0xa6, 0xf9, - 0x8a, 0x5b, 0x05, 0x7b, 0x24, 0x6b, 0xfe, 0xc0, 0x0e, 0xb3, 0xf2, 0x07, 0x4e, 0xd2, 0xe9, 0x6c, - 0x04, 0xcb, 0x5b, 0x0a, 0xfd, 0x51, 0x7e, 0x81, 0x81, 0x84, 0xbf, 0xb0, 0x55, 0x64, 0x7f, 0x4b, - 0x30, 0x14, 0x67, 0x34, 0x60, 0x2c, 0x56, 0x13, 0x32, 0xb3, 0x58, 0xe9, 0xef, 0x7a, 0xe7, 0x6f, - 0x95, 0x73, 0xbe, 0xb6, 0x9c, 0xd2, 0x6b, 0x14, 0x01, 0x4e, 0x39, 0xbf, 0xae, 0x2d, 0xe7, 0x8b, - 0xd7, 0x28, 0x33, 0x9c, 0x72, 0xfe, 0x51, 0x2f, 0xa7, 0xbb, 0x60, 0x8e, 0x1f, 0x34, 0xcd, 0x8c, - 0xa5, 0xf3, 0x3e, 0x4e, 0x66, 0x8b, 0x4b, 0x9d, 0x75, 0x21, 0xa8, 0xa2, 0xa6, 0x55, 0x01, 0x44, - 0x7e, 0xd3, 0x9a, 0x30, 0xd4, 0xcc, 0x22, 0x82, 0x68, 0x4a, 0xd7, 0x18, 0xf4, 0xe8, 0xf4, 0xaf, - 0xd8, 0xf7, 0xa0, 0x39, 0xd0, 0xa7, 0xcb, 0x9b, 0xf3, 0x28, 0x0e, 0xdc, 0xb4, 0x1b, 0x84, 0xc4, - 0x76, 0xd2, 0xc6, 0x51, 0x29, 0xe1, 0x95, 0xc5, 0x23, 0xa7, 0x89, 0x9f, 0x6c, 0x5f, 0x3f, 0xa5, - 0x0c, 0x04, 0xcd, 0x9a, 0x4f, 0x55, 0x9b, 0x23, 0xb1, 0x6c, 0x33, 0xd7, 0x22, 0x32, 0xd8, 0xcc, - 0x17, 0x3b, 0xe6, 0x21, 0x31, 0x33, 0x16, 0xed, 0x1a, 0x16, 0x9d, 0x37, 0x63, 0xb8, 0x4f, 0x58, - 0x75, 0x9c, 0x3a, 0x11, 0x14, 0x17, 0xb5, 0xcd, 0x18, 0xd1, 0x12, 0x61, 0x84, 0xfe, 0x9c, 0x82, - 0xd4, 0xec, 0x22, 0x22, 0xef, 0x5a, 0x96, 0xa1, 0x48, 0x7c, 0xfd, 0x2d, 0x7c, 0xd5, 0x84, 0xa6, - 0x6e, 0x34, 0x41, 0x29, 0x55, 0xca, 0x97, 0x01, 0xbb, 0x5c, 0x4d, 0x61, 0x04, 0xa3, 0x50, 0x4a, - 0x44, 0xc6, 0x64, 0x7f, 0x3e, 0xc8, 0x83, 0x11, 0x0c, 0x42, 0xa6, 0x93, 0x6e, 0x28, 0x69, 0x1c, - 0xa5, 0x3a, 0x69, 0x4c, 0x49, 0xf7, 0xb0, 0xb8, 0x39, 0x1d, 0x46, 0x95, 0xc8, 0x63, 0x5b, 0xa8, - 0x64, 0x70, 0x71, 0x71, 0x19, 0xd0, 0xbf, 0xcb, 0xe5, 0x52, 0x1c, 0x6b, 0x22, 0x66, 0x36, 0xe5, - 0x8e, 0x2e, 0xb8, 0x73, 0xf2, 0x4b, 0xf7, 0xd8, 0xd2, 0x32, 0x39, 0x8e, 0x52, 0xf4, 0x2d, 0x6d, - 0x3e, 0x31, 0x98, 0x4c, 0x2a, 0xd7, 0x3e, 0x4c, 0xb0, 0xb8, 0x13, 0x53, 0xd7, 0x43, 0xe8, 0xfb, - 0xbf, 0xa1, 0x74, 0x10, 0xa1, 0x10, 0xf0, 0xb7, 0x0c, 0xab, 0x70, 0x70, 0x70, 0x93, 0x54, 0xb3, - 0xbb, 0x31, 0x9e, 0xe3, 0x1d, 0xbc, 0x4d, 0xe6, 0x93, 0x3c, 0xcf, 0x3f, 0x27, 0xf1, 0x01, 0x46, - 0xd1, 0x38, 0xb8, 0x4f, 0x3e, 0x27, 0xb8, 0xf5, 0x65, 0x13, 0xe3, 0x1c, 0x3a, 0x92, 0x11, 0xbd, - 0x24, 0xda, 0x4d, 0xb7, 0x3b, 0x9b, 0xec, 0x46, 0xbd, 0xd7, 0xfe, 0xf1, 0x61, 0x88, 0x9a, 0x0c, - 0x56, 0xeb, 0x07, 0xb3, 0xc9, 0x71, 0x5f, 0xfe, 0x3c, 0x0c, 0x51, 0xd4, 0xbf, 0x7c, 0x19, 0x45, - 0xb3, 0x09, 0xa5, 0xec, 0x46, 0x87, 0x98, 0x12, 0xbe, 0x36, 0x52, 0xa0, 0x00, 0xa9, 0xdd, 0x20, - 0x6a, 0x8b, 0x6f, 0xed, 0x1b, 0xae, 0x66, 0x25, 0xba, 0x80, 0xcd, 0x26, 0xcb, 0xa0, 0x83, 0x68, - 0x37, 0x41, 0xe7, 0x55, 0xf8, 0x3d, 0x06, 0x4e, 0x0b, 0xde, 0xf4, 0x44, 0x00, 0x17, 0xd0, 0x88, - 0xe6, 0x16, 0x34, 0x20, 0x24, 0xfc, 0x42, 0xc6, 0x3f, 0x36, 0x5c, 0xe2, 0x73, 0x4b, 0x00, 0xd0, - 0x26, 0x85, 0x22, 0x9c, 0x0f, 0x65, 0xa8, 0x8e, 0xf6, 0xbd, 0x8a, 0xe9, 0x01, 0x84, 0x00, 0x73, - 0xd3, 0x64, 0x7e, 0xdb, 0xf9, 0x25, 0x1e, 0xe7, 0xb9, 0xd8, 0x10, 0x76, 0xb9, 0x7e, 0xd0, 0x52, - 0x6b, 0xa1, 0x26, 0x60, 0xdb, 0x1c, 0x79, 0x07, 0x6c, 0x42, 0x58, 0x4a, 0x52, 0xcf, 0x6d, 0x18, - 0x43, 0x0c, 0x02, 0x6f, 0xcb, 0x27, 0x11, 0x7d, 0x7d, 0x28, 0x69, 0x3f, 0xf7, 0xbf, 0x92, 0x4a, - 0xae, 0x58, 0x13, 0x79, 0x4e, 0x31, 0x6f, 0x24, 0x0d, 0x41, 0x4b, 0x71, 0x53, 0xb7, 0x38, 0xea, - 0x4b, 0x75, 0xb4, 0xe9, 0x59, 0x9e, 0x25, 0x0b, 0x3e, 0x98, 0x0e, 0xf9, 0xf0, 0x52, 0xe2, 0x40, - 0x90, 0x37, 0xc1, 0x56, 0xb8, 0x34, 0xfc, 0x4e, 0xe2, 0xa8, 0x37, 0x8c, 0x85, 0xdf, 0x49, 0xec, - 0xf8, 0x9d, 0x88, 0x83, 0xcf, 0x76, 0x87, 0x17, 0xc2, 0x94, 0x33, 0xa2, 0x4f, 0x9b, 0x80, 0x8f, - 0x56, 0xa4, 0x6a, 0x11, 0x45, 0x93, 0x29, 0xa4, 0x90, 0x25, 0xb0, 0xc1, 0x9e, 0x83, 0x16, 0x86, - 0xd7, 0xc7, 0x31, 0x0c, 0x71, 0xd7, 0xbb, 0x4f, 0x09, 0x43, 0xf3, 0xc1, 0x13, 0x77, 0xeb, 0x51, - 0x09, 0xe1, 0xfd, 0xb7, 0x61, 0x55, 0xab, 0x18, 0xc2, 0x1e, 0x43, 0xff, 0x7c, 0xc1, 0xa0, 0x05, - 0xf4, 0x21, 0x87, 0xc1, 0xac, 0x11, 0x9e, 0x14, 0xdc, 0xc1, 0x20, 0x84, 0xe2, 0xae, 0xa9, 0xb0, - 0x2c, 0xad, 0x7c, 0x8b, 0x65, 0x70, 0xa3, 0x0e, 0x6c, 0xb8, 0x11, 0x61, 0x20, 0x00, 0xf3, 0x0c, - 0x32, 0xcb, 0x1a, 0x99, 0x81, 0x03, 0x99, 0xb8, 0x28, 0x06, 0x66, 0xc1, 0xc1, 0x17, 0x13, 0x60, - 0x0e, 0x23, 0xc2, 0xd6, 0xb7, 0x80, 0x01, 0xab, 0x70, 0x12, 0xa6, 0x2f, 0x0e, 0xde, 0xbc, 0xb1, - 0x8e, 0x24, 0x5c, 0xc2, 0xc8, 0xa2, 0xb2, 0x59, 0x28, 0x56, 0x20, 0xe5, 0xe1, 0xa4, 0x20, 0x35, - 0x77, 0x37, 0xb6, 0x23, 0xb2, 0x7e, 0x03, 0x2e, 0x63, 0x73, 0x30, 0xd7, 0x95, 0x28, 0x8b, 0x25, - 0xf4, 0xa4, 0xd5, 0xe1, 0xb6, 0x89, 0x1e, 0xba, 0xdf, 0xea, 0x35, 0x18, 0x36, 0x28, 0xe3, 0xa8, - 0xdc, 0xbf, 0x3d, 0x71, 0x01, 0x0c, 0x6b, 0xbd, 0xb1, 0xdb, 0x83, 0xfe, 0x58, 0x06, 0xb0, 0x55, - 0x1d, 0x20, 0x9c, 0xe7, 0x86, 0xa1, 0x5e, 0x11, 0xe4, 0xb4, 0xff, 0xee, 0x67, 0x01, 0x10, 0xd6, - 0x10, 0xcb, 0xaa, 0x1d, 0x8d, 0xd5, 0x8d, 0xc6, 0xb8, 0xa8, 0x9e, 0x09, 0xca, 0xda, 0x7f, 0xc7, - 0xa8, 0xac, 0x7c, 0xd2, 0xdb, 0x74, 0xfb, 0xdb, 0x3a, 0x53, 0x19, 0xcd, 0xb1, 0x39, 0x41, 0xa5, - 0x27, 0x55, 0xdc, 0xbe, 0xbd, 0x51, 0x05, 0xa1, 0xc9, 0x5b, 0xe8, 0x0d, 0xae, 0x43, 0x9f, 0xba, - 0xce, 0x8d, 0x0d, 0xae, 0xd6, 0xb5, 0x34, 0x89, 0xbc, 0x02, 0x4f, 0xcd, 0x11, 0x1b, 0xbc, 0x02, - 0x2d, 0xbd, 0x37, 0x4c, 0x34, 0x7c, 0x47, 0x22, 0xe1, 0x3b, 0xb2, 0xa8, 0xbc, 0x48, 0x2e, 0x83, - 0x14, 0x36, 0xcb, 0x1b, 0x75, 0x46, 0x95, 0xff, 0xb3, 0x28, 0xe2, 0xf9, 0xe9, 0x08, 0xc1, 0x59, - 0x87, 0x99, 0x43, 0x7d, 0xaa, 0x3a, 0x4b, 0x34, 0xc1, 0xce, 0xef, 0x63, 0x34, 0xa2, 0x2d, 0x8a, - 0x78, 0x2a, 0xc7, 0x0b, 0x89, 0xdb, 0xde, 0x4e, 0xcd, 0x4e, 0x66, 0xe4, 0x5b, 0xe9, 0x9e, 0x08, - 0x6c, 0x6b, 0xc4, 0x85, 0x4a, 0xe3, 0x51, 0xc6, 0x40, 0xac, 0x4d, 0xfd, 0x2f, 0x24, 0x54, 0x4c, - 0x9e, 0x86, 0x49, 0x7e, 0x57, 0xda, 0x5d, 0x2d, 0x77, 0x1b, 0x88, 0x10, 0x5e, 0xed, 0x4f, 0xf3, - 0xc9, 0x1d, 0x9a, 0x88, 0x2a, 0x2a, 0x04, 0x79, 0xef, 0x2f, 0xb8, 0x3d, 0xeb, 0xe2, 0x1e, 0x85, - 0xbf, 0x79, 0x74, 0x12, 0x6b, 0xef, 0x08, 0xf2, 0xf9, 0xed, 0xa8, 0x7a, 0x3b, 0xd7, 0x2a, 0x5a, - 0x80, 0xa1, 0xb5, 0x34, 0x00, 0x08, 0xae, 0x2e, 0xf6, 0x85, 0xc8, 0x18, 0x7d, 0xd0, 0x7d, 0xd9, - 0xdb, 0xf4, 0x6b, 0xc8, 0x9b, 0xa7, 0xcc, 0x27, 0x64, 0x56, 0xd2, 0xbc, 0x28, 0x3d, 0xba, 0xc8, - 0x2e, 0xd1, 0xcf, 0xa7, 0x5b, 0x71, 0x3e, 0x51, 0xa8, 0x7f, 0x54, 0xfa, 0x12, 0x89, 0x83, 0x03, - 0x05, 0x94, 0x7b, 0x15, 0x85, 0x0a, 0xe0, 0x5c, 0x24, 0xee, 0x63, 0x76, 0x75, 0xdf, 0xeb, 0x71, - 0x9c, 0x90, 0x1a, 0x11, 0x06, 0xc8, 0xac, 0xbf, 0xc8, 0x2c, 0xd4, 0x59, 0x9b, 0x9c, 0x6a, 0x8e, - 0xd4, 0x18, 0x10, 0xb3, 0x26, 0x51, 0x06, 0xfe, 0x84, 0x4d, 0x9b, 0x4b, 0x97, 0x91, 0x51, 0x90, - 0x67, 0x7a, 0xb2, 0x23, 0x95, 0xba, 0x53, 0x95, 0x9f, 0x99, 0xa1, 0xf4, 0xb2, 0xc3, 0x29, 0x83, - 0x95, 0xc4, 0x86, 0xb7, 0x69, 0x2e, 0xb6, 0x02, 0x62, 0x1b, 0xc1, 0x1c, 0x6e, 0x28, 0xc7, 0x38, - 0xcb, 0x8e, 0xb1, 0x47, 0x2d, 0x3b, 0x64, 0xd9, 0x68, 0x87, 0x34, 0x23, 0xf6, 0x6d, 0x11, 0x1f, - 0x36, 0xe5, 0x52, 0x0e, 0xdd, 0xbc, 0xb2, 0x35, 0x38, 0xb9, 0xea, 0x1c, 0x41, 0x7c, 0x4c, 0xc3, - 0x29, 0x07, 0x1b, 0x49, 0x76, 0xdf, 0xd2, 0x9e, 0x2c, 0xfa, 0x3d, 0x84, 0x3a, 0x54, 0x07, 0x99, - 0x99, 0x7f, 0x22, 0x7d, 0xd8, 0xb3, 0xcb, 0xa8, 0x10, 0x5f, 0x94, 0x09, 0x3b, 0xd0, 0x3c, 0xa8, - 0x72, 0xe1, 0x41, 0x28, 0x0e, 0xa1, 0x4a, 0x10, 0x38, 0x0e, 0xbe, 0x76, 0x87, 0x57, 0x69, 0x91, - 0x46, 0x49, 0xc9, 0x08, 0x43, 0xc1, 0xcc, 0x81, 0x18, 0x41, 0xb5, 0xb2, 0x10, 0x92, 0xd3, 0x2a, - 0x08, 0x71, 0x2b, 0x42, 0x69, 0xba, 0xa1, 0x11, 0x32, 0xcf, 0x84, 0xd8, 0xd3, 0x3d, 0xa3, 0xf0, - 0x3b, 0x86, 0x6f, 0x3b, 0xf0, 0xdd, 0x60, 0xf5, 0x1b, 0x32, 0x48, 0x71, 0x31, 0x2a, 0x92, 0x5f, - 0x41, 0x2b, 0x86, 0x04, 0x69, 0x49, 0xcf, 0xcc, 0xe3, 0xba, 0x28, 0x45, 0xf3, 0x6f, 0x5a, 0x3f, - 0xb5, 0x12, 0x21, 0x20, 0xf8, 0x05, 0xe7, 0x48, 0x93, 0x5a, 0xc6, 0x9e, 0xd6, 0x99, 0x74, 0x98, - 0x17, 0x38, 0x55, 0x2b, 0xfc, 0xff, 0xf9, 0x52, 0xbc, 0x11, 0xbb, 0xb2, 0xa5, 0x05, 0x32, 0x80, - 0x6d, 0xbd, 0x48, 0xdb, 0x29, 0x7e, 0x59, 0x7d, 0x85, 0x7b, 0xbf, 0x61, 0xa7, 0xcd, 0x48, 0x6a, - 0x69, 0x3b, 0x6d, 0xcd, 0x33, 0x62, 0x9c, 0xde, 0xcd, 0xbb, 0x8d, 0x11, 0x7e, 0xea, 0x4f, 0x4c, - 0x67, 0x05, 0x7e, 0xba, 0xe4, 0x7b, 0xd2, 0xff, 0x3e, 0xad, 0x7b, 0x93, 0x48, 0xbe, 0xc5, 0x28, - 0x85, 0xc1, 0xfb, 0xe8, 0x25, 0xcd, 0xc2, 0x84, 0x28, 0x89, 0xc2, 0xe0, 0x21, 0x14, 0x10, 0xdc, - 0xd4, 0xb8, 0x73, 0x48, 0xc1, 0x36, 0xb0, 0xcb, 0xb4, 0x41, 0x3d, 0x83, 0x53, 0x2f, 0x94, 0xe2, - 0xcd, 0x37, 0xb8, 0xae, 0x3f, 0xe6, 0x77, 0x30, 0x4a, 0xe5, 0x89, 0x9b, 0x80, 0x28, 0xf5, 0xb1, - 0xb1, 0xf6, 0x8f, 0xca, 0xb3, 0x79, 0x4e, 0x20, 0x45, 0x58, 0x8a, 0x14, 0x89, 0x1c, 0x2d, 0x2b, - 0x36, 0x63, 0x64, 0xd1, 0x62, 0x4b, 0x81, 0xaf, 0x50, 0x8f, 0x2e, 0x3f, 0xc1, 0x66, 0xac, 0xeb, - 0xc1, 0xbb, 0xea, 0x60, 0x13, 0xb4, 0x68, 0x19, 0x81, 0xcc, 0xd4, 0x87, 0x61, 0xb3, 0xcc, 0xf6, - 0xfb, 0xad, 0x62, 0x82, 0x3a, 0x86, 0x94, 0x48, 0x2a, 0x2c, 0xb9, 0x1a, 0x57, 0x12, 0xfb, 0x56, - 0xac, 0x72, 0xb1, 0xd6, 0xe8, 0x2c, 0x43, 0x73, 0xae, 0xcb, 0x2b, 0xa6, 0xfe, 0xd3, 0x93, 0xd9, - 0x8c, 0xca, 0xf9, 0x5d, 0xc2, 0xef, 0x2e, 0x74, 0xa6, 0xec, 0x2a, 0x28, 0x0d, 0x8d, 0x9b, 0xff, - 0x52, 0x1d, 0x2b, 0xe2, 0x4b, 0x57, 0xa3, 0xf1, 0x84, 0xb5, 0x3f, 0xcf, 0xbf, 0xe0, 0x51, 0xb8, - 0x14, 0x9c, 0xf5, 0x31, 0x2f, 0x82, 0x7f, 0x9f, 0x36, 0xf9, 0xe2, 0x0b, 0xf6, 0xda, 0xea, 0xca, - 0xb1, 0x09, 0x7d, 0x0b, 0x63, 0x89, 0x78, 0x9f, 0xdb, 0xcf, 0x39, 0xb6, 0xb7, 0x9d, 0x7e, 0xa8, - 0x93, 0x15, 0x55, 0x7b, 0x0f, 0xa1, 0x8c, 0x56, 0x4f, 0x3a, 0x61, 0x89, 0x80, 0x9f, 0xbb, 0xdd, - 0xec, 0x7f, 0xca, 0x83, 0xfb, 0x4f, 0xa0, 0x46, 0xe6, 0x7f, 0x4d, 0x1e, 0xe2, 0xeb, 0x6e, 0xdf, - 0x1f, 0x86, 0x5b, 0x28, 0x63, 0xbb, 0x4c, 0xee, 0x71, 0x48, 0xe8, 0x2d, 0xbe, 0x4a, 0x38, 0xa2, - 0x08, 0x8a, 0x98, 0x90, 0x1e, 0xef, 0xf7, 0xfa, 0xdb, 0xdb, 0x1b, 0x35, 0x15, 0x36, 0x11, 0xdc, - 0x33, 0x50, 0x0e, 0xb4, 0x9a, 0xb5, 0x02, 0xf2, 0x53, 0x81, 0xfd, 0xf8, 0xbc, 0x7a, 0xec, 0x7a, - 0x7b, 0x7b, 0x89, 0x17, 0xf0, 0x7b, 0x7b, 0x51, 0x86, 0xc4, 0xf5, 0xf6, 0x52, 0x69, 0x82, 0x19, - 0xa1, 0x62, 0xf0, 0xb9, 0x14, 0x24, 0x80, 0x8e, 0xdf, 0x56, 0xc6, 0xd4, 0x0b, 0x52, 0x7f, 0xd3, - 0x7e, 0xed, 0x41, 0x41, 0x62, 0x46, 0x98, 0x1a, 0xa1, 0x0e, 0xfe, 0xb7, 0x68, 0x80, 0x96, 0x75, - 0x34, 0x29, 0xb9, 0xf7, 0xc8, 0xae, 0x27, 0x74, 0x9e, 0x71, 0xff, 0xe9, 0xf8, 0xc7, 0x37, 0x3f, - 0x3e, 0x3d, 0xc1, 0xe7, 0xab, 0xc3, 0x37, 0xdb, 0xdb, 0xf7, 0x9f, 0x8e, 0x7e, 0xec, 0x87, 0x7e, - 0x6b, 0x08, 0x4d, 0x86, 0x06, 0x5e, 0xdc, 0x7f, 0x92, 0x01, 0x1e, 0x49, 0x58, 0x11, 0x9e, 0xa8, - 0x19, 0x86, 0x70, 0x68, 0xa8, 0xd0, 0x74, 0xc9, 0x47, 0x0c, 0x2d, 0x43, 0x42, 0x0e, 0xcb, 0xd3, - 0x3c, 0xc5, 0xe6, 0x63, 0xfb, 0xe2, 0x5d, 0x0f, 0xc3, 0xb6, 0x04, 0x32, 0x6d, 0x2c, 0x0d, 0x9f, - 0x24, 0xd9, 0xac, 0xf7, 0x44, 0x4e, 0x06, 0x38, 0xee, 0x42, 0xbf, 0xbf, 0xd4, 0xaf, 0x55, 0x85, - 0x2e, 0x4a, 0x60, 0x87, 0x13, 0x8f, 0xd5, 0x71, 0x8c, 0x45, 0x3a, 0x03, 0xd7, 0xa1, 0x35, 0x8a, - 0x99, 0xf1, 0x6d, 0x24, 0xb8, 0xf2, 0x6d, 0xd0, 0xbc, 0xc9, 0x2b, 0x26, 0xb7, 0x5e, 0x20, 0xb2, - 0xf8, 0xe2, 0x4b, 0xa4, 0x7e, 0x43, 0xc7, 0xf5, 0xfa, 0xaf, 0x42, 0xc5, 0xdb, 0xa0, 0x91, 0xc6, - 0xd4, 0xbf, 0x22, 0x19, 0x7b, 0xfe, 0x9e, 0xbe, 0x53, 0x67, 0x47, 0x46, 0x2a, 0xff, 0xc0, 0x29, - 0x8a, 0xc6, 0x1e, 0x60, 0x1e, 0xbe, 0xcf, 0x25, 0x8b, 0x3c, 0x11, 0x55, 0x6d, 0xf5, 0x06, 0xa2, - 0x36, 0x0c, 0xf7, 0xac, 0xe8, 0xd6, 0x24, 0x38, 0xcc, 0x27, 0x97, 0x52, 0x11, 0x55, 0x1d, 0xa8, - 0x37, 0x81, 0x86, 0xf9, 0xad, 0x86, 0x58, 0xe9, 0x79, 0xe5, 0x86, 0xc6, 0xe1, 0xac, 0x50, 0xa9, - 0x72, 0x21, 0x87, 0xae, 0x80, 0x7c, 0x27, 0x5e, 0x88, 0xfb, 0xc3, 0xbb, 0x2a, 0xf7, 0x9e, 0x31, - 0x7a, 0x6a, 0x2a, 0xf0, 0xfd, 0x48, 0x49, 0x07, 0x9a, 0x8b, 0xa0, 0xb4, 0x97, 0xf8, 0x41, 0x6e, - 0xae, 0xf7, 0x11, 0xcc, 0x73, 0x43, 0x8a, 0xc4, 0x20, 0x14, 0xdf, 0xc5, 0x71, 0x01, 0x7b, 0x9f, - 0xfd, 0xfd, 0x7d, 0x11, 0xc3, 0xb5, 0x92, 0xfa, 0xa2, 0x94, 0xfd, 0x2a, 0x7a, 0x2b, 0xac, 0x88, - 0xb3, 0x64, 0x0a, 0x5b, 0x40, 0x76, 0xb3, 0x87, 0x0d, 0x26, 0xb9, 0x72, 0xf1, 0xb7, 0xd2, 0xf7, - 0x4d, 0xf8, 0x8e, 0x04, 0xf8, 0xda, 0x17, 0x4f, 0x10, 0x86, 0xed, 0x84, 0xa4, 0xfc, 0xd3, 0x93, - 0xbd, 0x2b, 0x85, 0x1d, 0x33, 0xa4, 0xd2, 0x09, 0x7d, 0x60, 0x50, 0x03, 0x69, 0x01, 0xbd, 0xe5, - 0x0f, 0x1a, 0xf3, 0xd3, 0xc5, 0x60, 0x65, 0xbb, 0xaa, 0x35, 0x63, 0xc9, 0x33, 0xaa, 0x55, 0x42, - 0x64, 0x5e, 0x00, 0x5c, 0x2e, 0x26, 0x1b, 0xac, 0xfa, 0xb4, 0x87, 0x40, 0x41, 0x11, 0x67, 0x78, - 0xba, 0x82, 0x37, 0xba, 0xff, 0x0f, 0x36, 0x71, 0xf8, 0x7f, 0x80, 0xba, 0x08, 0x94, 0x53, 0xcf, - 0x75, 0x9b, 0xa3, 0x7b, 0x58, 0x7e, 0x0f, 0x85, 0xe1, 0xb4, 0x6e, 0xcf, 0x58, 0xe1, 0x0a, 0xc9, - 0x78, 0xcc, 0x6b, 0x72, 0x52, 0x91, 0xb0, 0x0d, 0xf7, 0x02, 0x94, 0xef, 0x6b, 0xf2, 0xdd, 0x15, - 0xeb, 0xb2, 0x51, 0xc5, 0xa0, 0x00, 0xea, 0x7c, 0x7f, 0x3a, 0x3a, 0x00, 0x19, 0x9c, 0x14, 0xd5, - 0x71, 0xe7, 0xe8, 0x00, 0x43, 0x3f, 0xe0, 0xe7, 0xac, 0xba, 0x4d, 0x8f, 0x3b, 0xff, 0x0f, 0x9e, - 0x7e, 0x56, 0x28, 0x13, 0x59, 0x01, 0x00 + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xdc, 0xbd, 0xf9, 0x7e, 0xe3, 0x38, + 0xaf, 0x20, 0xfa, 0x7f, 0x9e, 0x42, 0xa5, 0xea, 0xae, 0xb2, 0xda, 0x8a, 0x2d, 0xaf, 0x71, 0xec, + 0x72, 0x72, 0x9c, 0x7d, 0xdf, 0xf7, 0x9a, 0xfa, 0x9d, 0x92, 0x6d, 0xd9, 0x56, 0x22, 0x4b, 0x8a, + 0x24, 0x6f, 0x71, 0x79, 0xde, 0x63, 0x9e, 0xe1, 0xbe, 0xd5, 0x7d, 0x92, 0x0b, 0x90, 0x94, 0x44, + 0xc9, 0xb2, 0x93, 0xea, 0xee, 0x33, 0x67, 0xe6, 0xf6, 0xf7, 0x55, 0x2c, 0x51, 0x5c, 0x40, 0x10, + 0x04, 0x01, 0x10, 0x04, 0xbf, 0x7d, 0xda, 0x39, 0xdf, 0xbe, 0x79, 0xbc, 0xd8, 0x15, 0x7a, 0x5e, + 0xdf, 0xd8, 0x10, 0xbe, 0xe1, 0x8f, 0x60, 0xa8, 0x66, 0xb7, 0x2e, 0x6a, 0xa6, 0x88, 0x09, 0x9a, + 0xda, 0x86, 0x9f, 0xbe, 0xe6, 0xa9, 0x82, 0xa9, 0xf6, 0xb5, 0xba, 0x38, 0xd4, 0xb5, 0x91, 0x6d, + 0x39, 0x9e, 0x28, 0xac, 0xb4, 0x2c, 0xd3, 0xd3, 0x4c, 0xaf, 0x2e, 0x8e, 0xf4, 0xb6, 0xd7, 0xab, + 0xb7, 0xb5, 0xa1, 0xde, 0xd2, 0x56, 0xc9, 0x8b, 0xac, 0x9b, 0xba, 0xa7, 0xab, 0xc6, 0xaa, 0xdb, + 0x52, 0x0d, 0xad, 0x9e, 0x93, 0xfb, 0x90, 0xd0, 0x1f, 0xf4, 0xfd, 0x77, 0xd1, 0xaf, 0x74, 0xa5, + 0xd5, 0x53, 0x1d, 0x57, 0x83, 0x4a, 0x06, 0x5e, 0x67, 0xb5, 0x22, 0x46, 0x1b, 0xf3, 0x7a, 0x5a, + 0x5f, 0x5b, 0x6d, 0x59, 0x86, 0xe5, 0x88, 0x42, 0xd0, 0xdc, 0xe7, 0x3c, 0xf9, 0x8f, 0xab, 0xc3, + 0xff, 0x32, 0xd1, 0x5c, 0x91, 0x15, 0x55, 0x6d, 0xdb, 0xd0, 0x56, 0xfb, 0x56, 0x53, 0x87, 0x9f, + 0x91, 0xd6, 0x5c, 0x85, 0x84, 0xd5, 0x96, 0x6a, 0xab, 0x4d, 0x43, 0xc3, 0x92, 0x86, 0x6e, 0xbe, + 0x08, 0x8e, 0x66, 0xd4, 0x45, 0xb7, 0x07, 0xdd, 0x69, 0x0d, 0x3c, 0x41, 0x87, 0x7a, 0xa0, 0x5b, + 0x3d, 0x47, 0xeb, 0xd4, 0xc5, 0xb6, 0xea, 0xa9, 0x55, 0xbd, 0xaf, 0x76, 0xb5, 0xec, 0x78, 0x15, + 0xbf, 0xd4, 0x9a, 0xaa, 0xab, 0x95, 0x8b, 0x72, 0xa3, 0xd1, 0xd8, 0x6a, 0x34, 0x76, 0x1b, 0xbb, + 0xf0, 0x17, 0x7f, 0xf7, 0x1b, 0xdb, 0xfb, 0xf8, 0xb4, 0xd7, 0x85, 0x3f, 0x87, 0xc6, 0xe5, 0xcd, + 0x4b, 0xeb, 0x6c, 0xbb, 0x67, 0x1d, 0x63, 0xda, 0xce, 0xad, 0x71, 0x78, 0xb5, 0x77, 0x88, 0x8f, + 0x97, 0x34, 0x77, 0x97, 0xe4, 0x3d, 0xc8, 0x5e, 0x64, 0x1f, 0x31, 0x65, 0x37, 0x77, 0x74, 0xb5, + 0xbb, 0x77, 0x7b, 0x7e, 0x98, 0x7b, 0x86, 0xa4, 0xec, 0xc5, 0xe8, 0x7c, 0xdc, 0x3d, 0xdb, 0xd7, + 0x1a, 0xb7, 0xa7, 0xe3, 0xdd, 0xf5, 0xfd, 0x72, 0xeb, 0x72, 0xfb, 0x78, 0xe7, 0xbe, 0xd1, 0xb3, + 0x1b, 0x3b, 0x4f, 0xf9, 0x4e, 0xe5, 0xe2, 0xf4, 0x79, 0xeb, 0xba, 0x70, 0x79, 0xaf, 0x54, 0x2e, + 0x8f, 0xf3, 0xca, 0xb1, 0xfa, 0xb4, 0x9d, 0xef, 0x76, 0xb6, 0xd7, 0x7b, 0xdb, 0xe6, 0xab, 0x35, + 0xb0, 0xce, 0xba, 0x8d, 0xab, 0xee, 0xe3, 0xda, 0xdb, 0xe9, 0xb8, 0x31, 0x39, 0x33, 0x6e, 0xdb, + 0x97, 0x07, 0xc6, 0x83, 0xde, 0x30, 0xce, 0xf3, 0xa7, 0x3b, 0x8d, 0x9d, 0x72, 0x61, 0xf7, 0xee, + 0xf5, 0xec, 0xa0, 0xa1, 0x29, 0x0d, 0x02, 0x88, 0xb1, 0x77, 0xf3, 0x72, 0x3d, 0xb8, 0xec, 0x6f, + 0x6f, 0x8b, 0x1b, 0x2b, 0xc2, 0x37, 0x4f, 0xf7, 0x0c, 0x6d, 0xe3, 0xfe, 0x64, 0x77, 0xe7, 0x5b, + 0x96, 0x3e, 0x0b, 0xdf, 0xdc, 0x96, 0xa3, 0xdb, 0xde, 0xc6, 0x4a, 0x67, 0x60, 0xb6, 0x3c, 0xdd, + 0x32, 0x85, 0x8e, 0xa6, 0xb5, 0x9b, 0x6a, 0xeb, 0x25, 0x25, 0x4d, 0x67, 0x43, 0xd5, 0x11, 0x60, + 0xc8, 0xad, 0xd6, 0xa0, 0x0f, 0x98, 0xcf, 0x74, 0x35, 0x6f, 0xd7, 0xd0, 0xf0, 0xd1, 0xdd, 0x9a, + 0xdc, 0xa8, 0xdd, 0x33, 0x18, 0x83, 0x94, 0x88, 0xd4, 0x23, 0x4a, 0xdf, 0x95, 0x1f, 0xb2, 0x11, + 0x66, 0x6d, 0x39, 0x9a, 0xea, 0x69, 0x2c, 0x77, 0x4a, 0xa4, 0xad, 0x88, 0x52, 0xcd, 0xc8, 0x78, + 0x13, 0x9b, 0x0d, 0x9c, 0xde, 0x52, 0xb1, 0xc5, 0xec, 0xb3, 0x3a, 0x54, 0x59, 0x06, 0xd9, 0xc8, + 0xb8, 0x4e, 0xab, 0x2e, 0xea, 0x8e, 0x95, 0x79, 0x76, 0xf1, 0x55, 0x6d, 0xb7, 0x77, 0x87, 0x50, + 0xc7, 0x89, 0xee, 0xc2, 0xe8, 0x6b, 0x4e, 0x4a, 0x34, 0x2c, 0x68, 0x4f, 0xd6, 0xea, 0x1b, 0xd3, + 0x96, 0xad, 0xb7, 0x5e, 0xea, 0xa6, 0x36, 0x12, 0x30, 0xff, 0x36, 0x12, 0xd0, 0x05, 0xa4, 0x60, + 0xa6, 0xcf, 0x36, 0x79, 0x10, 0xe5, 0x29, 0xa1, 0xd4, 0x6a, 0xbe, 0xac, 0xc8, 0xa3, 0x9e, 0xa6, + 0x19, 0x27, 0x7a, 0xb7, 0xe7, 0x99, 0x9a, 0xeb, 0x56, 0x3f, 0xe5, 0x68, 0x4a, 0xc3, 0xec, 0x1a, + 0x5a, 0x35, 0xbf, 0xc6, 0x32, 0xec, 0xe8, 0x8e, 0x46, 0x30, 0x51, 0x15, 0x5b, 0x86, 0xd5, 0x7a, + 0x19, 0xe9, 0xae, 0x06, 0x80, 0xa8, 0x13, 0x6b, 0xe0, 0x55, 0xbf, 0x4f, 0x5b, 0x56, 0xdf, 0xb6, + 0x4c, 0x00, 0xa8, 0x8a, 0x6d, 0x0e, 0xf4, 0xcc, 0x3d, 0x16, 0x92, 0x2d, 0x1b, 0x8b, 0xb8, 0xd5, + 0xe9, 0x6c, 0xf6, 0x63, 0x26, 0xc9, 0x04, 0xb2, 0x8c, 0x65, 0xa6, 0x44, 0xdd, 0xb4, 0xa1, 0x9c, + 0x66, 0x02, 0xc8, 0x29, 0x09, 0x60, 0x86, 0x59, 0x40, 0x00, 0x4d, 0xe5, 0xa4, 0x48, 0x3e, 0x42, + 0xfe, 0x55, 0x98, 0x27, 0x66, 0x57, 0x63, 0x59, 0x07, 0x36, 0x90, 0xa7, 0x76, 0x71, 0x6d, 0xe8, + 0x6d, 0xcd, 0x71, 0x53, 0x90, 0xbf, 0x86, 0x03, 0xe2, 0xbd, 0x8f, 0x65, 0xef, 0x1d, 0x2c, 0x7b, + 0x14, 0xcb, 0x0e, 0x36, 0xe6, 0x59, 0x83, 0x56, 0x8f, 0x20, 0xdb, 0x5b, 0x8a, 0x6c, 0x92, 0xd9, + 0xad, 0x5f, 0xe1, 0xcf, 0x0d, 0x29, 0x03, 0x5d, 0x19, 0xd8, 0xa9, 0xaf, 0xa4, 0x87, 0xdf, 0x69, + 0x83, 0x24, 0x93, 0xf8, 0xe3, 0xab, 0x3c, 0x05, 0x60, 0x0d, 0xcd, 0x03, 0x60, 0x21, 0xd7, 0x21, + 0x4c, 0x5c, 0x67, 0xa8, 0x1a, 0x29, 0xd2, 0x2d, 0x11, 0x51, 0x08, 0xdf, 0x34, 0xb1, 0x5e, 0x0f, + 0xbb, 0x02, 0x3d, 0x69, 0x4f, 0xae, 0x3d, 0xe8, 0xce, 0x97, 0x2f, 0xa9, 0x96, 0xa1, 0xa9, 0x4e, + 0x50, 0xca, 0x93, 0x64, 0xcb, 0x3c, 0x01, 0x40, 0x52, 0x92, 0x34, 0x93, 0x73, 0x8a, 0x82, 0x98, + 0x83, 0x6a, 0x6f, 0xf4, 0xbe, 0x06, 0x83, 0x42, 0x6b, 0xed, 0x65, 0xa0, 0xb3, 0x80, 0xe6, 0xed, + 0x9e, 0x6e, 0xb4, 0xa1, 0xc8, 0x4c, 0x2e, 0x7d, 0x20, 0x9f, 0x41, 0xf3, 0xad, 0x7c, 0xcb, 0xb2, + 0x79, 0x00, 0x13, 0xc2, 0x9b, 0xc0, 0xc4, 0x58, 0xf9, 0x8f, 0x0e, 0xb0, 0x9b, 0xd5, 0x8e, 0xda, + 0xd2, 0xa6, 0xec, 0xa9, 0xaf, 0x1b, 0x93, 0xea, 0xfd, 0x21, 0x30, 0x09, 0xb7, 0x06, 0xe8, 0xab, + 0x0e, 0x1c, 0x23, 0x45, 0xf8, 0x07, 0x7e, 0xcf, 0x8e, 0xac, 0x4e, 0x27, 0x5f, 0xf3, 0xf9, 0x1c, + 0x61, 0x73, 0x3e, 0x2f, 0x69, 0x2b, 0xeb, 0xfb, 0xa7, 0xdd, 0x06, 0xe1, 0x24, 0x8d, 0x86, 0x79, + 0xdb, 0x68, 0xb8, 0x74, 0x7a, 0xe6, 0xf0, 0x6f, 0x7f, 0xaf, 0xd1, 0xd8, 0x7f, 0xea, 0x77, 0x1b, + 0x0b, 0xff, 0xdb, 0xea, 0x37, 0x1a, 0xdd, 0x87, 0xd1, 0xd5, 0x76, 0xe3, 0xb5, 0xf5, 0x78, 0xf4, + 0x74, 0xd8, 0xb8, 0x79, 0xdc, 0x3e, 0x6a, 0x9c, 0x8d, 0xb6, 0xdf, 0xac, 0xc6, 0xd6, 0x36, 0xb0, + 0xa4, 0xd1, 0xe3, 0xc1, 0xe1, 0x96, 0xbb, 0xb6, 0x53, 0xd1, 0xcf, 0x47, 0x6f, 0xdd, 0x7e, 0xe1, + 0xf4, 0xe1, 0xd4, 0x7c, 0x7b, 0xda, 0x7e, 0xf1, 0xcc, 0xe7, 0x56, 0xf3, 0x2c, 0x7d, 0x69, 0x1c, + 0x9d, 0xa8, 0x47, 0x85, 0x81, 0x71, 0x7b, 0x62, 0x1b, 0xf6, 0x7d, 0xf9, 0xf6, 0xf5, 0x5e, 0xb7, + 0xb4, 0xeb, 0xf5, 0xdc, 0xd1, 0x44, 0x53, 0x9e, 0x6f, 0x8d, 0xa3, 0xd1, 0x93, 0x53, 0x32, 0x6f, + 0xda, 0xbb, 0x85, 0x13, 0xd3, 0x6b, 0x5f, 0x0c, 0x1b, 0xdd, 0x74, 0xc7, 0xcb, 0x76, 0x9a, 0xee, + 0x89, 0xbb, 0x6f, 0x9c, 0x9d, 0x0c, 0x7a, 0x46, 0xff, 0xf2, 0xf9, 0x58, 0x5f, 0x3b, 0xbb, 0xd8, + 0xd9, 0x3d, 0xec, 0x8e, 0x6e, 0xfa, 0xc0, 0xc3, 0xd4, 0x72, 0xbf, 0x6d, 0xa4, 0xaf, 0x0f, 0x6e, + 0xb7, 0x7a, 0xbb, 0x87, 0xed, 0x83, 0xbd, 0xb1, 0xfa, 0xb2, 0xe6, 0x16, 0x77, 0xb3, 0x93, 0xb7, + 0xde, 0xd1, 0xf5, 0xf3, 0xf6, 0xda, 0xd6, 0xe5, 0xe5, 0x49, 0x67, 0x67, 0x64, 0xd9, 0x7b, 0x59, + 0xbd, 0xac, 0xbe, 0x5e, 0xef, 0x1a, 0xbb, 0x7b, 0x3b, 0x0f, 0xe3, 0xca, 0xd3, 0xdd, 0xfd, 0xf3, + 0xa4, 0xe0, 0x4c, 0xfa, 0xc5, 0xb3, 0xf2, 0x9e, 0xf1, 0x74, 0x59, 0xec, 0x0d, 0xd2, 0xe6, 0x83, + 0xbb, 0x7f, 0xb8, 0x73, 0x7a, 0xb9, 0x57, 0xe8, 0x36, 0xc6, 0x6a, 0xae, 0xd8, 0xe8, 0x36, 0x1c, + 0xef, 0xee, 0xb4, 0xd7, 0x79, 0xe9, 0x3e, 0x77, 0x76, 0x1b, 0x4d, 0x7d, 0xbb, 0x37, 0x1a, 0x5c, + 0x1f, 0x8e, 0x76, 0x6f, 0xb7, 0xfb, 0x83, 0xf6, 0x45, 0x4f, 0xbf, 0x6c, 0xdf, 0x94, 0x9d, 0xe1, + 0xe1, 0xf3, 0xc9, 0xf5, 0xd5, 0xd3, 0xee, 0x68, 0xa7, 0xb7, 0xb7, 0xbe, 0x75, 0xe8, 0x5a, 0xd6, + 0x61, 0xa9, 0x70, 0x73, 0x78, 0x75, 0x68, 0x1d, 0xde, 0xee, 0x54, 0x5e, 0x26, 0x67, 0x4f, 0x87, + 0x6b, 0xb7, 0xcf, 0x8d, 0xc9, 0xa9, 0x73, 0x95, 0x55, 0x4f, 0xb3, 0x3b, 0x23, 0xf5, 0xdc, 0xb6, + 0xde, 0xd4, 0xde, 0xfa, 0xc9, 0xfe, 0xb6, 0xfb, 0x98, 0x7f, 0x3b, 0xcb, 0x3f, 0x9e, 0xbf, 0xb9, + 0xf9, 0x93, 0xc2, 0xf8, 0x55, 0x3b, 0xb3, 0x8b, 0x6f, 0x0f, 0xcf, 0xaf, 0x95, 0xe6, 0xc3, 0x4d, + 0xb6, 0x77, 0xba, 0x75, 0xf2, 0x9c, 0x2d, 0x15, 0x1e, 0x77, 0x1a, 0x87, 0xd7, 0xe9, 0xb5, 0x41, + 0xb9, 0x5c, 0x31, 0x0b, 0x07, 0xe9, 0x83, 0xab, 0x8b, 0xf6, 0x53, 0x3b, 0x37, 0x28, 0xdc, 0xbc, + 0xb5, 0xaf, 0x9e, 0xda, 0x77, 0xa7, 0x37, 0x9d, 0x43, 0xa3, 0x74, 0xd0, 0x39, 0xee, 0xb6, 0x73, + 0xcd, 0xb5, 0xeb, 0xe1, 0x6b, 0x7b, 0xfd, 0x7e, 0x7d, 0x60, 0x3b, 0xed, 0x8b, 0xca, 0xe5, 0xcd, + 0x79, 0x5f, 0x53, 0xdf, 0x4a, 0x37, 0x17, 0xe7, 0x57, 0x47, 0xc6, 0xce, 0xce, 0xf3, 0xc1, 0xdd, + 0xf3, 0xbe, 0xd2, 0x38, 0x3b, 0xbd, 0x7c, 0x74, 0xfb, 0x57, 0xce, 0xb1, 0xd1, 0xb7, 0x27, 0xaf, + 0x77, 0x6b, 0x2f, 0x83, 0xe6, 0xe1, 0xe5, 0x76, 0x7e, 0xff, 0xfa, 0xf0, 0x65, 0xef, 0x3a, 0x7d, + 0x6a, 0x6a, 0xdb, 0x47, 0xc5, 0xca, 0xd1, 0xd1, 0xde, 0xdd, 0x76, 0xef, 0xb2, 0x33, 0x18, 0x1d, + 0x9f, 0xda, 0xf9, 0xc9, 0xed, 0xba, 0xdd, 0x7f, 0xcd, 0xdd, 0x1d, 0xdf, 0x5e, 0x95, 0x1d, 0xcd, + 0x53, 0xf6, 0x6d, 0xe5, 0xfa, 0xf9, 0xee, 0xf1, 0xea, 0x6a, 0x2f, 0xfd, 0xf0, 0xbc, 0x96, 0x3e, + 0xd7, 0x6f, 0xaf, 0x5f, 0xb2, 0xfb, 0x87, 0x6f, 0x83, 0x5c, 0x5f, 0x3f, 0x78, 0xba, 0x1f, 0xa7, + 0xbb, 0x95, 0xc7, 0xdc, 0xd5, 0xed, 0x8b, 0x77, 0xd1, 0x7f, 0x3d, 0xd4, 0xbd, 0xab, 0x9b, 0x87, + 0xbb, 0xb3, 0xb7, 0xb7, 0x6d, 0x6f, 0xb0, 0x77, 0x71, 0xdc, 0x3a, 0x50, 0xde, 0xae, 0xb6, 0xf6, + 0xd3, 0x8f, 0xeb, 0xd9, 0x6d, 0xb3, 0xb7, 0xa5, 0xe6, 0x95, 0x61, 0xc9, 0x3a, 0xe8, 0xb8, 0xbb, + 0xb7, 0xa7, 0xdd, 0x87, 0xd3, 0x8b, 0xdd, 0xce, 0x79, 0xe9, 0xa9, 0x75, 0x34, 0x56, 0xf6, 0x0e, + 0x2f, 0xf4, 0xbb, 0xc9, 0xa8, 0xfb, 0xdc, 0x2c, 0x9f, 0x1e, 0x0e, 0xee, 0xd2, 0xd6, 0x53, 0x71, + 0x98, 0x7f, 0x79, 0x29, 0x67, 0xdf, 0xcc, 0xc3, 0xf1, 0xce, 0xb1, 0xd3, 0x1d, 0x9c, 0xe6, 0xf3, + 0x93, 0x74, 0xf3, 0xbe, 0x32, 0xba, 0xdd, 0x7f, 0xd5, 0xd7, 0xd4, 0x93, 0x4a, 0xe7, 0xf2, 0xe8, + 0x6d, 0x64, 0x6e, 0x3f, 0x57, 0xbc, 0x43, 0xdb, 0x6e, 0x1f, 0xae, 0x37, 0x1f, 0x77, 0xae, 0xef, + 0x8e, 0xee, 0xb6, 0x2f, 0x0f, 0x4d, 0xdd, 0xbe, 0x57, 0x0e, 0x9a, 0x5e, 0xcb, 0x68, 0xdd, 0xac, + 0x0d, 0xb7, 0x27, 0x27, 0xfd, 0x07, 0xf5, 0xfa, 0xce, 0xb9, 0xbc, 0x3e, 0x3b, 0x9d, 0x34, 0xd5, + 0xa3, 0xa3, 0xad, 0x5e, 0xfe, 0x42, 0x7f, 0x70, 0x1e, 0x9a, 0xdd, 0x76, 0xb9, 0xd1, 0x7c, 0xd5, + 0x5a, 0xed, 0x9d, 0x9b, 0xf3, 0xf5, 0xdd, 0xcb, 0xdd, 0x43, 0xed, 0x5e, 0xb9, 0xbb, 0xb8, 0xbf, + 0x6c, 0xb5, 0x2f, 0x2b, 0x86, 0x77, 0x71, 0xbe, 0x3b, 0x48, 0xaf, 0x95, 0x5f, 0xf3, 0x87, 0xe3, + 0xdb, 0x1b, 0xeb, 0x48, 0xbb, 0xb7, 0x3b, 0xcf, 0x97, 0xfa, 0xc1, 0xc1, 0x41, 0x09, 0xa6, 0xd2, + 0xce, 0xc9, 0x73, 0xae, 0x79, 0xd0, 0xbd, 0x1c, 0x3f, 0xb8, 0xb7, 0xd0, 0xa1, 0xe3, 0xc7, 0x66, + 0x37, 0xbd, 0x3d, 0x86, 0xff, 0x95, 0xd7, 0xb5, 0x83, 0xd6, 0xf9, 0x10, 0x18, 0xf4, 0x51, 0xce, + 0x28, 0x37, 0x15, 0x73, 0x67, 0xed, 0x79, 0x3f, 0xdd, 0xbc, 0x6e, 0xe4, 0xda, 0xdb, 0x4f, 0x77, + 0xe3, 0xfe, 0xa8, 0xf2, 0x74, 0x94, 0x3d, 0x7c, 0xf4, 0xc6, 0x17, 0x5e, 0xf3, 0x68, 0x6c, 0xd8, + 0x97, 0xd9, 0x93, 0xfd, 0xe7, 0xeb, 0x57, 0x45, 0xb9, 0xe9, 0xb7, 0xcf, 0x0e, 0x9f, 0xc6, 0xce, + 0xbe, 0x66, 0xa4, 0x27, 0x69, 0xe7, 0xe9, 0xc8, 0xb1, 0xd2, 0xe6, 0x6d, 0xaf, 0x70, 0xe1, 0x9c, + 0x1d, 0xee, 0x8f, 0x8e, 0xcb, 0xf7, 0xce, 0xc3, 0xd9, 0xe9, 0x5d, 0x7e, 0x7c, 0xa3, 0x5d, 0xdd, + 0x1f, 0x5c, 0x3f, 0x5f, 0xb7, 0x5e, 0xbc, 0x93, 0xa3, 0x8e, 0x96, 0x73, 0x5a, 0x6b, 0xae, 0x3d, + 0x19, 0xbe, 0x14, 0x9a, 0xe5, 0xbb, 0xe2, 0x4b, 0xb1, 0x72, 0xed, 0x14, 0x1a, 0xfd, 0xdc, 0xc5, + 0x30, 0x7b, 0xa9, 0x77, 0x7a, 0xee, 0x61, 0x7e, 0x70, 0x3a, 0x6c, 0x55, 0xca, 0x85, 0x73, 0xfd, + 0xf2, 0xf2, 0xea, 0xcc, 0xd2, 0xda, 0xf6, 0x45, 0xe7, 0xc0, 0xbc, 0x1e, 0xb5, 0x80, 0x17, 0xa6, + 0xd5, 0x9d, 0xdd, 0xdd, 0xf2, 0x5a, 0xeb, 0xf8, 0xed, 0xa6, 0xbb, 0x65, 0x5c, 0x76, 0x9f, 0xed, + 0xe7, 0xee, 0xcd, 0x8e, 0x79, 0xe4, 0xed, 0x9b, 0x0f, 0xf9, 0xd7, 0x66, 0xff, 0xe1, 0xa8, 0xbc, + 0x77, 0xbe, 0x75, 0xf2, 0xb4, 0x36, 0x72, 0x9d, 0xf4, 0xd1, 0xd3, 0xdb, 0xa3, 0xd9, 0x7c, 0x6e, + 0x37, 0x5f, 0xb6, 0x07, 0xbb, 0x9d, 0x5b, 0xe5, 0x60, 0x68, 0x8c, 0x5e, 0x9b, 0xde, 0x6d, 0xf7, + 0x68, 0xed, 0xed, 0xea, 0x61, 0xef, 0xec, 0xc8, 0x1d, 0x5e, 0x8f, 0x8d, 0xd1, 0x5b, 0xfe, 0xfe, + 0xd1, 0x53, 0x8b, 0xe3, 0x67, 0x47, 0xcf, 0x76, 0xdc, 0x81, 0x61, 0x9a, 0x7b, 0x77, 0x17, 0x13, + 0xcb, 0xb4, 0x2f, 0x94, 0xab, 0x93, 0x92, 0x75, 0x77, 0x76, 0xfc, 0xf2, 0xd2, 0xd9, 0x35, 0xf6, + 0x8b, 0x2d, 0xf7, 0x66, 0xe7, 0xac, 0xe1, 0x76, 0xdf, 0xb6, 0x0b, 0x95, 0xfd, 0xb5, 0xee, 0xf5, + 0xf1, 0x5d, 0xf7, 0xfa, 0x69, 0xad, 0x9f, 0x6d, 0xed, 0x0e, 0x8f, 0x1b, 0x27, 0xfd, 0xf1, 0xf1, + 0x5b, 0x36, 0x3b, 0x58, 0xeb, 0x95, 0xb5, 0xee, 0xc1, 0xde, 0xda, 0xa9, 0x73, 0x50, 0x7c, 0x3e, + 0xb2, 0xb3, 0x4f, 0xe3, 0xe2, 0x6b, 0x21, 0xaf, 0x56, 0x6e, 0xd6, 0x72, 0x63, 0xf3, 0xe0, 0xee, + 0x6a, 0x7b, 0xdf, 0xe8, 0xec, 0x3d, 0x9d, 0x79, 0x5e, 0x3b, 0xbf, 0xd7, 0xba, 0x55, 0xd5, 0x49, + 0x59, 0x5b, 0xbf, 0x78, 0xe9, 0x0d, 0x5a, 0x93, 0x2b, 0xc5, 0xba, 0x18, 0xe4, 0xde, 0x72, 0x6f, + 0xd9, 0x9d, 0xad, 0x74, 0x65, 0xa4, 0x8f, 0x1b, 0x7b, 0xed, 0xd3, 0xdb, 0x5c, 0xd7, 0xec, 0x6f, + 0x15, 0xc7, 0x8d, 0x51, 0xb9, 0x62, 0x8f, 0x0e, 0x5a, 0xf7, 0xcf, 0xc6, 0x9e, 0xb3, 0x65, 0x3e, + 0x8c, 0x4f, 0x9e, 0x9f, 0xcb, 0x85, 0xdb, 0xfd, 0xee, 0xf0, 0x6c, 0xff, 0x6e, 0xbf, 0x71, 0xb4, + 0xf7, 0x36, 0xde, 0x1b, 0xa5, 0xef, 0xad, 0xbe, 0xb9, 0x76, 0xda, 0xd0, 0x9b, 0x77, 0xcd, 0x41, + 0xd9, 0xd0, 0x0e, 0xae, 0xb6, 0x4a, 0x6e, 0x2b, 0xa7, 0x74, 0x4e, 0xbc, 0xa6, 0xd3, 0x76, 0xb2, + 0x47, 0xaf, 0x77, 0xe5, 0x47, 0x27, 0x6d, 0x0d, 0x47, 0x7b, 0xde, 0xd5, 0xc1, 0xee, 0xda, 0x69, + 0xf1, 0x6d, 0x7f, 0x5d, 0x79, 0x3d, 0xdb, 0x2a, 0x3f, 0x5e, 0xed, 0x5a, 0x56, 0x29, 0xf7, 0xb2, + 0x77, 0xa4, 0x36, 0x5f, 0x0b, 0x67, 0xda, 0xc1, 0xdd, 0x71, 0x5b, 0xeb, 0x64, 0x7b, 0xee, 0xe9, + 0xde, 0xde, 0xb5, 0xed, 0x95, 0xfa, 0x95, 0x87, 0xfe, 0xd1, 0xeb, 0xce, 0x4e, 0xc3, 0xbc, 0x52, + 0x5a, 0xc5, 0x5c, 0xa5, 0x3f, 0xee, 0x8f, 0x9d, 0xcb, 0xb7, 0xcb, 0xc1, 0xe4, 0xc2, 0x74, 0xed, + 0xab, 0x51, 0xa7, 0xf1, 0xf8, 0x62, 0x7b, 0xbd, 0x37, 0x07, 0xd0, 0x72, 0x93, 0x1b, 0x9f, 0x5d, + 0x77, 0x8a, 0xf7, 0xde, 0xd6, 0xe9, 0xe9, 0xfa, 0xce, 0xe5, 0x4d, 0x6e, 0x7d, 0x70, 0x92, 0xee, + 0x36, 0x8b, 0x6b, 0xdd, 0xbd, 0x93, 0x8b, 0x42, 0xeb, 0x46, 0xa9, 0xec, 0x55, 0x0e, 0x8b, 0xed, + 0xa7, 0xf1, 0x91, 0x51, 0xcc, 0xed, 0xbb, 0xe3, 0xf5, 0xfb, 0x83, 0xb7, 0x93, 0xad, 0xf3, 0x83, + 0xb7, 0xfb, 0xe7, 0xab, 0xeb, 0xf5, 0xb3, 0x93, 0xed, 0xf3, 0xdb, 0xad, 0xed, 0xbd, 0xcb, 0xf4, + 0x60, 0xbf, 0xb7, 0x95, 0xbd, 0x5b, 0x7b, 0x7a, 0xbb, 0x1d, 0x1d, 0xef, 0x5e, 0xdf, 0xf4, 0x77, + 0x1c, 0xfd, 0x28, 0x7d, 0x8b, 0xb4, 0x9f, 0x6d, 0xee, 0x3d, 0xec, 0x9d, 0x9e, 0x9c, 0xb8, 0xcf, + 0x5d, 0xbd, 0xe1, 0x15, 0x6d, 0x7b, 0x6d, 0x60, 0xd8, 0xe3, 0x66, 0xde, 0x7b, 0xdb, 0xad, 0x1c, + 0x56, 0xc6, 0xbd, 0xc9, 0xc1, 0xf9, 0xce, 0xd6, 0x71, 0xe1, 0x7a, 0xbf, 0x5b, 0xbe, 0xbc, 0xc8, + 0xe5, 0xb7, 0xf4, 0x8b, 0xc2, 0xe3, 0xe9, 0x28, 0xef, 0xec, 0xec, 0x79, 0xf7, 0xb7, 0x3b, 0x0f, + 0x27, 0x69, 0xcd, 0x35, 0x87, 0x85, 0x83, 0xf5, 0xcb, 0xf1, 0x6b, 0xa7, 0xdf, 0xdc, 0x31, 0x9b, + 0xa7, 0x27, 0xcf, 0xfb, 0xb7, 0x7b, 0xf6, 0xeb, 0xeb, 0x53, 0xd3, 0xbc, 0xbf, 0xee, 0x2a, 0x46, + 0xef, 0x7e, 0xb8, 0x3e, 0xba, 0x2d, 0x94, 0x5e, 0x6f, 0x0e, 0x5e, 0x2f, 0xd6, 0xdf, 0x5e, 0x6f, + 0x9d, 0x93, 0xb5, 0x97, 0xd7, 0xe3, 0xe7, 0xca, 0xe3, 0xf3, 0xd3, 0x5b, 0x57, 0xc9, 0xd9, 0xcd, + 0xf5, 0xf4, 0xe4, 0xb2, 0xe2, 0x3e, 0x3c, 0xd9, 0x8f, 0xe3, 0xe3, 0x7d, 0x7d, 0xef, 0xe8, 0xe6, + 0xcc, 0x3d, 0x1c, 0x8d, 0xec, 0xc9, 0x55, 0xb1, 0xd8, 0xdd, 0x3d, 0x37, 0xef, 0xb2, 0x69, 0x0d, + 0x08, 0xa9, 0x7d, 0xb0, 0x93, 0xcd, 0x1b, 0x97, 0x85, 0xc1, 0x75, 0x69, 0x92, 0x7b, 0x7d, 0x3b, + 0x7c, 0xf3, 0x1e, 0x6e, 0xcf, 0x2e, 0x76, 0xcb, 0x56, 0xfb, 0xf1, 0x48, 0xb9, 0x78, 0xbd, 0xd5, + 0xef, 0x8f, 0xbc, 0xee, 0xf1, 0xfe, 0xf1, 0xe9, 0xe1, 0xc9, 0x63, 0x59, 0x69, 0x8f, 0xb5, 0xc7, + 0x89, 0xd9, 0x6c, 0xa6, 0xdd, 0xbd, 0xe3, 0xe3, 0xd7, 0x33, 0x53, 0xb9, 0x7f, 0xcb, 0x3b, 0x27, + 0xde, 0x69, 0x73, 0xeb, 0xf2, 0xfe, 0xc2, 0x7c, 0xf4, 0xfa, 0x47, 0x6a, 0xf1, 0xfe, 0x75, 0xef, + 0xca, 0x6a, 0x66, 0xd7, 0xfb, 0xfd, 0xc1, 0xa4, 0x75, 0x79, 0x37, 0x5c, 0xd3, 0x3b, 0xdb, 0x67, + 0xc3, 0x07, 0xc7, 0xe8, 0xbd, 0x75, 0x77, 0x4e, 0x76, 0x86, 0x20, 0x82, 0xa7, 0x2b, 0x07, 0xa5, + 0xf1, 0xf3, 0xf1, 0x7a, 0xb1, 0xd2, 0xda, 0xd1, 0xbc, 0xf4, 0x9e, 0xfa, 0xd0, 0xb9, 0x4e, 0x9f, + 0xbc, 0x58, 0xd9, 0x7b, 0x2f, 0x3d, 0xbc, 0x6e, 0xbd, 0xaa, 0xce, 0x6b, 0xf9, 0xe5, 0xe9, 0xa6, + 0xf9, 0x52, 0x3c, 0x53, 0x8f, 0x5f, 0xed, 0xf3, 0xe6, 0xcb, 0xee, 0xae, 0xed, 0xaa, 0xad, 0xf5, + 0x93, 0x9c, 0x73, 0x75, 0xf6, 0x70, 0xd4, 0xbd, 0x68, 0x3a, 0xf7, 0x93, 0x9d, 0xf6, 0xe3, 0xb3, + 0x56, 0xf6, 0xb6, 0x2e, 0x1b, 0x6f, 0xde, 0x4b, 0xf3, 0x71, 0x5b, 0x19, 0xed, 0x68, 0xc5, 0x5b, + 0xf3, 0x4c, 0xb7, 0xfb, 0xe6, 0x13, 0xc8, 0x2a, 0x83, 0xec, 0xe0, 0xb9, 0x53, 0x3e, 0xee, 0xac, + 0x0d, 0xb5, 0x5c, 0x2e, 0x7f, 0x30, 0xe8, 0xac, 0xe7, 0x77, 0x87, 0xd9, 0x35, 0xcd, 0xdc, 0xca, + 0xa6, 0xcd, 0x8b, 0x35, 0xbb, 0x09, 0x42, 0xe6, 0xe5, 0xd1, 0x53, 0x53, 0x57, 0x9e, 0xb7, 0xaf, + 0x6d, 0xeb, 0x6c, 0x1d, 0x3a, 0x7e, 0xf3, 0xf2, 0xbc, 0x76, 0x74, 0x3a, 0xb2, 0x9b, 0xf7, 0x5d, + 0xcb, 0x6e, 0x34, 0x7b, 0x5e, 0xf3, 0xfc, 0xfe, 0x65, 0xe2, 0x35, 0xf6, 0x0a, 0xc7, 0xe9, 0xec, + 0xab, 0xa5, 0x5c, 0x37, 0xae, 0xcf, 0xee, 0xf3, 0xfb, 0xf9, 0xe6, 0x49, 0xc7, 0x74, 0x7b, 0xf6, + 0x56, 0x51, 0x5d, 0x6f, 0xf7, 0xdf, 0xd6, 0xb2, 0x07, 0xe3, 0x6c, 0xb6, 0xdd, 0x2a, 0x9c, 0x3f, + 0x9c, 0x3d, 0x15, 0x81, 0x56, 0x27, 0x0f, 0xb7, 0x77, 0xf9, 0xf6, 0xe3, 0x95, 0xbb, 0xb3, 0xbe, + 0xf6, 0x7a, 0x7c, 0xb2, 0xb6, 0xfe, 0xaa, 0xbe, 0x0d, 0xa0, 0x6b, 0x87, 0xb9, 0xe1, 0xc5, 0xc3, + 0xcd, 0x5a, 0x61, 0xad, 0xd4, 0xbc, 0xbf, 0xde, 0xb7, 0x5a, 0x5b, 0x56, 0x67, 0x27, 0xaf, 0x1d, + 0x5e, 0xbd, 0x1d, 0x29, 0xad, 0xd3, 0x6d, 0x05, 0x64, 0xb5, 0xd1, 0xa5, 0xd2, 0xed, 0x0c, 0x07, + 0xd7, 0xed, 0x61, 0x3b, 0x57, 0xec, 0xe4, 0x06, 0x40, 0xf5, 0x27, 0x17, 0xbb, 0x85, 0xa3, 0xa3, + 0x83, 0x93, 0xf2, 0x60, 0xbb, 0x9d, 0x35, 0x4b, 0x66, 0xa5, 0x5d, 0x28, 0xdd, 0x9e, 0x1f, 0x5f, + 0x98, 0x65, 0xb3, 0xe7, 0xc0, 0x02, 0xe9, 0xdc, 0x15, 0xd4, 0x76, 0xc1, 0x7c, 0xcb, 0xeb, 0x37, + 0xfa, 0xd9, 0x49, 0x31, 0x57, 0xdc, 0x35, 0xb5, 0xce, 0x49, 0xf6, 0x68, 0xff, 0xc4, 0xb8, 0x7f, + 0xf2, 0x9e, 0xee, 0xd5, 0x57, 0x6b, 0xb7, 0x57, 0x1c, 0x5f, 0x3f, 0x0f, 0xdd, 0xfd, 0x66, 0xb6, + 0xdc, 0x5f, 0x77, 0xd4, 0x3d, 0xc3, 0x3d, 0xe9, 0x17, 0x07, 0x07, 0x2f, 0x97, 0xf7, 0xc6, 0x70, + 0xed, 0x26, 0x3b, 0xd2, 0x9e, 0xde, 0x9e, 0x0f, 0x0e, 0xb4, 0xb5, 0xf1, 0x93, 0x7e, 0xfb, 0x66, + 0x1f, 0x95, 0xee, 0x1b, 0xf7, 0x5b, 0x27, 0x3b, 0x67, 0xa3, 0xab, 0xe3, 0xf1, 0xe8, 0xea, 0xd1, + 0xdc, 0xb3, 0x1e, 0xf6, 0xc7, 0x2d, 0xf5, 0x78, 0x7c, 0x56, 0xde, 0xb9, 0xaa, 0x6c, 0x9d, 0x99, + 0x79, 0x6b, 0xfd, 0xec, 0x15, 0x46, 0xd8, 0x1b, 0x3a, 0x6a, 0xe9, 0xc6, 0x3c, 0x7c, 0x7e, 0x38, + 0xdd, 0x32, 0xfa, 0x87, 0x7b, 0x4f, 0x85, 0xc9, 0xc5, 0xe3, 0x43, 0xe1, 0xd4, 0x5b, 0x1f, 0x96, + 0xfa, 0xfd, 0x83, 0xc1, 0xe8, 0x71, 0x38, 0x1c, 0x5f, 0x0c, 0x35, 0xe7, 0x64, 0x5d, 0xbb, 0x1e, + 0xba, 0x6f, 0x0f, 0x67, 0xcf, 0xb7, 0x0f, 0xce, 0x4b, 0xf3, 0xb5, 0xb5, 0x7f, 0x7e, 0x77, 0x9f, + 0x6f, 0xee, 0x36, 0x77, 0xf6, 0x8f, 0xf5, 0xc2, 0xe9, 0xc9, 0xdd, 0xcd, 0xfd, 0xdb, 0xdb, 0xfd, + 0xc1, 0x5e, 0xa9, 0xb8, 0x35, 0xc8, 0xe6, 0x9d, 0x46, 0xee, 0xf5, 0xc5, 0x2a, 0x1b, 0xeb, 0x9d, + 0xbd, 0xee, 0x5d, 0x73, 0x6b, 0xe0, 0x74, 0xee, 0xb6, 0xee, 0xf7, 0xf6, 0x8c, 0xbb, 0xfb, 0xdc, + 0xa0, 0x3b, 0x3e, 0x1f, 0xb5, 0xdc, 0x74, 0xe5, 0x3e, 0x9b, 0x05, 0xfe, 0xf4, 0x74, 0xa4, 0x6b, + 0x27, 0xc6, 0xfa, 0xfd, 0x43, 0xa3, 0xa2, 0xed, 0x9f, 0x94, 0x5a, 0xce, 0xd6, 0x5a, 0xa7, 0x77, + 0x7e, 0x3a, 0x19, 0x1b, 0x95, 0xe6, 0xf3, 0xe5, 0xfd, 0xfe, 0xf3, 0x56, 0xae, 0x79, 0x9f, 0xb5, + 0x5e, 0xca, 0xb7, 0xad, 0x57, 0xcd, 0x74, 0x9d, 0xb5, 0xbd, 0xca, 0xc1, 0xda, 0xc0, 0x73, 0xfb, + 0xed, 0x57, 0xeb, 0xa0, 0xff, 0xb6, 0xbe, 0xee, 0x0c, 0x27, 0xda, 0x6e, 0xf6, 0xe2, 0x0d, 0x04, + 0x84, 0x62, 0x7f, 0x78, 0xf7, 0x70, 0xf2, 0x3c, 0x79, 0xac, 0x0c, 0x2b, 0xcf, 0xa5, 0x87, 0xde, + 0x93, 0x76, 0x50, 0x50, 0x2f, 0x1e, 0xd6, 0x4a, 0x6d, 0x5b, 0x3f, 0x2f, 0x69, 0x67, 0xd9, 0xf3, + 0xb7, 0x51, 0x6b, 0x7f, 0xed, 0xed, 0xa5, 0x63, 0x78, 0x59, 0xb7, 0x5d, 0xd2, 0xd6, 0x1e, 0x5b, + 0xaf, 0xcd, 0x73, 0x6b, 0xd4, 0xb9, 0xea, 0xe6, 0xf3, 0x57, 0xa5, 0x52, 0xa5, 0xa4, 0x7a, 0xf9, + 0xe1, 0xc3, 0x43, 0x65, 0xed, 0x3e, 0xf7, 0xa8, 0x74, 0x2f, 0x95, 0xb5, 0xf5, 0xe2, 0xfa, 0x9a, + 0xf6, 0x78, 0x93, 0xdb, 0x7d, 0x99, 0x58, 0xbb, 0xaf, 0xa7, 0x8f, 0x20, 0x03, 0x1e, 0xb4, 0x2b, + 0x97, 0xc3, 0xe3, 0x7d, 0xe7, 0x6a, 0xbf, 0xdc, 0x3c, 0x7a, 0xbc, 0xd9, 0xd9, 0xde, 0x7e, 0x7a, + 0xdc, 0xdf, 0xbd, 0x6f, 0xf5, 0x4b, 0xfb, 0x39, 0x40, 0x63, 0x5e, 0x2f, 0x15, 0x1f, 0xd7, 0xef, + 0x3d, 0x7d, 0x6b, 0xf0, 0x62, 0x5c, 0x94, 0xd6, 0x1e, 0xbd, 0xad, 0xa7, 0xd3, 0xc6, 0xbd, 0x31, + 0xc8, 0x77, 0x1e, 0xdf, 0x76, 0x4e, 0xd7, 0x2e, 0xd3, 0xa5, 0x3d, 0xe0, 0xe4, 0xd7, 0x85, 0xf3, + 0xb7, 0xd2, 0x33, 0xac, 0x61, 0x87, 0x6a, 0xcb, 0x6b, 0xde, 0x5f, 0x58, 0xa3, 0xc1, 0x65, 0xf7, + 0x6c, 0x72, 0x60, 0x0c, 0x8e, 0x0d, 0x75, 0xb4, 0x3e, 0x32, 0x9b, 0xe7, 0x7d, 0x6f, 0xa0, 0x3e, + 0x5b, 0xd9, 0xbb, 0xeb, 0xd1, 0x3a, 0x70, 0xe4, 0xeb, 0xab, 0xd1, 0x69, 0x6b, 0x00, 0x64, 0xf9, + 0x34, 0xda, 0xeb, 0xf5, 0xca, 0xee, 0x5a, 0xcf, 0x7d, 0x75, 0xf4, 0xfb, 0x6d, 0xb7, 0xdb, 0xc8, + 0xbb, 0x05, 0x73, 0x0f, 0xc4, 0xe6, 0xe2, 0xe1, 0xda, 0x79, 0x5a, 0x75, 0xc7, 0xa3, 0xf1, 0x53, + 0xd3, 0x3b, 0x39, 0x51, 0x0a, 0xbb, 0xeb, 0xcd, 0x5e, 0xeb, 0xaa, 0xfc, 0xf8, 0xb6, 0xde, 0x3f, + 0x6c, 0xee, 0x29, 0xb7, 0xeb, 0xe5, 0x63, 0x65, 0xbc, 0xdf, 0x58, 0x6b, 0x8e, 0xd7, 0x27, 0x69, + 0x23, 0x9f, 0xcd, 0xae, 0x15, 0x9e, 0xd3, 0x07, 0x79, 0x5d, 0xd9, 0xdd, 0x6f, 0xe7, 0xd7, 0x06, + 0x8d, 0xbb, 0xb3, 0xc3, 0xec, 0x7d, 0x6f, 0xfb, 0x71, 0x70, 0xff, 0x7a, 0xb8, 0xa3, 0x3e, 0x8e, + 0xd5, 0xb6, 0xab, 0x18, 0xad, 0xbb, 0xbd, 0xbb, 0x74, 0xfb, 0xdc, 0x38, 0xe8, 0x6f, 0x8d, 0xb3, + 0xaf, 0xe7, 0x6b, 0xad, 0x72, 0x76, 0xf0, 0xf4, 0xa0, 0x78, 0x57, 0xda, 0xad, 0x77, 0x74, 0x39, + 0x2c, 0x17, 0x27, 0x40, 0xbe, 0x8d, 0xe1, 0x43, 0x79, 0xbc, 0xa3, 0xbd, 0x35, 0x1e, 0xb2, 0x95, + 0xfb, 0x7e, 0x65, 0xbb, 0xdb, 0xcb, 0xae, 0x97, 0xce, 0xd7, 0xcf, 0xc7, 0xee, 0xd9, 0xf6, 0xa3, + 0xe9, 0x3e, 0xdc, 0x5f, 0xa6, 0xd7, 0xec, 0xed, 0xb7, 0x4a, 0xf6, 0xec, 0xf4, 0xa9, 0xb4, 0xf6, + 0xd4, 0x38, 0xdc, 0xdf, 0x6d, 0xdf, 0x8c, 0xd2, 0xaa, 0x5d, 0xb9, 0x4b, 0x1f, 0x16, 0xce, 0x6e, + 0xef, 0x34, 0x98, 0x53, 0x23, 0x7d, 0x98, 0x36, 0x5a, 0xad, 0xd7, 0xe7, 0xdc, 0x5a, 0xfe, 0x61, + 0xed, 0x71, 0x54, 0xea, 0x1e, 0x35, 0x6e, 0x2f, 0xf7, 0x1f, 0x2f, 0x2e, 0xcb, 0x97, 0x93, 0xf1, + 0x55, 0xa7, 0xab, 0x6d, 0xa7, 0x2f, 0x5b, 0xa5, 0x7b, 0xb3, 0x71, 0xba, 0xdd, 0x38, 0xd8, 0x1b, + 0x96, 0x6f, 0x8e, 0x3c, 0xcd, 0x2b, 0xd8, 0x66, 0xb6, 0x52, 0x68, 0x16, 0x1f, 0xb7, 0x1b, 0x87, + 0x5b, 0xc3, 0x42, 0xc9, 0xea, 0xd8, 0x37, 0x57, 0x13, 0xaf, 0x74, 0xf1, 0x0c, 0x32, 0xe9, 0x4d, + 0xe5, 0xf8, 0xb1, 0xb1, 0x7b, 0x79, 0x5c, 0x31, 0xf7, 0xba, 0x5b, 0x2d, 0x10, 0x8b, 0x6f, 0x47, + 0x40, 0xfb, 0xaf, 0x07, 0xd7, 0x5b, 0xc7, 0xd6, 0xee, 0xfe, 0xda, 0xf1, 0xd3, 0xe5, 0xc9, 0xa9, + 0xfd, 0x6c, 0x95, 0x06, 0x3d, 0x35, 0x7b, 0x71, 0x98, 0x9f, 0x0c, 0xb6, 0xee, 0xcf, 0xb7, 0x6f, + 0xae, 0x77, 0x9e, 0xd4, 0x67, 0xfb, 0xf5, 0xb2, 0x5c, 0x49, 0x3f, 0xa9, 0xb9, 0xca, 0x73, 0x77, + 0xbf, 0xfb, 0x78, 0x7a, 0x53, 0x31, 0xb7, 0x7a, 0xcf, 0xc7, 0xad, 0x3d, 0xe7, 0x78, 0xfb, 0x71, + 0xaf, 0x3c, 0x39, 0xbe, 0x7e, 0xba, 0x3a, 0xd9, 0x2b, 0x79, 0x57, 0xa5, 0xc7, 0xe3, 0xde, 0xed, + 0xdb, 0xdb, 0xd9, 0xfd, 0x69, 0x29, 0xdf, 0xdf, 0x1a, 0x0e, 0x2e, 0x4e, 0xf5, 0x93, 0xb5, 0xf1, + 0xc5, 0xb8, 0x78, 0xab, 0x5e, 0x75, 0xf7, 0xf4, 0xa3, 0xa7, 0xc6, 0xdd, 0x9e, 0xdb, 0x7a, 0xca, + 0x1f, 0xdc, 0x1e, 0xf6, 0x6e, 0x2f, 0x5a, 0xbb, 0xea, 0x41, 0xe9, 0xfe, 0x7e, 0x67, 0x38, 0xec, + 0x0f, 0xdb, 0x17, 0x1d, 0xa3, 0x74, 0xac, 0x6e, 0x0f, 0xcf, 0x2b, 0x56, 0x2e, 0xdd, 0xd9, 0xdb, + 0xde, 0x6a, 0x96, 0x7b, 0xc3, 0xc1, 0xc9, 0x5b, 0xc5, 0x38, 0xbd, 0x3a, 0x1f, 0x75, 0x9e, 0x2f, + 0xce, 0x2a, 0xba, 0xea, 0xac, 0x2b, 0x57, 0xdb, 0xdb, 0xfa, 0xd5, 0xf6, 0x91, 0x53, 0x18, 0x74, + 0x5f, 0x0f, 0x3a, 0xe5, 0x93, 0xd7, 0xee, 0xed, 0xe3, 0xa3, 0x5b, 0xea, 0xbd, 0x0d, 0x07, 0xeb, + 0xde, 0xe9, 0xe1, 0xf9, 0xad, 0x93, 0x1d, 0xdb, 0xc3, 0x2b, 0xf7, 0xec, 0x6e, 0xd8, 0x7e, 0xca, + 0xda, 0xe9, 0xfe, 0x56, 0xc5, 0x5c, 0xbb, 0xcb, 0x03, 0x57, 0x54, 0x6e, 0xd2, 0xea, 0x55, 0xef, + 0xc2, 0x3e, 0xeb, 0xb9, 0x67, 0x7b, 0xe7, 0xaf, 0x63, 0x6b, 0x37, 0x3f, 0x50, 0xdc, 0xc1, 0xeb, + 0x8d, 0x6e, 0x77, 0xc7, 0xa5, 0xca, 0xe1, 0x51, 0x83, 0x98, 0x28, 0xea, 0x92, 0xd0, 0xb1, 0x9c, + 0xbe, 0xea, 0xa5, 0xbe, 0xa2, 0x02, 0xf5, 0x55, 0x9a, 0x55, 0x1d, 0xcb, 0xf2, 0xa6, 0xab, 0xab, + 0xad, 0xd5, 0x5c, 0xf5, 0x73, 0x2e, 0x97, 0xab, 0xe1, 0x63, 0xa7, 0xfa, 0xb9, 0xd3, 0xe9, 0x90, + 0xc7, 0x7c, 0x15, 0x0d, 0x43, 0xe4, 0xb1, 0x50, 0xfd, 0x5c, 0x28, 0x14, 0xc8, 0x63, 0xb1, 0xfa, + 0xb9, 0x58, 0x2c, 0x92, 0xc7, 0x52, 0xf5, 0x73, 0xa9, 0x54, 0x22, 0x8f, 0xe5, 0xea, 0xe7, 0x72, + 0xb9, 0x4c, 0x1e, 0x2b, 0xd5, 0xcf, 0x95, 0x4a, 0x85, 0x3c, 0x36, 0xab, 0x9f, 0x9b, 0xcd, 0x26, + 0x79, 0x6c, 0x55, 0x3f, 0xb7, 0x5a, 0x2d, 0xf2, 0xa8, 0x55, 0x3f, 0x6b, 0x9a, 0x46, 0x1e, 0xdb, + 0xd5, 0xcf, 0xed, 0x76, 0x9b, 0x3c, 0x3a, 0x90, 0xa1, 0x40, 0x5b, 0xeb, 0x42, 0xc3, 0x2d, 0x0a, + 0x8e, 0x01, 0xad, 0x55, 0x54, 0xf2, 0x38, 0xa9, 0x7e, 0x56, 0xd7, 0x15, 0x78, 0xf4, 0xa0, 0x5e, + 0x25, 0x43, 0xdb, 0xb5, 0xaa, 0x4e, 0xb7, 0xa9, 0xa6, 0x0a, 0x45, 0x59, 0xf0, 0xff, 0x29, 0x99, + 0x75, 0x89, 0x7c, 0xf3, 0x9a, 0xf3, 0x1f, 0x41, 0xab, 0x4f, 0x91, 0x1a, 0x24, 0x3f, 0x8f, 0x4a, + 0x33, 0xe5, 0x94, 0xbc, 0x2c, 0x84, 0x7f, 0xe6, 0xf3, 0xf5, 0x68, 0xbe, 0x52, 0x4e, 0x16, 0xfc, + 0x7f, 0xd1, 0x4c, 0x5e, 0xaf, 0xba, 0xa6, 0xd8, 0x63, 0x7c, 0xb2, 0xfd, 0x27, 0x28, 0x55, 0x2e, + 0xd0, 0xb4, 0xa6, 0x5d, 0xcd, 0x15, 0xed, 0xb1, 0x40, 0xff, 0x28, 0xec, 0x09, 0xf3, 0xc0, 0x97, + 0x75, 0x78, 0x55, 0x84, 0x35, 0xfc, 0x4b, 0x4a, 0xb5, 0xab, 0xa6, 0x65, 0x22, 0x8a, 0xdc, 0xae, + 0x5d, 0x15, 0x9b, 0x68, 0x1c, 0x11, 0xf1, 0x43, 0xdf, 0xab, 0x42, 0xc9, 0x19, 0x9a, 0x15, 0xa7, + 0xc4, 0x9a, 0xb0, 0xaa, 0x52, 0x03, 0x4a, 0x5f, 0x05, 0xf9, 0x7f, 0x60, 0x10, 0xfb, 0xc3, 0xac, + 0x69, 0xb5, 0x27, 0xd3, 0xbe, 0xea, 0x74, 0x75, 0xb3, 0xaa, 0xd4, 0xd0, 0xc2, 0xd4, 0x75, 0xac, + 0x81, 0xd9, 0xa6, 0x86, 0xbf, 0x2a, 0x05, 0x1b, 0x46, 0x5d, 0xaa, 0xf1, 0xfa, 0xf6, 0x81, 0x66, + 0x0c, 0x35, 0x4f, 0x6f, 0xa9, 0xf2, 0x9d, 0xe6, 0xb4, 0x55, 0x53, 0x95, 0x5d, 0xd5, 0x74, 0x57, + 0x5d, 0xcd, 0xd1, 0x3b, 0x34, 0xa3, 0xab, 0xbf, 0x69, 0xd5, 0x1c, 0x40, 0x59, 0x8b, 0x56, 0xd4, + 0x91, 0x6a, 0x9e, 0x36, 0xf6, 0x56, 0x55, 0x43, 0xef, 0x9a, 0xd5, 0x96, 0x86, 0xd6, 0x84, 0x1a, + 0xda, 0x08, 0x5f, 0x74, 0x6f, 0x95, 0x82, 0xd9, 0x52, 0x0d, 0x03, 0xad, 0x3a, 0xb4, 0x5b, 0xec, + 0xd3, 0x00, 0xea, 0x86, 0xfa, 0x0d, 0xad, 0xe5, 0x7f, 0xe8, 0x5b, 0x6f, 0x49, 0xa9, 0xee, 0x7c, + 0xe2, 0x7c, 0x2e, 0xbf, 0x3d, 0xd5, 0x5e, 0xed, 0xe9, 0xdd, 0x9e, 0x81, 0xd6, 0x27, 0xd6, 0x63, + 0xcf, 0x81, 0x9e, 0xd8, 0xaa, 0x03, 0x90, 0xd5, 0xdc, 0x96, 0x63, 0x19, 0x46, 0x53, 0x75, 0xa8, + 0x61, 0xb5, 0x5a, 0x86, 0xee, 0x84, 0x69, 0xd1, 0x8e, 0xb9, 0x4d, 0x49, 0xe0, 0xca, 0x12, 0xc4, + 0xca, 0x04, 0xf9, 0x3d, 0x0d, 0xab, 0xaf, 0xe6, 0x14, 0xe5, 0xcf, 0x1a, 0xad, 0x87, 0x3c, 0xda, + 0x96, 0xab, 0x93, 0xf1, 0xe8, 0xe8, 0x63, 0xad, 0x5d, 0xb3, 0x60, 0x59, 0xa5, 0x75, 0xaf, 0x36, + 0xb5, 0x9e, 0x3a, 0xd4, 0xa1, 0x6e, 0x04, 0x76, 0xf6, 0xb9, 0xd9, 0xe5, 0xaa, 0x18, 0xf6, 0xc2, + 0x3a, 0x86, 0xa3, 0x78, 0x25, 0x6f, 0xab, 0xba, 0xd9, 0xd6, 0xc6, 0xd5, 0xd5, 0x5c, 0x64, 0x2c, + 0x83, 0x5c, 0x0c, 0xdf, 0xdc, 0x27, 0x47, 0xb3, 0x35, 0x15, 0xd1, 0xc2, 0x9e, 0xf8, 0x6f, 0x64, + 0x0c, 0x5b, 0x08, 0x58, 0xcd, 0xb2, 0xd5, 0x96, 0xee, 0x4d, 0x80, 0x44, 0x48, 0x1f, 0x69, 0x6d, + 0x2c, 0x51, 0xc8, 0xbb, 0x33, 0xdb, 0xa7, 0x21, 0x42, 0xad, 0x8a, 0x90, 0xc7, 0xbf, 0x33, 0x55, + 0x56, 0xab, 0x43, 0x1d, 0x72, 0x6b, 0x6d, 0xd9, 0x9e, 0x46, 0xf1, 0xd5, 0x96, 0xf8, 0xcf, 0x53, + 0x42, 0x14, 0x6d, 0xad, 0x65, 0x39, 0x84, 0x2e, 0x69, 0xd7, 0x9b, 0x03, 0xcf, 0xb3, 0xcc, 0x29, + 0x10, 0x83, 0xa1, 0x9b, 0x1a, 0x34, 0xde, 0x1a, 0x38, 0x2e, 0xd4, 0x61, 0x5b, 0x3a, 0xf6, 0x63, + 0x96, 0x31, 0xd4, 0xa6, 0x66, 0xb8, 0x21, 0xfd, 0xda, 0x6a, 0xbb, 0xad, 0x9b, 0xdd, 0x6a, 0x85, + 0x03, 0xe2, 0x33, 0xda, 0xa4, 0x49, 0xc6, 0x69, 0x0c, 0x5b, 0x4d, 0x0b, 0xaa, 0xef, 0x57, 0x81, + 0xde, 0x5a, 0x29, 0x0a, 0x56, 0xb3, 0x27, 0x09, 0x69, 0x01, 0x86, 0x59, 0xaa, 0x39, 0x04, 0xe3, + 0xe5, 0x39, 0x02, 0x6e, 0x4b, 0x31, 0x28, 0x6a, 0x23, 0x07, 0x2a, 0x35, 0xbb, 0x40, 0x90, 0x6d, + 0xad, 0x0a, 0xc8, 0xc2, 0x79, 0x61, 0xac, 0x3a, 0x06, 0x45, 0x15, 0x32, 0x52, 0xe0, 0x9e, 0x68, + 0x42, 0x4b, 0xe5, 0x2a, 0x4a, 0x5b, 0xeb, 0x4a, 0xb3, 0x4c, 0xd3, 0xd1, 0xa7, 0x3e, 0xac, 0x30, + 0xb3, 0x67, 0x99, 0x91, 0x83, 0xf6, 0x2f, 0x27, 0x0e, 0xa1, 0x67, 0xd9, 0xd0, 0x2b, 0x43, 0xeb, + 0xc0, 0x5c, 0x66, 0x10, 0xf1, 0x03, 0x1b, 0x00, 0xe5, 0x35, 0xa5, 0x60, 0xec, 0x73, 0xb3, 0x0c, + 0x9a, 0xcc, 0xdd, 0x24, 0x03, 0x19, 0x9d, 0x9a, 0x68, 0x4a, 0x03, 0x04, 0x03, 0x83, 0x37, 0xb8, + 0xc9, 0x9a, 0x07, 0x40, 0x3e, 0xe9, 0x7d, 0xdc, 0x5f, 0x50, 0x81, 0xf6, 0x11, 0xe3, 0xab, 0x3e, + 0xdd, 0x71, 0xe9, 0x6d, 0xdd, 0xb5, 0x0d, 0x75, 0x52, 0xd5, 0x4d, 0x92, 0x83, 0xf0, 0x1b, 0xd6, + 0x62, 0x06, 0xc6, 0x2a, 0x8a, 0x2c, 0xec, 0x2b, 0xfb, 0xd4, 0xe9, 0xc4, 0xbe, 0x95, 0x11, 0x0f, + 0x96, 0x27, 0xd0, 0x0c, 0x72, 0x06, 0xfa, 0xca, 0x9e, 0xfd, 0xf1, 0x5c, 0x25, 0x03, 0x28, 0x14, + 0xc9, 0x30, 0x66, 0x7a, 0x83, 0x2e, 0x33, 0xfa, 0x11, 0x70, 0x8b, 0x79, 0xc4, 0x9b, 0x6d, 0x00, + 0x45, 0x3b, 0x13, 0xe1, 0xa6, 0xb1, 0x75, 0xb2, 0x2b, 0x67, 0x5c, 0xad, 0xeb, 0x4d, 0x3d, 0xdc, + 0x66, 0x58, 0x65, 0xa6, 0x61, 0x8a, 0xc7, 0x70, 0xda, 0xcd, 0x48, 0x1e, 0xe1, 0x66, 0x27, 0xc0, + 0x7f, 0x3e, 0xd2, 0xed, 0x39, 0xe6, 0xc4, 0xb5, 0xb1, 0x23, 0x07, 0x85, 0x39, 0x1e, 0x87, 0x3c, + 0xdb, 0xaf, 0x4b, 0xa9, 0x05, 0xe3, 0x4f, 0xeb, 0xe8, 0xeb, 0xed, 0xb6, 0xa1, 0xcd, 0x32, 0x2f, + 0xda, 0xc4, 0x63, 0x44, 0x4e, 0x3f, 0xe0, 0x98, 0xce, 0x32, 0x43, 0xd5, 0x88, 0x26, 0x93, 0x31, + 0x66, 0xe9, 0x82, 0xce, 0x35, 0xe3, 0xc2, 0x60, 0x19, 0x00, 0x3c, 0xb1, 0x3a, 0x93, 0x3d, 0x91, + 0x69, 0x48, 0x5e, 0xe4, 0xc9, 0x40, 0x0a, 0x03, 0x60, 0x64, 0xf8, 0x07, 0xa8, 0xd5, 0x16, 0x66, + 0x7a, 0x4c, 0xd1, 0x1c, 0xc0, 0x11, 0x17, 0xe6, 0x79, 0x48, 0xf1, 0xb5, 0xc8, 0x41, 0x5e, 0x39, + 0x02, 0x41, 0x6c, 0x22, 0xcc, 0x4d, 0x70, 0x28, 0xa6, 0x3a, 0xc0, 0xd1, 0x49, 0xe6, 0x80, 0xb4, + 0xd5, 0xa6, 0x6b, 0x19, 0x03, 0x4f, 0x23, 0xd4, 0x0d, 0x33, 0x95, 0xd2, 0x77, 0x2e, 0x8f, 0x78, + 0xa4, 0x35, 0xad, 0x6a, 0x68, 0xee, 0x76, 0x29, 0xb3, 0x66, 0x3b, 0x05, 0xb8, 0x00, 0x32, 0x72, + 0xcc, 0x93, 0x29, 0x43, 0xac, 0xd1, 0x8b, 0xaa, 0xf6, 0xa9, 0x94, 0xd4, 0xe0, 0xb7, 0x43, 0x27, + 0xd0, 0x3a, 0x4e, 0xe9, 0x18, 0x1f, 0xe9, 0x18, 0xce, 0x74, 0x7e, 0x9d, 0x8a, 0x4f, 0x5f, 0x45, + 0xe2, 0xb9, 0x5f, 0xf0, 0x59, 0xc8, 0x14, 0xdc, 0x5a, 0x72, 0xef, 0xc2, 0x49, 0xcb, 0x71, 0x26, + 0xc0, 0xea, 0xd8, 0x96, 0xf1, 0x8f, 0x0a, 0x13, 0xb6, 0x2d, 0x90, 0xd6, 0x17, 0xf3, 0x0a, 0xdd, + 0x98, 0x26, 0xcd, 0xb9, 0x05, 0x94, 0xf6, 0xd9, 0xd0, 0x87, 0x1a, 0xee, 0x13, 0xfa, 0x6b, 0x06, + 0xe2, 0x2d, 0x82, 0x0d, 0x6e, 0x09, 0x6a, 0x5a, 0x0e, 0x8c, 0x65, 0x15, 0x26, 0x17, 0xcc, 0x99, + 0xe9, 0xdc, 0xe2, 0xcf, 0x2f, 0x85, 0xf3, 0x63, 0x0b, 0x73, 0x77, 0x01, 0x43, 0x0d, 0x38, 0x16, + 0xdf, 0xd4, 0x22, 0xc9, 0x02, 0x58, 0x17, 0x69, 0x5e, 0x60, 0xcc, 0x7e, 0x29, 0x14, 0x1d, 0xc3, + 0x82, 0xc5, 0x0a, 0x6b, 0xf7, 0x61, 0xa7, 0x03, 0x1c, 0x8e, 0x0a, 0x29, 0x83, 0x23, 0x22, 0xc7, + 0x2b, 0x22, 0xc3, 0xb4, 0x54, 0x36, 0x69, 0x49, 0xb5, 0xbe, 0x6e, 0xb2, 0xb5, 0xbe, 0x48, 0x88, + 0x0c, 0x99, 0x12, 0x03, 0xcc, 0x1f, 0x41, 0x26, 0xc9, 0x35, 0x6d, 0xc8, 0xcd, 0xd6, 0x1d, 0xca, + 0xc8, 0x12, 0xf3, 0x35, 0x31, 0x1f, 0x23, 0xe1, 0xd2, 0x9f, 0x5c, 0x89, 0xb0, 0xcb, 0xd5, 0x1e, + 0x2e, 0xb1, 0xd3, 0x25, 0x18, 0xea, 0x49, 0x31, 0x48, 0xb5, 0x08, 0xce, 0x32, 0x28, 0xd8, 0x0d, + 0xb5, 0x65, 0x35, 0xa8, 0x12, 0xc7, 0xe3, 0xe2, 0x94, 0x3e, 0x7b, 0xb7, 0x82, 0xf2, 0xf2, 0xe2, + 0xb8, 0x07, 0xac, 0x02, 0x65, 0x3a, 0xa0, 0x21, 0x80, 0x08, 0xc0, 0x8f, 0x3b, 0x7d, 0xe4, 0x96, + 0x58, 0x53, 0xfa, 0x0b, 0x3f, 0x48, 0xfe, 0x64, 0x26, 0x9f, 0x30, 0x45, 0x58, 0xf5, 0x85, 0x64, + 0x5b, 0x0a, 0x9e, 0xa1, 0xeb, 0x3e, 0x9a, 0x57, 0x71, 0x42, 0x05, 0x39, 0x6a, 0x49, 0xdc, 0x8f, + 0x6b, 0x46, 0x97, 0x15, 0x29, 0x2b, 0x04, 0x4d, 0xae, 0x92, 0x36, 0xa5, 0xc5, 0x52, 0x16, 0xa2, + 0x93, 0x6d, 0x65, 0x4f, 0x39, 0x2a, 0x0b, 0x08, 0xdc, 0xd1, 0x50, 0x60, 0x1e, 0x6a, 0x0b, 0xfa, + 0x86, 0xef, 0x59, 0xbf, 0x35, 0x09, 0x88, 0x73, 0x8c, 0x54, 0x86, 0x64, 0x40, 0xe9, 0x74, 0x15, + 0x52, 0x82, 0xe9, 0x46, 0xa0, 0x80, 0x46, 0x46, 0x55, 0x75, 0xe0, 0x59, 0x35, 0x5e, 0x3e, 0x5c, + 0x2c, 0x05, 0xee, 0x76, 0x3a, 0x20, 0xbf, 0xba, 0x53, 0x5f, 0x76, 0xf5, 0xeb, 0x58, 0xa5, 0xd9, + 0xb1, 0x29, 0x22, 0x3e, 0xcf, 0x3e, 0xdb, 0xd8, 0x0f, 0xf9, 0xb3, 0xfd, 0x6a, 0xc0, 0x9f, 0x81, + 0xa7, 0xc3, 0x0f, 0x2c, 0x5b, 0x34, 0x11, 0x1e, 0x82, 0x14, 0x7c, 0xc8, 0xfb, 0x1b, 0xb1, 0x15, + 0xd4, 0x15, 0xb8, 0xec, 0xb1, 0x5c, 0x38, 0x2f, 0x7c, 0x86, 0x82, 0x8c, 0xda, 0x97, 0xf6, 0x60, + 0x95, 0x10, 0xb0, 0x13, 0x28, 0x67, 0xb1, 0xcc, 0x02, 0x2e, 0x92, 0x7a, 0x30, 0x0f, 0xc8, 0xb0, + 0x21, 0x73, 0x8f, 0x02, 0xc6, 0x20, 0x0a, 0x44, 0x37, 0x52, 0x0b, 0x03, 0x20, 0x98, 0x42, 0x25, + 0xb2, 0xfe, 0xc3, 0x64, 0x71, 0xfb, 0xa0, 0x7e, 0xf6, 0xa6, 0x89, 0xdc, 0x97, 0x1b, 0xf4, 0x8e, + 0x9c, 0x93, 0xfe, 0xca, 0x94, 0x5c, 0x49, 0xd0, 0x54, 0x57, 0x5b, 0x85, 0xf5, 0x9f, 0x8c, 0xeb, + 0x2a, 0x95, 0xfe, 0x82, 0xa6, 0x14, 0x61, 0x95, 0xd4, 0xec, 0x33, 0xe5, 0x55, 0xc6, 0xb7, 0x78, + 0x56, 0xe9, 0x93, 0x1f, 0x72, 0x3a, 0x44, 0x35, 0xa4, 0xc5, 0xb9, 0xdd, 0x02, 0xb9, 0x3e, 0x22, + 0xb3, 0x2d, 0x9c, 0x51, 0x05, 0x29, 0x26, 0x7a, 0x05, 0x2d, 0x77, 0x0c, 0x6d, 0x5c, 0x23, 0x3c, + 0x7d, 0x15, 0x24, 0xe3, 0xbe, 0xeb, 0x0b, 0xed, 0xcf, 0x03, 0xd7, 0xd3, 0x3b, 0x93, 0x55, 0x46, + 0xa5, 0x7e, 0x72, 0x20, 0xf6, 0xe5, 0x02, 0x21, 0x3d, 0xb3, 0x5e, 0xe2, 0x59, 0x62, 0x66, 0xcd, + 0x4d, 0x5a, 0x58, 0x01, 0xab, 0x9e, 0x3a, 0x81, 0xae, 0xcb, 0xe4, 0x01, 0xc0, 0x0e, 0xd6, 0x19, + 0xba, 0xc0, 0x04, 0xdd, 0xf5, 0x49, 0x0e, 0xda, 0x6f, 0xbd, 0x4c, 0xc2, 0x74, 0xfa, 0xce, 0x0b, + 0x4f, 0xa4, 0xeb, 0x3e, 0x44, 0xf9, 0x5a, 0x64, 0x70, 0xe9, 0x08, 0xfb, 0x8d, 0x4e, 0x19, 0xce, + 0x4b, 0x48, 0x18, 0x54, 0xa6, 0x70, 0x19, 0x2d, 0x16, 0x50, 0x87, 0x88, 0x96, 0x8d, 0xb7, 0x19, + 0xac, 0x34, 0x41, 0x59, 0xc1, 0xd7, 0x05, 0x78, 0xb2, 0x43, 0xd1, 0x6c, 0x81, 0x08, 0x35, 0x4d, + 0x90, 0xa2, 0xf3, 0xc8, 0x6a, 0xc6, 0xab, 0x11, 0x28, 0x82, 0xf5, 0x80, 0xcc, 0x90, 0x18, 0x54, + 0x6c, 0x6e, 0x3b, 0x6a, 0x5b, 0x1f, 0xb8, 0xd5, 0x5c, 0x89, 0x48, 0x30, 0x31, 0x86, 0xe1, 0x37, + 0x28, 0xc0, 0x5a, 0x62, 0x19, 0x9e, 0x6e, 0xa3, 0xb4, 0x37, 0x45, 0xb5, 0xa7, 0xa9, 0x1b, 0x38, + 0x5a, 0x3d, 0x58, 0xb8, 0x35, 0x73, 0x31, 0xa5, 0x94, 0xa4, 0x8f, 0xa8, 0xd0, 0xfc, 0x94, 0x21, + 0x90, 0x47, 0x61, 0x43, 0x3d, 0x86, 0xd1, 0x68, 0x59, 0xe1, 0xc1, 0x0c, 0xc4, 0x95, 0x80, 0x8e, + 0x7c, 0xdc, 0x12, 0x62, 0x26, 0x64, 0x5c, 0x52, 0xfc, 0x85, 0x6b, 0x95, 0xbc, 0xaf, 0xae, 0x23, + 0x0b, 0x58, 0xaa, 0x12, 0x66, 0xd6, 0x4a, 0x6e, 0x62, 0xcf, 0xab, 0x55, 0xb5, 0x03, 0xf0, 0x4e, + 0x7d, 0x2a, 0x16, 0xc5, 0x05, 0xa2, 0xd3, 0x92, 0xe6, 0x4b, 0x61, 0xf7, 0x68, 0x9f, 0xb8, 0x04, + 0xaa, 0xdc, 0x40, 0x3d, 0x7a, 0xdb, 0x4f, 0x8a, 0xa3, 0x93, 0x57, 0xd3, 0x17, 0x3d, 0xfb, 0xb0, + 0xd3, 0xb5, 0x79, 0xe1, 0xd8, 0x91, 0x47, 0x43, 0x0b, 0x70, 0x91, 0x9b, 0x11, 0xee, 0x96, 0xd1, + 0xda, 0x30, 0x5d, 0x88, 0x68, 0xca, 0x8b, 0x5e, 0xa0, 0xc3, 0x40, 0x9d, 0x91, 0xa4, 0x70, 0xf2, + 0x80, 0x10, 0xaa, 0x3b, 0xae, 0xcf, 0x10, 0x29, 0xd7, 0x24, 0x3c, 0xd9, 0xb3, 0x54, 0x48, 0x0e, + 0xb1, 0xbd, 0x8c, 0x50, 0xd8, 0x0a, 0x93, 0x03, 0x22, 0x20, 0x28, 0x10, 0x12, 0x49, 0x7b, 0x1d, + 0x10, 0xfa, 0x01, 0x92, 0x8a, 0x52, 0x50, 0x89, 0x53, 0x73, 0xf2, 0x79, 0x9e, 0x84, 0xa2, 0xa6, + 0x87, 0x52, 0x38, 0x68, 0x89, 0x7a, 0xc5, 0x6a, 0x09, 0x17, 0xff, 0x45, 0xaa, 0x37, 0xd6, 0x2c, + 0xc5, 0xa5, 0xb4, 0x24, 0xe6, 0x45, 0xd1, 0x92, 0x71, 0x7b, 0xd6, 0x28, 0xc0, 0x4d, 0xae, 0xa6, + 0x9a, 0x7a, 0x9f, 0xda, 0x0f, 0x3a, 0x6a, 0x5b, 0xd3, 0x4d, 0x01, 0x16, 0x03, 0x39, 0x7c, 0x14, + 0xf2, 0xf8, 0xc7, 0xd1, 0x70, 0x91, 0x0d, 0xaa, 0xd0, 0x1c, 0xc7, 0x72, 0xb8, 0x3a, 0xe6, 0xf0, + 0xfb, 0xb9, 0x99, 0x4f, 0xae, 0x79, 0x96, 0x01, 0x95, 0x5f, 0x9d, 0x33, 0x2b, 0xf8, 0xac, 0xdf, + 0x17, 0x86, 0x7d, 0x15, 0x00, 0x87, 0x94, 0xeb, 0xb0, 0xd7, 0x43, 0x31, 0x27, 0x87, 0xfd, 0x5d, + 0x38, 0xa4, 0x56, 0xa2, 0x9c, 0xf3, 0x98, 0xa2, 0x12, 0x54, 0xb2, 0x32, 0x52, 0x74, 0x79, 0x65, + 0x83, 0x5f, 0x65, 0x70, 0xe2, 0x47, 0x44, 0x0f, 0x54, 0xa2, 0x2c, 0x57, 0x9b, 0xc6, 0xb9, 0x2b, + 0xe5, 0xe3, 0x54, 0x0c, 0xa2, 0x1a, 0xe9, 0x67, 0xdd, 0xec, 0x58, 0xf2, 0x67, 0xd3, 0x6a, 0x6b, + 0xee, 0xd4, 0x1f, 0xea, 0xe2, 0xec, 0xb3, 0x43, 0x44, 0x57, 0x3f, 0xa1, 0x30, 0xfb, 0x6c, 0xb6, + 0x8d, 0x60, 0x51, 0xcf, 0x31, 0x03, 0x0c, 0xc9, 0x04, 0x7c, 0x3f, 0xd1, 0xbc, 0x11, 0xc3, 0x48, + 0x5a, 0x28, 0x21, 0x46, 0xa8, 0x4a, 0x18, 0x57, 0x5d, 0x62, 0x6a, 0xdb, 0x67, 0x98, 0x60, 0x26, + 0xb4, 0xfc, 0x51, 0xbb, 0x4e, 0x58, 0x73, 0x91, 0x23, 0xe6, 0xd2, 0x1c, 0xb3, 0x24, 0x29, 0x73, + 0x54, 0x80, 0x06, 0xe5, 0xc0, 0xbe, 0x96, 0xa7, 0x18, 0x11, 0x88, 0xad, 0x81, 0xe1, 0x85, 0xbe, + 0xbc, 0x63, 0x7e, 0x60, 0xc5, 0xda, 0x41, 0x99, 0xf6, 0x34, 0x26, 0x85, 0xa0, 0x86, 0x48, 0x73, + 0x65, 0x9a, 0x9e, 0xe9, 0xe3, 0xb2, 0x14, 0xa4, 0x92, 0xfa, 0xc9, 0xb7, 0x48, 0xbb, 0x91, 0xdc, + 0x0a, 0xcb, 0xdb, 0xd6, 0x87, 0x7e, 0x26, 0x78, 0x9c, 0x86, 0x2c, 0xa0, 0xb8, 0x3e, 0xb7, 0x9a, + 0x41, 0x91, 0x7e, 0x77, 0xe4, 0xd7, 0x50, 0x61, 0x82, 0x1d, 0x28, 0x94, 0x7c, 0xb9, 0xb2, 0xa2, + 0x70, 0x83, 0x12, 0xb1, 0x01, 0x7d, 0xee, 0x81, 0x3e, 0xee, 0x4d, 0xe7, 0x75, 0xb1, 0xf5, 0x88, + 0xda, 0x15, 0x5a, 0xd4, 0x1c, 0xad, 0x3d, 0x83, 0x26, 0xb9, 0xda, 0x09, 0xcf, 0xc7, 0x57, 0x4e, + 0xb4, 0x9a, 0x65, 0x46, 0xfa, 0x94, 0xf8, 0x82, 0xae, 0x02, 0x63, 0x86, 0x51, 0xc2, 0x31, 0xb3, + 0x01, 0xad, 0x38, 0x13, 0xda, 0xb5, 0xf8, 0x97, 0x96, 0x03, 0xb0, 0xad, 0x6a, 0xed, 0xae, 0xe6, + 0xfa, 0x6a, 0x17, 0x61, 0xa3, 0xff, 0xf1, 0xa2, 0x4d, 0x3a, 0x8e, 0xda, 0x07, 0x4c, 0xd0, 0x09, + 0x3c, 0xed, 0x38, 0x56, 0x7f, 0x1a, 0x4c, 0xd2, 0x80, 0xbf, 0xce, 0x3c, 0x6b, 0xba, 0x9c, 0x3b, + 0x85, 0xcc, 0xde, 0x5f, 0x25, 0x18, 0x3e, 0x82, 0x45, 0xed, 0xeb, 0xd7, 0x45, 0x8b, 0x5a, 0xde, + 0x37, 0x77, 0x84, 0xf6, 0x88, 0x4a, 0x68, 0xd8, 0x88, 0x12, 0x5e, 0xc0, 0x05, 0x8a, 0x52, 0x5c, + 0xd2, 0x28, 0x2f, 0xb0, 0x95, 0x84, 0xf6, 0x5f, 0xdc, 0x01, 0xe8, 0xf2, 0x4a, 0xda, 0x67, 0x07, + 0x6d, 0x8c, 0x42, 0x0c, 0x62, 0x92, 0x8b, 0x14, 0xe5, 0xda, 0xc5, 0x41, 0x55, 0x9d, 0xd5, 0x2e, + 0xb6, 0x86, 0x1e, 0x8c, 0xeb, 0x68, 0x89, 0x90, 0x3f, 0x2b, 0x0a, 0x08, 0xce, 0xb9, 0xd2, 0x9f, + 0x32, 0x0c, 0x1c, 0xd4, 0xd7, 0xfd, 0xd7, 0xea, 0xfb, 0xac, 0x74, 0x14, 0xa8, 0xb0, 0xf9, 0x2f, + 0x56, 0xa8, 0x60, 0x8f, 0x47, 0xff, 0x5e, 0x85, 0x9d, 0x0e, 0x56, 0xf8, 0x92, 0x50, 0xa1, 0xfc, + 0x79, 0xd4, 0x54, 0x8d, 0x78, 0x2b, 0xef, 0xd7, 0xdd, 0xe9, 0x54, 0x3a, 0xb9, 0x8e, 0xa0, 0x90, + 0xba, 0x05, 0x58, 0x14, 0xe5, 0xcf, 0xad, 0x66, 0xbb, 0x49, 0xda, 0xe9, 0x69, 0xe3, 0x91, 0x4c, + 0x5b, 0x93, 0x3f, 0xbf, 0xb6, 0xdc, 0x55, 0x78, 0x73, 0xba, 0x4d, 0xfa, 0x8e, 0xcd, 0xc9, 0xb4, + 0x6f, 0x31, 0xe9, 0x82, 0x82, 0xd0, 0x1c, 0x34, 0x91, 0x0d, 0x71, 0x66, 0xb3, 0x79, 0x25, 0x36, + 0xd1, 0xa0, 0x14, 0xa3, 0x31, 0x25, 0x99, 0x18, 0x0b, 0x09, 0xe2, 0x28, 0x67, 0xca, 0x26, 0xd6, + 0xda, 0x7c, 0x64, 0xdd, 0x21, 0x7b, 0x57, 0x94, 0xd6, 0x51, 0x20, 0xe7, 0x18, 0x44, 0x28, 0x49, + 0x09, 0x99, 0x3c, 0xac, 0xcc, 0xa8, 0xb5, 0xc9, 0x81, 0x08, 0xe9, 0xa7, 0x70, 0x92, 0xe6, 0x9c, + 0xd8, 0x3c, 0x03, 0x26, 0x0b, 0x3a, 0x63, 0xa4, 0xeb, 0x44, 0x26, 0x58, 0x2a, 0xa4, 0x71, 0xbe, + 0xb1, 0xc4, 0x35, 0xf6, 0x47, 0xa0, 0x55, 0xa3, 0x15, 0x5e, 0x85, 0xb4, 0x96, 0x36, 0x67, 0x2c, + 0x0b, 0x6d, 0xbc, 0x8b, 0xb7, 0xcb, 0x22, 0x16, 0xb3, 0xe8, 0x62, 0x35, 0xd7, 0x66, 0xb5, 0x63, + 0xb5, 0x06, 0x6e, 0xb8, 0xb9, 0x91, 0x90, 0x23, 0xd4, 0xbc, 0xa8, 0xd1, 0xd5, 0x19, 0x98, 0x26, + 0x59, 0x5d, 0xa0, 0x9d, 0xd6, 0xcb, 0x94, 0x03, 0x8e, 0x31, 0x90, 0x82, 0x32, 0x67, 0xdc, 0xe4, + 0xc7, 0x10, 0x75, 0xe9, 0xf7, 0x5b, 0xf1, 0x7a, 0x83, 0x7e, 0x33, 0xd8, 0x72, 0xe2, 0x35, 0x87, + 0xf9, 0x95, 0x32, 0x62, 0xd9, 0xe3, 0x49, 0x22, 0x06, 0xc4, 0x22, 0xfc, 0x72, 0xd2, 0x2e, 0x48, + 0x7a, 0x89, 0xc0, 0xe1, 0x3e, 0x1f, 0x79, 0x59, 0xde, 0xeb, 0xb9, 0xb1, 0x20, 0x5b, 0xb0, 0x8a, + 0x4c, 0xfe, 0x27, 0xbd, 0x57, 0x33, 0xe9, 0xb2, 0x6f, 0x9f, 0x61, 0xb2, 0x33, 0x3f, 0x98, 0xff, + 0x10, 0x1b, 0x89, 0x42, 0x1c, 0x8a, 0x23, 0xb3, 0xcf, 0xc4, 0xed, 0xdc, 0x15, 0x7e, 0x77, 0x58, + 0x2a, 0x21, 0x20, 0x95, 0x00, 0x10, 0xdc, 0xcb, 0x88, 0x09, 0xfe, 0xb9, 0x88, 0xf9, 0x8c, 0x48, + 0x11, 0x4b, 0x5a, 0x5c, 0x80, 0x91, 0xa4, 0x6a, 0x7d, 0x76, 0x43, 0xf8, 0x10, 0x3f, 0x10, 0x8c, + 0xf1, 0x14, 0x94, 0x44, 0xce, 0xe3, 0xaf, 0x50, 0x4a, 0x00, 0x07, 0x5f, 0x4f, 0x70, 0x2a, 0x80, + 0x33, 0x31, 0x29, 0xbe, 0x11, 0xa8, 0xd7, 0x9e, 0x26, 0x58, 0x67, 0x3e, 0x37, 0x1d, 0x9d, 0x94, + 0xe5, 0xc4, 0xd5, 0x79, 0x8b, 0x61, 0xb3, 0xef, 0xc5, 0xf9, 0xaa, 0xad, 0x1a, 0x68, 0x20, 0x23, + 0x07, 0x12, 0xe6, 0xb9, 0xec, 0x70, 0x9e, 0xd9, 0x46, 0x75, 0x7f, 0x0e, 0xd4, 0x19, 0xab, 0x65, + 0x4e, 0x77, 0x23, 0x22, 0x19, 0x2f, 0x8c, 0xf3, 0x7d, 0x2a, 0xc6, 0x70, 0xc5, 0x31, 0xcc, 0xf5, + 0x0f, 0xec, 0x3a, 0x46, 0x49, 0x2f, 0x5f, 0x8a, 0x70, 0xd6, 0xd5, 0xf6, 0x80, 0xed, 0xa3, 0xa2, + 0xd1, 0xdb, 0x27, 0x24, 0xa4, 0x4d, 0x74, 0x9d, 0x5f, 0x9d, 0xb7, 0x3e, 0x04, 0x3b, 0xe2, 0xf3, + 0x84, 0x5a, 0x68, 0xd3, 0x59, 0x44, 0xd5, 0x94, 0x05, 0xe5, 0x97, 0x96, 0x0b, 0x74, 0x8e, 0x96, + 0xa1, 0xdb, 0x54, 0xd1, 0x8c, 0x26, 0x2d, 0x54, 0x5b, 0x0b, 0xd2, 0x32, 0x0b, 0x1a, 0x33, 0x17, + 0x12, 0xc9, 0x77, 0xd5, 0xa5, 0xaa, 0xba, 0x1c, 0x9a, 0x21, 0x93, 0x52, 0xf3, 0xd1, 0x64, 0x7c, + 0xf1, 0xcd, 0xef, 0x8b, 0x60, 0x28, 0x49, 0xcb, 0x54, 0xee, 0x19, 0xad, 0x6f, 0x1a, 0x11, 0x60, + 0x83, 0x5d, 0x01, 0xf8, 0x44, 0xac, 0x00, 0xfe, 0x86, 0xa6, 0xbf, 0x40, 0x02, 0x3d, 0x27, 0xef, + 0xdf, 0x2c, 0xd8, 0x5e, 0xc5, 0x8a, 0xcc, 0x29, 0x4f, 0x2d, 0x01, 0x31, 0x56, 0xfc, 0xe9, 0x81, + 0x79, 0xfc, 0x19, 0x94, 0xcb, 0x73, 0x79, 0x4a, 0x74, 0xff, 0x94, 0x7c, 0x87, 0xd6, 0xda, 0x6d, + 0xd9, 0x7f, 0x6e, 0x6b, 0x06, 0x7d, 0x1e, 0xfb, 0x1d, 0x28, 0x46, 0x77, 0x43, 0x39, 0x93, 0x2f, + 0x6f, 0xa9, 0x60, 0x45, 0x58, 0xfd, 0x74, 0x97, 0x16, 0x61, 0xe0, 0xc7, 0x23, 0xfc, 0xae, 0x70, + 0xea, 0x0c, 0x26, 0x2f, 0xc4, 0x74, 0x31, 0x36, 0xa2, 0x7e, 0x67, 0x0a, 0x84, 0x6d, 0x51, 0x35, + 0x26, 0x83, 0x55, 0x45, 0x35, 0x1d, 0xbe, 0x48, 0x7c, 0xf8, 0xe7, 0x06, 0x7e, 0xba, 0xcc, 0x22, + 0xbb, 0x84, 0x0e, 0x17, 0xe1, 0x2f, 0xf4, 0x3d, 0x18, 0xf5, 0x74, 0x4f, 0x5b, 0x85, 0x05, 0x83, + 0xac, 0x6d, 0xc8, 0x31, 0x66, 0x94, 0xab, 0xcc, 0xb3, 0x05, 0x48, 0xe6, 0x90, 0x17, 0x17, 0xbc, + 0x8a, 0x0b, 0x34, 0x2c, 0x9f, 0x5b, 0x70, 0x0a, 0x03, 0x79, 0xe6, 0x77, 0xea, 0xf3, 0x15, 0x56, + 0x7f, 0x33, 0xe0, 0xa5, 0x5c, 0xee, 0x72, 0x3c, 0x77, 0xb8, 0x86, 0x71, 0x9d, 0x46, 0x81, 0x94, + 0xf2, 0xca, 0x69, 0x6c, 0xe9, 0xa0, 0x3e, 0x34, 0xbc, 0xe7, 0x42, 0x28, 0x0b, 0xc5, 0xd8, 0xd7, + 0x32, 0x34, 0x7f, 0x8c, 0xb5, 0x25, 0x5b, 0xb1, 0xe6, 0x35, 0xf5, 0x44, 0xae, 0x57, 0xfa, 0x6f, + 0xe7, 0x7a, 0xb3, 0xcf, 0x9e, 0x37, 0x4d, 0xf0, 0x26, 0x68, 0x19, 0xf3, 0x24, 0x88, 0x8a, 0x06, + 0xdd, 0x8f, 0xb7, 0xa7, 0xfc, 0xa4, 0xa5, 0x96, 0x5c, 0x66, 0xe3, 0xd4, 0xfa, 0x2c, 0x8b, 0x31, + 0x4d, 0xde, 0x57, 0x0d, 0x16, 0xdb, 0x5c, 0x11, 0x51, 0x87, 0x02, 0x8a, 0x5f, 0x42, 0xe3, 0x8b, + 0xcc, 0x03, 0x45, 0x8f, 0xc9, 0x4d, 0x3f, 0x3e, 0x66, 0x9d, 0x88, 0x40, 0x65, 0x82, 0xa8, 0xa0, + 0x39, 0x3f, 0x64, 0x2e, 0x09, 0xdb, 0xf8, 0x31, 0xfd, 0xa0, 0xfa, 0x10, 0x93, 0xbb, 0x96, 0x8e, + 0x76, 0xb2, 0x69, 0x8b, 0x90, 0x1c, 0xa7, 0x58, 0xcc, 0xef, 0xfd, 0xe6, 0xdd, 0x5a, 0xe8, 0x46, + 0x94, 0x20, 0x8d, 0x22, 0xc0, 0x1d, 0x5d, 0x33, 0xda, 0xd4, 0xb1, 0x2c, 0xf1, 0x4b, 0x52, 0x62, + 0x02, 0x1e, 0xe6, 0xfc, 0x39, 0xfc, 0x11, 0x54, 0xa2, 0x12, 0x2e, 0xc5, 0xd1, 0xfc, 0x68, 0xcc, + 0xd7, 0x48, 0x55, 0x85, 0x39, 0xfc, 0x32, 0x0d, 0x22, 0x01, 0xcb, 0xe5, 0xa4, 0xf1, 0x09, 0x25, + 0x4a, 0xdd, 0x34, 0xd1, 0x54, 0x6e, 0xc3, 0xd4, 0xa6, 0x3b, 0xc8, 0xf2, 0xb2, 0xdc, 0x80, 0xb7, + 0x68, 0xee, 0x45, 0xda, 0x12, 0x65, 0x1a, 0xc2, 0x5c, 0x17, 0x99, 0xe9, 0x08, 0x08, 0x38, 0xfe, + 0x29, 0x63, 0x7b, 0x63, 0x6f, 0x1a, 0xdb, 0x47, 0x15, 0x56, 0x05, 0x54, 0x5b, 0xa5, 0x19, 0x66, + 0x01, 0xf1, 0x5b, 0x5d, 0xb0, 0x57, 0x33, 0x47, 0x47, 0xf3, 0xf5, 0x20, 0x2f, 0x0d, 0x76, 0x9a, + 0xd7, 0x95, 0x64, 0x4b, 0xdf, 0x22, 0x19, 0x17, 0x16, 0xfe, 0x90, 0x64, 0x1c, 0x8d, 0x10, 0x1a, + 0x51, 0x5a, 0x62, 0x74, 0xc7, 0x19, 0x12, 0x67, 0x19, 0xd5, 0xd6, 0xb1, 0x4b, 0xac, 0xc9, 0x35, + 0xe8, 0x73, 0xb5, 0x4a, 0xd9, 0x66, 0x74, 0x86, 0x05, 0x70, 0xa3, 0xfb, 0x03, 0xc1, 0x42, 0xb0, + 0xa2, 0x33, 0x21, 0x21, 0xc1, 0xe7, 0xca, 0xdf, 0xb6, 0x0b, 0x70, 0x86, 0x24, 0xc5, 0x2f, 0xcc, + 0x36, 0xfa, 0xba, 0x11, 0x2f, 0x25, 0x7c, 0x98, 0xce, 0x2f, 0x49, 0x71, 0x56, 0x3b, 0x6f, 0xf5, + 0x5f, 0x26, 0xac, 0x69, 0x06, 0xa4, 0xb9, 0xba, 0x1b, 0x5d, 0x44, 0x8a, 0xd1, 0x69, 0x49, 0x06, + 0x8f, 0xdb, 0x6d, 0xc8, 0xad, 0x2d, 0xd9, 0xce, 0x0b, 0x77, 0xc9, 0x08, 0xe8, 0xc4, 0x17, 0x26, + 0x80, 0x7f, 0x81, 0x67, 0x8c, 0xe2, 0x3b, 0xe7, 0xad, 0x52, 0x0e, 0xd7, 0x74, 0xf9, 0x15, 0x89, + 0x39, 0x8c, 0x55, 0xe6, 0xf6, 0x72, 0xdd, 0xae, 0x2d, 0xb1, 0x66, 0xa6, 0x64, 0x29, 0xa6, 0xfe, + 0x63, 0xc1, 0x3b, 0x70, 0x60, 0x5b, 0x6f, 0x7f, 0xc8, 0x4d, 0x29, 0x66, 0xce, 0x9c, 0x47, 0x62, + 0x94, 0x34, 0x71, 0x88, 0x4d, 0x6d, 0x04, 0xbd, 0xf2, 0x3d, 0xa6, 0xda, 0x5a, 0x47, 0x1d, 0x18, + 0x1e, 0x3a, 0xc7, 0x05, 0xb0, 0x97, 0x03, 0x31, 0x2a, 0x33, 0x0e, 0xe5, 0x31, 0xce, 0xed, 0xa9, + 0x58, 0x8c, 0xc8, 0x74, 0x24, 0x5b, 0x20, 0x5d, 0x10, 0x41, 0x22, 0x24, 0x8a, 0xc0, 0xa2, 0x48, + 0xd4, 0x93, 0x96, 0x0b, 0xf2, 0xd0, 0x38, 0x14, 0xbd, 0xe6, 0x69, 0xbd, 0xcd, 0x39, 0x78, 0x84, + 0xf9, 0xa1, 0xf6, 0xf8, 0x3e, 0x1b, 0x9f, 0x2d, 0x70, 0xac, 0x94, 0x89, 0x44, 0x43, 0xd0, 0xe0, + 0xf6, 0xd4, 0x36, 0x50, 0xca, 0x2a, 0xae, 0x40, 0xe4, 0x8f, 0xc2, 0x89, 0x77, 0x72, 0x72, 0x2a, + 0x49, 0x49, 0xcc, 0x1b, 0x4f, 0x84, 0x21, 0x72, 0x3d, 0x77, 0xde, 0x55, 0x8b, 0xe1, 0x80, 0xb8, + 0xec, 0xd8, 0x23, 0x67, 0xce, 0xd3, 0x30, 0xd1, 0x5b, 0x04, 0x2a, 0x97, 0xc9, 0xf6, 0x4b, 0xdc, + 0x1b, 0x4c, 0x05, 0x19, 0x67, 0xde, 0xc9, 0xa5, 0xcd, 0x3b, 0x90, 0x06, 0xc4, 0x11, 0x1a, 0xed, + 0x43, 0x73, 0xee, 0x2c, 0xd3, 0x71, 0xde, 0xa6, 0x84, 0x5c, 0x0a, 0xf9, 0xc4, 0xcd, 0x56, 0x24, + 0xa9, 0xd5, 0xc2, 0xbc, 0xad, 0x86, 0x5f, 0xdd, 0x38, 0x7f, 0x4e, 0xce, 0x55, 0x0c, 0x2a, 0x8e, + 0x72, 0x83, 0x56, 0x4f, 0x6b, 0xbd, 0xc8, 0x19, 0x64, 0x68, 0xd6, 0xa2, 0x0d, 0xfc, 0x40, 0xfb, + 0x8e, 0xf7, 0xd4, 0xd1, 0x86, 0xad, 0xde, 0x8b, 0x11, 0x9b, 0x3f, 0x8a, 0x80, 0x12, 0xb7, 0xaf, + 0x44, 0x07, 0x26, 0x72, 0x4e, 0x18, 0xc4, 0x4e, 0xde, 0xec, 0x08, 0x73, 0xe5, 0x15, 0x5a, 0x3a, + 0xf4, 0x10, 0x59, 0x65, 0x33, 0x8b, 0x40, 0x49, 0x57, 0x06, 0x06, 0x2b, 0x7d, 0x49, 0xc0, 0x68, + 0x68, 0xed, 0x8b, 0x21, 0x87, 0x91, 0xb4, 0xef, 0x56, 0xe6, 0xd7, 0x0a, 0x0d, 0xf9, 0xfd, 0xc7, + 0xc7, 0x84, 0x1a, 0x79, 0x46, 0xc5, 0x99, 0x45, 0xe9, 0x2e, 0x57, 0xdc, 0x67, 0xed, 0x6f, 0xe9, + 0x07, 0x79, 0xa0, 0x8f, 0x10, 0x82, 0x08, 0xc3, 0xe0, 0xa5, 0xf5, 0x70, 0x8e, 0xe6, 0xf3, 0xef, + 0x58, 0x8f, 0xe6, 0x0d, 0x8a, 0x5c, 0x77, 0xa7, 0xf3, 0xa6, 0x5a, 0xf6, 0x95, 0xed, 0x57, 0x13, + 0xdc, 0xfe, 0xcf, 0x39, 0xfc, 0x44, 0xbf, 0x86, 0x00, 0x2f, 0xd5, 0x6f, 0x83, 0x4a, 0xe8, 0xce, + 0x3d, 0x87, 0xea, 0x8f, 0x6c, 0xe5, 0x27, 0x10, 0xab, 0x10, 0xaf, 0x92, 0x4e, 0x95, 0x75, 0x36, + 0x24, 0xe1, 0x28, 0x95, 0x42, 0xd4, 0x71, 0x2e, 0x0d, 0xd5, 0x28, 0xea, 0x03, 0xf9, 0x91, 0xf1, + 0x28, 0x20, 0x3f, 0x18, 0x9e, 0x02, 0xd5, 0x79, 0x93, 0xdb, 0x83, 0x2e, 0x58, 0x5e, 0xb1, 0x34, + 0x9d, 0x17, 0xff, 0xd9, 0x0a, 0x53, 0x2c, 0xa1, 0xeb, 0x25, 0x39, 0x4c, 0xb0, 0xe8, 0xdb, 0x82, + 0x74, 0x46, 0x06, 0xc2, 0x1c, 0x92, 0xd8, 0x5a, 0xc8, 0xb1, 0xf3, 0x9c, 0x4f, 0x83, 0xa5, 0x79, + 0x47, 0x87, 0xea, 0xea, 0xda, 0xc7, 0xad, 0x8b, 0x64, 0x26, 0x86, 0x43, 0x4d, 0xe6, 0x65, 0x84, + 0x16, 0xe9, 0x3a, 0xd9, 0x8b, 0x3b, 0x2d, 0x7f, 0x64, 0xd9, 0x6a, 0xfa, 0x0a, 0xc9, 0x2a, 0xe7, + 0xaf, 0x93, 0xb1, 0x41, 0x1a, 0x22, 0xab, 0xf4, 0x62, 0xca, 0xc9, 0x7f, 0x5c, 0xce, 0x8f, 0x3a, + 0x1f, 0x10, 0xb7, 0xbb, 0xa5, 0xa2, 0x7c, 0xc9, 0x9d, 0x53, 0x36, 0xa3, 0xb6, 0xb0, 0xdc, 0xbc, + 0xe3, 0x0e, 0x71, 0xfb, 0x26, 0xc8, 0x40, 0xf9, 0x83, 0x13, 0xad, 0x58, 0xb7, 0xa2, 0xa9, 0x24, + 0xb7, 0x90, 0x71, 0x29, 0x6f, 0x4b, 0xe4, 0xde, 0x6b, 0xfe, 0xfc, 0x5e, 0xc7, 0xca, 0x0d, 0xdd, + 0xe5, 0x58, 0x59, 0xcc, 0x57, 0x90, 0x7a, 0x0e, 0xbd, 0xd7, 0x25, 0x36, 0xf0, 0x81, 0xa7, 0x94, + 0x90, 0x4f, 0x30, 0x0a, 0xc6, 0xe5, 0x2e, 0x68, 0xd9, 0xf5, 0x0e, 0xa7, 0x09, 0xde, 0x62, 0x0b, + 0x37, 0x01, 0xe6, 0xc7, 0x29, 0x10, 0xef, 0x98, 0x56, 0x3b, 0xef, 0x6b, 0x35, 0x8f, 0xdd, 0x39, + 0xf7, 0xbf, 0x1a, 0xef, 0x21, 0xa8, 0x24, 0x99, 0x15, 0x38, 0x5e, 0x19, 0x1a, 0x69, 0x08, 0xf8, + 0xd1, 0xa5, 0x82, 0x4a, 0xcb, 0x5a, 0x7b, 0x9a, 0xb8, 0x13, 0x3a, 0xf3, 0x3d, 0x07, 0x89, 0x9b, + 0x21, 0x65, 0x68, 0xc0, 0x5c, 0xbc, 0xd4, 0xf7, 0x96, 0xa1, 0xba, 0xee, 0x5f, 0x75, 0x7f, 0xad, + 0xfc, 0x21, 0xc9, 0xa4, 0xf6, 0xa5, 0x59, 0x92, 0xda, 0x28, 0x49, 0x21, 0x0c, 0xfc, 0xbc, 0xe2, + 0x12, 0x83, 0xe9, 0xc5, 0x25, 0x26, 0xe8, 0xc3, 0x89, 0x1f, 0xe3, 0x9a, 0xf1, 0xbc, 0x55, 0x93, + 0x80, 0x1d, 0xa2, 0x21, 0xba, 0x4c, 0xc5, 0xbe, 0xca, 0xec, 0x95, 0x8c, 0xd4, 0x34, 0x14, 0x19, + 0xa8, 0xaf, 0xa5, 0x10, 0xe4, 0x5b, 0xd8, 0x7f, 0x36, 0xab, 0xf3, 0x3e, 0xf3, 0x25, 0x8e, 0x9a, + 0x9d, 0x31, 0x12, 0xb4, 0x90, 0x00, 0x48, 0xa5, 0x38, 0xff, 0x9d, 0xb6, 0x1d, 0x96, 0x46, 0xc3, + 0xfa, 0xd2, 0xe2, 0xb1, 0x0c, 0xb1, 0xf2, 0x24, 0xd5, 0x77, 0xc5, 0xf5, 0x05, 0x8b, 0xe0, 0xd0, + 0x5b, 0x92, 0xea, 0x80, 0x05, 0x16, 0xe8, 0x3b, 0xf4, 0x23, 0xf0, 0xab, 0x61, 0xc2, 0xbe, 0xd1, + 0x5a, 0xa2, 0x6c, 0x16, 0x17, 0x08, 0xc2, 0x3d, 0x75, 0x90, 0xeb, 0xcc, 0xf6, 0x74, 0xb1, 0x3b, + 0x60, 0x02, 0x68, 0x50, 0x60, 0x7e, 0xf0, 0xa3, 0x52, 0x5a, 0xc4, 0x1f, 0x3f, 0xc9, 0x6d, 0x98, + 0xd7, 0xad, 0x70, 0x6a, 0x11, 0x93, 0x6f, 0x4c, 0x19, 0xf0, 0x67, 0x61, 0x9c, 0x91, 0x26, 0xcc, + 0xdd, 0x64, 0x65, 0x7a, 0xa9, 0xe9, 0x33, 0xa9, 0x17, 0x73, 0xc6, 0x87, 0x18, 0x21, 0x17, 0x17, + 0x95, 0x63, 0x96, 0xf7, 0xc4, 0x6f, 0x48, 0xa5, 0x55, 0xc0, 0x4d, 0x4b, 0xeb, 0x59, 0x06, 0x71, + 0xe7, 0xeb, 0x59, 0x23, 0x53, 0x5a, 0x3e, 0x5d, 0x70, 0x35, 0xd2, 0xc9, 0x19, 0x15, 0xce, 0xed, + 0x98, 0xc8, 0x5d, 0x0b, 0x39, 0x72, 0xb9, 0xc8, 0x76, 0x67, 0x56, 0x4d, 0xd9, 0xb7, 0x0b, 0x2f, + 0x33, 0x3a, 0x2e, 0xe6, 0x9e, 0xcc, 0x07, 0x4c, 0x08, 0x77, 0x12, 0x18, 0x20, 0xc2, 0xbf, 0xb1, + 0xb7, 0x80, 0x5d, 0x13, 0xf8, 0x09, 0xe1, 0xf7, 0x32, 0x49, 0xac, 0xa2, 0x31, 0xad, 0xc8, 0xb3, + 0xd6, 0xfe, 0x9f, 0xf3, 0x42, 0x8f, 0x3f, 0xed, 0xf9, 0xa3, 0x27, 0x81, 0xa3, 0x22, 0x9f, 0xe8, + 0x23, 0x34, 0x4c, 0x01, 0x1d, 0x3b, 0xf2, 0x8a, 0x30, 0x44, 0xe4, 0xf8, 0xb0, 0xd9, 0x98, 0xe0, + 0x23, 0x53, 0x17, 0xbd, 0x24, 0x7b, 0x36, 0xbf, 0xde, 0xb6, 0x92, 0x4c, 0xa5, 0xb6, 0x95, 0x8f, + 0x74, 0x34, 0xae, 0x81, 0x80, 0xaa, 0xa7, 0x3a, 0xfe, 0x91, 0x33, 0xf4, 0x26, 0xca, 0xf4, 0x40, + 0x3d, 0xa2, 0x43, 0xcc, 0x7b, 0xd6, 0xe7, 0x97, 0xd9, 0xa3, 0x9b, 0x81, 0xf6, 0x48, 0x65, 0x46, + 0x6e, 0xdf, 0xd5, 0x3f, 0xe9, 0x39, 0x0d, 0x4e, 0x7f, 0x26, 0x7d, 0x65, 0xdb, 0xd2, 0xb1, 0x6d, + 0xf6, 0xc4, 0x8c, 0x74, 0x4f, 0x75, 0x7e, 0xfe, 0xb9, 0xcd, 0xd0, 0xab, 0x28, 0x93, 0x9f, 0xb7, + 0x51, 0x2d, 0xae, 0x6d, 0xee, 0xec, 0x08, 0x57, 0x67, 0x4f, 0x9a, 0xfd, 0x47, 0x1f, 0x06, 0x58, + 0x15, 0x60, 0x5a, 0x09, 0xc0, 0x73, 0x05, 0x18, 0x3e, 0x21, 0xe5, 0xaf, 0x87, 0xa6, 0x26, 0x4d, + 0xb9, 0xbd, 0x57, 0x5a, 0x53, 0x3a, 0xc1, 0x9f, 0x62, 0xb9, 0x2f, 0x85, 0xdf, 0x46, 0x50, 0x3f, + 0xe7, 0x42, 0x8d, 0x6a, 0x64, 0xd0, 0x08, 0xab, 0x2c, 0x42, 0xb9, 0x4b, 0x0a, 0x97, 0xd0, 0x74, + 0x21, 0xb1, 0xd4, 0x40, 0x98, 0x2b, 0xac, 0xa1, 0x45, 0x6f, 0xfa, 0x01, 0x4f, 0x38, 0x36, 0xd3, + 0x15, 0x25, 0x74, 0xa7, 0x63, 0x5b, 0x47, 0x72, 0x7c, 0x2b, 0xc9, 0x97, 0xcd, 0x43, 0x1f, 0xbb, + 0x98, 0xdf, 0x1c, 0x6b, 0x1b, 0x25, 0xb2, 0xa5, 0x20, 0x23, 0x77, 0x86, 0xfe, 0x72, 0x87, 0x86, + 0x7c, 0x5f, 0x81, 0x4c, 0xf9, 0xcf, 0xd8, 0xe1, 0x54, 0x7a, 0xaa, 0x71, 0xbe, 0xb6, 0xa0, 0xab, + 0x25, 0xb4, 0xe2, 0x4b, 0xf1, 0x36, 0xd6, 0x50, 0x0e, 0x4c, 0x6c, 0xa3, 0x98, 0xc9, 0x7f, 0xb4, + 0x8d, 0xb9, 0xda, 0xb8, 0xad, 0xf5, 0x98, 0x57, 0x72, 0xb0, 0xbd, 0xce, 0x0b, 0x69, 0x9c, 0xfc, + 0x4c, 0x77, 0xdd, 0xdf, 0x1b, 0xcc, 0xb5, 0xf5, 0x0a, 0x19, 0x36, 0x0a, 0xf1, 0x19, 0xf1, 0x22, + 0xfd, 0x28, 0x21, 0xe4, 0xf2, 0xc5, 0x75, 0xae, 0xf0, 0x45, 0xab, 0x1f, 0x2b, 0x8a, 0x61, 0xe2, + 0x48, 0x74, 0x38, 0xe1, 0x5b, 0x96, 0xc5, 0xcc, 0xc4, 0xc3, 0xd7, 0xf0, 0x03, 0x63, 0x27, 0xe8, + 0xed, 0xba, 0xd8, 0x1a, 0x8a, 0x02, 0x91, 0x7d, 0xea, 0x22, 0x3b, 0xcb, 0x21, 0x6e, 0x60, 0xe4, + 0x3a, 0xc0, 0x94, 0x80, 0x71, 0x17, 0x85, 0xdb, 0xc3, 0x4c, 0x26, 0xf3, 0x2d, 0x0b, 0xf9, 0x37, + 0x84, 0x95, 0x6f, 0xa6, 0xc5, 0xc2, 0xce, 0x91, 0x0a, 0x62, 0x05, 0x05, 0xd2, 0x16, 0xbc, 0xfb, + 0x33, 0x40, 0xdc, 0x58, 0xb9, 0xb6, 0x1c, 0x67, 0x22, 0xfb, 0x55, 0x09, 0xa6, 0xa6, 0xb5, 0x5d, + 0xe1, 0x48, 0x1d, 0xaa, 0xd7, 0xa4, 0x9e, 0x4f, 0xb4, 0xe6, 0x6f, 0xd9, 0xa0, 0xe2, 0x10, 0xb4, + 0x66, 0x57, 0xdc, 0x60, 0x0d, 0x93, 0xb4, 0x15, 0xd6, 0x1c, 0x3b, 0x10, 0x2c, 0x92, 0x4c, 0x80, + 0x74, 0x91, 0x7d, 0x67, 0x9f, 0xf1, 0xf0, 0xd7, 0x7c, 0x2a, 0x10, 0x33, 0x96, 0xc3, 0x54, 0x8a, + 0x2c, 0x61, 0x85, 0xb4, 0x41, 0x11, 0x67, 0x8d, 0xb0, 0x3e, 0xcb, 0x6c, 0x19, 0x18, 0x9f, 0x11, + 0x2a, 0xed, 0x76, 0x0d, 0x8d, 0xa4, 0xa6, 0xa4, 0x00, 0x3f, 0x5e, 0xd7, 0x00, 0x80, 0x74, 0xff, + 0x95, 0x9c, 0xc7, 0x15, 0x37, 0xbe, 0x7c, 0x1e, 0x6b, 0x4a, 0xa5, 0x53, 0x03, 0x54, 0xeb, 0x1b, + 0xdf, 0x6c, 0x0e, 0x0a, 0x7a, 0xb6, 0x46, 0xdc, 0x20, 0xf5, 0x7c, 0xcb, 0xda, 0xd0, 0x19, 0xda, + 0x5c, 0x08, 0x43, 0x08, 0xc2, 0x99, 0x21, 0x0a, 0x2b, 0x31, 0x00, 0xce, 0x0c, 0x68, 0x3d, 0xb9, + 0xc5, 0xbc, 0x9a, 0xaf, 0x2d, 0x6c, 0x10, 0xc3, 0x07, 0x92, 0x06, 0x57, 0x96, 0xb5, 0x78, 0x3d, + 0x31, 0x5b, 0x73, 0x7d, 0xc6, 0xc4, 0xc4, 0x46, 0x57, 0xb0, 0xd5, 0x5c, 0xae, 0xbc, 0xb8, 0x55, + 0x2c, 0xfa, 0x5e, 0x2f, 0xaf, 0x9d, 0xf9, 0x5e, 0x9e, 0xb0, 0x53, 0x99, 0x0b, 0xfb, 0x5a, 0xcc, + 0x29, 0x8b, 0x5b, 0x5d, 0xb9, 0xd0, 0xb4, 0x97, 0xf7, 0x9a, 0x3d, 0x9c, 0xeb, 0xe7, 0x21, 0xb0, + 0xb2, 0xc5, 0xfd, 0x54, 0xca, 0x4b, 0xfa, 0x89, 0x45, 0xdf, 0x1d, 0x4d, 0x9c, 0xc6, 0x09, 0x03, + 0x8a, 0xc9, 0x8b, 0xc7, 0x34, 0xdf, 0x5e, 0xdc, 0x2a, 0x29, 0xba, 0x92, 0xdc, 0xae, 0xdf, 0xca, + 0xd7, 0x11, 0x88, 0xe3, 0xd6, 0x28, 0x03, 0x12, 0x04, 0xd9, 0xeb, 0xcd, 0xd0, 0x90, 0xb1, 0x59, + 0x57, 0xf3, 0xf0, 0x14, 0xbe, 0x2b, 0x7e, 0xc5, 0x86, 0x57, 0x12, 0xe8, 0x77, 0x19, 0x35, 0x6d, + 0x5b, 0x66, 0x47, 0xef, 0x26, 0xb7, 0xcc, 0xcf, 0xa1, 0x56, 0x7f, 0x7e, 0x06, 0xb5, 0x4e, 0x01, + 0xec, 0xd4, 0x27, 0x65, 0x61, 0x97, 0x0b, 0x41, 0x97, 0x57, 0x12, 0x26, 0xce, 0xb6, 0x80, 0xe5, + 0x63, 0x4d, 0x73, 0x1c, 0x81, 0xb4, 0x4e, 0x99, 0x30, 0x4e, 0xec, 0x00, 0xfa, 0x5e, 0x1b, 0x06, + 0x72, 0xcb, 0xf1, 0x03, 0xa7, 0x62, 0x05, 0x11, 0x66, 0xa0, 0x1b, 0x98, 0x3d, 0x0a, 0x90, 0xc0, + 0x9d, 0xde, 0x8e, 0x8c, 0x5c, 0xd7, 0xb8, 0xc1, 0x70, 0xbf, 0x38, 0x6c, 0x74, 0xe6, 0x51, 0xda, + 0x88, 0x54, 0x18, 0xca, 0x0a, 0x02, 0xab, 0x1b, 0x25, 0x3f, 0x8a, 0x1e, 0xfa, 0x0d, 0xa0, 0x21, + 0xe8, 0x21, 0xe1, 0x52, 0x21, 0x51, 0xf3, 0x20, 0x05, 0x99, 0x8b, 0x65, 0x92, 0xbc, 0x75, 0x91, + 0x06, 0x4f, 0xbd, 0x71, 0x54, 0xdd, 0x48, 0x79, 0x3d, 0xdd, 0x85, 0x6f, 0xc0, 0xe9, 0xeb, 0x62, + 0xbe, 0x54, 0x02, 0x78, 0x60, 0xf1, 0xab, 0x8b, 0x39, 0x51, 0xe0, 0xa3, 0x96, 0x82, 0xac, 0x6c, + 0x0c, 0xe0, 0x2d, 0x97, 0xaf, 0x88, 0x49, 0xf0, 0xb0, 0xb5, 0x20, 0xe4, 0xa2, 0x3e, 0x17, 0xa7, + 0x92, 0x4c, 0x34, 0x33, 0x95, 0x41, 0x30, 0x2f, 0xfd, 0x1a, 0x62, 0x9a, 0xfd, 0xe8, 0xc4, 0x47, + 0x9c, 0xe0, 0xdc, 0x3f, 0x48, 0x0d, 0x70, 0x91, 0xb0, 0xac, 0x6a, 0x13, 0x1d, 0xfa, 0x9b, 0x86, + 0x6a, 0xbe, 0x60, 0x05, 0x34, 0xe7, 0x5c, 0x05, 0x1c, 0x7c, 0xc1, 0xa9, 0x58, 0x1f, 0x6e, 0x82, + 0x29, 0xea, 0xf5, 0x26, 0x72, 0x34, 0xc8, 0x44, 0x7b, 0x91, 0x1b, 0x6f, 0x16, 0x26, 0xd7, 0xcf, + 0x04, 0xeb, 0x06, 0x82, 0x1f, 0x5b, 0x29, 0x30, 0x63, 0xcf, 0x27, 0x8b, 0xf7, 0xc7, 0x29, 0x1c, + 0xa6, 0x83, 0xb9, 0x8a, 0x91, 0x14, 0xd8, 0x08, 0xa1, 0x5b, 0xfc, 0x01, 0x1d, 0x33, 0x6e, 0x1c, + 0x69, 0x70, 0x5c, 0xc5, 0x1f, 0xae, 0x42, 0x69, 0x1d, 0x9e, 0x70, 0xb4, 0x94, 0xd8, 0x68, 0xad, + 0xb0, 0xe1, 0x52, 0x70, 0xa1, 0xd4, 0x6c, 0x40, 0x9b, 0x39, 0x59, 0x3a, 0x6e, 0x80, 0x5d, 0xba, + 0xa0, 0xbe, 0xeb, 0x32, 0x0d, 0x12, 0xbe, 0x90, 0x27, 0xbe, 0xd8, 0x8a, 0x90, 0x5b, 0xa7, 0x6e, + 0xe3, 0x42, 0x81, 0xfa, 0x8f, 0x77, 0x84, 0x52, 0x9e, 0xfa, 0x7d, 0x0b, 0xe5, 0x0a, 0xe6, 0x81, + 0x87, 0x0a, 0x73, 0x55, 0x17, 0x71, 0x89, 0xe0, 0x06, 0xe9, 0x5b, 0xd3, 0x99, 0x9f, 0x61, 0xee, + 0xc7, 0x11, 0xc9, 0x11, 0xfc, 0xf5, 0x3c, 0x26, 0x23, 0x88, 0xbc, 0x7e, 0x0f, 0x91, 0xa0, 0xf6, + 0xfb, 0x74, 0xaf, 0x2c, 0xa0, 0x7b, 0xe5, 0xbf, 0x00, 0x95, 0x9f, 0x55, 0x55, 0x15, 0x14, 0x86, + 0x9d, 0x85, 0xc8, 0x59, 0x09, 0xb0, 0x33, 0xfc, 0x3b, 0x64, 0x76, 0x27, 0x06, 0xfc, 0x2e, 0x19, + 0x3b, 0x77, 0x1f, 0xc2, 0x8e, 0x8f, 0x9c, 0x95, 0x7f, 0x88, 0x9d, 0x68, 0x3f, 0x57, 0x12, 0xa9, + 0xe0, 0xe5, 0xef, 0xf4, 0xf3, 0xf8, 0xbd, 0x7e, 0x1e, 0x7f, 0xa0, 0x9f, 0xeb, 0x39, 0xd6, 0xd3, + 0xdc, 0xba, 0xb2, 0xa8, 0xb3, 0x65, 0xd0, 0x89, 0x7e, 0x87, 0x07, 0xce, 0x71, 0x0b, 0xe6, 0xdd, + 0x1a, 0x59, 0x46, 0xe8, 0xb1, 0x59, 0x01, 0x57, 0x93, 0xab, 0xfd, 0x2d, 0x81, 0x28, 0xc7, 0xe1, + 0x5a, 0x42, 0x4a, 0x91, 0x32, 0x91, 0x65, 0x65, 0xe5, 0xb7, 0x10, 0x74, 0xf5, 0x1e, 0xbf, 0xb9, + 0xea, 0x36, 0xdf, 0x43, 0x11, 0x59, 0x20, 0x96, 0x72, 0x9c, 0xdf, 0x5c, 0x20, 0xe2, 0x43, 0xdf, + 0xa5, 0xbd, 0x5c, 0x89, 0xac, 0x9e, 0xbf, 0xd3, 0xcb, 0xfd, 0xff, 0x1b, 0x7a, 0xd9, 0xfc, 0xa7, + 0xbd, 0xdc, 0xfa, 0x3f, 0xb9, 0x97, 0x71, 0x7a, 0x1f, 0x2d, 0xa3, 0xf6, 0x7b, 0x34, 0x16, 0x0b, + 0x08, 0xa5, 0xa9, 0x19, 0x51, 0x8a, 0x1f, 0xf5, 0xf4, 0x26, 0x8a, 0x32, 0x2b, 0x1f, 0xc5, 0xca, + 0xfd, 0x3b, 0xeb, 0xc0, 0x3d, 0xa2, 0x64, 0xe5, 0xef, 0xe1, 0x64, 0x1e, 0x25, 0x2b, 0x7f, 0x67, + 0xe4, 0xd1, 0x93, 0x7d, 0x11, 0x2a, 0x56, 0x28, 0x2e, 0x20, 0x07, 0xfa, 0x72, 0xcd, 0x49, 0x92, + 0xef, 0x76, 0xbf, 0x91, 0xc8, 0x01, 0x79, 0x31, 0x90, 0xd6, 0x4c, 0x44, 0xbe, 0x0c, 0xe9, 0x50, + 0x62, 0xbf, 0x57, 0xfe, 0x05, 0xc1, 0x6f, 0x8e, 0x08, 0x88, 0x0f, 0x6e, 0xac, 0x06, 0x48, 0x0b, + 0xe5, 0xf8, 0xaf, 0xf6, 0x76, 0x4a, 0x44, 0xa9, 0x02, 0xfe, 0x13, 0xa5, 0xaf, 0x02, 0xb9, 0x83, + 0xa1, 0x2e, 0x5e, 0x69, 0xed, 0xa4, 0x15, 0x75, 0x35, 0x30, 0x37, 0x46, 0xc5, 0xb1, 0x65, 0x35, + 0xab, 0xac, 0xe6, 0x15, 0x56, 0xf5, 0x39, 0xeb, 0xe1, 0xa2, 0xca, 0xfd, 0x22, 0x0b, 0x1b, 0x58, + 0x89, 0xb7, 0xd0, 0xaa, 0x44, 0x60, 0x7f, 0xd4, 0x0c, 0xc3, 0x1a, 0x2d, 0x6d, 0x80, 0x94, 0xd8, + 0x88, 0xac, 0xf4, 0xcb, 0xba, 0x00, 0xea, 0x13, 0xdf, 0xc0, 0xbd, 0xea, 0xf4, 0x05, 0x42, 0x35, + 0x4b, 0x70, 0xe4, 0x17, 0xfb, 0x78, 0x37, 0xf0, 0x3f, 0xbe, 0x15, 0xda, 0xc0, 0x92, 0xfa, 0x3b, + 0xc9, 0xd6, 0x13, 0xa8, 0x5d, 0x40, 0x27, 0xe8, 0x78, 0x3f, 0x14, 0x25, 0x36, 0xc8, 0x5b, 0x06, + 0x54, 0xba, 0xac, 0x0b, 0xdc, 0x30, 0x50, 0x89, 0xe1, 0xdd, 0x3e, 0x80, 0x0c, 0xca, 0xf7, 0xe1, + 0x42, 0x07, 0x7d, 0x61, 0x49, 0x17, 0x94, 0xc5, 0x5d, 0x48, 0x82, 0x3e, 0x52, 0xf7, 0x16, 0x4c, + 0x90, 0x25, 0x75, 0x2b, 0x58, 0xf7, 0xca, 0xc7, 0x88, 0x14, 0x6b, 0x6e, 0x55, 0xb8, 0xba, 0xb7, + 0x27, 0xaa, 0xb9, 0x1c, 0x31, 0xa4, 0xc0, 0x47, 0xc7, 0x56, 0xa9, 0x20, 0x66, 0xb8, 0xfa, 0xf7, + 0x1d, 0x4d, 0x33, 0x97, 0x01, 0x4f, 0x0b, 0x7c, 0x90, 0x42, 0x1d, 0xb3, 0xcd, 0x4f, 0x5d, 0xd5, + 0x6c, 0x5b, 0xfd, 0x0f, 0xc9, 0xc3, 0x9e, 0x25, 0x10, 0x15, 0x1a, 0x65, 0x61, 0xd9, 0x22, 0xf3, + 0x92, 0x68, 0x18, 0x72, 0x17, 0xe1, 0x23, 0x1a, 0x85, 0x6c, 0x0f, 0x1c, 0xdb, 0xd0, 0x16, 0x9c, + 0xe2, 0x5a, 0xcd, 0xa1, 0x99, 0x16, 0xf0, 0x7c, 0xb5, 0x80, 0xf1, 0xb6, 0x5c, 0x43, 0x8c, 0x9a, + 0x4f, 0x20, 0x45, 0x11, 0x39, 0x9b, 0x9d, 0x30, 0x1e, 0xbb, 0xf0, 0xca, 0x2b, 0xe4, 0x74, 0xd7, + 0xf4, 0xda, 0xb0, 0x3c, 0xb2, 0x44, 0xe0, 0x85, 0x16, 0xab, 0x0e, 0xe1, 0x91, 0xe4, 0xb1, 0x1b, + 0x3e, 0x36, 0xc3, 0xc7, 0x11, 0x3e, 0x6e, 0xe4, 0x42, 0x33, 0xc2, 0x4a, 0xac, 0xd5, 0x5c, 0x62, + 0xab, 0x49, 0x8d, 0xe6, 0xa2, 0x8d, 0xae, 0xbc, 0xdb, 0x6a, 0x3e, 0xd9, 0x52, 0x04, 0x8d, 0xe6, + 0xc3, 0xc5, 0xe1, 0xbd, 0x56, 0xf3, 0x1f, 0xe9, 0xea, 0x0a, 0xd7, 0x6a, 0x61, 0xde, 0x64, 0x32, + 0xb7, 0xbe, 0x89, 0x3e, 0x20, 0x27, 0xd4, 0xe0, 0x12, 0x2e, 0x6f, 0x54, 0x83, 0xd6, 0xc6, 0xa3, + 0x24, 0x43, 0x09, 0x0b, 0x78, 0xc7, 0x9b, 0x7b, 0xba, 0x06, 0x15, 0x6e, 0x22, 0x86, 0xac, 0x88, + 0x56, 0x08, 0x95, 0xb5, 0xfc, 0xe5, 0x1b, 0x37, 0xb4, 0x92, 0xc4, 0x82, 0x17, 0x6d, 0xd2, 0xb6, + 0x46, 0x26, 0xc9, 0xbc, 0x8b, 0x1b, 0x5d, 0x28, 0x1b, 0xe0, 0x76, 0x95, 0x7f, 0x01, 0x4b, 0x5d, + 0xb4, 0x60, 0x96, 0x83, 0x56, 0xa8, 0x8e, 0x0d, 0xcd, 0xec, 0x7a, 0xbd, 0xba, 0x58, 0x89, 0x51, + 0x10, 0xb6, 0x63, 0x76, 0x22, 0xa3, 0x49, 0x0f, 0xd7, 0x70, 0xe0, 0x12, 0x45, 0x5e, 0x1b, 0x33, + 0x4b, 0x5c, 0xc4, 0x20, 0x26, 0xf8, 0x07, 0x93, 0x68, 0x57, 0x0a, 0xeb, 0xcc, 0xf6, 0xf8, 0x1e, + 0x32, 0x29, 0x2a, 0x71, 0xfb, 0x1e, 0xf9, 0xca, 0x87, 0x30, 0xc6, 0x20, 0x20, 0x18, 0x6b, 0x16, + 0x28, 0xc6, 0x88, 0xe8, 0x23, 0x40, 0x35, 0x9a, 0xe7, 0x85, 0xd2, 0xc6, 0x8a, 0x5f, 0xf9, 0x28, + 0xaa, 0x6b, 0x44, 0x56, 0x7e, 0x1a, 0xa8, 0x48, 0xe8, 0xc0, 0x74, 0x0f, 0x30, 0xcf, 0xa3, 0x7b, + 0x85, 0xdb, 0x3c, 0xae, 0x8b, 0xd7, 0x24, 0xfc, 0x60, 0x28, 0x8b, 0x7d, 0xa5, 0xf1, 0x08, 0x89, + 0x18, 0x22, 0x8b, 0xcc, 0x0d, 0x81, 0x2c, 0xcc, 0x96, 0x49, 0xb6, 0xb3, 0x17, 0xe6, 0x98, 0x27, + 0x90, 0x30, 0xfc, 0x20, 0x3f, 0x6f, 0x31, 0xd5, 0x64, 0x96, 0x2d, 0x8a, 0xdb, 0x4a, 0xc7, 0x27, + 0x93, 0x38, 0xba, 0x82, 0xd0, 0x88, 0xbe, 0x7d, 0x32, 0x47, 0x73, 0xae, 0xc4, 0x39, 0x88, 0x0f, + 0x46, 0x30, 0x18, 0xf8, 0x12, 0x45, 0x0c, 0x6e, 0x11, 0x93, 0x9b, 0xb5, 0x70, 0x9c, 0x82, 0xc1, + 0xa6, 0x1b, 0xb4, 0xc4, 0x8d, 0x89, 0x1b, 0x15, 0xbc, 0x3c, 0xe8, 0x82, 0x22, 0x9f, 0xd8, 0x69, + 0xe7, 0x2a, 0xe2, 0x0c, 0x52, 0xae, 0xad, 0x9a, 0x41, 0x75, 0xbe, 0x9f, 0x05, 0x7c, 0x60, 0xbb, + 0x27, 0x99, 0x4c, 0x06, 0x68, 0x05, 0x33, 0x71, 0xf2, 0x17, 0x81, 0x61, 0x91, 0x6c, 0x4e, 0x95, + 0xef, 0xb0, 0x6f, 0x2c, 0xac, 0xd9, 0x3b, 0xf6, 0xb0, 0xce, 0x78, 0x81, 0xe8, 0x4a, 0xa7, 0x1d, + 0x46, 0x5e, 0x65, 0xb3, 0x9b, 0xd6, 0x27, 0xf4, 0x99, 0x49, 0x75, 0x21, 0xf5, 0xb0, 0x6a, 0xf7, + 0x74, 0x9e, 0x92, 0x56, 0x78, 0x52, 0xfa, 0x0d, 0x4a, 0xa2, 0xfe, 0x30, 0x4b, 0x08, 0x29, 0xc8, + 0xf0, 0xdf, 0x4a, 0x47, 0x0c, 0x8a, 0x7f, 0x91, 0x8c, 0xf6, 0x1e, 0xfe, 0xb7, 0x13, 0x50, 0xc0, + 0xb8, 0x59, 0xe0, 0x2f, 0x9e, 0x4c, 0x68, 0x52, 0xb8, 0xb6, 0xd2, 0xf7, 0x77, 0xcd, 0xe0, 0x4c, + 0x4a, 0x88, 0xba, 0xcc, 0x45, 0xd9, 0xd8, 0x1e, 0x48, 0x03, 0x6f, 0x81, 0x79, 0xbc, 0x90, 0x2f, + 0x71, 0xe6, 0xf1, 0x0f, 0x6b, 0x89, 0xd7, 0xb6, 0x86, 0x3a, 0x45, 0x82, 0xfe, 0xcc, 0xa9, 0x4a, + 0x24, 0xd3, 0xc7, 0x6d, 0xe6, 0xff, 0xaa, 0xea, 0xc4, 0x4c, 0xe6, 0x2b, 0xef, 0xd9, 0xcc, 0xc9, + 0xa0, 0x86, 0xfd, 0x22, 0x53, 0x2f, 0xc4, 0x3a, 0x17, 0x2b, 0x0b, 0x96, 0x09, 0x36, 0x21, 0x5d, + 0xec, 0x56, 0x7c, 0xa4, 0xa3, 0xe3, 0x96, 0x4b, 0x1c, 0xb7, 0x95, 0xc5, 0x03, 0xf7, 0x81, 0x71, + 0x23, 0xa0, 0xb9, 0xfe, 0xb8, 0x15, 0x95, 0x75, 0xba, 0x85, 0xf9, 0x7b, 0xea, 0x2d, 0x5e, 0x79, + 0x86, 0xbe, 0x9b, 0x93, 0xf7, 0xc6, 0x2e, 0xc8, 0xf8, 0x7f, 0xc3, 0xf8, 0x25, 0x8c, 0x56, 0x7c, + 0x4c, 0x73, 0xe1, 0xf8, 0xe9, 0x7e, 0xd7, 0x96, 0x8f, 0x61, 0x3e, 0x36, 0x86, 0x42, 0x8f, 0xec, + 0x5b, 0x2c, 0x1f, 0xc8, 0xc8, 0x06, 0xe8, 0x6f, 0x5a, 0xe0, 0xb7, 0x73, 0x49, 0x32, 0x16, 0x6f, + 0x67, 0x19, 0xb8, 0x9e, 0xd5, 0x27, 0x02, 0xed, 0xca, 0xef, 0x0d, 0x49, 0xa2, 0x09, 0xf6, 0xf7, + 0x6c, 0x30, 0x1f, 0xdc, 0x83, 0x42, 0x8c, 0xae, 0x7c, 0x64, 0x40, 0xf2, 0xe2, 0x06, 0xed, 0x8f, + 0x90, 0x5b, 0x3e, 0x0e, 0x85, 0xb8, 0xf1, 0x8a, 0x1b, 0x88, 0xe5, 0xe3, 0xe0, 0x6f, 0x93, 0xfe, + 0x26, 0x6f, 0xdb, 0xce, 0xbf, 0x37, 0x39, 0xd8, 0x40, 0xe4, 0xff, 0x9d, 0xa9, 0x51, 0xfe, 0x6f, + 0x9d, 0x18, 0x05, 0x98, 0x18, 0x6c, 0x20, 0xf2, 0xcb, 0x07, 0xa2, 0xf8, 0xb7, 0x27, 0x84, 0xa2, + 0x55, 0xfe, 0xd6, 0x84, 0x28, 0x7c, 0x6c, 0x42, 0x14, 0xfe, 0x7f, 0x31, 0x21, 0x8a, 0xc1, 0x84, + 0x28, 0xcc, 0x89, 0x11, 0x71, 0xb1, 0x81, 0x2a, 0x18, 0xd7, 0x5a, 0x97, 0x5c, 0x95, 0xfa, 0x8e, + 0xc4, 0xc9, 0xbc, 0xcc, 0xe3, 0x92, 0x4a, 0x5c, 0x06, 0xa1, 0x7e, 0xec, 0x22, 0x2f, 0x61, 0x36, + 0x2d, 0x52, 0x51, 0x9c, 0x1a, 0x58, 0x18, 0x02, 0xde, 0x37, 0x27, 0xa6, 0xbd, 0x31, 0xf5, 0xca, + 0x71, 0xe1, 0x85, 0x5b, 0xc5, 0x1c, 0x80, 0x98, 0xac, 0x60, 0x57, 0x1a, 0x8c, 0x1e, 0xc8, 0x7b, + 0x14, 0xfe, 0x39, 0x65, 0x6d, 0xe5, 0x9b, 0xbd, 0x71, 0x13, 0x1e, 0x32, 0xe0, 0xa7, 0xa8, 0x97, + 0xa0, 0x88, 0xd2, 0xc1, 0xa4, 0xae, 0xea, 0xe1, 0x10, 0x93, 0x41, 0x2f, 0x97, 0x32, 0x25, 0x22, + 0x16, 0xe1, 0xb6, 0x9a, 0x92, 0xc9, 0x05, 0x83, 0xad, 0x64, 0xd6, 0x80, 0x36, 0xcd, 0xa6, 0x6b, + 0xd7, 0x98, 0xbf, 0x41, 0xac, 0x97, 0x17, 0x0e, 0xc2, 0xb8, 0x00, 0xb7, 0xe1, 0x76, 0xa2, 0xfd, + 0x6a, 0x88, 0x4b, 0x34, 0x76, 0x90, 0xc8, 0x59, 0x45, 0xcb, 0x45, 0x78, 0x32, 0x04, 0xb6, 0x1b, + 0x95, 0xe1, 0xdf, 0x15, 0xe1, 0x57, 0x16, 0x68, 0x83, 0x64, 0xb8, 0x41, 0x84, 0x5f, 0xa0, 0x0a, + 0xb2, 0xcf, 0x09, 0x33, 0x97, 0x97, 0xe0, 0x3f, 0x26, 0xc0, 0xaf, 0x7c, 0x50, 0x82, 0x9f, 0x53, + 0x04, 0x09, 0x10, 0x31, 0xf9, 0x7d, 0x85, 0x72, 0xad, 0xa8, 0x7a, 0x47, 0xd1, 0x87, 0x54, 0x13, + 0x92, 0xef, 0x22, 0x46, 0x65, 0x53, 0x12, 0x5e, 0x59, 0x48, 0xc3, 0x0b, 0x3d, 0x1c, 0x48, 0x08, + 0x72, 0x8b, 0xcd, 0x4a, 0x56, 0x26, 0x46, 0xdc, 0xe8, 0x91, 0xa9, 0x9b, 0x2f, 0xbc, 0x61, 0xc2, + 0xb2, 0x35, 0xf3, 0x46, 0x6d, 0xa6, 0x16, 0x3b, 0xcc, 0x30, 0x43, 0x41, 0xb2, 0xc3, 0x0c, 0x75, + 0xa0, 0x48, 0x76, 0xd5, 0x99, 0x6b, 0x74, 0x65, 0xae, 0xd5, 0xdc, 0x07, 0xdc, 0x74, 0xe6, 0x1b, + 0x65, 0x6a, 0xea, 0xca, 0x07, 0x9b, 0x9d, 0x6b, 0x35, 0xbf, 0xd0, 0x0d, 0xab, 0x50, 0x6c, 0x2e, + 0x71, 0x37, 0x0b, 0x26, 0xfb, 0xdf, 0xec, 0x6d, 0x61, 0x51, 0x6f, 0x95, 0x62, 0x6b, 0x71, 0xb3, + 0x8c, 0x7c, 0x56, 0x96, 0x3b, 0x25, 0xb1, 0xe8, 0x9b, 0x51, 0x13, 0x30, 0x75, 0x57, 0x54, 0x51, + 0xcd, 0x8c, 0x6a, 0xb3, 0xce, 0x2e, 0xc6, 0x59, 0xbd, 0xc1, 0x4f, 0x78, 0x3a, 0x5f, 0x9a, 0x2f, + 0x16, 0x1c, 0x27, 0x5e, 0xe6, 0x53, 0x16, 0x2b, 0x83, 0xde, 0xba, 0xc1, 0x84, 0x20, 0x9e, 0xf8, + 0x4b, 0x18, 0x2c, 0xb1, 0x3c, 0x5a, 0xae, 0xf6, 0x51, 0x47, 0x39, 0x81, 0x1c, 0x13, 0xa4, 0xf8, + 0xca, 0x55, 0x54, 0xe6, 0xfd, 0x18, 0xe2, 0x23, 0x00, 0xa2, 0xdf, 0xa5, 0x26, 0xc4, 0x7e, 0xd7, + 0x2f, 0x3f, 0xd2, 0x45, 0x41, 0x35, 0x3c, 0xe6, 0x3a, 0xc4, 0xdd, 0x67, 0x6e, 0x9b, 0x5d, 0xff, + 0x02, 0x62, 0xfd, 0x6e, 0xeb, 0xfc, 0x6a, 0xa4, 0x1c, 0xef, 0x77, 0x2d, 0xbc, 0x74, 0xeb, 0xec, + 0xfa, 0xb6, 0xb7, 0x7b, 0x8b, 0x17, 0x0e, 0x6f, 0x91, 0x4b, 0xb8, 0xf6, 0xb6, 0x1b, 0x8f, 0xf0, + 0xb3, 0x5d, 0xda, 0x1b, 0x74, 0x4a, 0xe4, 0xc6, 0xe1, 0x87, 0xb3, 0xeb, 0x2b, 0xe5, 0xb0, 0xe1, + 0xb8, 0xc5, 0x56, 0x99, 0x5c, 0x69, 0x7e, 0x65, 0x5e, 0xde, 0xe6, 0xb6, 0x20, 0xcf, 0xf8, 0x79, + 0x34, 0xac, 0x3c, 0x5e, 0xde, 0x62, 0xe2, 0x51, 0x6b, 0xb7, 0xf7, 0xd4, 0x1a, 0x35, 0x1a, 0x3b, + 0xee, 0x29, 0xbc, 0xae, 0xed, 0x34, 0x5a, 0xed, 0xe1, 0xeb, 0x3e, 0x16, 0xd8, 0x6a, 0x5e, 0xdf, + 0x5e, 0x6d, 0xdd, 0x6d, 0xf7, 0x6e, 0x8c, 0xc7, 0xf5, 0xe6, 0x8e, 0xd5, 0x18, 0xed, 0x9c, 0x9e, + 0xdd, 0xaf, 0x99, 0xeb, 0xe6, 0x68, 0x5b, 0xb7, 0x27, 0xde, 0xe5, 0x59, 0xf1, 0xa9, 0xe2, 0x35, + 0x9d, 0x9b, 0x83, 0xfe, 0x4e, 0x7f, 0xaf, 0x68, 0x5d, 0xbc, 0x4d, 0x8c, 0xf6, 0xe8, 0xea, 0xd5, + 0xce, 0x5d, 0x5f, 0xb7, 0xcd, 0xbb, 0xec, 0xd9, 0xe0, 0x69, 0xf0, 0xf6, 0xaa, 0x39, 0x8d, 0xad, + 0xc9, 0xf8, 0xe1, 0xcd, 0xdc, 0x1a, 0x15, 0xf4, 0xee, 0x8b, 0xb6, 0xb7, 0xdb, 0x79, 0x98, 0xdc, + 0x0e, 0x7a, 0xc7, 0xd9, 0xc9, 0xde, 0xa9, 0xb2, 0x3d, 0x3e, 0xea, 0x4c, 0x5e, 0x1f, 0x9e, 0x76, + 0xcf, 0x5b, 0xe5, 0xec, 0xb5, 0xb3, 0x9e, 0x6d, 0x76, 0xd6, 0x06, 0x87, 0xdb, 0xa5, 0xb3, 0x51, + 0x7b, 0xcd, 0x72, 0x4e, 0x87, 0x8d, 0x8b, 0xc4, 0x4b, 0xd0, 0xe3, 0x8e, 0x18, 0xc3, 0x28, 0xe7, + 0x8a, 0xec, 0xbf, 0xcc, 0xcd, 0x00, 0x1c, 0x60, 0xe6, 0xcc, 0xcd, 0xd3, 0x8e, 0xa3, 0xbd, 0x0e, + 0x34, 0xd7, 0x3b, 0x72, 0x2d, 0x93, 0xae, 0x9f, 0x1d, 0xa0, 0xeb, 0xde, 0xc2, 0x79, 0xb4, 0xa0, + 0x96, 0x18, 0x05, 0x1e, 0x9a, 0xc0, 0x20, 0xcd, 0x96, 0x26, 0xe0, 0x6d, 0xdc, 0xbf, 0x59, 0x97, + 0xef, 0xbb, 0x88, 0xb3, 0x33, 0x25, 0x66, 0xa9, 0xd0, 0x25, 0xca, 0xe2, 0x7f, 0xba, 0x9a, 0x81, + 0xfb, 0x3a, 0x1b, 0xb7, 0x24, 0x45, 0xa0, 0x77, 0xc1, 0xcf, 0xf9, 0x21, 0x26, 0xd5, 0x4d, 0x24, + 0x06, 0x9c, 0xad, 0x51, 0xa1, 0xa1, 0x65, 0x76, 0x88, 0xb8, 0x40, 0xfb, 0xdd, 0xb4, 0x2c, 0x2f, + 0x56, 0x69, 0x60, 0x1c, 0x22, 0x48, 0xe5, 0xe5, 0xde, 0x9e, 0xb8, 0x71, 0xaa, 0xb6, 0x35, 0x61, + 0xa4, 0x7b, 0x3d, 0x4e, 0xd5, 0x27, 0xd1, 0x5d, 0x71, 0x2e, 0xc0, 0xe4, 0xad, 0x14, 0x6b, 0x30, + 0x27, 0xf6, 0x76, 0x95, 0xdd, 0x1a, 0x5b, 0x54, 0x56, 0x84, 0xe6, 0x44, 0x68, 0xe8, 0x4e, 0xcb, + 0xb2, 0xac, 0x17, 0x5d, 0x23, 0x3e, 0xdc, 0x5e, 0x4f, 0x13, 0xbe, 0xa9, 0x02, 0xf5, 0xcf, 0xec, + 0x79, 0x9e, 0xed, 0x56, 0xb3, 0xd9, 0x91, 0xa1, 0xb5, 0x33, 0x20, 0x1d, 0xb6, 0x2c, 0xd0, 0xda, + 0xb5, 0x0c, 0xee, 0xca, 0xd8, 0x59, 0x90, 0x46, 0x54, 0xa7, 0xab, 0x81, 0x1c, 0xfa, 0x9f, 0xcc, + 0xbf, 0x6e, 0x85, 0xf8, 0x52, 0xb7, 0xac, 0x7e, 0x7f, 0x60, 0x12, 0xa5, 0x53, 0xdd, 0x58, 0xb4, + 0x7c, 0x99, 0xd4, 0x0d, 0xf5, 0x9f, 0xf2, 0x80, 0x45, 0x6e, 0xab, 0x1f, 0x65, 0x02, 0x18, 0xf8, + 0x58, 0xdc, 0x20, 0x60, 0xeb, 0x8c, 0x44, 0xdc, 0x39, 0xaa, 0x36, 0xe7, 0xa9, 0x9a, 0x89, 0x45, + 0xcc, 0x96, 0xb1, 0x28, 0xce, 0xbd, 0xf8, 0x51, 0x6a, 0xc5, 0xd5, 0x3f, 0xe8, 0xca, 0x3c, 0xc5, + 0x27, 0x6f, 0x51, 0x91, 0x00, 0xcd, 0xa1, 0x04, 0x10, 0xe0, 0x30, 0x86, 0x09, 0xbc, 0x81, 0x29, + 0xe6, 0xad, 0x1c, 0x6c, 0x89, 0x12, 0x8f, 0x49, 0x98, 0xb4, 0x9b, 0xe1, 0x5c, 0xa5, 0x2e, 0x56, + 0x37, 0x96, 0x30, 0x70, 0x35, 0xa1, 0x39, 0xd0, 0x0d, 0x0c, 0x3c, 0x23, 0x68, 0x74, 0x25, 0x95, + 0x49, 0x2a, 0xca, 0x2d, 0xd0, 0xb4, 0x03, 0x12, 0x29, 0x3b, 0xcd, 0x20, 0x00, 0xff, 0x87, 0x19, + 0x42, 0xca, 0x0b, 0x8f, 0xd6, 0x40, 0x68, 0x41, 0x1e, 0x47, 0xf3, 0x06, 0x8e, 0x29, 0xe0, 0x5e, + 0x9d, 0x06, 0x5c, 0x55, 0xef, 0x6b, 0xc4, 0xc0, 0x8b, 0x34, 0x87, 0x67, 0x95, 0x5c, 0xf4, 0xe3, + 0x47, 0x6a, 0xc3, 0x18, 0xd3, 0x80, 0x14, 0xf2, 0x8c, 0x52, 0x22, 0x1e, 0x81, 0x03, 0x22, 0x72, + 0x4c, 0xcd, 0xc9, 0x30, 0x87, 0xaf, 0x39, 0x24, 0x46, 0x76, 0xa2, 0xbc, 0x13, 0xcb, 0x21, 0x12, + 0xc2, 0xb9, 0x0f, 0x95, 0x45, 0x1c, 0x22, 0x96, 0x4c, 0xc5, 0xf9, 0xf2, 0x79, 0xbe, 0xfc, 0xc0, + 0xc4, 0x73, 0xae, 0x0e, 0x99, 0x82, 0x41, 0x3d, 0xdc, 0xa4, 0x5b, 0x09, 0x67, 0xdd, 0xca, 0x9e, + 0xe5, 0x40, 0xf7, 0x5d, 0x4f, 0xb0, 0x35, 0x87, 0xdc, 0xbf, 0x08, 0x6d, 0xcb, 0x82, 0x0e, 0x32, + 0x3c, 0x06, 0x2d, 0xc7, 0xc9, 0xa0, 0x91, 0xf3, 0x57, 0x80, 0x07, 0x82, 0x0f, 0xab, 0xd3, 0x61, + 0xdd, 0x06, 0xb4, 0xf4, 0x11, 0x09, 0x2e, 0xcc, 0x2a, 0x60, 0x4d, 0xa3, 0x9e, 0x66, 0x92, 0x43, + 0x3f, 0x80, 0x0b, 0x40, 0x73, 0x66, 0x25, 0x3e, 0x77, 0xf4, 0x70, 0xd8, 0x11, 0x67, 0x62, 0xc2, + 0x38, 0xcf, 0x75, 0x4b, 0x91, 0xc2, 0xb1, 0x5f, 0x09, 0x07, 0x9f, 0x9d, 0x68, 0x58, 0x19, 0x02, + 0xea, 0x0d, 0xab, 0xa5, 0xdb, 0xf2, 0xe8, 0x5e, 0x66, 0x7b, 0x3b, 0xee, 0x0e, 0x2c, 0x7c, 0xf2, + 0xc8, 0x95, 0x5b, 0xe8, 0xd0, 0x2a, 0x13, 0xcd, 0xd1, 0x95, 0x71, 0xfc, 0x40, 0xd3, 0x93, 0x21, + 0x77, 0xfd, 0x53, 0x4e, 0x36, 0xad, 0x33, 0x6d, 0x84, 0x3a, 0x0e, 0xbe, 0xe8, 0xee, 0xb9, 0x49, + 0x12, 0x8d, 0x06, 0x7d, 0x3d, 0x19, 0xd2, 0x5f, 0x5c, 0xa2, 0xe9, 0x13, 0xa1, 0x6e, 0x7c, 0x74, + 0x27, 0x66, 0xeb, 0x1a, 0x30, 0xe2, 0x3f, 0xdf, 0x74, 0x8d, 0x2b, 0xad, 0x05, 0xf9, 0x15, 0xb9, + 0xa7, 0xba, 0xc4, 0x77, 0x00, 0x3f, 0xc1, 0xf3, 0xd5, 0xfe, 0x16, 0x7b, 0xda, 0xde, 0xbe, 0xa1, + 0xd5, 0xef, 0x0c, 0x9c, 0x7a, 0x59, 0x81, 0x87, 0x1b, 0xd5, 0xa9, 0xe3, 0x2f, 0x3a, 0x61, 0x93, + 0x9a, 0xd8, 0x79, 0xd5, 0xbd, 0x31, 0x24, 0xe3, 0xc1, 0x51, 0x78, 0x58, 0x0d, 0x93, 0x2f, 0x54, + 0x03, 0xd2, 0x5b, 0xf0, 0x8a, 0x3f, 0x03, 0x07, 0x23, 0x33, 0x50, 0x71, 0x09, 0x73, 0x61, 0xfe, + 0x8b, 0x6b, 0x7c, 0x02, 0x7c, 0x7a, 0x94, 0x9b, 0x43, 0x3e, 0xd0, 0xd9, 0xb6, 0x2d, 0xa0, 0x04, + 0x78, 0x04, 0xf6, 0x17, 0x3c, 0x5a, 0x23, 0x18, 0xec, 0x5b, 0x13, 0x46, 0xa8, 0x0d, 0xaf, 0xa0, + 0x7a, 0x01, 0x16, 0x30, 0x9d, 0xfe, 0xd8, 0x2d, 0x1f, 0x24, 0xfa, 0x44, 0x10, 0x82, 0xd5, 0x8e, + 0xe0, 0xa3, 0xe7, 0xd4, 0xd7, 0xe4, 0x76, 0xbd, 0x0d, 0x9a, 0x0a, 0x0a, 0x88, 0x72, 0x67, 0x8c, + 0x32, 0x46, 0xfd, 0xfb, 0x0f, 0xd9, 0xc6, 0xe5, 0xae, 0x3e, 0x9d, 0xc9, 0x9a, 0xff, 0x60, 0xf8, + 0x0f, 0xf6, 0x59, 0x5d, 0x14, 0x65, 0xfb, 0x10, 0x2b, 0x3f, 0x1b, 0xf4, 0xf1, 0xa7, 0xef, 0xd5, + 0x73, 0xf8, 0xf7, 0xe4, 0x9a, 0xbe, 0x9d, 0x40, 0xfd, 0x08, 0x02, 0xfc, 0x20, 0x73, 0xc1, 0x52, + 0xba, 0x7b, 0x8a, 0x2d, 0xf7, 0xb1, 0xd9, 0x7e, 0x0f, 0x7b, 0xdd, 0xe9, 0xd6, 0xa7, 0x1e, 0xba, + 0x8b, 0x57, 0xa7, 0x28, 0xca, 0x54, 0x41, 0xbe, 0x71, 0x5e, 0x44, 0xb9, 0xd9, 0xad, 0x4e, 0x07, + 0x8e, 0x51, 0x15, 0xc5, 0x99, 0xac, 0x1a, 0x76, 0x4f, 0x85, 0xcf, 0xdd, 0x6a, 0xa6, 0x2c, 0x83, + 0x64, 0x59, 0xcd, 0x54, 0x66, 0x32, 0xdd, 0xd9, 0xc7, 0x44, 0xc8, 0x82, 0xaf, 0x7d, 0xbb, 0x4a, + 0x4f, 0xef, 0xb9, 0xd5, 0x29, 0x75, 0x79, 0xae, 0xc2, 0xe0, 0x39, 0xdd, 0x66, 0x15, 0x1a, 0x7c, + 0x1d, 0x40, 0x0a, 0xbe, 0xf7, 0xb4, 0x31, 0xbc, 0x43, 0x3f, 0x88, 0x7a, 0x88, 0x29, 0x76, 0xab, + 0x0f, 0x8c, 0x11, 0x33, 0xd9, 0x7a, 0x1b, 0x13, 0x00, 0xc1, 0x86, 0x66, 0x56, 0xc9, 0xf0, 0x75, + 0xed, 0x91, 0x83, 0x4f, 0x2d, 0x97, 0xe4, 0xed, 0xb5, 0xd5, 0x89, 0x8b, 0xe5, 0x67, 0x32, 0x68, + 0x82, 0xf5, 0xef, 0xdf, 0x15, 0x39, 0x97, 0x93, 0xf3, 0x45, 0xb9, 0x28, 0x07, 0x8b, 0x92, 0x1a, + 0x2c, 0x5c, 0x99, 0x2e, 0xac, 0x7a, 0x83, 0x66, 0x46, 0xb7, 0xb2, 0xe3, 0xbe, 0xea, 0x66, 0x40, + 0x5c, 0x13, 0x7f, 0xc8, 0x50, 0x26, 0x2f, 0xe7, 0xd6, 0xe4, 0x5c, 0x58, 0x84, 0x48, 0x73, 0x6e, + 0x86, 0xf4, 0xb3, 0x65, 0xe1, 0x46, 0x44, 0x06, 0xfa, 0x93, 0x2d, 0xae, 0xe7, 0xf0, 0x5f, 0x2e, + 0x5f, 0xc8, 0x3c, 0xdb, 0xa4, 0x68, 0x5e, 0xc9, 0x97, 0xe4, 0x82, 0x9c, 0xc7, 0x2a, 0x96, 0x37, + 0xa8, 0x01, 0xd2, 0x81, 0x51, 0xb1, 0x26, 0xa1, 0x5c, 0x01, 0xca, 0xad, 0xff, 0x7e, 0xb1, 0x22, + 0x14, 0x29, 0xe4, 0x7e, 0xb3, 0x9c, 0x22, 0x97, 0x01, 0x23, 0x7c, 0x07, 0x61, 0xdd, 0xd5, 0x81, + 0x7c, 0xe7, 0xba, 0x88, 0x9b, 0xd7, 0xb8, 0xca, 0x64, 0x47, 0xaa, 0x61, 0xd8, 0x2a, 0xf0, 0xaa, + 0x6c, 0x29, 0x57, 0x5e, 0x5b, 0xcf, 0x33, 0x9c, 0x64, 0xa1, 0xe3, 0x90, 0xa2, 0xac, 0xe7, 0x73, + 0x85, 0x72, 0x21, 0xbf, 0x9e, 0x2f, 0x15, 0xca, 0xb4, 0x05, 0xc0, 0xfc, 0xdf, 0x6d, 0x21, 0x97, + 0x5b, 0xaf, 0x54, 0x14, 0x85, 0x6f, 0x22, 0x5f, 0xca, 0xe7, 0x2b, 0xca, 0x5a, 0xb1, 0x92, 0x2b, + 0x55, 0x4a, 0x65, 0x45, 0x11, 0x7f, 0xfc, 0xa8, 0x75, 0x06, 0x26, 0x09, 0xb4, 0x25, 0xf4, 0x40, + 0x00, 0x31, 0xb4, 0xbb, 0xe0, 0xe0, 0xe2, 0x36, 0xb1, 0x7f, 0xa5, 0xa4, 0xe9, 0xa7, 0x76, 0x86, + 0x86, 0x39, 0xf8, 0xf2, 0xc5, 0xd4, 0x46, 0x02, 0x30, 0x28, 0x8c, 0xd5, 0xef, 0xcf, 0xd5, 0x8d, + 0x82, 0x56, 0xf8, 0xf2, 0x25, 0x22, 0x37, 0xce, 0x82, 0x3a, 0x5d, 0xd0, 0x3c, 0x53, 0x9a, 0xec, + 0x49, 0x53, 0x90, 0x60, 0xd8, 0xc4, 0xdb, 0x35, 0x34, 0xfc, 0xc9, 0x90, 0xe5, 0x3b, 0x03, 0x5c, + 0xe0, 0xc2, 0x01, 0xe1, 0xce, 0xf1, 0x26, 0x24, 0x63, 0x58, 0xb6, 0x7b, 0xd8, 0x4e, 0x69, 0xd2, + 0x94, 0x2d, 0x64, 0xed, 0x0c, 0x08, 0x3b, 0xac, 0xe8, 0xd6, 0x84, 0x7c, 0xe2, 0xb2, 0xee, 0x6e, + 0x6d, 0x9f, 0x2d, 0xc8, 0xec, 0x6e, 0x4d, 0xb6, 0x91, 0x53, 0x9f, 0x81, 0xaa, 0x14, 0x29, 0xa4, + 0xbb, 0xbb, 0x7d, 0x1b, 0x5b, 0x0d, 0x8a, 0x29, 0xf5, 0x7a, 0xfd, 0xbc, 0xf9, 0x0c, 0x4c, 0x0b, + 0x2f, 0x1f, 0x74, 0xe1, 0x4b, 0x86, 0x7a, 0x13, 0xf0, 0x85, 0x20, 0x03, 0x57, 0x44, 0xfb, 0xf2, + 0x45, 0xb4, 0x48, 0x11, 0xb1, 0x5e, 0x47, 0x3b, 0x8a, 0xd5, 0xc1, 0xb4, 0x4f, 0x0d, 0xc7, 0x51, + 0x27, 0x19, 0xdd, 0x25, 0xbf, 0xb1, 0x66, 0xaf, 0xba, 0x4d, 0xe2, 0x43, 0x15, 0x6d, 0xd9, 0x56, + 0x41, 0xb8, 0x3b, 0x34, 0xbd, 0x94, 0x96, 0x71, 0xa4, 0x2f, 0x5f, 0xa2, 0x29, 0xdd, 0xb9, 0x94, + 0x26, 0x57, 0x25, 0xcc, 0xfe, 0x6b, 0xcf, 0x09, 0xab, 0x43, 0xa7, 0xe5, 0x94, 0x98, 0x86, 0x8a, + 0xd2, 0x20, 0x29, 0xc3, 0x6f, 0x97, 0xfd, 0x36, 0xd3, 0xa2, 0x24, 0x46, 0xca, 0xe1, 0x61, 0x93, + 0xa0, 0x5c, 0x26, 0x9f, 0xcb, 0x97, 0xff, 0x8a, 0x00, 0x92, 0xce, 0xac, 0xe5, 0x4a, 0xf9, 0xbf, + 0x22, 0xa0, 0xa4, 0x33, 0xca, 0x5a, 0x3e, 0x92, 0xc6, 0x03, 0x83, 0xe6, 0xd2, 0xeb, 0x13, 0xac, + 0x14, 0xd6, 0x33, 0xc1, 0xab, 0x6b, 0x19, 0x64, 0xb3, 0x90, 0x9a, 0x19, 0x6d, 0x72, 0x45, 0x82, + 0x44, 0xa9, 0x0a, 0xbc, 0x08, 0x45, 0x52, 0x53, 0x13, 0x3f, 0xd5, 0xeb, 0x5d, 0x74, 0xf3, 0xec, + 0xdb, 0x03, 0x58, 0x37, 0xae, 0x91, 0x40, 0x70, 0x10, 0xd0, 0x32, 0x75, 0x4d, 0x82, 0x64, 0xd5, + 0xe8, 0xca, 0x04, 0x08, 0xe6, 0xd1, 0xe8, 0x57, 0x26, 0x6d, 0xc2, 0x33, 0x25, 0xab, 0xd0, 0x7d, + 0x89, 0xd8, 0x3e, 0xea, 0x3e, 0x8a, 0x82, 0xac, 0xb2, 0xfb, 0xeb, 0x57, 0x90, 0xbb, 0xe5, 0xe7, + 0x21, 0xe8, 0x08, 0xf2, 0x6c, 0xe4, 0xf2, 0x6b, 0x9b, 0xc4, 0x87, 0x4c, 0xac, 0x12, 0x57, 0x3b, + 0x51, 0x0a, 0x96, 0xc9, 0x2f, 0x5f, 0xbc, 0x0d, 0xe5, 0xcb, 0x97, 0x84, 0x06, 0xeb, 0x3f, 0xe3, + 0x0e, 0x53, 0xf4, 0x5e, 0x42, 0x59, 0xf8, 0x63, 0x3a, 0x07, 0xc6, 0x4c, 0x28, 0x28, 0x7f, 0xca, + 0x38, 0x12, 0xa9, 0x3f, 0xa6, 0xde, 0x4c, 0x0e, 0xfe, 0x48, 0xd2, 0x4f, 0x49, 0xaa, 0xa6, 0xfc, + 0xe6, 0x00, 0x58, 0x58, 0x64, 0x24, 0x39, 0xa9, 0xb9, 0x84, 0xc2, 0x3f, 0x13, 0xba, 0xe7, 0x25, + 0x74, 0x87, 0x1b, 0x37, 0xd5, 0xb6, 0x8d, 0xc9, 0x76, 0xa7, 0x0b, 0x13, 0xbe, 0x45, 0x0f, 0x36, + 0x89, 0xe4, 0x8e, 0x5f, 0xa0, 0xeb, 0x3a, 0x2c, 0x5f, 0x19, 0xb2, 0x7a, 0x65, 0x70, 0xf1, 0x92, + 0x6a, 0x28, 0xb8, 0x68, 0x5c, 0x2a, 0x69, 0x20, 0xd3, 0xec, 0xd6, 0x00, 0x2d, 0x64, 0xca, 0x8b, + 0x24, 0xe0, 0xb5, 0x28, 0xb3, 0xbc, 0x1e, 0xc9, 0x8b, 0x8b, 0x17, 0xbb, 0x72, 0xaa, 0xe6, 0xe7, + 0xf2, 0x9a, 0xb6, 0x28, 0x7b, 0x9b, 0x62, 0xc2, 0xdd, 0xcd, 0x00, 0x24, 0x79, 0xc6, 0xb8, 0x4f, + 0x34, 0x44, 0x3e, 0x3c, 0xc0, 0x08, 0xf8, 0x45, 0x9b, 0xac, 0x28, 0x77, 0xb9, 0xb3, 0x5f, 0x84, + 0x1d, 0xe3, 0xe5, 0x33, 0xf7, 0xda, 0x24, 0x33, 0xbd, 0xeb, 0xb9, 0x4a, 0xc9, 0x8d, 0xfb, 0xdc, + 0xf7, 0xc8, 0x67, 0x85, 0x34, 0x5b, 0x8a, 0xb4, 0xe3, 0xad, 0x36, 0x45, 0x39, 0xec, 0x2b, 0xe1, + 0xbc, 0x78, 0x45, 0x5a, 0x98, 0xc3, 0xed, 0xda, 0x34, 0x07, 0xe9, 0x21, 0x5d, 0x4e, 0x37, 0x69, + 0x13, 0xfe, 0xed, 0xd2, 0x90, 0x59, 0xc7, 0xcd, 0x70, 0x94, 0xe0, 0x54, 0xe3, 0xda, 0xb3, 0x1c, + 0x60, 0xca, 0xc8, 0xfc, 0x0e, 0x3d, 0xad, 0x9f, 0x12, 0x51, 0xc5, 0xbb, 0xd5, 0x01, 0xfb, 0xa2, + 0x7c, 0x74, 0x7d, 0x7e, 0x06, 0xe3, 0x86, 0x37, 0x73, 0xe8, 0x9d, 0x49, 0x0a, 0xaa, 0x95, 0xa4, + 0x40, 0xb8, 0x00, 0x7e, 0xd4, 0x76, 0xbf, 0x7c, 0xa1, 0x5a, 0xf0, 0xed, 0x21, 0xcf, 0x6a, 0x7d, + 0xc7, 0xa1, 0x69, 0x00, 0x08, 0x15, 0x13, 0x32, 0x20, 0x0b, 0xd4, 0x3f, 0x25, 0x24, 0xca, 0xe1, + 0x88, 0x47, 0x6a, 0x61, 0xa7, 0xda, 0xa6, 0xd1, 0x41, 0xaf, 0x2f, 0xa2, 0x86, 0x4d, 0x2a, 0xca, + 0x54, 0xd9, 0xf7, 0x45, 0xb5, 0xfa, 0xbb, 0xca, 0xd3, 0x18, 0x25, 0x70, 0xa0, 0xd1, 0x84, 0x45, + 0x15, 0x10, 0x3f, 0xb2, 0xb9, 0xce, 0x01, 0xed, 0xcf, 0x77, 0x0e, 0x12, 0x13, 0x6b, 0x61, 0x74, + 0x0d, 0xac, 0x49, 0xdb, 0x4c, 0x45, 0xe8, 0x54, 0xc4, 0x2b, 0xd3, 0xb9, 0x31, 0x6f, 0xad, 0x76, + 0x30, 0x91, 0x38, 0xbe, 0x72, 0x89, 0x79, 0x4c, 0x6c, 0xb7, 0xdb, 0x91, 0xc4, 0x02, 0x26, 0x36, + 0x9b, 0xcd, 0x48, 0x62, 0x11, 0x13, 0x55, 0x55, 0x8d, 0x24, 0x96, 0x30, 0x71, 0x7d, 0x7d, 0x3d, + 0x92, 0x58, 0x4e, 0x4a, 0xac, 0x60, 0x62, 0xa5, 0x52, 0x89, 0x24, 0x36, 0x31, 0xb1, 0x58, 0x2c, + 0x46, 0x12, 0x5b, 0x98, 0x58, 0x28, 0x14, 0x22, 0x89, 0x68, 0x20, 0xc1, 0x2b, 0xe7, 0x23, 0x89, + 0x6d, 0x4c, 0xcc, 0xe7, 0xf3, 0x91, 0x44, 0x87, 0xc0, 0x99, 0x8f, 0xe6, 0xec, 0x92, 0x9c, 0x6a, + 0x34, 0xd1, 0x20, 0x89, 0xe5, 0x56, 0x24, 0xd1, 0x82, 0x44, 0x72, 0x69, 0x40, 0x5e, 0x29, 0xca, + 0x42, 0xf8, 0x07, 0x2f, 0x89, 0x8f, 0x64, 0x74, 0x9b, 0x0c, 0x9f, 0x85, 0x58, 0x72, 0x8f, 0xa5, + 0x97, 0x23, 0xe9, 0x5e, 0x73, 0x41, 0xc5, 0xdc, 0x9d, 0xf0, 0xb1, 0x02, 0xaa, 0x5f, 0x22, 0xb7, + 0xa6, 0xc8, 0x42, 0xf8, 0x67, 0x71, 0x89, 0xde, 0x87, 0xda, 0x40, 0x31, 0x84, 0x9a, 0x2b, 0x25, + 0xc6, 0x4e, 0x3b, 0xa0, 0x96, 0xe3, 0xee, 0x88, 0x6e, 0x62, 0x3c, 0xf2, 0x94, 0x92, 0xa9, 0x40, + 0xbe, 0x6a, 0x9c, 0xa0, 0xe2, 0xe8, 0x27, 0x04, 0x45, 0xd7, 0x90, 0x18, 0x41, 0xc5, 0xc7, 0xa4, + 0x90, 0x34, 0xa4, 0xc5, 0xa4, 0xc1, 0x27, 0x04, 0x55, 0x2a, 0x95, 0xe6, 0x09, 0xaa, 0x5c, 0x2e, + 0x7f, 0x90, 0xa0, 0xe2, 0x94, 0x4b, 0x08, 0xaa, 0xd5, 0x6a, 0xcd, 0x13, 0x54, 0x7c, 0x8a, 0xb4, + 0x93, 0x66, 0x03, 0x21, 0x28, 0xad, 0x98, 0x9f, 0x27, 0xa8, 0xa2, 0x96, 0x9f, 0x27, 0xa8, 0x62, + 0x45, 0x4d, 0x26, 0xa8, 0x02, 0x0c, 0x84, 0xff, 0x6f, 0x01, 0x35, 0x01, 0x32, 0x13, 0xa9, 0x09, + 0xd2, 0x4b, 0x0b, 0xa8, 0x89, 0xaf, 0xf5, 0x23, 0xa4, 0xa4, 0xe4, 0x81, 0x8a, 0x82, 0x3f, 0x1f, + 0x20, 0xa5, 0x52, 0x4e, 0x16, 0xfc, 0x7f, 0x1f, 0xa5, 0xa3, 0x81, 0x09, 0xeb, 0x80, 0xc8, 0xf1, + 0x29, 0x14, 0xe4, 0xb7, 0xba, 0xa1, 0x08, 0x45, 0x8a, 0x36, 0xbb, 0xd8, 0x66, 0xbd, 0x9d, 0x69, + 0x39, 0x1a, 0x30, 0x7f, 0x26, 0xdd, 0x92, 0x2a, 0x45, 0xa9, 0xa6, 0x77, 0x52, 0x6e, 0x06, 0x0d, + 0xe7, 0x9a, 0x2c, 0x02, 0x8f, 0x06, 0x79, 0x21, 0xd0, 0x19, 0x40, 0x4b, 0x74, 0x07, 0xfd, 0x8c, + 0xdd, 0xb3, 0x3c, 0xcb, 0xcd, 0xe6, 0xd6, 0xf3, 0x4a, 0x36, 0xa7, 0x54, 0x14, 0xe4, 0xe4, 0x9a, + 0xd4, 0xb1, 0x1c, 0xbc, 0xae, 0x49, 0x30, 0xeb, 0xbe, 0x68, 0x2f, 0x83, 0x96, 0x5e, 0x33, 0xbe, + 0x81, 0xe2, 0xc7, 0x84, 0xdf, 0x9a, 0x91, 0x4e, 0x4b, 0x53, 0xcc, 0xa4, 0xd6, 0x41, 0x06, 0x85, + 0x0f, 0xdf, 0x8d, 0x1f, 0xdf, 0x95, 0x1f, 0x9b, 0x26, 0x4a, 0xd9, 0x7b, 0x03, 0xc3, 0x78, 0x04, + 0x69, 0x27, 0x25, 0x55, 0x83, 0x2f, 0xb2, 0x15, 0xd4, 0x96, 0x52, 0x65, 0x96, 0x9c, 0xfb, 0xe1, + 0x3f, 0xe5, 0x7f, 0x48, 0xb2, 0x1e, 0xe6, 0xb0, 0x00, 0x7a, 0x5c, 0x09, 0xc9, 0x8b, 0x8e, 0x75, + 0x92, 0x27, 0x29, 0xcd, 0xb2, 0x17, 0x20, 0xbb, 0xb9, 0x51, 0xb7, 0x40, 0xfb, 0xf8, 0x56, 0xd7, + 0x41, 0xe4, 0xa2, 0x1d, 0x65, 0x5f, 0x8b, 0x3f, 0xa4, 0x19, 0xe8, 0x94, 0xed, 0xf6, 0x2e, 0xde, + 0xe9, 0x84, 0x06, 0x66, 0xcd, 0xd4, 0x9c, 0x14, 0x31, 0xea, 0x81, 0xfc, 0x51, 0xdf, 0x98, 0xd2, + 0xee, 0x11, 0xd1, 0x73, 0x0f, 0x23, 0x6f, 0xa4, 0xe2, 0x6b, 0x79, 0xb3, 0x0b, 0x10, 0x80, 0x7e, + 0x70, 0x96, 0x32, 0x41, 0xcc, 0x4e, 0x99, 0xf5, 0x4c, 0x59, 0x92, 0x7d, 0xfd, 0x84, 0xc5, 0xac, + 0xa8, 0x9b, 0x41, 0x4a, 0x28, 0x7a, 0x1d, 0xa2, 0x66, 0x55, 0xff, 0x09, 0x0a, 0x3c, 0xc8, 0x5f, + 0x04, 0x2a, 0x22, 0x79, 0xd5, 0x4d, 0xc0, 0xc9, 0x2c, 0x36, 0x9e, 0xd7, 0x2f, 0xba, 0xb9, 0x7d, + 0x7d, 0x8d, 0x83, 0x0a, 0x63, 0xf5, 0x89, 0x2a, 0x37, 0x14, 0xad, 0x5e, 0x3d, 0xa6, 0xaf, 0xdc, + 0xa8, 0x5d, 0xa2, 0xad, 0xa0, 0x01, 0x19, 0x66, 0x17, 0x62, 0x34, 0x61, 0xe0, 0x71, 0x03, 0x0b, + 0x46, 0xde, 0xcd, 0xe8, 0x6d, 0x18, 0x75, 0x58, 0xf5, 0x34, 0x03, 0x77, 0x22, 0x27, 0x78, 0x9b, + 0x8f, 0x06, 0x04, 0x05, 0x49, 0xe1, 0xc6, 0x6e, 0x16, 0x54, 0x7b, 0x4c, 0x21, 0x96, 0xe5, 0x14, + 0x08, 0x21, 0x9b, 0x84, 0x3e, 0x80, 0x3c, 0xc4, 0x34, 0x31, 0x41, 0x55, 0xc5, 0x8c, 0x28, 0xa5, + 0xc5, 0xac, 0x0b, 0x70, 0x66, 0x58, 0x66, 0x12, 0x5f, 0xa4, 0x2e, 0xa2, 0xef, 0x32, 0xf4, 0x1e, + 0x83, 0x6b, 0x80, 0x38, 0xdd, 0xd3, 0x8d, 0x76, 0xca, 0x95, 0x66, 0x61, 0xf7, 0x2c, 0x13, 0x0d, + 0xb4, 0xb0, 0x38, 0x8b, 0x40, 0xd1, 0x5a, 0x15, 0x08, 0x2b, 0x1e, 0x6f, 0xc0, 0x76, 0x2c, 0xf4, + 0xd5, 0x36, 0x00, 0xbb, 0xc4, 0x82, 0xa5, 0xc8, 0x29, 0xd2, 0x68, 0x3d, 0x22, 0x0d, 0x75, 0x7d, + 0x69, 0x08, 0x52, 0x0f, 0x6d, 0x10, 0x4e, 0x41, 0x84, 0xa5, 0xd9, 0xa0, 0x3c, 0xa8, 0x6a, 0x29, + 0x71, 0x0f, 0xea, 0x27, 0x47, 0xff, 0x33, 0xc2, 0x85, 0x81, 0xf7, 0x1c, 0x09, 0x24, 0xec, 0x11, + 0x8d, 0x22, 0x72, 0x78, 0xf1, 0x49, 0x5c, 0x24, 0x5f, 0xd1, 0x1a, 0x65, 0x52, 0x9b, 0x24, 0xf9, + 0x02, 0x6c, 0x72, 0xeb, 0xa1, 0x2c, 0x26, 0xa1, 0x3c, 0x8b, 0xe4, 0x52, 0xef, 0x6b, 0x4e, 0x57, + 0xdb, 0xd1, 0x34, 0x1b, 0xdf, 0xa8, 0x88, 0x46, 0x08, 0x0a, 0xc7, 0x50, 0x92, 0x89, 0x2d, 0xeb, + 0xe2, 0xd6, 0xd3, 0x0d, 0x10, 0xf0, 0x42, 0xc1, 0x23, 0x14, 0x09, 0x89, 0x41, 0x65, 0xb3, 0xa3, + 0x79, 0xad, 0x5e, 0x6a, 0x19, 0xf2, 0x7b, 0x18, 0xe9, 0x0a, 0xb2, 0x66, 0x9e, 0x41, 0x8f, 0x16, + 0xe5, 0x69, 0x5f, 0xf3, 0x7a, 0x56, 0xbb, 0x2a, 0x02, 0x6c, 0xe2, 0x4c, 0x42, 0xa2, 0x35, 0x53, + 0x40, 0xd2, 0x1a, 0xf9, 0x9e, 0x92, 0xc2, 0x94, 0x69, 0x5c, 0xdf, 0x04, 0xb8, 0xd1, 0x74, 0x03, + 0x8a, 0xa7, 0x94, 0x81, 0x41, 0x80, 0x76, 0x31, 0x17, 0x9a, 0x2a, 0x2d, 0x20, 0x61, 0xc3, 0xea, + 0xa6, 0xc4, 0x33, 0x4b, 0x50, 0x31, 0xb7, 0x00, 0x2a, 0xab, 0xdf, 0x30, 0x5a, 0x3f, 0x23, 0x40, + 0x64, 0x84, 0x1d, 0x1a, 0x77, 0xd9, 0x25, 0x54, 0xac, 0xb5, 0x01, 0x50, 0xa8, 0xb2, 0xa3, 0x9b, + 0x40, 0x15, 0x93, 0x54, 0x4a, 0x82, 0x5a, 0x19, 0xbb, 0xe2, 0xc4, 0xc2, 0x6e, 0x06, 0xe6, 0x04, + 0xe4, 0xab, 0x2e, 0xfa, 0x14, 0xa2, 0x06, 0x48, 0xed, 0xcb, 0x17, 0x7e, 0x82, 0x88, 0x48, 0x81, + 0xdb, 0x40, 0x80, 0x92, 0x1c, 0x39, 0xd1, 0x21, 0x33, 0x7f, 0x1b, 0xb6, 0x73, 0x8b, 0x29, 0xd4, + 0x08, 0xb7, 0x78, 0x14, 0x2f, 0x40, 0xaa, 0x47, 0x8a, 0xe0, 0x7c, 0xb7, 0x03, 0x80, 0xf7, 0x1e, + 0xd0, 0xd0, 0xca, 0xbf, 0xd3, 0x67, 0x18, 0xc9, 0x1b, 0x6a, 0x6c, 0x0d, 0xbf, 0x5d, 0x70, 0xa6, + 0x59, 0x9a, 0x1a, 0x35, 0x77, 0x48, 0x33, 0x19, 0xb7, 0x67, 0x67, 0xe4, 0x7f, 0x94, 0x1a, 0x18, + 0x31, 0xb4, 0x13, 0x38, 0x53, 0x18, 0x1a, 0x8a, 0x7a, 0x18, 0x89, 0x72, 0xb2, 0xe5, 0x45, 0xfe, + 0x94, 0x0b, 0xb4, 0x06, 0xb2, 0x02, 0xb4, 0x86, 0xc1, 0xd2, 0xe1, 0x73, 0x25, 0x45, 0x16, 0x3d, + 0x67, 0xa0, 0xc1, 0x94, 0x4b, 0xc6, 0x82, 0xdd, 0xea, 0x8b, 0x40, 0x0b, 0xf1, 0xa8, 0x1b, 0x35, + 0x9f, 0xed, 0x40, 0x2f, 0x9c, 0xc9, 0x35, 0x41, 0xb3, 0xe5, 0x34, 0x0c, 0x23, 0xf5, 0x95, 0x8b, + 0x2f, 0xc7, 0xdc, 0x96, 0x7e, 0x7c, 0xc5, 0xdb, 0x45, 0xe9, 0x32, 0xe1, 0x22, 0xb1, 0x78, 0x52, + 0x12, 0xc3, 0x25, 0x37, 0x69, 0xa3, 0x65, 0x1c, 0x35, 0x29, 0xd2, 0xde, 0x16, 0x71, 0x52, 0x82, + 0x3e, 0x2c, 0xca, 0x0d, 0xec, 0x24, 0x96, 0x37, 0x64, 0x2a, 0xb1, 0xd1, 0xd6, 0x7c, 0x56, 0x49, + 0x4d, 0x3d, 0xe1, 0x06, 0x7e, 0x02, 0x6c, 0xc4, 0x30, 0x8f, 0x4d, 0x01, 0x4b, 0xec, 0x5b, 0x43, + 0xe0, 0xa3, 0xf4, 0xae, 0x76, 0xc8, 0x4b, 0xcd, 0xc2, 0xbf, 0x7e, 0x79, 0xdf, 0xb5, 0x1f, 0x5c, + 0x3e, 0x80, 0x2f, 0xcc, 0xc4, 0x31, 0x36, 0xe6, 0x11, 0xa0, 0xc9, 0x5e, 0x1d, 0x06, 0x63, 0x4a, + 0x4b, 0x7f, 0xf9, 0xf2, 0xc9, 0x03, 0xce, 0xa4, 0x5f, 0xa3, 0x53, 0x10, 0x70, 0xde, 0xff, 0xdc, + 0xe6, 0x6a, 0xa2, 0xbd, 0x01, 0x22, 0x26, 0xb7, 0x6f, 0x8b, 0x64, 0x0c, 0x21, 0xc3, 0xbc, 0xad, + 0x0b, 0x04, 0x07, 0x5d, 0x94, 0x69, 0x25, 0x73, 0xb4, 0xad, 0xf1, 0x8a, 0x39, 0x06, 0x83, 0xa3, + 0x3e, 0x00, 0x3e, 0x1c, 0x1e, 0xcc, 0x6e, 0x4a, 0x11, 0xcc, 0x9d, 0x40, 0x5a, 0x60, 0xf5, 0x10, + 0xfd, 0xc8, 0x66, 0x0e, 0x48, 0x20, 0x64, 0xd0, 0x5d, 0x2a, 0x4c, 0x50, 0x77, 0x03, 0xb2, 0x78, + 0xe0, 0xbd, 0x06, 0x07, 0x37, 0xa7, 0x27, 0x64, 0x0d, 0x89, 0xa2, 0x04, 0x14, 0x62, 0x72, 0xd3, + 0x2b, 0x28, 0x77, 0x08, 0x04, 0xcc, 0x25, 0xe2, 0x95, 0xe0, 0xcf, 0x0f, 0xb6, 0x29, 0x81, 0x03, + 0x4c, 0x9b, 0x0f, 0x2e, 0x7c, 0x65, 0xe6, 0x1c, 0x7f, 0xdb, 0xa2, 0x1e, 0x9f, 0x54, 0x49, 0x63, + 0x44, 0x5b, 0x98, 0xc9, 0xf9, 0x75, 0x98, 0x4a, 0x32, 0x74, 0x91, 0x67, 0x56, 0x5a, 0x0c, 0x1f, + 0x9c, 0x63, 0x84, 0x34, 0x0d, 0x11, 0x24, 0x6e, 0x03, 0x42, 0x34, 0xa6, 0x32, 0x5a, 0x02, 0xd1, + 0x48, 0x85, 0x8e, 0x0a, 0xab, 0x46, 0xfb, 0x13, 0x8c, 0x85, 0xc2, 0xeb, 0x82, 0x31, 0xff, 0x0a, + 0xad, 0x5e, 0xd2, 0x0a, 0x01, 0x91, 0xf1, 0x38, 0xf2, 0x38, 0x60, 0x59, 0x7c, 0x12, 0x37, 0xc5, + 0x10, 0x83, 0x7c, 0x36, 0x19, 0x27, 0x8b, 0xba, 0xee, 0x2d, 0xec, 0xba, 0x9c, 0xf4, 0x89, 0x35, + 0x33, 0x93, 0x23, 0x24, 0x01, 0xf3, 0xfb, 0x0a, 0x77, 0xc9, 0xfa, 0x1a, 0xb3, 0xfb, 0x51, 0xb0, + 0x43, 0xf3, 0x1a, 0x4a, 0x8a, 0xa7, 0xaa, 0xd7, 0xcb, 0x74, 0x0c, 0x0b, 0xa6, 0x87, 0x97, 0xad, + 0x94, 0x8b, 0x88, 0x56, 0x93, 0x4f, 0x4d, 0x79, 0xab, 0x24, 0xf9, 0x2f, 0x57, 0xca, 0x16, 0xca, + 0xf8, 0xd9, 0x48, 0xfe, 0xbc, 0x8a, 0x5f, 0xff, 0x32, 0xa5, 0x6c, 0x19, 0xf2, 0xa8, 0x75, 0x77, + 0xd3, 0x4d, 0x8b, 0x82, 0x98, 0x4e, 0xe5, 0xea, 0xf0, 0x0c, 0xea, 0xff, 0x44, 0xc4, 0xfd, 0x8c, + 0x89, 0x8b, 0x6b, 0x98, 0x2c, 0x88, 0x18, 0xd5, 0x9a, 0xd9, 0x35, 0xd5, 0x74, 0xdd, 0xfc, 0xf5, + 0xcb, 0xdd, 0x34, 0x83, 0x02, 0x26, 0xac, 0x7d, 0xd6, 0x00, 0x49, 0x0a, 0x7f, 0xa0, 0x08, 0xe4, + 0x96, 0x3f, 0xc1, 0x1a, 0x60, 0x02, 0x2a, 0x21, 0x3b, 0x56, 0x00, 0xa8, 0xd8, 0x28, 0xad, 0xc3, + 0x3c, 0x73, 0x69, 0x9a, 0x91, 0x26, 0xde, 0x76, 0x98, 0xfe, 0x0d, 0x41, 0x41, 0xdb, 0x1b, 0x7e, + 0xe7, 0xf2, 0xb3, 0x74, 0x4c, 0xf1, 0x56, 0xcb, 0xca, 0x5f, 0x58, 0xc4, 0xd5, 0x50, 0x89, 0x51, + 0x39, 0xd3, 0xab, 0x09, 0xbc, 0xc2, 0x1a, 0xe1, 0x3c, 0x42, 0x93, 0xa3, 0xe8, 0xdb, 0x3d, 0x7f, + 0x7e, 0xf3, 0x9c, 0x8d, 0x6f, 0x5e, 0xdb, 0xdf, 0xd2, 0x7b, 0xd1, 0x26, 0x5e, 0x5b, 0xdc, 0xf8, + 0x63, 0xaa, 0xcd, 0xbe, 0x65, 0xbd, 0x36, 0xff, 0x69, 0xa8, 0x1a, 0xf4, 0x93, 0x37, 0x03, 0x91, + 0x8f, 0x7d, 0xce, 0x42, 0xf1, 0x9f, 0x91, 0xd1, 0x39, 0xe1, 0xf6, 0xa9, 0x2e, 0x52, 0x74, 0x7c, + 0xb4, 0x7a, 0x2e, 0xe0, 0x55, 0x64, 0x9b, 0x91, 0x6c, 0x3b, 0x49, 0x1e, 0x88, 0xe1, 0x5f, 0xbe, + 0x68, 0xe9, 0xb4, 0x8f, 0x33, 0x6d, 0x23, 0x5f, 0x22, 0x96, 0xc5, 0x3a, 0xfc, 0x4a, 0xb2, 0xc6, + 0xd1, 0x2c, 0x06, 0x8c, 0xbc, 0x85, 0x2a, 0x39, 0x76, 0x08, 0x94, 0xfa, 0xd3, 0x46, 0x48, 0xf5, + 0xf6, 0x4f, 0x89, 0x9e, 0x13, 0xaf, 0x7d, 0x22, 0x35, 0x7f, 0xf7, 0x7e, 0xfc, 0xfa, 0xa5, 0x7c, + 0xc2, 0xda, 0xb1, 0x8d, 0xcd, 0x30, 0x2b, 0x86, 0x80, 0x84, 0xcc, 0xe1, 0xd4, 0xf7, 0xb0, 0xc9, + 0x4d, 0xf1, 0xcb, 0xe7, 0x75, 0x50, 0x11, 0x6b, 0xc2, 0xe1, 0x8e, 0xd0, 0x1f, 0xb8, 0x9e, 0xd0, + 0xd4, 0x04, 0x48, 0x17, 0x2c, 0x47, 0x00, 0x99, 0xd2, 0xcd, 0xe0, 0xc0, 0x56, 0x97, 0xd4, 0xf2, + 0xd3, 0x2f, 0x8f, 0x3b, 0xb9, 0x23, 0x47, 0xc7, 0xd8, 0x52, 0xc2, 0x1f, 0x53, 0x9b, 0xc8, 0xb2, + 0x9e, 0x34, 0xfb, 0xc4, 0xe1, 0xc8, 0x66, 0xe6, 0x78, 0xd6, 0x0d, 0xe6, 0x05, 0x09, 0x34, 0xa2, + 0xf9, 0x68, 0x20, 0x7d, 0xf8, 0xf2, 0x85, 0x76, 0x45, 0xfb, 0x11, 0x3e, 0x65, 0x90, 0x52, 0x80, + 0xd8, 0x83, 0x57, 0x18, 0x7e, 0xde, 0xbc, 0x7e, 0x61, 0xa8, 0x13, 0xf4, 0xf3, 0xe3, 0xcc, 0xeb, + 0x41, 0x5e, 0x9b, 0x7d, 0xe3, 0x6a, 0xf3, 0x93, 0x32, 0xb6, 0xcb, 0x81, 0xa7, 0xda, 0xfa, 0x9d, + 0x6a, 0xf8, 0xd2, 0x3a, 0xc9, 0xfc, 0xeb, 0xd7, 0x27, 0xbf, 0x90, 0xc4, 0xec, 0xec, 0x22, 0x5b, + 0x48, 0xd9, 0xa6, 0x01, 0x50, 0x88, 0xde, 0x35, 0x53, 0xb8, 0x6d, 0xe8, 0x67, 0xf4, 0x7b, 0xe3, + 0x65, 0x40, 0x26, 0xde, 0x24, 0x7f, 0xab, 0xa9, 0xb6, 0x86, 0x67, 0x16, 0x21, 0xcd, 0x94, 0x83, + 0x47, 0x3b, 0x7c, 0x7c, 0x35, 0xe2, 0x46, 0x40, 0x8f, 0x9f, 0xfc, 0xaf, 0x86, 0x8f, 0xbb, 0x77, + 0x31, 0xf5, 0x6a, 0x6c, 0x72, 0xcf, 0xb8, 0x85, 0x18, 0xd2, 0x92, 0xbd, 0xd5, 0x7a, 0x09, 0x28, + 0x93, 0x6a, 0x98, 0x68, 0xa7, 0xac, 0x69, 0x2c, 0xfc, 0x70, 0x8a, 0x18, 0x9b, 0x35, 0xef, 0xda, + 0xbf, 0x89, 0xe5, 0x8a, 0x6c, 0x07, 0x29, 0xf2, 0x3a, 0xf9, 0x0f, 0x65, 0x1b, 0x6d, 0xac, 0xb5, + 0xb6, 0xad, 0x7e, 0x1f, 0xc4, 0x17, 0x5c, 0x8b, 0xec, 0x09, 0xca, 0x6c, 0x3c, 0x33, 0xb6, 0x75, + 0xba, 0xf5, 0x8e, 0xf7, 0xa2, 0x34, 0x2d, 0xd5, 0x01, 0x2e, 0xcc, 0x75, 0xc4, 0x26, 0x63, 0x4e, + 0x78, 0x70, 0x48, 0x09, 0xb8, 0x1f, 0x09, 0x53, 0xb3, 0xe6, 0x39, 0x93, 0x69, 0xca, 0x5d, 0x26, + 0xdc, 0x81, 0x82, 0xc0, 0x34, 0xd4, 0x8d, 0x9c, 0x42, 0x48, 0x02, 0x19, 0x3c, 0x13, 0x76, 0xa5, + 0xe9, 0x8c, 0xea, 0x7d, 0x3f, 0x79, 0xe7, 0x4b, 0x12, 0x1b, 0xb6, 0x25, 0x02, 0x51, 0x6a, 0x9b, + 0x5f, 0x7d, 0xf7, 0x11, 0x3e, 0xfc, 0x23, 0x1f, 0x2e, 0x55, 0xc8, 0x61, 0x30, 0x7d, 0xf1, 0x6b, + 0xf5, 0xeb, 0x02, 0x3f, 0xd1, 0xe4, 0xc3, 0x34, 0xd1, 0x78, 0x92, 0x50, 0x7e, 0xb6, 0xf1, 0xb3, + 0x66, 0xa6, 0x61, 0x02, 0x8a, 0xe8, 0x9b, 0xd1, 0x53, 0x87, 0x9a, 0x60, 0x5a, 0xac, 0xf3, 0xae, + 0x30, 0xd1, 0xbc, 0x4f, 0x30, 0xb1, 0x58, 0x38, 0x44, 0x10, 0x92, 0x1d, 0x4d, 0x18, 0xa9, 0x2e, + 0xba, 0x79, 0xe8, 0xae, 0x3b, 0xd0, 0x88, 0xd8, 0x8d, 0x13, 0x69, 0x02, 0xec, 0xd2, 0x2f, 0x05, + 0x8b, 0x19, 0xca, 0x00, 0x50, 0xab, 0x88, 0x1e, 0x05, 0xf8, 0x4f, 0x94, 0x69, 0x1b, 0x07, 0xc0, + 0x79, 0x30, 0xa2, 0x2e, 0xab, 0x4a, 0x77, 0x05, 0x14, 0x0a, 0x06, 0x36, 0x2b, 0x4a, 0x4e, 0x05, + 0xa3, 0xa0, 0xa4, 0x62, 0xc2, 0x50, 0xb7, 0x06, 0x2e, 0xf5, 0xbd, 0x31, 0x0c, 0x95, 0x6e, 0x03, + 0x0c, 0x61, 0xb9, 0xc4, 0x90, 0xa0, 0xc4, 0x9f, 0xe4, 0x7f, 0x98, 0x82, 0x20, 0xa4, 0xae, 0xd5, + 0x21, 0x42, 0xa0, 0xfa, 0x75, 0x8c, 0x74, 0xc3, 0x20, 0x4e, 0xf9, 0x02, 0x3a, 0xeb, 0x12, 0xc7, + 0x25, 0x8b, 0x4d, 0x79, 0x8d, 0x78, 0x57, 0xd0, 0x26, 0x25, 0xe8, 0xd7, 0x01, 0x03, 0x42, 0xf5, + 0xc1, 0xb0, 0xa8, 0xff, 0x05, 0x1a, 0xb4, 0x85, 0x17, 0xd3, 0x1a, 0x01, 0xbb, 0xb4, 0xac, 0x36, + 0xba, 0xa1, 0x78, 0xa0, 0x3a, 0x62, 0x27, 0xbe, 0x7e, 0xf3, 0x2f, 0x31, 0xa2, 0x3e, 0xb2, 0x2d, + 0x12, 0x3b, 0xcc, 0x4f, 0xdb, 0x08, 0xc0, 0x4a, 0x70, 0xee, 0x21, 0x77, 0xcc, 0xf1, 0x2e, 0x5d, + 0x94, 0xc8, 0xd1, 0x01, 0xd6, 0x9e, 0x44, 0x08, 0x31, 0xf0, 0x2b, 0xf9, 0x2a, 0xc9, 0x04, 0x8d, + 0xc4, 0xcb, 0x43, 0xa4, 0x82, 0x36, 0x73, 0x5c, 0xe6, 0x58, 0x9b, 0x29, 0x07, 0x32, 0x17, 0x99, + 0x25, 0x94, 0xd1, 0xd6, 0xdd, 0x98, 0x92, 0xef, 0xd3, 0x86, 0x46, 0x4c, 0x00, 0x84, 0x77, 0x00, + 0xf7, 0x45, 0x8f, 0x81, 0x3a, 0xd1, 0x55, 0xc8, 0xf3, 0x86, 0x22, 0xf9, 0x13, 0xd7, 0xb2, 0x07, + 0x78, 0x22, 0xde, 0x2f, 0xf6, 0x89, 0xe9, 0x34, 0xe8, 0x50, 0x00, 0xbf, 0xf2, 0xd0, 0xd2, 0xdb, + 0x02, 0x88, 0xff, 0xb5, 0x14, 0x88, 0xac, 0x90, 0xf0, 0xa9, 0xce, 0xbe, 0x82, 0xd8, 0xb1, 0x4c, + 0x99, 0x24, 0xba, 0x24, 0x23, 0x95, 0x77, 0x54, 0xc9, 0x14, 0xe8, 0x12, 0x2f, 0xb0, 0x42, 0xc7, + 0x64, 0x2a, 0x39, 0x50, 0x31, 0x39, 0x1d, 0x93, 0xba, 0x49, 0x68, 0x11, 0x10, 0xe3, 0x5d, 0x88, + 0xea, 0x9b, 0xbc, 0xe8, 0x4a, 0x3a, 0xc7, 0xcd, 0x78, 0x10, 0x64, 0xe3, 0x8a, 0x24, 0xee, 0x1e, + 0x85, 0xe2, 0x92, 0x06, 0x9c, 0x46, 0x8a, 0x9b, 0x51, 0x02, 0x45, 0xce, 0x47, 0xf1, 0xbb, 0x78, + 0xc0, 0x7e, 0x64, 0x7d, 0xe7, 0x9a, 0x7f, 0x07, 0x11, 0xd4, 0x3b, 0x84, 0x31, 0x7d, 0x50, 0x6b, + 0x1c, 0x1d, 0x01, 0x92, 0x42, 0x64, 0x04, 0x27, 0x85, 0x97, 0x61, 0x23, 0xa1, 0xf7, 0xa8, 0xea, + 0x71, 0x7b, 0x3b, 0xb1, 0xbe, 0x83, 0x8a, 0xfa, 0x7b, 0xbd, 0x66, 0x7e, 0x63, 0xff, 0x4e, 0xa7, + 0xb5, 0x77, 0x3a, 0xcd, 0xdc, 0xbd, 0xff, 0xf5, 0x3e, 0x13, 0xa5, 0xfb, 0xf7, 0xfa, 0x4d, 0x3d, + 0x7b, 0xfe, 0x9d, 0x6e, 0xa7, 0x98, 0x9b, 0x10, 0xcc, 0xc0, 0xef, 0x3f, 0x40, 0xcf, 0xea, 0xe9, + 0x1d, 0xcc, 0x4a, 0x53, 0x33, 0x03, 0x93, 0x26, 0x88, 0xff, 0x51, 0xfb, 0x54, 0x53, 0xc4, 0x68, + 0xdf, 0x43, 0x07, 0xa3, 0xbf, 0x81, 0x05, 0x5c, 0xbd, 0x10, 0x1a, 0x36, 0x1b, 0x64, 0xfb, 0xf2, + 0x04, 0x6a, 0x0a, 0xbd, 0x35, 0x7c, 0xb4, 0x5f, 0x9e, 0x04, 0x8b, 0x38, 0xac, 0x9a, 0xc0, 0x70, + 0x20, 0xa3, 0xbf, 0x2c, 0x2a, 0x80, 0xb0, 0x40, 0xe0, 0xb4, 0xe8, 0x27, 0x58, 0xa9, 0x40, 0x13, + 0x41, 0x4f, 0x8b, 0xfa, 0x86, 0xf6, 0x5d, 0xf9, 0xb1, 0xe1, 0xc1, 0x1f, 0xe8, 0x3a, 0xf2, 0xdd, + 0xa4, 0x53, 0x25, 0x97, 0xe8, 0x52, 0x44, 0x86, 0x02, 0x3d, 0xdb, 0xbf, 0x22, 0x1c, 0x04, 0x13, + 0x12, 0x94, 0xf8, 0xb9, 0x80, 0x05, 0x8f, 0x5d, 0x01, 0xef, 0x9c, 0x62, 0xa1, 0x0f, 0x40, 0x56, + 0x86, 0x26, 0x66, 0xaf, 0x46, 0x53, 0xf4, 0x83, 0x8d, 0x60, 0x52, 0xfe, 0xc7, 0x26, 0xfe, 0x41, + 0xa1, 0x24, 0xea, 0x38, 0x47, 0x59, 0x49, 0x8a, 0x15, 0x93, 0x6a, 0x44, 0xda, 0xfe, 0x9e, 0xfb, + 0x31, 0x0b, 0x78, 0xf6, 0xcf, 0x1a, 0x65, 0xd3, 0xaf, 0x06, 0x70, 0xe2, 0x98, 0x16, 0xef, 0x47, + 0x5c, 0x87, 0xb1, 0x80, 0x2e, 0x68, 0x42, 0x62, 0xce, 0x40, 0xbb, 0x0a, 0x32, 0xf3, 0x35, 0x72, + 0x2a, 0xf1, 0x6c, 0x0e, 0xdf, 0x01, 0x8b, 0xf7, 0xb9, 0x7b, 0x8a, 0xb2, 0x45, 0xce, 0x26, 0xb8, + 0x5c, 0x66, 0x91, 0xa8, 0x70, 0x28, 0x4d, 0x99, 0xbc, 0x47, 0x05, 0x34, 0xe5, 0x07, 0x13, 0x25, + 0x41, 0x1b, 0x72, 0xe3, 0xb3, 0x8c, 0x16, 0x00, 0x65, 0x9d, 0x0c, 0x5e, 0xab, 0x6f, 0x5f, 0x48, + 0x3e, 0x3d, 0x50, 0x21, 0x07, 0x09, 0x83, 0x0d, 0xb4, 0x41, 0x06, 0x9a, 0xba, 0xaa, 0xb9, 0x74, + 0xa4, 0x88, 0x08, 0x4b, 0x1d, 0x57, 0x0c, 0xc0, 0xa3, 0x24, 0xe1, 0xf2, 0xa6, 0x9b, 0xa0, 0x28, + 0xe0, 0xf6, 0x82, 0x16, 0xaa, 0x8d, 0x06, 0x92, 0x42, 0x8d, 0x5a, 0xfa, 0x31, 0x27, 0xc8, 0x8c, + 0x35, 0x15, 0xd6, 0x2c, 0x20, 0x1b, 0x7b, 0xe0, 0xf6, 0x52, 0xdf, 0x35, 0x59, 0x95, 0x7d, 0xc9, + 0x1d, 0xad, 0xf2, 0x34, 0x19, 0x98, 0x80, 0x97, 0x4e, 0x10, 0xb4, 0xc8, 0xc9, 0x78, 0x9f, 0x06, + 0xb4, 0x99, 0x25, 0x6e, 0xfc, 0x0c, 0xed, 0x7e, 0xb6, 0xde, 0x46, 0x99, 0x2d, 0x5e, 0x4e, 0x0f, + 0xf4, 0x2e, 0x5c, 0x8f, 0x7f, 0x26, 0xd4, 0x4c, 0x6e, 0xb9, 0x0b, 0x4e, 0xc5, 0x27, 0x53, 0x8e, + 0x36, 0x93, 0xb0, 0x9a, 0x88, 0x2e, 0xb0, 0x29, 0x06, 0xbe, 0xb9, 0x5f, 0xa3, 0x11, 0x3d, 0xbe, + 0x52, 0x47, 0xe5, 0xc2, 0x3a, 0xf1, 0xcf, 0x45, 0x2d, 0x67, 0xe6, 0x6b, 0x2d, 0x9a, 0x34, 0x03, + 0x59, 0x23, 0xee, 0xd4, 0x1b, 0xdc, 0x00, 0x20, 0x74, 0x0c, 0x87, 0xeb, 0xa1, 0x89, 0x1f, 0xa2, + 0x87, 0xa9, 0xaf, 0x35, 0x50, 0x08, 0xe0, 0x5b, 0x3a, 0xa7, 0x28, 0x33, 0x3f, 0xa8, 0x47, 0x8b, + 0x45, 0x11, 0x26, 0x7d, 0x4c, 0xaa, 0x3f, 0x56, 0xb9, 0xab, 0x75, 0x35, 0xbf, 0x0e, 0xae, 0x7a, + 0x4a, 0xbd, 0xf1, 0xda, 0x0b, 0xeb, 0xf4, 0xa0, 0x3d, 0xd6, 0x1b, 0x1b, 0x11, 0xd0, 0x39, 0xf9, + 0x50, 0x03, 0x7e, 0xdd, 0x41, 0xd5, 0x01, 0x44, 0x0c, 0xfb, 0xc4, 0xe5, 0x31, 0x9d, 0x9e, 0x2d, + 0x10, 0x8a, 0x3c, 0xf2, 0x7d, 0x43, 0xd9, 0x4c, 0x11, 0xe1, 0x86, 0x48, 0x27, 0x5f, 0xbe, 0x28, + 0xec, 0x37, 0xb5, 0xd8, 0xd3, 0x01, 0xed, 0xb2, 0x28, 0x45, 0xb0, 0xa9, 0x00, 0x54, 0x47, 0x7c, + 0x2e, 0x17, 0xe7, 0x9f, 0xf3, 0x8a, 0xa0, 0x33, 0x42, 0xf2, 0x4d, 0xc0, 0x58, 0x57, 0x35, 0x22, + 0x5c, 0x04, 0xf6, 0xe2, 0x8b, 0x46, 0x2a, 0x5c, 0xa3, 0x90, 0x59, 0x52, 0xb6, 0xc0, 0xc9, 0x19, + 0x9c, 0xe0, 0x26, 0xa3, 0xc6, 0xcd, 0x6b, 0x81, 0x64, 0x62, 0x74, 0x2c, 0xb2, 0x15, 0xe7, 0xfb, + 0x77, 0x6a, 0x6c, 0xa6, 0x6a, 0x19, 0xa4, 0x40, 0xca, 0x38, 0xc2, 0x73, 0x38, 0x51, 0x04, 0x69, + 0x19, 0x0c, 0x89, 0x4b, 0x94, 0x13, 0x31, 0x85, 0x01, 0xad, 0x25, 0x50, 0x71, 0x3d, 0xb2, 0x4b, + 0xe1, 0x27, 0xb2, 0x94, 0x76, 0x86, 0xf2, 0x46, 0x2f, 0x74, 0x77, 0xd5, 0x88, 0xb7, 0x07, 0x4c, + 0x17, 0x78, 0x89, 0x78, 0xeb, 0xa2, 0x5f, 0x8f, 0xe3, 0x3b, 0xbf, 0xb2, 0x5c, 0xf0, 0x06, 0x43, + 0x49, 0xbc, 0x53, 0xb5, 0x4c, 0xc7, 0xcd, 0xa0, 0x70, 0xd6, 0x1f, 0x85, 0x5f, 0x01, 0x75, 0xe3, + 0xcd, 0xc8, 0x5b, 0x66, 0x54, 0x25, 0xde, 0xa9, 0xcb, 0xb2, 0xf4, 0x20, 0x4b, 0x0a, 0xbd, 0x59, + 0xfb, 0x23, 0xf4, 0x76, 0xea, 0xe3, 0x9a, 0xf2, 0xeb, 0x17, 0x8a, 0xfe, 0xa7, 0xc4, 0x61, 0x5e, + 0xcc, 0xef, 0xa0, 0xf9, 0x45, 0xcb, 0x0c, 0x60, 0x09, 0xcb, 0x0c, 0x32, 0x8d, 0x41, 0x5b, 0xb7, + 0xae, 0x34, 0x6a, 0x4a, 0x8d, 0x64, 0xfc, 0x7f, 0xff, 0xd7, 0xff, 0x23, 0x44, 0x94, 0x3f, 0x36, + 0x24, 0x3e, 0x7a, 0x39, 0xee, 0x07, 0xf0, 0x3b, 0x9a, 0xd6, 0xd3, 0x54, 0x3b, 0x9b, 0xd3, 0x0a, + 0x35, 0xb7, 0xee, 0x66, 0x3c, 0x6b, 0x4f, 0x1f, 0x6b, 0xed, 0x54, 0x4e, 0x62, 0x1c, 0x8f, 0x81, + 0x69, 0x8f, 0x1c, 0xd9, 0xa8, 0x8b, 0x67, 0x96, 0x27, 0xe0, 0x1d, 0xa6, 0xa4, 0xc6, 0xb6, 0x58, + 0x33, 0x37, 0xa0, 0xe0, 0xa6, 0x51, 0x4f, 0x99, 0xf0, 0xff, 0x6c, 0x1d, 0x5e, 0xa4, 0xa0, 0x0a, + 0xf8, 0xa6, 0x6c, 0x2a, 0xd5, 0x9c, 0x04, 0xe2, 0x82, 0xd0, 0x10, 0xab, 0x26, 0x71, 0xe3, 0x22, + 0x79, 0x4b, 0xca, 0x5f, 0xc4, 0xfe, 0x45, 0x2c, 0xa8, 0x50, 0x10, 0x88, 0x01, 0x33, 0xf5, 0x1b, + 0xa2, 0xcf, 0x15, 0xe9, 0x12, 0x0b, 0x3d, 0x25, 0x1b, 0xa7, 0x38, 0x59, 0xbd, 0xef, 0x30, 0x36, + 0x3f, 0x40, 0xab, 0x89, 0x4b, 0x46, 0x90, 0x47, 0x72, 0x81, 0x89, 0x6e, 0xaa, 0xe9, 0xba, 0x6f, + 0x78, 0x82, 0xac, 0x64, 0x33, 0x0f, 0xb9, 0x70, 0x35, 0x9a, 0x4e, 0x5b, 0xb0, 0xea, 0xe2, 0xf1, + 0x60, 0xd0, 0x53, 0x5f, 0x06, 0x22, 0x28, 0xe2, 0xa0, 0x53, 0x65, 0x88, 0x45, 0xdd, 0xbd, 0xd7, + 0xbd, 0x5e, 0x0a, 0xcf, 0x95, 0x16, 0x32, 0xc4, 0xe6, 0x08, 0xf9, 0x6e, 0xac, 0x17, 0x9d, 0xa0, + 0x1e, 0x73, 0xe9, 0xc0, 0x13, 0x06, 0x04, 0xcf, 0xab, 0x4d, 0xc3, 0xcf, 0x71, 0x35, 0x19, 0x3c, + 0x13, 0xab, 0x99, 0x96, 0x69, 0x99, 0x24, 0x09, 0x1f, 0x28, 0x4b, 0x1d, 0xc2, 0xa4, 0xc7, 0x92, + 0x33, 0x01, 0x16, 0x63, 0x6b, 0x16, 0xa8, 0x91, 0xdf, 0xc8, 0x75, 0x10, 0xc0, 0x02, 0xfe, 0x98, + 0xaa, 0x33, 0xfc, 0xeb, 0x83, 0x28, 0x6e, 0x0d, 0x74, 0x03, 0x77, 0x54, 0x33, 0x43, 0xbd, 0x2d, + 0x45, 0x3f, 0x5d, 0xeb, 0x5d, 0x90, 0x66, 0x88, 0x4f, 0x3d, 0xca, 0x1d, 0x98, 0x69, 0xa4, 0x77, + 0xf4, 0x8c, 0x4b, 0xd2, 0xd3, 0xe2, 0x9f, 0x02, 0xf1, 0x46, 0x24, 0x69, 0x8e, 0xeb, 0xea, 0xb2, + 0x28, 0xb4, 0xb7, 0xfa, 0x92, 0x18, 0xab, 0xe6, 0xd6, 0x46, 0x8b, 0x26, 0xe8, 0x60, 0x51, 0xeb, + 0x66, 0x66, 0x40, 0xd2, 0xa5, 0x58, 0x6e, 0x0c, 0x2f, 0x22, 0x20, 0x91, 0x00, 0xc9, 0x40, 0x85, + 0x2f, 0x5b, 0xac, 0x3a, 0x2d, 0x63, 0xbb, 0x8e, 0xda, 0xdf, 0x8c, 0x66, 0xbc, 0xb8, 0xbe, 0x6a, + 0x9c, 0x8a, 0x72, 0x8a, 0x7d, 0xcd, 0xe6, 0x94, 0x7c, 0x51, 0xe2, 0xc8, 0x8a, 0xd5, 0x80, 0xbc, + 0x3f, 0xd2, 0xca, 0x2e, 0x4c, 0xfa, 0x3e, 0x12, 0x95, 0xc0, 0x1c, 0xd7, 0x45, 0xd9, 0x88, 0x01, + 0xd2, 0x00, 0x34, 0x02, 0xcb, 0x12, 0xf6, 0x2e, 0xae, 0xb1, 0xe7, 0x84, 0x2e, 0x3b, 0xb6, 0x1b, + 0xcb, 0x75, 0xda, 0xd8, 0x16, 0x40, 0x40, 0xc1, 0xa3, 0x17, 0x98, 0xab, 0xaf, 0xb6, 0xe2, 0xfd, + 0xd1, 0x0d, 0xcd, 0x9d, 0xb8, 0xc0, 0xf4, 0xf0, 0x3b, 0xcc, 0xe0, 0x01, 0x88, 0xb3, 0x88, 0x36, + 0x78, 0xf4, 0xd2, 0x08, 0x1e, 0x62, 0x91, 0xa3, 0x4f, 0x60, 0xd9, 0x7f, 0xd1, 0x8c, 0x59, 0x9a, + 0x09, 0x68, 0xf5, 0xcf, 0x39, 0xa4, 0xee, 0x9a, 0x43, 0xdd, 0xb1, 0xcc, 0x3e, 0x01, 0x5d, 0xcb, + 0xe0, 0xb1, 0x59, 0x62, 0x8b, 0x45, 0xa7, 0x3d, 0x47, 0x83, 0x47, 0x32, 0x34, 0xc6, 0x48, 0xb7, + 0xd1, 0x37, 0x14, 0x0b, 0x83, 0xae, 0x4d, 0x68, 0xe0, 0x27, 0x55, 0x86, 0x5f, 0x86, 0x51, 0x9e, + 0x36, 0x3f, 0x85, 0xfd, 0x13, 0x97, 0xfc, 0x34, 0x26, 0xa2, 0x85, 0x5b, 0xf7, 0x99, 0x66, 0x8d, + 0x77, 0xe7, 0x8f, 0xfa, 0xf0, 0x53, 0xd7, 0xfd, 0x5a, 0xe8, 0x88, 0xa0, 0xd4, 0xcc, 0x6f, 0xe8, + 0xba, 0xa8, 0x75, 0xa9, 0xc8, 0xcd, 0xbc, 0x10, 0x4c, 0xf4, 0x42, 0xf0, 0xab, 0x49, 0xa7, 0xc9, + 0x74, 0x31, 0xea, 0x24, 0xdf, 0x77, 0xf3, 0x07, 0x69, 0x4f, 0xe5, 0x44, 0x99, 0x0c, 0x50, 0x69, + 0x4d, 0xc5, 0x7d, 0xb1, 0xb0, 0x35, 0xb2, 0x28, 0x71, 0x8d, 0xab, 0x69, 0x18, 0x78, 0x75, 0x03, + 0x21, 0xc0, 0x4f, 0x08, 0x88, 0x2a, 0x91, 0x9a, 0x2c, 0x6a, 0x11, 0x83, 0xba, 0xc5, 0xb4, 0x8a, + 0xde, 0x0a, 0x9f, 0x3e, 0x59, 0x5f, 0xbe, 0x58, 0xc9, 0x3b, 0x01, 0x81, 0x10, 0x29, 0x3b, 0x4c, + 0x56, 0x61, 0x0b, 0xab, 0x8d, 0x93, 0x28, 0x3c, 0xe8, 0xde, 0x74, 0x45, 0x62, 0xb9, 0x58, 0xb0, + 0xdc, 0x03, 0x2f, 0x13, 0xfe, 0x98, 0x1a, 0x19, 0xcb, 0xdc, 0xc4, 0xbd, 0x28, 0x91, 0x4a, 0xc6, + 0xc1, 0x1a, 0xad, 0xce, 0x20, 0x43, 0x54, 0xde, 0x01, 0x80, 0x2f, 0x46, 0x4e, 0x0a, 0xbf, 0x49, + 0xe1, 0x85, 0x13, 0x6c, 0xf1, 0x5f, 0x16, 0x03, 0x81, 0xda, 0x4f, 0xb8, 0x78, 0x14, 0xb4, 0x01, + 0x12, 0xc0, 0x75, 0x69, 0x20, 0x04, 0x68, 0x11, 0x5d, 0x64, 0x69, 0x8b, 0xbf, 0x13, 0x93, 0x62, + 0x41, 0x84, 0x7a, 0xec, 0x2f, 0xb4, 0x0a, 0xfd, 0xcc, 0x32, 0xa0, 0xde, 0x8b, 0x4f, 0x41, 0x7a, + 0x16, 0x08, 0x4e, 0x4c, 0x4e, 0x69, 0x01, 0xde, 0x69, 0xfc, 0x25, 0x3f, 0x8e, 0x3c, 0xb9, 0xdd, + 0x89, 0x5d, 0xb5, 0x8a, 0x87, 0xba, 0xf0, 0xd4, 0x8e, 0x26, 0xa0, 0x48, 0x78, 0xba, 0x29, 0xe2, + 0x76, 0x85, 0xee, 0x50, 0xab, 0xa6, 0x38, 0x8b, 0x1c, 0x82, 0x27, 0x05, 0x9b, 0xd6, 0x38, 0x82, + 0x78, 0xa8, 0x27, 0x86, 0x07, 0xa8, 0xd0, 0x47, 0x02, 0x76, 0x01, 0x32, 0x6c, 0x8a, 0xec, 0x3a, + 0x27, 0x32, 0x6e, 0x1b, 0x91, 0xe3, 0x81, 0xc1, 0xb5, 0x52, 0x24, 0x20, 0x94, 0xe8, 0x1f, 0xcb, + 0xf3, 0xa3, 0x36, 0xfd, 0x94, 0xdb, 0xef, 0xc0, 0x7f, 0xaa, 0xa3, 0x54, 0xf3, 0x3e, 0xa0, 0xfd, + 0xf8, 0x5d, 0x02, 0xa7, 0x3a, 0x0f, 0x66, 0x5f, 0xff, 0x47, 0x50, 0xda, 0xb8, 0x3c, 0x77, 0xc9, + 0x1a, 0xe8, 0x9e, 0xa2, 0xe2, 0xf3, 0x31, 0xac, 0x7f, 0x00, 0xbf, 0x8f, 0xf3, 0xe8, 0x7d, 0x8c, + 0xe0, 0xf7, 0xf1, 0x1f, 0x01, 0xde, 0xfd, 0xb7, 0xd0, 0xfb, 0x38, 0x87, 0xde, 0x08, 0x98, 0xfd, + 0x7f, 0x04, 0xe6, 0xbc, 0xae, 0x83, 0x37, 0x6a, 0xa2, 0xc0, 0x0e, 0x95, 0x03, 0x27, 0xc3, 0x45, + 0x03, 0x18, 0x8e, 0xd6, 0xdd, 0x14, 0xfd, 0x93, 0x55, 0xa4, 0x15, 0xa4, 0xea, 0xcd, 0x90, 0x0b, + 0xcd, 0xb1, 0x0d, 0x32, 0xdd, 0x93, 0xfa, 0x4f, 0xa3, 0x93, 0x31, 0x96, 0xf4, 0x5e, 0xdf, 0x5d, + 0xcd, 0x88, 0x76, 0x1e, 0xd9, 0x25, 0xdf, 0x79, 0x48, 0x89, 0xf5, 0x9e, 0x54, 0xfc, 0x01, 0x0c, + 0x90, 0x89, 0x4c, 0x91, 0xb0, 0x44, 0x19, 0x72, 0xde, 0x22, 0xf0, 0x90, 0xf7, 0x50, 0x15, 0x42, + 0xef, 0x02, 0xbc, 0x84, 0x0d, 0x7f, 0x99, 0xc7, 0x4a, 0x4a, 0xaa, 0x85, 0x51, 0xc8, 0x08, 0xa0, + 0x35, 0xc2, 0x24, 0x11, 0x58, 0x28, 0xbd, 0xe9, 0x32, 0xd9, 0x9c, 0xfe, 0x42, 0xb5, 0xf5, 0xba, + 0x0a, 0x78, 0x2c, 0xe6, 0xd0, 0x8d, 0x1c, 0x43, 0xc9, 0xe0, 0x4f, 0x21, 0x5f, 0x12, 0x67, 0x49, + 0xfa, 0x14, 0xbb, 0x6f, 0x3d, 0x1a, 0x94, 0x13, 0x50, 0xb2, 0x3b, 0xf6, 0xf9, 0x31, 0x76, 0x1f, + 0xdb, 0x32, 0x37, 0xe1, 0x5f, 0xd5, 0x0f, 0xa2, 0x02, 0x4b, 0x2f, 0x0a, 0x56, 0xc2, 0x47, 0x94, + 0x4a, 0xd6, 0xd5, 0xc5, 0x6a, 0xa5, 0x1a, 0x57, 0x29, 0x03, 0x9e, 0xf8, 0x61, 0xad, 0x52, 0x4d, + 0xd4, 0x28, 0xd5, 0x04, 0x6d, 0xf2, 0x8f, 0x69, 0xdc, 0xc5, 0xdd, 0xa1, 0xe2, 0x52, 0x1c, 0x2f, + 0xba, 0x19, 0x01, 0x1f, 0x5e, 0xe7, 0x69, 0x2c, 0x12, 0xe9, 0xd3, 0xf6, 0xc6, 0x9e, 0x10, 0x2c, + 0x38, 0x5c, 0x51, 0x2f, 0x31, 0xca, 0x67, 0x18, 0xe4, 0xb3, 0x90, 0xe7, 0x17, 0x12, 0x86, 0x68, + 0x24, 0xff, 0x48, 0x14, 0x13, 0x12, 0x31, 0x54, 0xc0, 0xd1, 0xca, 0x64, 0x32, 0x22, 0x5d, 0x68, + 0xa8, 0x9c, 0x1b, 0x20, 0x08, 0x44, 0x14, 0x12, 0x26, 0xc6, 0x63, 0xa0, 0x7a, 0xfe, 0x1e, 0x83, + 0xd7, 0xde, 0x60, 0x8b, 0xc6, 0x35, 0x0a, 0xe2, 0xc2, 0x03, 0xee, 0xd5, 0x90, 0xa7, 0x93, 0xdd, + 0x1d, 0x91, 0xee, 0xff, 0xc6, 0x72, 0xf2, 0x58, 0x02, 0x38, 0x37, 0xc5, 0x7b, 0xbc, 0x93, 0x8b, + 0x94, 0xb3, 0x6c, 0xac, 0x60, 0x2e, 0x03, 0x3d, 0xb7, 0x0d, 0x62, 0x8d, 0x9f, 0x69, 0x61, 0xdd, + 0xb8, 0x74, 0x9d, 0x77, 0x3a, 0xe8, 0x2f, 0x1a, 0x7e, 0x27, 0xfb, 0xcf, 0x73, 0x60, 0x33, 0x74, + 0x47, 0x97, 0x73, 0xec, 0x63, 0x74, 0x74, 0xdc, 0xa5, 0x61, 0x6d, 0xfe, 0x98, 0xa2, 0xf6, 0xb7, + 0xd9, 0x1f, 0x55, 0x7d, 0xad, 0x54, 0x5a, 0xcd, 0xcd, 0x22, 0xcb, 0x37, 0x51, 0x50, 0x66, 0x73, + 0xc2, 0xc0, 0x89, 0x66, 0x86, 0x62, 0x42, 0x10, 0xbf, 0x15, 0x1a, 0xa5, 0xf1, 0x5b, 0x19, 0x89, + 0x45, 0xfb, 0xf8, 0x41, 0x90, 0xb5, 0xdf, 0x06, 0x39, 0x15, 0x47, 0x39, 0x03, 0xbb, 0x0a, 0xda, + 0x7e, 0xac, 0x33, 0x96, 0xfd, 0x4e, 0xee, 0x7f, 0xde, 0x4f, 0x7f, 0xdf, 0x90, 0xbb, 0xbe, 0x11, + 0x19, 0x97, 0xe3, 0xd5, 0x44, 0x36, 0xcc, 0xed, 0x34, 0x51, 0xc8, 0xc4, 0x74, 0x0b, 0xc9, 0x79, + 0x31, 0x5a, 0x7c, 0x81, 0x86, 0x04, 0xc8, 0x9a, 0x63, 0xfc, 0x56, 0x27, 0x8e, 0x28, 0xae, 0xa7, + 0x56, 0x67, 0x59, 0x5f, 0x36, 0xe6, 0x89, 0x8b, 0x35, 0xc5, 0x5c, 0x25, 0x36, 0xe8, 0x24, 0x78, + 0xf4, 0xfd, 0x23, 0x00, 0xd6, 0x39, 0xb4, 0x89, 0x07, 0xe4, 0x2e, 0x49, 0x9f, 0xa8, 0x1f, 0x45, + 0x29, 0xfd, 0x35, 0xc8, 0x1f, 0x7a, 0x4e, 0xf8, 0x35, 0x7e, 0x60, 0xf4, 0xbf, 0xa6, 0xd5, 0xf4, + 0x57, 0xf7, 0x71, 0xe9, 0xf8, 0x7f, 0x4d, 0xa7, 0xfa, 0xbd, 0xd5, 0x1c, 0xb4, 0x15, 0xf4, 0xf7, + 0x6b, 0x9a, 0x8d, 0xe0, 0x23, 0x26, 0x26, 0x74, 0x9a, 0xd4, 0xbb, 0x60, 0x04, 0xd9, 0xb7, 0x8d, + 0x10, 0xf2, 0x0f, 0xc2, 0xa9, 0x7d, 0x04, 0xce, 0x45, 0xb4, 0xf6, 0x58, 0x45, 0xdb, 0x03, 0xdf, + 0x85, 0x14, 0xa5, 0xce, 0xc7, 0xf7, 0x8b, 0xfc, 0xc3, 0x0e, 0x2e, 0x23, 0xcf, 0xaf, 0xe9, 0xae, + 0x4f, 0x9a, 0xa0, 0x2f, 0x86, 0x63, 0x28, 0xb2, 0x95, 0x20, 0xca, 0x82, 0xf6, 0x31, 0x52, 0x85, + 0x6e, 0x76, 0xa3, 0xb3, 0xfc, 0x1a, 0x7d, 0x17, 0xe3, 0x89, 0xff, 0x63, 0x5c, 0x68, 0x7d, 0x5a, + 0x5d, 0x6d, 0xa0, 0xf3, 0xec, 0xea, 0x2a, 0xbc, 0x69, 0xff, 0x0e, 0x7b, 0xeb, 0x3a, 0x76, 0xe2, + 0x28, 0xe4, 0x78, 0x0d, 0x85, 0x9b, 0x16, 0x90, 0xff, 0x7f, 0x2b, 0x2f, 0x73, 0xed, 0xd6, 0x52, + 0x2a, 0x89, 0xc3, 0x07, 0xf9, 0xff, 0x25, 0xf8, 0x16, 0x6d, 0xdd, 0xcc, 0xa9, 0x98, 0x41, 0xf9, + 0x98, 0x3c, 0x11, 0x04, 0xc4, 0x0e, 0x82, 0xbf, 0x51, 0x69, 0x33, 0x31, 0x3c, 0x76, 0xc2, 0x68, + 0x66, 0x7d, 0x53, 0x53, 0x54, 0xeb, 0xeb, 0x09, 0x4d, 0x3b, 0x82, 0x22, 0x20, 0x71, 0x5e, 0xf9, + 0x0b, 0x16, 0xc2, 0x16, 0x25, 0xb8, 0x65, 0x82, 0x3d, 0xe9, 0x2d, 0x2b, 0x40, 0xe2, 0xbc, 0xd9, + 0x18, 0xc6, 0xa4, 0x2a, 0x52, 0x81, 0x9f, 0xc5, 0xd5, 0xa0, 0x84, 0xfb, 0x01, 0x11, 0x98, 0x55, + 0xe4, 0xd9, 0x50, 0x03, 0x68, 0x5a, 0x33, 0x5e, 0x1e, 0x66, 0xab, 0x0e, 0xa2, 0xec, 0xc6, 0x4e, + 0xa1, 0xc3, 0x24, 0x51, 0xbe, 0x80, 0xe5, 0x31, 0x01, 0x19, 0xbf, 0x1a, 0x19, 0xcf, 0x8e, 0xc8, + 0xc8, 0xd5, 0x04, 0x9d, 0x8c, 0x02, 0xf3, 0x31, 0xb1, 0x99, 0x97, 0x9b, 0x23, 0x48, 0x6c, 0x6b, + 0x81, 0x96, 0xbf, 0x78, 0x9c, 0x59, 0xd7, 0x1c, 0x2a, 0x04, 0x06, 0x57, 0x78, 0xd8, 0x9a, 0xea, + 0xb1, 0x18, 0x1c, 0xe8, 0xa0, 0xcb, 0x45, 0xd5, 0xb3, 0x3f, 0x44, 0x0e, 0xd1, 0x3b, 0x0b, 0x7d, + 0x02, 0xf8, 0x20, 0x30, 0xed, 0x08, 0x30, 0x3b, 0x64, 0x8b, 0x8c, 0x03, 0xa1, 0xcd, 0xab, 0x1d, + 0xef, 0x80, 0xa0, 0x14, 0xd6, 0xe6, 0x41, 0x88, 0x99, 0x0e, 0x12, 0xc5, 0x5a, 0x18, 0x17, 0x67, + 0x16, 0x6c, 0x82, 0xcc, 0x7c, 0x4b, 0x50, 0xc2, 0xfe, 0x07, 0x6f, 0x4d, 0xda, 0xa8, 0x53, 0x83, + 0xfc, 0x66, 0xca, 0x2f, 0x40, 0x62, 0xc4, 0xf1, 0x05, 0xbe, 0xce, 0x07, 0x0d, 0x1a, 0xeb, 0xfd, + 0x41, 0x5f, 0xa0, 0x53, 0x1f, 0x7d, 0x63, 0xfc, 0x50, 0x85, 0x18, 0xb5, 0x05, 0xc6, 0xbd, 0xed, + 0x47, 0xa0, 0xfb, 0xca, 0xc7, 0xfc, 0x50, 0xa4, 0x6a, 0xf0, 0x06, 0x7a, 0x38, 0xef, 0x70, 0xce, + 0x47, 0x06, 0x09, 0x5d, 0xa3, 0xd5, 0xba, 0x52, 0x53, 0xbf, 0xd5, 0x11, 0x77, 0x35, 0x35, 0x9d, + 0x96, 0x42, 0xb6, 0xa1, 0x06, 0xbe, 0xc7, 0xc4, 0x78, 0x43, 0xbc, 0xfb, 0x42, 0x6b, 0xd0, 0x4f, + 0x89, 0xb9, 0x9e, 0x23, 0x99, 0xa0, 0x25, 0x8c, 0x39, 0xfa, 0x32, 0x9b, 0x8c, 0xef, 0xe6, 0xcb, + 0x97, 0x02, 0x2d, 0xe8, 0xa7, 0x94, 0x61, 0x14, 0xfd, 0xeb, 0x97, 0x8f, 0x0c, 0x03, 0x0f, 0x91, + 0x04, 0xe9, 0x04, 0x38, 0xdf, 0x96, 0xf7, 0x2d, 0xef, 0xbb, 0xd6, 0xe0, 0xf8, 0x8b, 0x69, 0x84, + 0x32, 0xb9, 0x21, 0x49, 0xfe, 0x44, 0x2c, 0x0f, 0x9f, 0xf8, 0xde, 0xc7, 0x57, 0xc3, 0xc0, 0x04, + 0x18, 0x42, 0x85, 0x35, 0xce, 0x5c, 0xdf, 0x3d, 0x52, 0x82, 0x75, 0x32, 0xbd, 0x28, 0x97, 0x16, + 0xe4, 0xfa, 0xe6, 0x8b, 0x8f, 0x1c, 0x74, 0xce, 0x02, 0xe8, 0xe8, 0x15, 0xdd, 0x62, 0x88, 0x2c, + 0x1a, 0xb7, 0x32, 0x9e, 0xcf, 0xef, 0xf1, 0x46, 0x2e, 0x76, 0x10, 0x79, 0xde, 0xa6, 0x1a, 0x78, + 0x53, 0xb0, 0xbd, 0x7d, 0xe2, 0x7d, 0x21, 0x13, 0xcb, 0xaa, 0xe6, 0x3b, 0x21, 0x90, 0xe1, 0xa5, + 0x27, 0xc4, 0x94, 0x9a, 0xf7, 0x4d, 0xf3, 0x2d, 0xa5, 0x1e, 0x8c, 0xb0, 0xf6, 0xdd, 0xfb, 0x51, + 0x9f, 0xea, 0xed, 0x2a, 0x3e, 0xe0, 0x9e, 0x03, 0xaa, 0x3f, 0xf4, 0x25, 0xf7, 0x63, 0x86, 0x75, + 0xf0, 0x7e, 0x00, 0x64, 0x27, 0x8b, 0x1c, 0xd7, 0x31, 0x34, 0x3c, 0x7d, 0xaf, 0x3a, 0x5a, 0xca, + 0x23, 0x89, 0x12, 0xd9, 0xdc, 0x61, 0x5e, 0x0e, 0x58, 0x9f, 0x42, 0x6b, 0x12, 0xaf, 0xf1, 0x94, + 0x88, 0x38, 0x0b, 0x81, 0x70, 0x01, 0x08, 0x37, 0x04, 0xc2, 0x05, 0x20, 0x70, 0xab, 0xe4, 0xbb, + 0xfb, 0x83, 0xd6, 0xae, 0x9b, 0x6d, 0x6d, 0x7c, 0xde, 0x49, 0x89, 0x18, 0x64, 0xcb, 0x19, 0xa2, + 0xbd, 0xf4, 0x9b, 0x42, 0x4f, 0xb8, 0x99, 0x75, 0x92, 0x4d, 0x6f, 0x03, 0xe8, 0xf5, 0x2e, 0x1e, + 0x10, 0x40, 0xea, 0xd4, 0x5d, 0xb2, 0x05, 0x78, 0xe0, 0xf5, 0x8d, 0x14, 0x46, 0xb3, 0x97, 0x4d, + 0x39, 0xa8, 0x4d, 0x46, 0xfe, 0xfa, 0x20, 0xca, 0xa2, 0x28, 0x47, 0x4f, 0xbe, 0x50, 0x9f, 0x0b, + 0xf4, 0x8f, 0xa2, 0x0e, 0x1a, 0xcc, 0x13, 0xc2, 0xdc, 0xa4, 0xef, 0xdf, 0xcd, 0x1f, 0x19, 0x77, + 0xd0, 0x74, 0x3d, 0x0c, 0x59, 0x84, 0x2e, 0x23, 0x74, 0x76, 0xfb, 0xb1, 0xe6, 0x97, 0xdb, 0xb9, + 0x43, 0xb7, 0x1e, 0x36, 0x28, 0xc4, 0x0f, 0xe8, 0xff, 0x90, 0xf1, 0x60, 0x46, 0x0f, 0x1c, 0x91, + 0xc0, 0x06, 0xbf, 0x64, 0x68, 0x16, 0x22, 0x9a, 0x79, 0x4a, 0x89, 0x32, 0x1b, 0x92, 0x18, 0xce, + 0x2f, 0xfc, 0xcf, 0x3f, 0xe3, 0x01, 0xec, 0x6d, 0x62, 0x25, 0x65, 0xb2, 0xe3, 0x1f, 0x53, 0xa8, + 0x1d, 0xf2, 0x5e, 0x40, 0xe2, 0xb6, 0xeb, 0xa6, 0x58, 0x65, 0x52, 0xb0, 0xc7, 0xfc, 0xd3, 0xf7, + 0xb8, 0xf0, 0xaf, 0x8b, 0x48, 0x46, 0xbd, 0xa3, 0xb5, 0x1d, 0x75, 0xc4, 0x2a, 0x4a, 0x51, 0x6a, + 0xd1, 0x92, 0xce, 0xad, 0x88, 0x9f, 0x59, 0x4d, 0x42, 0x86, 0xb8, 0x1d, 0x48, 0x35, 0xde, 0xf3, + 0x45, 0xa0, 0xde, 0x3b, 0xac, 0xb8, 0x17, 0x2d, 0x9e, 0x12, 0x33, 0x01, 0xfc, 0xf4, 0xc4, 0x17, + 0x8b, 0x9b, 0x50, 0x8f, 0xf6, 0xc1, 0x0b, 0x62, 0x56, 0x40, 0x47, 0xf8, 0xf3, 0x6f, 0xb1, 0xae, + 0x12, 0x7f, 0x0b, 0x3e, 0x9a, 0x53, 0xe8, 0x9e, 0x1f, 0xa6, 0x7d, 0xd7, 0x7e, 0xe0, 0x4e, 0xe2, + 0x27, 0xcf, 0x77, 0x25, 0xf6, 0xef, 0xe7, 0x16, 0x08, 0x43, 0xa8, 0xe5, 0xea, 0x00, 0x26, 0x1d, + 0x2f, 0xdc, 0x28, 0x06, 0x22, 0xa9, 0xa3, 0x3b, 0x4c, 0x8c, 0xda, 0x31, 0x5d, 0x62, 0xdf, 0x71, + 0x17, 0x1d, 0xa4, 0x45, 0xc9, 0x3f, 0xe7, 0xc1, 0x7c, 0x42, 0x68, 0x97, 0x95, 0x9a, 0xf6, 0xcd, + 0xaf, 0xaf, 0xa6, 0xe1, 0x4e, 0x0a, 0xd9, 0xbb, 0x14, 0x8c, 0x3a, 0x9e, 0x84, 0xa1, 0x9b, 0x27, + 0xb2, 0x25, 0xeb, 0xb2, 0x03, 0xac, 0x19, 0x01, 0x8b, 0xb6, 0x63, 0x48, 0x92, 0x53, 0x47, 0xef, + 0x90, 0x2c, 0xb4, 0xf0, 0x57, 0x4e, 0x51, 0x64, 0xea, 0x20, 0x22, 0x5b, 0xf0, 0x93, 0xff, 0x21, + 0xeb, 0xf0, 0x53, 0xf8, 0x51, 0x23, 0x3b, 0xeb, 0x50, 0x58, 0x74, 0xf0, 0x40, 0x92, 0xa4, 0x22, + 0x3c, 0x6c, 0x47, 0x95, 0xdc, 0x2e, 0x04, 0xeb, 0x93, 0x95, 0x90, 0xa6, 0xcf, 0xa7, 0x91, 0xaa, + 0xd8, 0x70, 0x61, 0x43, 0xab, 0x39, 0xb6, 0xef, 0x4b, 0x8f, 0xbd, 0xb8, 0x74, 0x2d, 0xd1, 0x8d, + 0xb6, 0xa3, 0x99, 0x35, 0x6e, 0xdb, 0x87, 0x78, 0x3a, 0xfb, 0xc3, 0xe4, 0x60, 0x73, 0xc9, 0x9f, + 0xba, 0xd8, 0x6a, 0xf2, 0xa7, 0xa6, 0x34, 0xfb, 0x04, 0xd8, 0xaf, 0x3b, 0xb8, 0xb2, 0xd6, 0xb5, + 0xac, 0x8f, 0x36, 0xec, 0x36, 0x1e, 0x75, 0x21, 0x2e, 0x2f, 0x2c, 0xe6, 0x86, 0x8a, 0xe1, 0x36, + 0x2c, 0xfc, 0xa3, 0xcf, 0x24, 0x0c, 0xef, 0x31, 0xfb, 0xf3, 0xa7, 0x34, 0x63, 0x87, 0x0a, 0xb8, + 0x1b, 0x94, 0x84, 0x85, 0x57, 0x28, 0xe1, 0xb9, 0xd1, 0x67, 0x4b, 0x27, 0xa7, 0xc8, 0x6a, 0x3f, + 0xa3, 0x44, 0x35, 0x3f, 0x3b, 0xc9, 0xc1, 0x05, 0xe0, 0x83, 0x06, 0x5a, 0xe2, 0xd5, 0xc8, 0x09, + 0x86, 0xd8, 0x6c, 0xfc, 0x63, 0xaa, 0x00, 0x05, 0x6d, 0xe2, 0x84, 0xc4, 0xa0, 0x78, 0xcc, 0x38, + 0x40, 0xae, 0x01, 0x42, 0x49, 0x0b, 0xcf, 0x2f, 0xb0, 0x57, 0xcb, 0xf6, 0xf0, 0x9d, 0xda, 0x01, + 0xb7, 0xa9, 0x98, 0xf5, 0xc7, 0xd4, 0x9c, 0x91, 0x90, 0x22, 0x52, 0x82, 0xf1, 0x38, 0xf9, 0x6a, + 0x8b, 0x64, 0x0b, 0x6c, 0x82, 0xe5, 0x8f, 0x14, 0xe7, 0x74, 0x1a, 0x04, 0x04, 0xd9, 0x0b, 0x3e, + 0x6b, 0x33, 0x71, 0xde, 0x6a, 0x4c, 0x0a, 0x2c, 0x10, 0x7f, 0x17, 0x5d, 0xa2, 0x31, 0x2f, 0x44, + 0x87, 0xf7, 0x68, 0x90, 0x6f, 0x02, 0x9e, 0xde, 0xa0, 0xb9, 0x78, 0x69, 0x3a, 0x10, 0x0e, 0x03, + 0xb1, 0x1a, 0xe4, 0x02, 0x4e, 0x16, 0x0c, 0x86, 0xa7, 0x89, 0x9d, 0xc1, 0xb9, 0xee, 0x8e, 0x74, + 0xe6, 0x70, 0xde, 0xc2, 0xf3, 0xa8, 0x85, 0x7c, 0x95, 0x4d, 0xe8, 0xdd, 0xeb, 0x8b, 0x42, 0x5e, + 0xac, 0x91, 0xd4, 0x0a, 0x9f, 0x5a, 0xc9, 0x97, 0xcb, 0x22, 0x23, 0x12, 0x71, 0x93, 0x5b, 0xfb, + 0x9b, 0x66, 0xc4, 0xaf, 0x5f, 0xc4, 0x53, 0xad, 0x78, 0x96, 0x9b, 0x70, 0xdf, 0x4d, 0x58, 0x41, + 0xed, 0x2a, 0x7d, 0x9e, 0x5f, 0x9a, 0x68, 0xf8, 0x42, 0x12, 0x68, 0x89, 0xce, 0x7e, 0xa0, 0x0f, + 0x13, 0xff, 0xe0, 0x61, 0x6e, 0x98, 0x91, 0xb0, 0x78, 0x60, 0x0e, 0x69, 0xca, 0x1e, 0x3e, 0xbe, + 0xdc, 0xc4, 0x64, 0x48, 0xbf, 0x3c, 0x63, 0x25, 0xaa, 0x7f, 0x34, 0xdc, 0xaa, 0xb3, 0x2f, 0xdf, + 0x55, 0xc2, 0xd8, 0x2c, 0x5a, 0xdc, 0x0c, 0x7d, 0x1c, 0x7e, 0x26, 0xc5, 0x11, 0x0c, 0xfc, 0x01, + 0x2d, 0xe8, 0xdd, 0x2c, 0x72, 0x53, 0x0a, 0x3b, 0x3a, 0xcc, 0xce, 0x54, 0x7c, 0x65, 0xde, 0x9e, + 0x2c, 0xe7, 0x57, 0xea, 0x16, 0x48, 0x31, 0x66, 0x49, 0x9c, 0x6b, 0xa0, 0xfc, 0x13, 0x92, 0xc9, + 0xe0, 0x58, 0xe4, 0xf8, 0x33, 0x7c, 0x43, 0xb7, 0x06, 0x7d, 0x83, 0xcc, 0x08, 0x0b, 0xbd, 0x17, + 0x36, 0xc5, 0xb3, 0x6c, 0x43, 0xac, 0x92, 0xe7, 0x19, 0x6a, 0x08, 0x3f, 0x25, 0xd9, 0x48, 0xa7, + 0x67, 0x33, 0x40, 0x44, 0xbb, 0xf5, 0x4d, 0xd9, 0x74, 0xd3, 0x75, 0x31, 0x12, 0xb3, 0x14, 0x3d, + 0xd8, 0x81, 0x41, 0xa3, 0xbe, 0xda, 0xce, 0x88, 0x55, 0xa8, 0x08, 0x8f, 0x32, 0x63, 0xb6, 0x33, + 0x4b, 0xb0, 0xd0, 0xd3, 0x3e, 0x0c, 0x60, 0x29, 0x74, 0x70, 0xca, 0x67, 0xf0, 0x28, 0x04, 0x6e, + 0xe7, 0x04, 0x4a, 0x2e, 0xb7, 0x27, 0xbf, 0x4d, 0x5d, 0x09, 0x82, 0x32, 0x55, 0xdc, 0x99, 0x27, + 0xf8, 0x9a, 0x91, 0x8c, 0x26, 0x31, 0xaa, 0xc7, 0xb6, 0xe1, 0xcd, 0xc8, 0x1a, 0xe9, 0x46, 0xdd, + 0x64, 0x59, 0xf8, 0xca, 0x0f, 0xfa, 0xc7, 0xd2, 0xf0, 0x9f, 0x1f, 0x71, 0x8f, 0x0d, 0x4e, 0x72, + 0x0c, 0x8c, 0x36, 0x89, 0x8e, 0x88, 0x8d, 0x09, 0xd8, 0x9a, 0x80, 0x8b, 0x2d, 0x3d, 0x54, 0x97, + 0xe8, 0x37, 0x9b, 0x14, 0xbf, 0x58, 0x8e, 0x92, 0xab, 0xef, 0x1c, 0x20, 0x6b, 0xef, 0xf8, 0x0c, + 0xcf, 0x9d, 0x0a, 0x25, 0xba, 0x0a, 0x5d, 0x68, 0xd1, 0x2f, 0x18, 0x03, 0x19, 0xd0, 0x39, 0x53, + 0xf3, 0x63, 0x4e, 0x21, 0x0d, 0x9b, 0x1e, 0xb6, 0xb3, 0x28, 0x14, 0x58, 0x6c, 0x7b, 0x19, 0x4f, + 0xd9, 0x93, 0x99, 0xf2, 0xe5, 0xcb, 0xe2, 0x58, 0x54, 0x9e, 0x84, 0xb5, 0xf9, 0x67, 0x38, 0xef, + 0x90, 0x85, 0x91, 0xe8, 0x41, 0x5d, 0x51, 0xf2, 0x27, 0x9e, 0x96, 0xe9, 0xa9, 0x6e, 0xc3, 0xf3, + 0x1c, 0x1d, 0x28, 0x12, 0xbe, 0x82, 0x52, 0x28, 0x4a, 0x30, 0x79, 0x55, 0x3f, 0x89, 0xb8, 0x6a, + 0x51, 0x1d, 0xa3, 0x0a, 0xeb, 0x9e, 0x7f, 0x24, 0x8f, 0xf7, 0xe9, 0x20, 0x1f, 0xb3, 0xae, 0x54, + 0x33, 0xbf, 0x91, 0x93, 0x60, 0x30, 0x8b, 0xf2, 0x12, 0x73, 0x78, 0xf8, 0x99, 0x7c, 0x3b, 0x35, + 0x0b, 0x36, 0xd1, 0xec, 0x4a, 0x84, 0x7e, 0xfe, 0xf4, 0x13, 0x5a, 0xab, 0x45, 0x96, 0x22, 0xfd, + 0xac, 0x2d, 0x8a, 0x60, 0x60, 0xcc, 0xe8, 0x04, 0x8f, 0xa0, 0x6d, 0x11, 0x06, 0x83, 0xe0, 0x04, + 0xf4, 0xe6, 0x01, 0x8a, 0x38, 0x15, 0x8f, 0xde, 0xf1, 0x8e, 0xb3, 0x4c, 0x89, 0xe2, 0x22, 0xf8, + 0x70, 0xc7, 0x7c, 0x49, 0x04, 0x9e, 0x0c, 0x8d, 0x5f, 0xfb, 0x77, 0x9b, 0x4c, 0x3a, 0x73, 0xcb, + 0x5d, 0x8d, 0xc0, 0x4e, 0x93, 0xc6, 0x08, 0x07, 0x35, 0x5e, 0x4a, 0x36, 0xa1, 0xda, 0xa7, 0xa1, + 0x66, 0x38, 0x77, 0x82, 0x32, 0xf6, 0x9d, 0x75, 0x47, 0x76, 0x93, 0x73, 0x84, 0x5a, 0x23, 0x0c, + 0xa7, 0x3b, 0x6f, 0xa1, 0x55, 0xaa, 0x9e, 0xc4, 0x36, 0xcd, 0x17, 0xb5, 0xf1, 0xc8, 0x55, 0xf1, + 0x57, 0x3d, 0xb5, 0xa8, 0xa1, 0x30, 0x9b, 0x94, 0xdc, 0x8c, 0x4f, 0x27, 0x22, 0x3b, 0x65, 0x26, + 0x11, 0x8f, 0x35, 0x13, 0x54, 0x4e, 0xa3, 0x8e, 0xa7, 0x30, 0x61, 0x4d, 0x71, 0xc5, 0x2a, 0x1e, + 0xc4, 0x24, 0x5e, 0x6f, 0x62, 0x8e, 0x6c, 0x36, 0x41, 0xa3, 0x30, 0x8f, 0x3e, 0xd5, 0xf9, 0xb6, + 0xba, 0x8e, 0xed, 0x23, 0x46, 0x4d, 0x86, 0x86, 0xe4, 0xf0, 0xa1, 0xb6, 0x16, 0x74, 0xcc, 0x6e, + 0x05, 0x79, 0x6a, 0xc0, 0x38, 0x09, 0xa5, 0xd4, 0x99, 0x1f, 0x9f, 0x4e, 0x69, 0xbf, 0xa5, 0xc1, + 0x74, 0x36, 0xb3, 0x29, 0x35, 0x6d, 0x01, 0xfc, 0x9f, 0x68, 0x2c, 0x0e, 0x1d, 0x05, 0x5b, 0x75, + 0x23, 0xf7, 0xeb, 0x97, 0xb5, 0xa1, 0xe0, 0xb3, 0x01, 0xec, 0x54, 0x48, 0xa1, 0xa8, 0x25, 0x0c, + 0x75, 0xc7, 0x1b, 0xa8, 0x86, 0xf4, 0x93, 0xea, 0x6f, 0x7e, 0x5b, 0x80, 0x83, 0xc8, 0x81, 0x44, + 0x63, 0x16, 0x27, 0x00, 0xf4, 0x06, 0xa5, 0x62, 0x65, 0x4d, 0xf3, 0x8f, 0x92, 0xa3, 0xdf, 0xa8, + 0xc8, 0x29, 0x6f, 0x44, 0x5f, 0x90, 0x12, 0xcf, 0xe9, 0xfa, 0xdb, 0xee, 0x12, 0x57, 0x1a, 0x1d, + 0xdd, 0x7f, 0xb7, 0x34, 0x8c, 0x48, 0x24, 0x0e, 0x2a, 0x7a, 0xea, 0x47, 0xcf, 0x73, 0x46, 0x3e, + 0xcf, 0x2c, 0x50, 0x97, 0x80, 0x31, 0x79, 0x71, 0x67, 0xf7, 0xb0, 0x4a, 0x39, 0xb5, 0xa8, 0xec, + 0xab, 0xd1, 0x84, 0x61, 0x5c, 0x5a, 0x78, 0x0e, 0x4d, 0x78, 0x06, 0x61, 0x4a, 0x4f, 0x3b, 0x91, + 0x65, 0xf5, 0xc2, 0x1a, 0x69, 0x8e, 0xef, 0x41, 0x8f, 0x53, 0xb1, 0x8e, 0x41, 0x67, 0x37, 0xfd, + 0x23, 0xf3, 0x78, 0x84, 0x97, 0xcb, 0x7d, 0x66, 0x44, 0xb2, 0x9a, 0x46, 0x63, 0x51, 0xce, 0xeb, + 0x89, 0xd9, 0x8a, 0xe4, 0xf5, 0xe3, 0xd3, 0x46, 0x0a, 0xe0, 0x5c, 0x66, 0x0b, 0x1c, 0x33, 0x56, + 0x5d, 0x87, 0x91, 0x65, 0x51, 0xa3, 0x9a, 0x4b, 0xdf, 0x1b, 0xa7, 0xe6, 0xed, 0x5a, 0xfe, 0x6d, + 0xdc, 0x8e, 0x0e, 0xdc, 0x7a, 0xd1, 0x57, 0x7a, 0xdf, 0xd8, 0xe2, 0xef, 0xe1, 0xbd, 0x56, 0x8b, + 0xf3, 0x6c, 0xe7, 0x96, 0x7d, 0xcc, 0x2f, 0xfb, 0x58, 0xc0, 0x8f, 0x7e, 0x8c, 0xc3, 0xd4, 0x82, + 0x5c, 0x57, 0x4b, 0x6a, 0xd8, 0x5f, 0xf2, 0x6d, 0x8b, 0x9c, 0x3e, 0x08, 0x03, 0x18, 0x2e, 0xc8, + 0x76, 0x2f, 0xfa, 0x56, 0x3f, 0x7a, 0x17, 0x78, 0xdc, 0x8a, 0xe5, 0x57, 0x10, 0xb3, 0x61, 0xb1, + 0x22, 0x78, 0x65, 0x76, 0x42, 0x89, 0xed, 0xed, 0x9b, 0x58, 0x7e, 0x2e, 0x88, 0x20, 0x17, 0xbb, + 0x8d, 0x5a, 0x05, 0xc8, 0x05, 0xa3, 0xf1, 0x5a, 0x34, 0x0c, 0x5a, 0x97, 0xd8, 0x28, 0x8d, 0x83, + 0x9b, 0xd4, 0x2c, 0xc1, 0x23, 0x2c, 0x2c, 0x24, 0x43, 0x62, 0xd9, 0xde, 0xa2, 0x3e, 0xd2, 0x30, + 0x93, 0x4b, 0xcb, 0xba, 0xff, 0xa0, 0xec, 0x70, 0x49, 0xd9, 0xc4, 0x02, 0x2f, 0xcb, 0x1b, 0x4b, + 0xc4, 0x31, 0x2d, 0x09, 0xba, 0xea, 0xd2, 0xb2, 0x1a, 0x06, 0xcc, 0x4b, 0x2c, 0x49, 0xef, 0x01, + 0x5f, 0x5c, 0x8e, 0xc4, 0x1b, 0x8e, 0x97, 0xe4, 0xfc, 0xee, 0xd9, 0xe3, 0x35, 0xbd, 0x76, 0x30, + 0x35, 0xb7, 0x1e, 0xcf, 0xcd, 0x63, 0xfe, 0x38, 0x72, 0x60, 0x1a, 0x92, 0x51, 0xa0, 0x8b, 0x9a, + 0x6c, 0x7e, 0xd2, 0x30, 0x25, 0x54, 0x6f, 0xf4, 0x4d, 0x56, 0x3f, 0xbe, 0x07, 0x4a, 0x25, 0x17, + 0x7a, 0x7a, 0x26, 0xfe, 0xa0, 0xdc, 0x13, 0x54, 0x9a, 0xc0, 0xfc, 0xac, 0xf8, 0x56, 0x12, 0x6d, + 0xce, 0x16, 0xc4, 0xb1, 0x69, 0x17, 0x9d, 0x83, 0x96, 0x31, 0x72, 0x79, 0x0e, 0x2e, 0x62, 0x4a, + 0xfa, 0xce, 0xe9, 0xd9, 0x71, 0x48, 0x28, 0xda, 0x7e, 0xaf, 0xcc, 0x12, 0xce, 0xbd, 0x00, 0xa1, + 0xc8, 0x00, 0x79, 0x5c, 0xfa, 0x06, 0xce, 0xf7, 0x50, 0xd9, 0x19, 0x27, 0x61, 0x71, 0x6f, 0xfc, + 0x5f, 0x89, 0xc4, 0xc0, 0xa3, 0xff, 0xa3, 0x68, 0xf1, 0xc1, 0x41, 0x09, 0xc6, 0x5c, 0xb2, 0x24, + 0xe2, 0xf6, 0x25, 0xa1, 0xbc, 0x06, 0x8b, 0x87, 0xb2, 0x6d, 0x99, 0x9e, 0x63, 0x19, 0xa9, 0xb0, + 0x22, 0x2e, 0x74, 0xf9, 0xa7, 0x3a, 0x8d, 0x5c, 0xfe, 0xe5, 0xcb, 0x2a, 0x48, 0x47, 0x91, 0x35, + 0xf4, 0xd7, 0x2f, 0x1a, 0xa4, 0xfc, 0x53, 0x34, 0x39, 0x21, 0x27, 0x7f, 0x4e, 0x9f, 0x4d, 0x97, + 0x2b, 0x3c, 0x1a, 0x4d, 0x55, 0x73, 0x3a, 0x1b, 0xc9, 0xc5, 0x01, 0xfe, 0x9c, 0x0a, 0xee, 0xc7, + 0xae, 0xfb, 0x47, 0x45, 0x14, 0x62, 0xf9, 0xb3, 0x1c, 0x24, 0x14, 0xe6, 0x98, 0x06, 0x2a, 0xa9, + 0xc8, 0x5d, 0x9f, 0xad, 0xe0, 0xe5, 0xd9, 0x55, 0x3e, 0x05, 0xd4, 0x86, 0x3f, 0x25, 0x31, 0x18, + 0x0d, 0x43, 0xb7, 0x37, 0xc9, 0x5f, 0x8c, 0xc4, 0xe1, 0xeb, 0xea, 0x1b, 0xb8, 0xcd, 0x02, 0x7a, + 0xb7, 0x80, 0x97, 0x1c, 0x0b, 0x62, 0xda, 0x65, 0x4c, 0xde, 0x88, 0xfa, 0x77, 0xff, 0xa4, 0xd7, + 0x31, 0x90, 0xe8, 0xf9, 0x9a, 0x4e, 0xce, 0x7d, 0x23, 0x14, 0x78, 0x64, 0x3e, 0x63, 0xf4, 0x67, + 0xc4, 0x66, 0x84, 0xb6, 0x13, 0xa6, 0x96, 0x86, 0xf1, 0xf0, 0xe7, 0xd9, 0x35, 0xed, 0x0f, 0xe9, + 0xcc, 0xc2, 0xfd, 0x0e, 0x3c, 0xcc, 0x46, 0x91, 0x83, 0xd6, 0x50, 0x0d, 0x0f, 0x9d, 0x99, 0xfe, + 0xf1, 0xe8, 0xe0, 0x78, 0x62, 0x8d, 0x1a, 0x2b, 0xa1, 0x6b, 0xe4, 0x3b, 0x50, 0xa0, 0x0a, 0x63, + 0xd9, 0xd6, 0x1a, 0x24, 0x2e, 0x94, 0x59, 0xf7, 0x12, 0x92, 0x6b, 0xe3, 0xba, 0xbb, 0x51, 0x5c, + 0x03, 0xe2, 0xfb, 0x56, 0xaa, 0x80, 0x32, 0xbb, 0x51, 0x2e, 0xe2, 0xf3, 0x7a, 0x0e, 0x9f, 0xd7, + 0xcb, 0xf8, 0x9c, 0xcb, 0x17, 0xf0, 0x05, 0x94, 0xb0, 0x4d, 0xb1, 0x0e, 0xa0, 0x6d, 0x88, 0xf2, + 0xa4, 0x6e, 0x92, 0x42, 0x26, 0x29, 0x64, 0x92, 0x42, 0x26, 0x29, 0x64, 0x92, 0x42, 0x26, 0x2d, + 0x64, 0xf2, 0x85, 0x58, 0x88, 0x87, 0x54, 0x8a, 0x40, 0xe7, 0x87, 0x93, 0xd8, 0x14, 0xbf, 0x89, + 0xd5, 0xb1, 0x94, 0x66, 0x5d, 0x8a, 0x59, 0x57, 0x88, 0xc5, 0x36, 0x9a, 0x77, 0x22, 0xa5, 0x69, + 0x3f, 0xe8, 0xb1, 0x6f, 0x45, 0x9e, 0x9a, 0x83, 0xbe, 0xe6, 0xe8, 0xad, 0xea, 0x27, 0x85, 0x57, + 0x81, 0xfb, 0xea, 0x8b, 0x76, 0x7f, 0x0d, 0xd3, 0x7b, 0xe4, 0xfe, 0xfa, 0x15, 0xc4, 0x85, 0x1d, + 0xb9, 0xdf, 0x94, 0x5f, 0xbf, 0x52, 0xa9, 0x91, 0x4b, 0x02, 0xeb, 0xdd, 0x6b, 0xcd, 0x6b, 0xc0, + 0xb7, 0xe6, 0xa5, 0x52, 0x2c, 0x0e, 0xe0, 0x92, 0xa8, 0x6c, 0x9b, 0xe2, 0xc8, 0x05, 0x9d, 0x00, + 0xfe, 0xa2, 0x89, 0x80, 0x98, 0x0c, 0x88, 0x05, 0x81, 0xda, 0x0d, 0xe2, 0xa5, 0x7a, 0x96, 0xeb, + 0x11, 0x5b, 0x45, 0x5a, 0xcc, 0x62, 0x09, 0x29, 0xd3, 0xd4, 0x4d, 0xd5, 0x99, 0xdc, 0x10, 0xeb, + 0x1e, 0x89, 0x28, 0xd6, 0x1c, 0x74, 0x3a, 0x40, 0xe3, 0xf2, 0xc8, 0xcd, 0xe0, 0xc9, 0x03, 0xd7, + 0x45, 0x25, 0x13, 0x35, 0x7b, 0x1c, 0x63, 0x16, 0xfc, 0x38, 0x30, 0x7e, 0x80, 0xbc, 0x4c, 0x8c, + 0xcc, 0x5b, 0xa4, 0x50, 0xa0, 0x89, 0xf1, 0x31, 0xd6, 0x48, 0x01, 0x89, 0xda, 0xcb, 0xc9, 0xf9, + 0x0a, 0x69, 0x1a, 0x09, 0xba, 0xc3, 0x9d, 0x93, 0x95, 0x64, 0xee, 0x85, 0x1c, 0x1a, 0xe6, 0xaf, + 0x15, 0x08, 0x62, 0x1c, 0xc6, 0xad, 0x13, 0x7e, 0x84, 0xad, 0x8f, 0xc6, 0x53, 0x32, 0x82, 0xd9, + 0xe6, 0x65, 0xe8, 0xf9, 0x86, 0xcd, 0x54, 0x78, 0x5a, 0xcc, 0x95, 0x22, 0x32, 0x2b, 0xbd, 0x89, + 0xe1, 0xcb, 0x97, 0xc8, 0x91, 0x27, 0x57, 0x92, 0xaa, 0xdc, 0xf9, 0x08, 0xca, 0x03, 0x51, 0x41, + 0x87, 0x0c, 0x9b, 0xec, 0xb7, 0xea, 0xd5, 0x22, 0x4c, 0xc4, 0x95, 0x4d, 0x0c, 0x2f, 0xa6, 0xb6, + 0xaf, 0xf1, 0x6b, 0xca, 0x04, 0xc1, 0x7d, 0x46, 0x91, 0x4c, 0xee, 0x67, 0x21, 0x28, 0xfe, 0xed, + 0xb8, 0x50, 0x32, 0x77, 0x14, 0x8e, 0xd2, 0x96, 0x9c, 0x2b, 0xa1, 0xb1, 0x66, 0xc4, 0x02, 0x19, + 0xd2, 0x16, 0x30, 0x16, 0x16, 0x69, 0xc0, 0xd1, 0x5e, 0xdd, 0x13, 0xad, 0xab, 0x1a, 0xf5, 0x28, + 0x5d, 0x86, 0x70, 0xf9, 0x61, 0xaa, 0xc8, 0x8c, 0x66, 0x93, 0x19, 0x77, 0x15, 0xf0, 0x9e, 0x0a, + 0x0d, 0xaa, 0x92, 0xe3, 0xd2, 0x38, 0x8b, 0xa6, 0xa0, 0xe1, 0x51, 0x00, 0x72, 0x8d, 0x85, 0x96, + 0x31, 0xf1, 0x1c, 0x04, 0xbb, 0x73, 0x82, 0xbc, 0xb5, 0x07, 0x0e, 0xbb, 0x79, 0x82, 0xbc, 0x7a, + 0x34, 0xeb, 0x9e, 0x8a, 0x21, 0xb8, 0x30, 0xa1, 0x03, 0x4f, 0xe1, 0xf5, 0x16, 0x5a, 0x66, 0xd0, + 0xb6, 0x4d, 0x58, 0x86, 0xcc, 0xb6, 0x7f, 0xc1, 0x44, 0x84, 0x4f, 0xc7, 0xae, 0xa1, 0x00, 0x49, + 0xcd, 0x00, 0x26, 0x8b, 0x87, 0x83, 0xaa, 0xf8, 0x8c, 0x77, 0x45, 0x30, 0xde, 0x4c, 0xae, 0x96, + 0xa1, 0x10, 0x7b, 0x5e, 0x00, 0xaa, 0xe7, 0x64, 0x73, 0x8a, 0x9c, 0x70, 0x00, 0x86, 0x51, 0x85, + 0x22, 0xe3, 0x39, 0x16, 0x76, 0x8d, 0x46, 0x70, 0xb3, 0x46, 0x70, 0x99, 0x46, 0x6c, 0xa7, 0x30, + 0xe1, 0xb4, 0x8b, 0x47, 0xb7, 0x4f, 0x15, 0xa2, 0xa7, 0xd3, 0x43, 0x2e, 0x1e, 0xee, 0xa0, 0x71, + 0x6e, 0xe0, 0x84, 0x9d, 0x7b, 0xd0, 0x50, 0x8e, 0x46, 0x6a, 0x21, 0x39, 0x60, 0x3d, 0x93, 0xa6, + 0xe6, 0x37, 0xca, 0xeb, 0x3d, 0x64, 0x8e, 0x79, 0x66, 0x10, 0x88, 0x84, 0x90, 0x26, 0x16, 0x83, + 0xd6, 0x77, 0xae, 0xe2, 0x1f, 0x0c, 0xda, 0x5f, 0xf5, 0x4f, 0x9f, 0x52, 0xb9, 0x2f, 0x46, 0xa8, + 0x28, 0x90, 0x94, 0x0a, 0x4b, 0x01, 0xf8, 0xc9, 0x7b, 0x11, 0xde, 0x03, 0xab, 0x11, 0x56, 0xe2, + 0x12, 0xeb, 0x19, 0xda, 0x15, 0x40, 0xc1, 0x4e, 0x6c, 0x4c, 0xe5, 0x5a, 0x99, 0x6b, 0x24, 0xd6, + 0x46, 0xd0, 0x04, 0xd2, 0x90, 0xea, 0x2f, 0x08, 0x9c, 0x45, 0xf2, 0xcc, 0x12, 0x7c, 0xac, 0x33, + 0x23, 0x24, 0xe1, 0x9a, 0xa1, 0xfa, 0xca, 0x8e, 0xd3, 0x25, 0xed, 0x17, 0x85, 0xdb, 0x62, 0x16, + 0x43, 0xf7, 0x6a, 0xae, 0xa6, 0x6d, 0xe0, 0x26, 0xd9, 0xea, 0xaa, 0x64, 0x45, 0xb6, 0x90, 0xea, + 0x2a, 0x2a, 0x26, 0x90, 0x44, 0xc2, 0x9a, 0x46, 0xb6, 0x90, 0xc2, 0x4f, 0xb9, 0xd8, 0xa7, 0x66, + 0xf8, 0x29, 0xff, 0x83, 0x53, 0xb8, 0x52, 0x91, 0x5c, 0xa3, 0x30, 0x17, 0x86, 0x38, 0x65, 0x71, + 0xf3, 0x2d, 0x12, 0x35, 0x08, 0xc3, 0xb9, 0x86, 0xc1, 0x0f, 0xf1, 0xea, 0x14, 0xdf, 0x42, 0x03, + 0x65, 0x5a, 0x20, 0x79, 0x90, 0x1f, 0x00, 0x39, 0x70, 0x4e, 0xa0, 0x82, 0x4e, 0x40, 0xa0, 0xe4, + 0xbb, 0x24, 0xcf, 0x6b, 0xb6, 0xc1, 0x77, 0x77, 0x2c, 0x27, 0xeb, 0xb5, 0x41, 0x0e, 0x3d, 0x92, + 0x03, 0xb5, 0xda, 0xb0, 0xf2, 0xdc, 0x26, 0xfe, 0xa9, 0x2a, 0x72, 0x4c, 0xb5, 0x0d, 0x73, 0xe4, + 0x31, 0x47, 0x3e, 0x96, 0xa3, 0xc0, 0xe7, 0x28, 0x60, 0x8e, 0x02, 0xe4, 0xd0, 0x32, 0x24, 0xcc, + 0x19, 0x39, 0x3b, 0xcc, 0x9e, 0xe9, 0x32, 0xa0, 0xe3, 0x2e, 0xb6, 0xbf, 0xc3, 0xe2, 0x7f, 0x20, + 0x3b, 0x2a, 0x39, 0xa5, 0x0a, 0x1f, 0x43, 0xbb, 0x74, 0x1f, 0xfd, 0x2a, 0x84, 0x4e, 0x70, 0x86, + 0xee, 0x93, 0x58, 0x6b, 0x02, 0x47, 0x7a, 0xa1, 0xfb, 0x2f, 0xb9, 0x1c, 0xe6, 0xc6, 0x53, 0xa2, + 0x9a, 0x69, 0x0d, 0xba, 0x3d, 0xc1, 0xb5, 0xd5, 0x16, 0xde, 0x77, 0x24, 0xb8, 0x18, 0x8e, 0x87, + 0x9e, 0x1c, 0x8e, 0x15, 0xc9, 0x63, 0x11, 0x16, 0x96, 0x0a, 0x5b, 0x60, 0x66, 0xfd, 0x48, 0x9e, + 0x02, 0xe6, 0x39, 0xd5, 0xe9, 0x6d, 0x4a, 0xba, 0x43, 0x23, 0x66, 0x46, 0xb3, 0xac, 0x63, 0x96, + 0x06, 0x07, 0x99, 0x40, 0xba, 0x21, 0x00, 0x55, 0x08, 0x56, 0x0b, 0xd8, 0x10, 0xee, 0x28, 0xcc, + 0x38, 0xca, 0x26, 0xab, 0x12, 0x39, 0xa0, 0x47, 0x32, 0xc2, 0x82, 0x0c, 0x2f, 0x3a, 0x31, 0x84, + 0xb3, 0xab, 0x75, 0x12, 0xc4, 0x57, 0xbc, 0x62, 0x47, 0x85, 0xe5, 0xd2, 0xe0, 0xef, 0xe2, 0x51, + 0x33, 0x9d, 0xb1, 0x1c, 0xdb, 0x41, 0x97, 0x93, 0x42, 0xc7, 0x2f, 0x14, 0x94, 0x79, 0x4e, 0x9e, + 0xfa, 0x90, 0xa3, 0x85, 0x26, 0xf9, 0x96, 0x78, 0xb6, 0x0f, 0xf5, 0x1f, 0x20, 0x78, 0x30, 0xdf, + 0x0b, 0x2d, 0xf0, 0xbd, 0x50, 0xe4, 0x1c, 0xb2, 0xa6, 0xb9, 0xf4, 0x9c, 0x44, 0xb6, 0x36, 0x31, + 0x4a, 0xdc, 0xf7, 0x1f, 0x55, 0xe0, 0xdf, 0xb6, 0xa1, 0x03, 0x4a, 0x6a, 0x18, 0xc6, 0x0d, 0x63, + 0x0f, 0xfb, 0x21, 0x89, 0x7f, 0xfd, 0xc2, 0x4c, 0xb8, 0x21, 0x8d, 0xf9, 0xf0, 0xd7, 0xcf, 0x2a, + 0x8b, 0x68, 0x89, 0xf4, 0xf3, 0x7d, 0xcb, 0xfb, 0x39, 0x73, 0x2c, 0x67, 0x2e, 0x92, 0x53, 0x0f, + 0x73, 0x16, 0xfc, 0x9c, 0x79, 0x96, 0x33, 0x1f, 0xc9, 0xe9, 0xd4, 0xf1, 0xec, 0x61, 0x75, 0x8a, + 0x77, 0xf0, 0x50, 0xa3, 0x65, 0x5f, 0x37, 0x53, 0x25, 0x99, 0x8b, 0x97, 0xc7, 0xd1, 0xb9, 0xcb, + 0xb1, 0x1b, 0xd6, 0x80, 0x14, 0xda, 0x08, 0xe9, 0x11, 0xc7, 0x16, 0x3d, 0xd1, 0x88, 0x68, 0xb2, + 0xeb, 0x5c, 0x59, 0x31, 0x0d, 0x8b, 0x7c, 0x97, 0x4f, 0x21, 0xa1, 0xf3, 0x31, 0x99, 0x48, 0x40, + 0x18, 0x2a, 0x0f, 0x56, 0x0c, 0x10, 0x44, 0x2b, 0x9b, 0xf9, 0x6a, 0x4b, 0xfa, 0xf5, 0x2b, 0xf4, + 0x72, 0xf9, 0xf2, 0x45, 0x14, 0x81, 0x45, 0x7c, 0x37, 0x7f, 0x90, 0x31, 0xe3, 0x3f, 0x10, 0xd7, + 0x97, 0xc0, 0x07, 0xa7, 0x2e, 0x4a, 0xbe, 0xcd, 0x71, 0x50, 0x9f, 0xfb, 0x24, 0xf7, 0x58, 0x17, + 0xd5, 0x31, 0x0c, 0x55, 0xd0, 0x5b, 0xdc, 0xad, 0x08, 0x6c, 0xbc, 0xbc, 0x2b, 0xcd, 0x20, 0x9d, + 0x93, 0x30, 0xaa, 0x2e, 0xae, 0x56, 0x9b, 0x29, 0x2f, 0xca, 0x93, 0xa2, 0x7c, 0xa7, 0x07, 0xa8, + 0xc4, 0xf5, 0x00, 0xd8, 0x0f, 0x3c, 0x13, 0x3b, 0xf4, 0x5c, 0x89, 0x79, 0x5e, 0x14, 0x94, 0xd2, + 0x49, 0xa9, 0x78, 0x81, 0x6d, 0x10, 0x58, 0xcd, 0x55, 0x80, 0x21, 0x96, 0xfd, 0xbb, 0xd8, 0x62, + 0x5f, 0xd2, 0x22, 0x28, 0xb6, 0x98, 0x8e, 0x60, 0xd7, 0x39, 0xd8, 0x61, 0xe2, 0x42, 0x17, 0x07, + 0xd2, 0x2c, 0x82, 0xc4, 0x4f, 0x0c, 0x8b, 0x9b, 0x5d, 0x4e, 0x33, 0xc2, 0x84, 0x2a, 0x9f, 0x40, + 0xba, 0x2b, 0xb2, 0xcb, 0xde, 0x5d, 0xd2, 0x4d, 0xda, 0x21, 0x31, 0x7e, 0x01, 0x3c, 0x08, 0xd7, + 0xf4, 0xca, 0x65, 0x06, 0x8e, 0x6c, 0x27, 0x68, 0xc4, 0xc4, 0x89, 0x9f, 0x85, 0x27, 0xb0, 0xe3, + 0x6a, 0x2d, 0xfb, 0x88, 0xe4, 0xd3, 0xe1, 0x0c, 0xed, 0xf1, 0x0d, 0xaa, 0x28, 0x0d, 0x4a, 0x99, + 0x1e, 0xf1, 0xc0, 0x07, 0xd2, 0x4b, 0xd7, 0xf3, 0x15, 0xb2, 0x39, 0x36, 0x8c, 0x7b, 0xcf, 0xa4, + 0xc4, 0xcf, 0xd4, 0x3a, 0x20, 0xf0, 0x5a, 0xfb, 0x10, 0x30, 0x3c, 0xf4, 0xa5, 0x47, 0x72, 0xa1, + 0x5e, 0xbd, 0x93, 0x16, 0xf1, 0x5e, 0x0c, 0x32, 0xb1, 0xfb, 0xb8, 0xb7, 0xdc, 0xc4, 0x3f, 0x87, + 0xec, 0xec, 0x6e, 0xe8, 0x67, 0x92, 0xb0, 0xe4, 0x46, 0x3c, 0x4f, 0xb0, 0xfc, 0x24, 0x5c, 0x98, + 0xd3, 0x9a, 0x44, 0x37, 0x8c, 0x7d, 0x0e, 0x42, 0x89, 0x98, 0xac, 0x83, 0x48, 0xc4, 0x93, 0x05, + 0xce, 0x76, 0x72, 0xa4, 0xc4, 0xa7, 0xa0, 0x08, 0x56, 0xff, 0x42, 0x9e, 0x43, 0x6e, 0x93, 0x97, + 0x6a, 0x13, 0x6e, 0xe0, 0x5e, 0xe4, 0x17, 0x9a, 0x1b, 0x3a, 0xd9, 0x4f, 0xd7, 0x9b, 0xe9, 0x97, + 0x34, 0x90, 0x7d, 0x1a, 0x53, 0xb0, 0x53, 0x18, 0x51, 0x92, 0x0e, 0xc3, 0x24, 0x3a, 0xda, 0xda, + 0xa6, 0xb8, 0x37, 0x26, 0x63, 0x0c, 0x4f, 0x5b, 0x5d, 0x1c, 0x55, 0x57, 0xac, 0x7d, 0xca, 0xc9, + 0x87, 0xe9, 0x34, 0x0b, 0x2b, 0xb1, 0x39, 0x0f, 0x2f, 0xb5, 0x8a, 0x69, 0x18, 0x66, 0x80, 0xdc, + 0x81, 0x56, 0x27, 0x61, 0xae, 0xb8, 0xc8, 0xc6, 0x40, 0xd0, 0x0b, 0x3b, 0xc9, 0x43, 0x20, 0x02, + 0xf5, 0x68, 0x78, 0x64, 0x99, 0xb6, 0xc8, 0x7c, 0xd7, 0x00, 0x87, 0x27, 0x73, 0x91, 0x27, 0xfa, + 0x64, 0x94, 0xfe, 0x08, 0x0c, 0x69, 0x18, 0x5e, 0x74, 0x14, 0x9a, 0xd5, 0x44, 0xc6, 0x4a, 0x7e, + 0xfd, 0xd2, 0x83, 0x58, 0x41, 0x14, 0xed, 0x3a, 0xf0, 0xd2, 0x2f, 0x5f, 0xd8, 0x0e, 0x0c, 0x86, + 0x83, 0x21, 0x63, 0xf0, 0xc7, 0x02, 0x33, 0x25, 0x85, 0x72, 0x35, 0x6a, 0xff, 0xe3, 0xab, 0xc4, + 0x2a, 0xe6, 0xb8, 0xce, 0xa0, 0x3e, 0x97, 0xfc, 0x11, 0x8e, 0x43, 0x0a, 0xc5, 0x38, 0x0e, 0xf6, + 0x72, 0x3c, 0x47, 0xd1, 0x3f, 0x03, 0x67, 0xb0, 0x77, 0xcc, 0x84, 0xbd, 0xc0, 0xae, 0x35, 0x06, + 0x52, 0x18, 0x73, 0xa6, 0x2d, 0xc6, 0x6f, 0xa0, 0x0c, 0x72, 0x0d, 0x6c, 0xba, 0xce, 0xb5, 0x1f, + 0x70, 0x8d, 0x08, 0xfa, 0x3e, 0x31, 0xfc, 0x6d, 0x8e, 0xb8, 0x91, 0xc0, 0x84, 0xea, 0x28, 0xe2, + 0x04, 0x1c, 0xf3, 0x5a, 0x06, 0x5a, 0x88, 0xdf, 0x84, 0xed, 0xdf, 0xe5, 0x12, 0xbd, 0xdb, 0x59, + 0x20, 0x6b, 0xb3, 0xc0, 0xfa, 0xf1, 0x95, 0x52, 0xdc, 0x7f, 0x45, 0xd5, 0x44, 0xde, 0x41, 0x9f, + 0xe6, 0xaf, 0xf2, 0x1f, 0xc9, 0xd4, 0x9c, 0x4c, 0x36, 0x9f, 0x38, 0xba, 0x01, 0x75, 0x97, 0x1f, + 0x38, 0xe9, 0x53, 0x9d, 0x93, 0x55, 0xd0, 0xb5, 0x2a, 0xc0, 0x6f, 0x34, 0x5f, 0xb8, 0x4c, 0x6a, + 0xb8, 0x95, 0x16, 0x73, 0x12, 0x9c, 0xf7, 0xfb, 0x63, 0xee, 0x7e, 0x44, 0x79, 0x3a, 0xfc, 0x56, + 0x98, 0x37, 0xaf, 0xd2, 0x1c, 0xc4, 0xf5, 0x87, 0xcd, 0x90, 0x1b, 0x6d, 0xec, 0x85, 0xd4, 0xf7, + 0x97, 0xb0, 0x0d, 0x64, 0x59, 0x47, 0xed, 0x2f, 0x91, 0xe7, 0x56, 0xb5, 0x85, 0xbc, 0x1a, 0xb7, + 0x2a, 0xe9, 0x1d, 0x62, 0xa4, 0x37, 0xb8, 0xc9, 0x16, 0xbd, 0x09, 0xcd, 0xa1, 0x3a, 0x12, 0xa7, + 0x32, 0xe7, 0x6a, 0x9c, 0xc2, 0x1c, 0x66, 0xe4, 0x02, 0x06, 0xfe, 0x9e, 0x02, 0x3f, 0x01, 0x05, + 0xfe, 0x93, 0xf6, 0xeb, 0x57, 0xd0, 0x84, 0x34, 0xe5, 0x0c, 0x20, 0xbf, 0x7e, 0xf1, 0xb6, 0x91, + 0xb9, 0x58, 0xc4, 0x23, 0x90, 0x25, 0x46, 0x68, 0x9c, 0xb5, 0x5c, 0xdc, 0x43, 0x63, 0x0a, 0xbf, + 0x1c, 0x8f, 0x8b, 0x36, 0x93, 0x0b, 0x5a, 0x41, 0xf2, 0xfd, 0x4a, 0x69, 0x96, 0xfa, 0x7b, 0x3e, + 0x26, 0xae, 0x8e, 0x1e, 0x48, 0xac, 0x05, 0xb4, 0x0d, 0x4c, 0x88, 0x71, 0xa0, 0x5e, 0xaf, 0x07, + 0xb6, 0xa9, 0xcc, 0xf9, 0xc5, 0xee, 0x19, 0x08, 0x7c, 0xc0, 0x4c, 0x6d, 0xcb, 0xc5, 0x73, 0x62, + 0xe8, 0x88, 0x42, 0x02, 0xac, 0xa0, 0x7f, 0x00, 0xb9, 0x95, 0x12, 0xb4, 0x70, 0x80, 0x98, 0x0f, + 0x4b, 0x8c, 0xf6, 0x9b, 0x8c, 0x69, 0x8d, 0x52, 0x12, 0x46, 0x87, 0xf1, 0x03, 0xb3, 0x04, 0x0a, + 0x7a, 0x8d, 0xc8, 0x3d, 0x30, 0xc3, 0xf5, 0x36, 0x2c, 0xbc, 0xf4, 0x01, 0x24, 0x26, 0xea, 0x25, + 0xc2, 0xa9, 0xf4, 0xbe, 0xdb, 0x52, 0x40, 0x7d, 0x39, 0xe5, 0x2f, 0xd5, 0xdf, 0xa7, 0xb6, 0x3e, + 0x81, 0x86, 0x4f, 0x1c, 0x41, 0xc3, 0x02, 0x75, 0x4b, 0x9a, 0xa5, 0x98, 0x5d, 0x2a, 0x0c, 0x44, + 0xa4, 0x71, 0x41, 0x48, 0x8b, 0x05, 0xe2, 0xac, 0x81, 0x12, 0xf3, 0xcc, 0xdc, 0x1c, 0xb9, 0xc4, + 0xfc, 0x90, 0x82, 0x41, 0xf8, 0x3a, 0x15, 0x87, 0x62, 0x15, 0x03, 0xb5, 0xcf, 0xbe, 0x4a, 0x55, + 0xea, 0xa3, 0xe3, 0x06, 0xee, 0x37, 0x86, 0x8c, 0xd7, 0x3c, 0x68, 0x78, 0xa1, 0x23, 0xc6, 0xaf, + 0x46, 0x07, 0xb6, 0x55, 0xf4, 0x5c, 0x02, 0x7c, 0xe0, 0x5d, 0x02, 0x3a, 0xb5, 0xbb, 0x11, 0xac, + 0xd6, 0x04, 0xb4, 0x71, 0xa2, 0xc5, 0xe2, 0xf6, 0x66, 0x6f, 0xb5, 0x22, 0xce, 0xe4, 0xa6, 0xd5, + 0x9e, 0x54, 0x3d, 0xde, 0x79, 0xe7, 0x37, 0x2c, 0x63, 0xbf, 0x13, 0x06, 0xef, 0x23, 0x56, 0x34, + 0x24, 0x93, 0xdf, 0x34, 0xa4, 0x75, 0x25, 0xbc, 0x24, 0x0c, 0xe6, 0x9e, 0x3b, 0x68, 0xb5, 0x34, + 0x97, 0xde, 0x5a, 0xa6, 0x13, 0x73, 0x19, 0x67, 0x50, 0xa3, 0x49, 0x0b, 0x2c, 0x69, 0xbe, 0xad, + 0x41, 0xe2, 0x6d, 0x63, 0x1a, 0xb3, 0xa4, 0xb1, 0xdf, 0xaa, 0xc6, 0x62, 0x4d, 0x11, 0x26, 0x45, + 0xe7, 0x2c, 0x8d, 0x21, 0x05, 0xfd, 0x4f, 0x8a, 0xf8, 0xcf, 0xa2, 0xbc, 0xf1, 0xd3, 0x64, 0x09, + 0x11, 0xff, 0xfa, 0xe5, 0x5b, 0x65, 0xf1, 0x2e, 0x80, 0x7c, 0x09, 0x21, 0x09, 0xad, 0x64, 0x52, + 0x95, 0x57, 0xef, 0xb0, 0x6d, 0x98, 0xfb, 0xae, 0x0d, 0x0c, 0x5a, 0x13, 0x59, 0x38, 0xc0, 0x65, + 0xce, 0x4f, 0x71, 0x1f, 0x1a, 0xb2, 0x19, 0x1f, 0x6c, 0xef, 0x4c, 0x2d, 0xb3, 0x4a, 0x6f, 0x80, + 0xc5, 0xbf, 0x33, 0x62, 0x65, 0xfb, 0xf2, 0xc5, 0xc7, 0x49, 0xf8, 0xc4, 0xac, 0xf1, 0x91, 0x57, + 0xe0, 0x59, 0xd4, 0x84, 0x40, 0x6d, 0xf5, 0x18, 0x7b, 0x97, 0x18, 0x73, 0x30, 0x64, 0x21, 0xb5, + 0xea, 0x28, 0xd4, 0x69, 0x3d, 0x5e, 0x4a, 0xee, 0x38, 0x6f, 0x78, 0x3f, 0x28, 0xe9, 0x67, 0xc8, + 0xc4, 0xe6, 0xdc, 0x7d, 0xce, 0x8c, 0x48, 0x78, 0xf6, 0x14, 0xb9, 0xa2, 0x16, 0xfe, 0x48, 0x9b, + 0x3f, 0x11, 0xe5, 0x30, 0x71, 0xc9, 0x2e, 0x7f, 0x06, 0x6f, 0x2d, 0x76, 0x58, 0xb8, 0x76, 0x12, + 0x5c, 0x96, 0x98, 0x7b, 0xfe, 0x98, 0x12, 0x83, 0xdf, 0x86, 0xb2, 0x29, 0xc2, 0x12, 0x56, 0x25, + 0x87, 0xbf, 0x67, 0x24, 0x15, 0x63, 0x4a, 0x41, 0x22, 0x6e, 0xa4, 0xc0, 0x24, 0xe9, 0x78, 0xf0, + 0x4b, 0x3f, 0xec, 0x0c, 0x9c, 0x19, 0x1e, 0xa0, 0x23, 0x7e, 0x56, 0x3f, 0xab, 0x22, 0x6d, 0xa5, + 0x4d, 0x03, 0x52, 0x61, 0x18, 0x1f, 0xf4, 0xcb, 0xe3, 0x61, 0x86, 0x32, 0x55, 0x44, 0x21, 0x00, + 0x35, 0x9b, 0xcd, 0xc1, 0x8f, 0xfe, 0x09, 0xd1, 0x1e, 0x84, 0x17, 0xe8, 0xfa, 0x4f, 0xd2, 0xa6, + 0x78, 0x4e, 0x3c, 0x00, 0x09, 0xf8, 0xae, 0x7f, 0x97, 0xb2, 0xa9, 0x79, 0x23, 0xcb, 0x79, 0xa1, + 0xdd, 0x01, 0x76, 0x25, 0x60, 0x7e, 0x72, 0x0d, 0x31, 0x86, 0xcc, 0x85, 0x45, 0x14, 0xc3, 0x69, + 0xdf, 0xe0, 0x33, 0xed, 0x36, 0x09, 0xa2, 0xfb, 0x7e, 0x3d, 0x82, 0x61, 0x99, 0x5d, 0xc8, 0x84, + 0xb5, 0x65, 0x44, 0xff, 0x22, 0x93, 0x29, 0x5a, 0x3b, 0xab, 0x53, 0xe4, 0x37, 0x55, 0x1f, 0xae, + 0xd9, 0xac, 0xc6, 0xc5, 0x0c, 0x23, 0x83, 0x4c, 0x6c, 0xa2, 0x0e, 0x46, 0x10, 0x0b, 0x80, 0x7f, + 0x67, 0x00, 0x31, 0x64, 0xd9, 0x50, 0xd7, 0x80, 0xd9, 0x4e, 0xe9, 0xbd, 0xc2, 0xf8, 0x97, 0xed, + 0x1b, 0xb1, 0x4f, 0x73, 0x1b, 0x3f, 0x98, 0x25, 0x79, 0xaf, 0x7f, 0xc9, 0x9a, 0x11, 0xd4, 0x56, + 0x9b, 0xab, 0xdc, 0x69, 0xd1, 0x2a, 0x35, 0x18, 0xea, 0x26, 0xcc, 0xd2, 0x2a, 0xbd, 0xef, 0x3c, + 0xe2, 0x47, 0x12, 0x77, 0x4e, 0x41, 0x08, 0x38, 0x0f, 0x12, 0x02, 0x36, 0x4e, 0xe2, 0xf7, 0x26, + 0x32, 0xf9, 0x4e, 0xd8, 0x36, 0xf0, 0x6c, 0x03, 0x98, 0x76, 0x47, 0x05, 0x21, 0x0b, 0xb8, 0x36, + 0xbb, 0x88, 0x23, 0x8e, 0x1f, 0xc2, 0x80, 0x10, 0x37, 0xc4, 0xd6, 0xef, 0x5f, 0xb4, 0xe1, 0x1b, + 0xfe, 0x53, 0xfe, 0x1d, 0xcc, 0xf4, 0x57, 0x8a, 0x5d, 0x93, 0xca, 0xae, 0x84, 0x82, 0x2f, 0x09, + 0xdb, 0x81, 0xb4, 0xc8, 0x87, 0xf6, 0xfd, 0x78, 0x4c, 0x1c, 0xc6, 0x10, 0x41, 0x2b, 0x09, 0x51, + 0x31, 0x37, 0x43, 0x99, 0xe3, 0xa8, 0xcf, 0x59, 0xf9, 0x6e, 0x21, 0xfc, 0xec, 0xe6, 0x68, 0xf6, + 0x20, 0xd1, 0xab, 0x5a, 0xfc, 0xfe, 0xd1, 0xd0, 0x77, 0xc4, 0x99, 0x34, 0xa9, 0x03, 0x24, 0xdb, + 0x6f, 0xf7, 0xe0, 0x8c, 0xd5, 0xc7, 0xf7, 0x82, 0xd5, 0x94, 0xd4, 0x0d, 0x64, 0xbc, 0x78, 0x24, + 0xd0, 0xe7, 0x87, 0x8a, 0xec, 0x45, 0x62, 0x3e, 0x11, 0x9f, 0x4e, 0xdf, 0xd6, 0x91, 0xe8, 0x55, + 0xe7, 0xad, 0xe6, 0x42, 0x07, 0x3e, 0x39, 0xa7, 0x48, 0xe9, 0x8f, 0x9c, 0x29, 0xc3, 0x52, 0x2e, + 0x5f, 0xaa, 0xaa, 0x48, 0x35, 0x97, 0x3f, 0x34, 0x46, 0xc2, 0x43, 0xc7, 0xce, 0x02, 0xba, 0x2d, + 0xc7, 0x32, 0x0c, 0xa8, 0xc9, 0xba, 0xc3, 0x59, 0x35, 0x6d, 0x6a, 0x3d, 0x75, 0xa8, 0x5b, 0x4e, + 0x35, 0xb8, 0x30, 0x84, 0xcc, 0x1b, 0x78, 0x25, 0x17, 0xa9, 0xcc, 0xfc, 0xcd, 0xf1, 0x0f, 0x84, + 0x34, 0xd0, 0xaa, 0xe4, 0x02, 0x87, 0xe4, 0x00, 0x32, 0x41, 0x74, 0x98, 0x8d, 0xc4, 0x70, 0x1d, + 0xef, 0xc4, 0xe7, 0x98, 0x0f, 0xcd, 0xe1, 0xfd, 0x46, 0x68, 0x8e, 0x58, 0x34, 0x8e, 0x33, 0x90, + 0x1e, 0xd8, 0x29, 0x47, 0x81, 0x78, 0xff, 0x27, 0x05, 0xe4, 0x08, 0x43, 0x71, 0x84, 0xa7, 0xbe, + 0x49, 0xe8, 0x84, 0x11, 0xc6, 0xd2, 0xa8, 0x8b, 0x85, 0xca, 0x9f, 0xe2, 0x07, 0x03, 0x73, 0x2c, + 0x28, 0xf6, 0x5f, 0x10, 0xa5, 0x23, 0x1b, 0x9e, 0x4f, 0xe7, 0x40, 0xfe, 0xd8, 0x49, 0x70, 0xef, + 0xdd, 0x40, 0x1c, 0x94, 0x02, 0x56, 0x73, 0x01, 0x0d, 0x44, 0x03, 0x71, 0x68, 0x8b, 0x8e, 0x85, + 0x7b, 0x8b, 0x8f, 0x85, 0x7b, 0xd1, 0x63, 0xe1, 0xbf, 0x03, 0xed, 0x7b, 0x31, 0x38, 0x4c, 0x1e, + 0x36, 0xf3, 0xdf, 0x82, 0xed, 0x77, 0xce, 0xac, 0x43, 0x05, 0x35, 0xee, 0x64, 0x6c, 0x2d, 0xe9, + 0xb8, 0x70, 0x6f, 0xee, 0x00, 0xbb, 0xf7, 0xee, 0x01, 0x76, 0x6e, 0x9c, 0xff, 0xcd, 0x90, 0x18, + 0xbf, 0x1d, 0x09, 0xc3, 0xfb, 0x3b, 0x91, 0x30, 0x94, 0x05, 0xd1, 0x21, 0xbc, 0x25, 0xd1, 0x21, + 0xbc, 0xbf, 0x11, 0xfe, 0xc2, 0xfb, 0x40, 0xf8, 0x8b, 0x7e, 0x2f, 0x12, 0xdf, 0x82, 0xbe, 0xfe, + 0x23, 0xe8, 0x10, 0x87, 0x5f, 0x83, 0x48, 0x14, 0x8b, 0xe2, 0x0b, 0x44, 0xe8, 0x98, 0x04, 0x17, + 0xf8, 0x63, 0x1a, 0xcc, 0x29, 0x6d, 0x46, 0x3c, 0xa4, 0xb9, 0x58, 0x73, 0x5c, 0xd1, 0x96, 0xb8, + 0xf1, 0x81, 0x4b, 0x07, 0x38, 0xa2, 0x13, 0x37, 0xb6, 0xd1, 0xc5, 0xc1, 0xe0, 0xa8, 0x28, 0x76, + 0xfc, 0x9c, 0x1d, 0x2c, 0xaa, 0x2d, 0x3c, 0x33, 0x6e, 0xf0, 0x3b, 0xec, 0x41, 0xc5, 0xd3, 0x25, + 0x67, 0xcc, 0x63, 0xfc, 0xdf, 0x07, 0xd1, 0x0d, 0x0e, 0x67, 0x36, 0x2d, 0x07, 0x38, 0xf1, 0x2a, + 0x1e, 0x20, 0x18, 0xb8, 0xd5, 0x7c, 0xd1, 0x1e, 0x07, 0x77, 0x56, 0x28, 0x38, 0x4d, 0x16, 0x87, + 0x0a, 0x5b, 0x1a, 0x23, 0x81, 0x1c, 0xf1, 0x9e, 0x0b, 0x11, 0x86, 0x46, 0x1a, 0x1a, 0x12, 0xf0, + 0xb7, 0xa2, 0xa1, 0x2d, 0x0f, 0xb5, 0x15, 0x2c, 0xfa, 0xef, 0xc5, 0x00, 0xc8, 0x55, 0x54, 0x32, + 0x8d, 0xd9, 0x82, 0x43, 0xb1, 0x4d, 0xff, 0x7e, 0x25, 0xa6, 0x19, 0x9b, 0xc6, 0xf2, 0x9f, 0x2a, + 0xd5, 0xa9, 0xed, 0x56, 0x71, 0x93, 0xb7, 0x3d, 0x70, 0xaa, 0xdf, 0x41, 0x2c, 0xf9, 0x21, 0x87, + 0xba, 0x7f, 0xf5, 0xfb, 0x6a, 0xee, 0x07, 0x88, 0xca, 0x18, 0x1a, 0xa1, 0xaa, 0xc8, 0x4e, 0x15, + 0x35, 0x25, 0x90, 0xb5, 0x15, 0x10, 0xb2, 0x23, 0x92, 0xc8, 0x05, 0x74, 0xd9, 0x48, 0x69, 0x64, + 0xd3, 0x2c, 0x38, 0x86, 0x1b, 0x0f, 0xf4, 0x1d, 0x5c, 0x58, 0x96, 0x1c, 0xe7, 0x5b, 0xa6, 0xfb, + 0x43, 0x6e, 0x24, 0xf0, 0x25, 0xdd, 0xc3, 0x77, 0xbf, 0x9b, 0x3f, 0x88, 0x8f, 0xd0, 0x66, 0xf0, + 0x54, 0x0d, 0xaf, 0xce, 0x21, 0x69, 0x50, 0xff, 0x27, 0x34, 0x30, 0xb3, 0xef, 0xe1, 0x85, 0x37, + 0xf1, 0x94, 0x8c, 0x8d, 0xca, 0x36, 0x09, 0x39, 0x67, 0xd9, 0xa4, 0x03, 0xa1, 0xdf, 0x1f, 0xad, + 0x68, 0x46, 0x66, 0x06, 0xac, 0x70, 0xf4, 0xfb, 0x46, 0x70, 0xb4, 0x51, 0x88, 0x9c, 0xd0, 0xed, + 0x40, 0xfb, 0xbd, 0x0b, 0x63, 0x37, 0x7a, 0x29, 0x91, 0x08, 0x62, 0x81, 0x6f, 0xdb, 0xf7, 0xc2, + 0x38, 0xf4, 0x6e, 0x94, 0x40, 0x3b, 0xba, 0xe3, 0x02, 0x2f, 0x11, 0x37, 0xfc, 0x40, 0xdd, 0x02, + 0xc3, 0x05, 0x1b, 0x23, 0x86, 0x0b, 0x3a, 0x4a, 0xe4, 0xb6, 0x9e, 0x08, 0x5a, 0xdc, 0x74, 0x9d, + 0x62, 0x1d, 0xb8, 0x81, 0x33, 0x01, 0x8d, 0x19, 0xa3, 0xa4, 0xa7, 0xa3, 0x4d, 0xf4, 0x9c, 0x37, + 0xff, 0xd0, 0xf1, 0x57, 0xd9, 0xe3, 0x8f, 0x50, 0x31, 0xc7, 0x08, 0x6f, 0xe1, 0x09, 0x21, 0x32, + 0xb3, 0x8d, 0x55, 0x0c, 0xa6, 0x21, 0xd5, 0xc2, 0x3d, 0x45, 0x3c, 0x8b, 0x40, 0x6c, 0xc1, 0x49, + 0x21, 0x0a, 0x78, 0x7b, 0x14, 0x09, 0x1f, 0x9a, 0x22, 0xc1, 0xb5, 0x25, 0x69, 0xf1, 0x39, 0x24, + 0x52, 0x7d, 0x10, 0xff, 0x94, 0x5c, 0xce, 0x22, 0x99, 0x81, 0x9b, 0xc0, 0x90, 0x98, 0x4b, 0xc3, + 0xb3, 0xaa, 0xfc, 0x07, 0x09, 0x74, 0x63, 0x93, 0x6d, 0x7a, 0x45, 0x3e, 0x54, 0x79, 0x8c, 0x7d, + 0x0f, 0x3f, 0x11, 0xab, 0xe7, 0x0f, 0xee, 0xe4, 0xab, 0x7f, 0x98, 0x84, 0xb3, 0x32, 0x00, 0x2b, + 0xb8, 0x30, 0xa8, 0x4f, 0x5e, 0x04, 0xef, 0xb8, 0x1b, 0xda, 0xd2, 0x80, 0x62, 0x72, 0xb2, 0x22, + 0xe3, 0x61, 0xae, 0xe0, 0x23, 0x4c, 0x99, 0xe8, 0xd7, 0xc8, 0xa7, 0xef, 0xde, 0x0f, 0x3e, 0x73, + 0x38, 0xab, 0x16, 0x95, 0x09, 0x73, 0x90, 0xa2, 0x11, 0x0a, 0xe3, 0xdc, 0x2b, 0x35, 0x23, 0x11, + 0xcc, 0x70, 0xe7, 0x37, 0x95, 0x08, 0x3e, 0x6e, 0x3d, 0x27, 0x83, 0x1e, 0xfd, 0x92, 0x00, 0x27, + 0x66, 0x88, 0x40, 0xc3, 0xc7, 0xb3, 0x36, 0xb4, 0x0b, 0x97, 0x1e, 0xd0, 0x8d, 0x02, 0x84, 0x07, + 0xff, 0x03, 0x7c, 0xbb, 0x73, 0xe7, 0xa2, 0xa0, 0xdc, 0xce, 0xc0, 0xf1, 0x0b, 0xba, 0x73, 0x96, + 0xcb, 0xff, 0xaf, 0xb8, 0xab, 0x6f, 0x6e, 0xdb, 0x46, 0xfa, 0xff, 0x3f, 0x9f, 0x42, 0x66, 0x5b, + 0x5b, 0x3c, 0xd3, 0x36, 0x65, 0x27, 0x6d, 0x22, 0x99, 0xd2, 0xe4, 0xdc, 0xf6, 0xce, 0x73, 0x6d, + 0x9e, 0x4c, 0x9d, 0x6b, 0xae, 0xe3, 0xf1, 0x9c, 0x25, 0x19, 0xb2, 0x38, 0xa1, 0x49, 0x56, 0xa4, + 0x63, 0xe7, 0x64, 0x7d, 0xf7, 0x67, 0x5f, 0xf0, 0xca, 0x17, 0x49, 0x4e, 0x3b, 0xf7, 0xcc, 0xc4, + 0x91, 0x04, 0x82, 0xc0, 0x02, 0x58, 0x2c, 0x16, 0x8b, 0xc5, 0x6f, 0xbb, 0xd5, 0xbe, 0xb4, 0x6d, + 0xa1, 0xbd, 0xf0, 0x2f, 0x85, 0x1e, 0x41, 0xbb, 0xc8, 0xf7, 0xdb, 0x95, 0xe8, 0xf4, 0xf4, 0x36, + 0x05, 0xff, 0x62, 0x05, 0x9b, 0x53, 0xa5, 0x0c, 0xd0, 0x4d, 0x86, 0xef, 0x9e, 0x24, 0xa8, 0x87, + 0x2e, 0xca, 0x5b, 0x0b, 0x02, 0x24, 0xb0, 0x9f, 0xe4, 0xce, 0xa3, 0x51, 0x17, 0x0d, 0xea, 0x28, + 0x53, 0x61, 0xd7, 0xa6, 0xa3, 0x5f, 0xa1, 0xcb, 0x96, 0xf5, 0x4e, 0xd6, 0xbb, 0x6e, 0x01, 0x03, + 0xe9, 0x9b, 0xd7, 0xdd, 0xfd, 0x99, 0xaa, 0xcc, 0xdc, 0x4d, 0xa2, 0x52, 0x1b, 0x73, 0xc1, 0xe4, + 0xfb, 0x21, 0xbd, 0x31, 0x39, 0x37, 0xd4, 0xcc, 0x56, 0x8d, 0x8a, 0x37, 0xe6, 0x3b, 0xf7, 0xe2, + 0xad, 0x94, 0x78, 0x32, 0xec, 0xb0, 0xee, 0x6b, 0x26, 0x75, 0x54, 0x4d, 0x80, 0x25, 0xb7, 0xb0, + 0x50, 0x83, 0x61, 0xec, 0x58, 0x97, 0x97, 0x6b, 0xb5, 0x15, 0x8f, 0xaa, 0x17, 0x62, 0x38, 0x2a, + 0x29, 0xca, 0xd6, 0xc2, 0x1e, 0x5d, 0xcc, 0xef, 0x67, 0xb3, 0x44, 0x10, 0x06, 0x64, 0xeb, 0x82, + 0x6d, 0x06, 0xcb, 0x5e, 0xb4, 0x71, 0x88, 0x39, 0x7e, 0x02, 0x46, 0x6e, 0x33, 0xb4, 0x3e, 0x3d, + 0xa5, 0xe8, 0x85, 0x5c, 0x45, 0x2a, 0xda, 0x0e, 0xa7, 0xc8, 0x5c, 0xa7, 0xde, 0x80, 0x17, 0x4b, + 0xd0, 0x43, 0x28, 0xa3, 0x66, 0x71, 0x1a, 0x97, 0x22, 0xf9, 0xbc, 0x55, 0x13, 0xf2, 0x75, 0x6d, + 0x48, 0xd1, 0x7c, 0x08, 0xf4, 0x2a, 0xca, 0xbf, 0x8c, 0x6c, 0x33, 0x3c, 0xcc, 0x19, 0x7a, 0x7c, + 0x14, 0x6c, 0x83, 0xac, 0xc8, 0xf5, 0x72, 0xf6, 0xd4, 0xab, 0x46, 0x7f, 0x94, 0x6d, 0x6c, 0x54, + 0xa2, 0xab, 0xfa, 0xb2, 0xdd, 0x44, 0x4b, 0x33, 0xb6, 0x9a, 0x87, 0x9a, 0x74, 0xef, 0xf8, 0x3b, + 0xd2, 0xac, 0x43, 0xb9, 0x7e, 0x33, 0x25, 0x69, 0xbf, 0xb7, 0x1a, 0x76, 0xf0, 0xec, 0x44, 0xeb, + 0xb2, 0xae, 0x4a, 0x05, 0xfd, 0x0d, 0x8c, 0x2f, 0x5d, 0x9f, 0xfa, 0x1c, 0x54, 0xeb, 0x94, 0x8f, + 0xe8, 0xac, 0x4c, 0x74, 0x82, 0x88, 0x2b, 0xb9, 0x45, 0x0c, 0x4f, 0x99, 0x96, 0x0e, 0x27, 0x77, + 0x7d, 0x20, 0x24, 0xb2, 0xb9, 0x07, 0x2f, 0x74, 0x39, 0xbf, 0x40, 0x71, 0xc2, 0xea, 0x5c, 0xbd, + 0x23, 0xf4, 0x86, 0x6f, 0xa1, 0xdb, 0xb4, 0xba, 0x51, 0xcb, 0x80, 0x58, 0x68, 0xd0, 0x81, 0x45, + 0x99, 0x2d, 0x94, 0xcf, 0x96, 0x95, 0xf9, 0xeb, 0xa5, 0x51, 0xc0, 0xd0, 0x70, 0x8e, 0xe3, 0xc7, + 0xed, 0xa9, 0x84, 0xb5, 0xa8, 0x8d, 0xc9, 0x16, 0x3a, 0x7d, 0x09, 0xb5, 0xbe, 0x4b, 0xa8, 0x91, + 0x41, 0x47, 0xa9, 0xb3, 0x5b, 0x85, 0x13, 0x79, 0x0f, 0x6f, 0x56, 0xd4, 0xff, 0xeb, 0x95, 0x02, + 0xca, 0x28, 0x36, 0x00, 0x13, 0x57, 0x59, 0xd5, 0x01, 0x31, 0x38, 0x67, 0xcc, 0xff, 0xce, 0x84, + 0x90, 0x24, 0x52, 0x51, 0x14, 0xb4, 0xaf, 0xd0, 0x90, 0xba, 0x6b, 0xe6, 0x0d, 0xc5, 0x8b, 0x9c, + 0xd0, 0xb4, 0x91, 0xf3, 0xe2, 0x4f, 0x9f, 0xcc, 0x6b, 0x49, 0xbf, 0x40, 0xaf, 0x3b, 0x65, 0x04, + 0x9a, 0xe0, 0xb1, 0xd0, 0xf3, 0x68, 0x2f, 0xfe, 0x1f, 0x69, 0x3f, 0xe3, 0x4a, 0x0d, 0x52, 0x57, + 0x96, 0xb2, 0x9c, 0x7a, 0x06, 0xf5, 0x44, 0xd5, 0xb3, 0xa9, 0xbe, 0xae, 0xa0, 0xbf, 0xe8, 0x53, + 0x99, 0xbb, 0x71, 0x4e, 0xa6, 0x59, 0xfb, 0xb7, 0x15, 0x03, 0xaa, 0xa8, 0xc1, 0x4a, 0x43, 0x1b, + 0x7f, 0x12, 0x37, 0x90, 0xad, 0xbf, 0x9b, 0x4e, 0x8a, 0x7c, 0xd0, 0x36, 0xf1, 0x2d, 0xa2, 0x93, + 0xbb, 0x1c, 0x48, 0x72, 0x27, 0x64, 0x65, 0xc2, 0x5e, 0x0f, 0x74, 0x50, 0x0c, 0xbe, 0x07, 0xeb, + 0x10, 0x44, 0x27, 0xf4, 0x45, 0xd3, 0x76, 0xa3, 0x5c, 0xa1, 0xfd, 0x0a, 0x5d, 0x09, 0x74, 0xb0, + 0xca, 0x84, 0xa8, 0x93, 0x08, 0x26, 0x36, 0xd8, 0x35, 0x45, 0x5e, 0xb5, 0x6a, 0x2c, 0x28, 0x76, + 0x9f, 0x33, 0xcf, 0x15, 0xb6, 0xc6, 0xf5, 0x76, 0x80, 0xc3, 0x1d, 0x02, 0x86, 0x10, 0x23, 0x8e, + 0xc2, 0x6b, 0x40, 0x54, 0xa9, 0xd5, 0xe5, 0xe3, 0x73, 0x20, 0x88, 0xa1, 0x0d, 0x23, 0x15, 0x37, + 0x68, 0x2b, 0x1c, 0xe2, 0x8a, 0x20, 0x32, 0xb1, 0xb6, 0x3a, 0x34, 0xe2, 0xfd, 0x35, 0x36, 0xd9, + 0xc2, 0xc1, 0x4c, 0x36, 0xf4, 0x58, 0xe4, 0xe8, 0x40, 0xa1, 0x76, 0x8b, 0x7e, 0x4f, 0x9a, 0x1a, + 0x74, 0x34, 0x6c, 0x92, 0x8d, 0x73, 0x6f, 0xd8, 0x4d, 0x04, 0xce, 0x55, 0x41, 0xa7, 0x96, 0x30, + 0xbc, 0x78, 0x04, 0x65, 0x91, 0xc9, 0x72, 0xcd, 0x77, 0x5e, 0xfe, 0x1a, 0xe3, 0x53, 0xcb, 0x2e, + 0xa5, 0x45, 0x72, 0x4f, 0x2d, 0x92, 0xb8, 0x2a, 0xee, 0x29, 0xdd, 0xe1, 0xcb, 0x67, 0x20, 0x54, + 0x30, 0xf2, 0x2e, 0x60, 0xb4, 0x3a, 0xb9, 0xde, 0x35, 0x82, 0x82, 0x8b, 0x71, 0xaa, 0x71, 0x04, + 0xbc, 0xff, 0xd5, 0xb1, 0x28, 0x1f, 0xe2, 0x72, 0xce, 0xa1, 0x25, 0xa1, 0xd6, 0x7f, 0x82, 0xcc, + 0x95, 0x6e, 0xff, 0x32, 0x6d, 0xe5, 0x4c, 0xdb, 0xf5, 0x18, 0x90, 0xd4, 0x79, 0xd3, 0xa2, 0xa2, + 0x6a, 0xc0, 0xcf, 0xb3, 0xc2, 0x28, 0x1b, 0xd8, 0xea, 0xa7, 0xa7, 0xb2, 0x09, 0xd1, 0xf1, 0x0b, + 0x20, 0x1d, 0x9b, 0x86, 0x24, 0xcf, 0x8e, 0xed, 0x90, 0x5a, 0xc7, 0x0a, 0xce, 0xe6, 0xcd, 0xbb, + 0xf3, 0xce, 0x94, 0x43, 0xb1, 0xea, 0x00, 0x99, 0x1d, 0x13, 0x48, 0x53, 0xbe, 0x3d, 0xce, 0x63, + 0xe2, 0x68, 0x5d, 0x00, 0x24, 0x38, 0xc1, 0x35, 0xdb, 0x2a, 0xed, 0xd9, 0x95, 0xf6, 0xe4, 0x28, + 0x14, 0xab, 0xd6, 0x25, 0x95, 0x04, 0x7c, 0x99, 0x61, 0x24, 0xe1, 0x16, 0x55, 0xc7, 0xac, 0x43, + 0x37, 0x55, 0xbd, 0x47, 0x6b, 0x3a, 0x26, 0xde, 0xb1, 0xa5, 0xef, 0x60, 0x44, 0x62, 0xd4, 0x77, + 0x7a, 0x5a, 0xdf, 0xc1, 0x41, 0x17, 0xfd, 0x7a, 0xd4, 0xe5, 0xd5, 0xb0, 0x85, 0x3a, 0x1c, 0xf6, + 0xcd, 0x6b, 0x3e, 0xba, 0x86, 0xbf, 0xe3, 0x25, 0x5f, 0x99, 0xa3, 0xd7, 0xda, 0x9a, 0x94, 0xc9, + 0x18, 0xdb, 0x6e, 0x63, 0x4e, 0x32, 0x81, 0x7b, 0xed, 0x35, 0x52, 0x57, 0xec, 0xed, 0x8b, 0xfd, + 0xbd, 0x1b, 0x91, 0xb8, 0x60, 0x97, 0xef, 0xba, 0x94, 0xbe, 0x35, 0xd6, 0x25, 0x03, 0x66, 0xee, + 0xf5, 0xf7, 0xb6, 0xb5, 0x53, 0xbe, 0x73, 0x0d, 0x95, 0x7b, 0x2b, 0x8b, 0xf2, 0x46, 0x56, 0xc0, + 0xa8, 0xcf, 0xb2, 0x49, 0xde, 0x24, 0xe7, 0x00, 0x04, 0x53, 0x6b, 0x38, 0xf1, 0xb9, 0x81, 0x6b, + 0x55, 0x6d, 0x77, 0x85, 0x0a, 0x70, 0x05, 0x36, 0x4b, 0x05, 0x5d, 0xc5, 0x32, 0xae, 0x2b, 0x5b, + 0x2a, 0x69, 0xe6, 0x64, 0xaf, 0x52, 0xb6, 0x27, 0xb1, 0xa9, 0x73, 0xd0, 0xe4, 0x8e, 0x05, 0xd3, + 0xf9, 0xf3, 0x24, 0x2b, 0x39, 0xd4, 0x91, 0xeb, 0xc4, 0xc5, 0xe8, 0x0e, 0x81, 0xb0, 0xaf, 0x38, + 0x36, 0xc4, 0x45, 0x33, 0x07, 0x64, 0x52, 0x8f, 0xec, 0x86, 0xbe, 0x0a, 0x42, 0x87, 0xbe, 0x10, + 0xdb, 0x9e, 0xdb, 0x4d, 0x45, 0x4a, 0xde, 0x08, 0xf2, 0x70, 0x34, 0x2f, 0x7e, 0x64, 0x37, 0x98, + 0x66, 0x9a, 0x61, 0x5b, 0x57, 0xdb, 0x4c, 0x6a, 0x5b, 0x56, 0xd9, 0x08, 0xee, 0x05, 0x42, 0x1b, + 0x9f, 0x7b, 0xf5, 0x70, 0x29, 0x96, 0xa1, 0x0b, 0x19, 0x5c, 0x5b, 0xbf, 0x4f, 0x35, 0x7c, 0xb2, + 0x3e, 0x07, 0x7b, 0x15, 0x7e, 0x03, 0x0b, 0x49, 0x96, 0xa0, 0xd0, 0x89, 0x8e, 0x15, 0x5a, 0x56, + 0x8b, 0xf2, 0xef, 0x6a, 0xfa, 0x68, 0xe5, 0xd0, 0x73, 0x22, 0x90, 0xc1, 0x5e, 0xb4, 0xd6, 0xef, + 0x7d, 0x5d, 0xb5, 0x7d, 0x68, 0xd4, 0x31, 0xb4, 0x3c, 0xc9, 0xd5, 0x5e, 0x9d, 0x9e, 0x18, 0x85, + 0xdd, 0xd7, 0x58, 0x5c, 0xbc, 0x92, 0x4b, 0x03, 0xfe, 0x8d, 0x26, 0x7c, 0xb3, 0xb6, 0x9e, 0x1c, + 0xc0, 0x78, 0x5b, 0xec, 0xcd, 0x66, 0xac, 0xed, 0xa7, 0xaf, 0x32, 0x15, 0xd7, 0x4e, 0x7c, 0xd4, + 0x79, 0x8f, 0xdd, 0x8f, 0x86, 0x9c, 0xef, 0xef, 0x17, 0xe4, 0x9f, 0xd5, 0x42, 0xed, 0x7b, 0x6d, + 0x61, 0x69, 0xc9, 0xf0, 0x15, 0x10, 0xb7, 0xdf, 0x5b, 0x6d, 0x55, 0x99, 0x1a, 0xbe, 0x17, 0x30, + 0x7c, 0x6b, 0xcf, 0x61, 0x5c, 0x79, 0xea, 0x28, 0x21, 0x8a, 0x5e, 0x16, 0xa6, 0xdf, 0xbe, 0x7c, + 0x79, 0x72, 0xc8, 0xf2, 0x34, 0x3c, 0x3c, 0x86, 0x65, 0x51, 0xe4, 0xf0, 0xa5, 0x67, 0x6f, 0x36, + 0xc9, 0x3c, 0x55, 0x1b, 0x71, 0xad, 0x64, 0x54, 0xcd, 0x53, 0x47, 0x3d, 0x0c, 0x24, 0x58, 0x34, + 0xb7, 0xf6, 0xcf, 0x68, 0x80, 0xe9, 0x51, 0xd5, 0x04, 0xdd, 0x80, 0xb0, 0xb9, 0x01, 0xef, 0xb7, + 0xa3, 0xdf, 0x31, 0x86, 0xad, 0x6d, 0xc6, 0x1a, 0x1e, 0xac, 0x4b, 0xf0, 0xe7, 0xf0, 0x60, 0x0d, + 0xb2, 0x58, 0x1d, 0x58, 0x54, 0x98, 0x43, 0x1f, 0x6d, 0xd5, 0x70, 0xe9, 0x78, 0x4a, 0x49, 0xe9, + 0x89, 0xe1, 0x19, 0xd1, 0x5c, 0x6d, 0xb9, 0x9f, 0x61, 0x08, 0xf2, 0x54, 0xc0, 0xf6, 0x65, 0x5c, + 0x76, 0x40, 0xb5, 0x03, 0xd5, 0xe9, 0x58, 0x87, 0x22, 0x87, 0xf5, 0x1a, 0x5f, 0xc7, 0x38, 0xdf, + 0x52, 0xaf, 0xda, 0xf1, 0xb4, 0x45, 0x34, 0x74, 0x3a, 0x28, 0xbc, 0x3a, 0x0d, 0x8d, 0x25, 0xb1, + 0xfa, 0x2c, 0x2a, 0x17, 0xfe, 0xe0, 0x0b, 0x44, 0xf7, 0x1a, 0x11, 0xed, 0x0d, 0x6b, 0x5e, 0x0b, + 0x46, 0x66, 0xab, 0x03, 0xbd, 0x5e, 0x18, 0x5a, 0xf2, 0x9b, 0xdc, 0xe7, 0xec, 0x13, 0x9f, 0x6b, + 0xdb, 0x78, 0x4b, 0xb0, 0x65, 0xff, 0x1d, 0xb1, 0x6e, 0x2f, 0xb4, 0xcb, 0xb6, 0xf7, 0x19, 0xbc, + 0x40, 0xbd, 0xbc, 0xa9, 0xf7, 0x74, 0xee, 0xfa, 0xaa, 0xa7, 0x08, 0x69, 0x58, 0xf8, 0xda, 0xb4, + 0x82, 0xa2, 0x72, 0xb4, 0xa6, 0x94, 0x02, 0x65, 0xe4, 0x9a, 0x81, 0xae, 0x5f, 0xf6, 0x13, 0x31, + 0x2b, 0x07, 0xdb, 0x4a, 0x51, 0x65, 0x9e, 0x51, 0x7c, 0xbc, 0x65, 0xc5, 0x49, 0x63, 0xcd, 0x64, + 0xe0, 0xd8, 0xbe, 0x6a, 0xc9, 0xbc, 0x26, 0xc4, 0xbb, 0xe5, 0xf4, 0x44, 0xfa, 0xba, 0xa8, 0xa2, + 0x2d, 0x49, 0xcd, 0xde, 0x98, 0xa6, 0x07, 0xe6, 0x49, 0x83, 0x19, 0xb8, 0x6c, 0x02, 0x4b, 0x91, + 0xb9, 0x8f, 0x9b, 0x72, 0x53, 0xae, 0xbe, 0x7c, 0xc9, 0xa1, 0x86, 0x02, 0xf9, 0x08, 0x56, 0x74, + 0x98, 0x1e, 0x71, 0x0a, 0x6c, 0x3c, 0x52, 0x90, 0x56, 0xe5, 0x75, 0x9f, 0x0a, 0x3e, 0xc0, 0x00, + 0xad, 0xa0, 0xbb, 0xd7, 0x81, 0xa0, 0x34, 0xfa, 0x19, 0x21, 0x9e, 0x05, 0xcd, 0x38, 0x9c, 0x32, + 0x19, 0x03, 0x48, 0x20, 0x7a, 0xdd, 0xf8, 0x96, 0xd6, 0x00, 0xf7, 0x0e, 0xa0, 0x3a, 0xad, 0xd5, + 0xbd, 0x43, 0x37, 0xde, 0x2e, 0xaf, 0x56, 0x15, 0x1c, 0x61, 0x86, 0x11, 0x27, 0x10, 0x61, 0xf6, + 0xe1, 0x47, 0x40, 0x54, 0xf4, 0x12, 0x2d, 0xf0, 0xf2, 0x21, 0xba, 0xcb, 0x73, 0x1f, 0x92, 0xff, + 0x85, 0x71, 0x77, 0x2b, 0x6b, 0x95, 0xfd, 0xf0, 0x88, 0x75, 0xb5, 0x01, 0x84, 0x0f, 0xfe, 0x08, + 0x11, 0x05, 0x6c, 0xc4, 0xa0, 0xfe, 0x52, 0xdd, 0x95, 0x8e, 0x44, 0xb0, 0x9e, 0x96, 0x75, 0x94, + 0xb8, 0x0e, 0xa3, 0x74, 0x0d, 0x10, 0x81, 0x9c, 0xa9, 0x22, 0x07, 0xea, 0xcc, 0x86, 0x3e, 0x77, + 0xbc, 0x49, 0x25, 0x72, 0xbe, 0xcb, 0x77, 0x7a, 0x84, 0x95, 0x13, 0x59, 0xb1, 0x11, 0x7e, 0x2e, + 0xdd, 0x04, 0x3f, 0x87, 0x67, 0x0f, 0xe1, 0x4e, 0x94, 0xaa, 0x03, 0x63, 0x3b, 0x17, 0xb0, 0x84, + 0x75, 0x2c, 0x33, 0x76, 0x9e, 0xdd, 0xc5, 0xd6, 0xa3, 0x2c, 0x6a, 0x6d, 0x55, 0x10, 0x3b, 0xcf, + 0xf2, 0x87, 0x85, 0x83, 0x4e, 0x63, 0x82, 0x22, 0x62, 0x00, 0x43, 0x73, 0x6b, 0x92, 0xba, 0x2b, + 0xed, 0x97, 0x01, 0xc7, 0xd1, 0x81, 0x31, 0xc2, 0x03, 0x8d, 0x9a, 0x77, 0x4c, 0x81, 0xc8, 0xec, + 0x29, 0x74, 0xf7, 0xa7, 0x7e, 0x12, 0xdc, 0xc5, 0xfd, 0x71, 0x80, 0xce, 0xcd, 0xc1, 0x64, 0x11, + 0xf7, 0x1b, 0xdb, 0x4d, 0x08, 0xf5, 0x1a, 0x9a, 0x0f, 0x46, 0x23, 0x5b, 0xad, 0x06, 0x15, 0x70, + 0x3f, 0x0b, 0xc5, 0x6e, 0xba, 0x05, 0x8a, 0xdd, 0xcd, 0x66, 0x14, 0xbb, 0x20, 0x6f, 0xce, 0x93, + 0xcd, 0xcc, 0x30, 0xf0, 0xed, 0x16, 0x28, 0x39, 0x9a, 0xaa, 0xfb, 0x8e, 0xf9, 0x34, 0xba, 0x91, + 0xdf, 0xb3, 0x59, 0x94, 0xaf, 0xf8, 0x2b, 0x70, 0x06, 0x5d, 0x73, 0xe0, 0xc0, 0x5b, 0xc2, 0xf5, + 0xc7, 0x5d, 0xd8, 0xc7, 0xb2, 0xd2, 0xb1, 0xe9, 0xbf, 0xc3, 0x43, 0x95, 0x91, 0x21, 0x7b, 0x4e, + 0xfa, 0xf4, 0xb4, 0x53, 0x4b, 0x4f, 0x4f, 0xa3, 0xc2, 0xbf, 0x51, 0x53, 0x88, 0x61, 0x9b, 0x99, + 0xf5, 0xbe, 0x60, 0xe4, 0x79, 0xf4, 0xe2, 0xe2, 0xe7, 0xb5, 0xa8, 0x83, 0x36, 0x54, 0x62, 0xb6, + 0x11, 0x26, 0x71, 0x90, 0x70, 0xf7, 0x53, 0x84, 0x9c, 0x68, 0x1c, 0xa8, 0x9f, 0x59, 0xfe, 0x5b, + 0x54, 0x23, 0x63, 0x8c, 0x64, 0x64, 0xab, 0x76, 0x16, 0x8a, 0xb7, 0x60, 0xa1, 0xc5, 0x16, 0x2c, + 0x34, 0xdd, 0xcc, 0x42, 0x89, 0x66, 0xa1, 0x58, 0x11, 0x0d, 0x2c, 0xb4, 0x90, 0xdf, 0x81, 0x85, + 0xa6, 0x2b, 0x9b, 0x57, 0x12, 0x9b, 0x57, 0xf4, 0x80, 0x2c, 0x4d, 0x90, 0x85, 0x51, 0x93, 0x16, + 0x08, 0x2a, 0xdf, 0x1c, 0x4d, 0x35, 0x77, 0xb0, 0x4a, 0xc4, 0xa0, 0x2a, 0x1b, 0xab, 0x36, 0x3c, + 0x91, 0x47, 0xb2, 0xb0, 0x76, 0xed, 0xe0, 0x69, 0xab, 0x2a, 0xea, 0xe0, 0xa0, 0x55, 0x20, 0xe2, + 0xd8, 0x86, 0x20, 0xf9, 0xdc, 0xbb, 0xe5, 0x18, 0x2c, 0x93, 0x50, 0x8d, 0x1b, 0x5f, 0xc2, 0xd9, + 0xde, 0x2a, 0xa6, 0x1c, 0x29, 0xaa, 0x02, 0x43, 0xae, 0x29, 0xeb, 0x37, 0xb7, 0xa8, 0xdf, 0xda, + 0x4b, 0xfa, 0x39, 0x5e, 0x53, 0x0e, 0xc8, 0x9e, 0x36, 0xe9, 0x58, 0x2f, 0x67, 0x1d, 0x41, 0x77, + 0x2e, 0x41, 0x77, 0x6b, 0x08, 0x7a, 0x9f, 0xaf, 0x29, 0xa7, 0xcc, 0x9d, 0x72, 0xca, 0xbc, 0xbd, + 0x1c, 0x19, 0x14, 0xb6, 0xbd, 0x2c, 0x90, 0xa9, 0x3b, 0xcf, 0x10, 0xe2, 0x0d, 0xe5, 0x63, 0x08, + 0xd8, 0xf6, 0xf2, 0xb7, 0x12, 0xd7, 0xee, 0x65, 0x0b, 0x1d, 0xa6, 0x51, 0xdd, 0x83, 0xb3, 0xd6, + 0xfe, 0x25, 0xde, 0x35, 0xf1, 0x4a, 0x0f, 0x84, 0x03, 0x23, 0x60, 0x44, 0x14, 0x4f, 0x9d, 0xaf, + 0x83, 0xdf, 0xc0, 0xc2, 0x6e, 0xee, 0xba, 0x88, 0x28, 0xaa, 0xde, 0x54, 0xa9, 0x5d, 0x80, 0xe9, + 0x42, 0xb1, 0x09, 0x68, 0xf8, 0xbd, 0x95, 0xef, 0xaf, 0xd1, 0x09, 0xca, 0x7f, 0x69, 0x5a, 0xf8, + 0xee, 0x58, 0x24, 0x46, 0xc2, 0x4c, 0xda, 0xea, 0x8d, 0xd3, 0x3d, 0x75, 0x87, 0xba, 0x0a, 0xa6, + 0xd6, 0x97, 0xa3, 0xb4, 0xa7, 0x83, 0x8f, 0xd4, 0x2f, 0xab, 0xb6, 0xbc, 0x7a, 0x69, 0xfb, 0xf6, + 0x5e, 0x5d, 0x5b, 0x1a, 0x49, 0x28, 0x75, 0xa3, 0xad, 0x6e, 0x72, 0x4b, 0xd0, 0xb6, 0x75, 0x28, + 0x76, 0xa5, 0x7b, 0xd1, 0x9b, 0x9a, 0x1d, 0xb4, 0xd2, 0x59, 0xc3, 0x65, 0x13, 0x1b, 0x40, 0xea, + 0x1a, 0xc4, 0xc5, 0xec, 0xd1, 0xb0, 0x88, 0xa8, 0xb1, 0x98, 0x82, 0x03, 0x7c, 0xde, 0x08, 0xac, + 0xbd, 0xf3, 0xbb, 0xcd, 0x38, 0x6c, 0x79, 0x69, 0x78, 0xfb, 0xd1, 0xd0, 0x21, 0x29, 0xdc, 0xe1, + 0xd8, 0x30, 0x1a, 0xed, 0x84, 0xfd, 0x19, 0x3d, 0x0f, 0x65, 0xf5, 0x45, 0xb5, 0xc3, 0x71, 0x42, + 0x57, 0xe6, 0x73, 0x6d, 0x16, 0xd7, 0x01, 0x9b, 0xfc, 0xaa, 0x64, 0x40, 0x08, 0x84, 0x6e, 0x93, + 0x5c, 0x28, 0x1e, 0x1b, 0xcb, 0x72, 0xa0, 0x21, 0x6a, 0x5c, 0xa0, 0x61, 0x20, 0x1a, 0x8b, 0x8c, + 0x9b, 0x8b, 0xac, 0x61, 0x47, 0xd4, 0x8a, 0x65, 0x20, 0x06, 0xe0, 0x2d, 0x85, 0x6b, 0x02, 0x1b, + 0xae, 0xa7, 0x27, 0x31, 0x3c, 0xf1, 0x5d, 0xb1, 0xb3, 0x5a, 0x55, 0x95, 0x29, 0x83, 0x36, 0x21, + 0xf4, 0x2a, 0x7d, 0x42, 0x7c, 0xc9, 0xd2, 0x68, 0x7a, 0x12, 0x15, 0xfd, 0x63, 0x3b, 0xe1, 0x18, + 0x12, 0xe4, 0xd7, 0x5e, 0x54, 0x54, 0xc5, 0x8d, 0x43, 0xd6, 0x4f, 0x59, 0x5d, 0x66, 0xa3, 0x9c, + 0x12, 0xd5, 0xb9, 0x41, 0x1b, 0x6b, 0x6b, 0x93, 0x86, 0x90, 0x55, 0xab, 0x81, 0xbc, 0xdc, 0xa8, + 0x0e, 0x50, 0x61, 0xce, 0xef, 0xe8, 0xc3, 0xd4, 0x87, 0x18, 0x54, 0x37, 0xfb, 0x97, 0xb9, 0xfc, + 0xfc, 0x0e, 0x6d, 0x40, 0xc2, 0xf3, 0x4f, 0x23, 0x82, 0x58, 0x96, 0xfe, 0xa8, 0x12, 0x73, 0xbf, + 0x0c, 0xd4, 0x4b, 0xbe, 0x71, 0xcf, 0xfa, 0x3d, 0x31, 0xdf, 0x53, 0xbc, 0x91, 0xa9, 0x3c, 0x37, + 0x81, 0x24, 0x92, 0x34, 0x59, 0x8a, 0x57, 0x1e, 0x03, 0x4b, 0xdb, 0xf8, 0x29, 0x1b, 0xa3, 0x73, + 0xb1, 0xb4, 0x33, 0x75, 0xbc, 0x7d, 0x75, 0x46, 0x2a, 0xa3, 0xcf, 0x53, 0xe0, 0xf9, 0x76, 0x59, + 0x4c, 0xc7, 0x30, 0x0a, 0x22, 0x10, 0xc6, 0x2b, 0x3f, 0xaf, 0x7a, 0x72, 0xf1, 0x31, 0x92, 0x41, + 0xc6, 0x86, 0xd6, 0x9e, 0x9f, 0xf6, 0x90, 0x1c, 0xc8, 0xdb, 0x76, 0x3a, 0x04, 0x7a, 0xfc, 0xf9, + 0xf0, 0xf8, 0x65, 0xe8, 0xc3, 0x0c, 0x5f, 0x00, 0x95, 0xd2, 0x8d, 0xf6, 0xfc, 0x7b, 0x50, 0x86, + 0x60, 0xae, 0x4d, 0x44, 0x07, 0x4f, 0x9a, 0x32, 0x50, 0x65, 0x45, 0x51, 0xe0, 0x55, 0x3b, 0xd2, + 0x6d, 0x11, 0x23, 0xa6, 0x9b, 0xbf, 0xb5, 0x2c, 0x07, 0xb4, 0x29, 0x97, 0x35, 0x63, 0x8d, 0x6f, + 0xa3, 0x2e, 0xec, 0xf8, 0xb5, 0x3f, 0xab, 0x67, 0x1c, 0x74, 0xfd, 0xfd, 0xfc, 0x5c, 0x01, 0x84, + 0x2d, 0xcd, 0x46, 0xa5, 0xc9, 0xfe, 0xe0, 0x97, 0xa3, 0x6e, 0xa1, 0x5d, 0x75, 0x8d, 0x17, 0x59, + 0x50, 0x70, 0xff, 0xe2, 0x27, 0xdd, 0x2c, 0x85, 0x5c, 0xf1, 0xc4, 0xa2, 0x86, 0xbc, 0x3a, 0xac, + 0xfd, 0x5a, 0x71, 0x58, 0xd8, 0x8f, 0x8b, 0xfa, 0xe3, 0xa9, 0xf3, 0x78, 0x3a, 0xff, 0x68, 0x3d, + 0xf6, 0x08, 0x05, 0x5f, 0x3f, 0x4e, 0xee, 0xb4, 0x9a, 0x8b, 0xf8, 0x62, 0xea, 0x94, 0xbe, 0x61, + 0x34, 0xac, 0x9c, 0x08, 0xd3, 0xa0, 0xb7, 0x05, 0xa9, 0x55, 0xda, 0x38, 0xd7, 0xea, 0xc0, 0xa0, + 0x5c, 0x7c, 0x5e, 0x16, 0x36, 0xe6, 0x5f, 0xea, 0xaf, 0xf8, 0x4e, 0x2c, 0x0f, 0x7b, 0x81, 0x6c, + 0x1b, 0xa5, 0x41, 0xaa, 0xdd, 0x3b, 0x15, 0x26, 0x18, 0xc2, 0x7e, 0x59, 0x15, 0xe3, 0xf1, 0x93, + 0x83, 0x01, 0xee, 0xed, 0x7e, 0xf5, 0xfa, 0xd5, 0xab, 0x57, 0x83, 0x0e, 0xb3, 0x7a, 0x87, 0x0c, + 0x79, 0x9d, 0xcf, 0x78, 0xdf, 0xd4, 0x3a, 0x33, 0xed, 0x90, 0x23, 0x32, 0xdf, 0x1e, 0xb7, 0xa6, + 0xc7, 0xd2, 0xf3, 0x87, 0x07, 0xbd, 0x67, 0x57, 0x75, 0xf1, 0x19, 0x34, 0xa8, 0x47, 0x09, 0xf4, + 0x14, 0xa7, 0x9d, 0x29, 0x89, 0x9c, 0x0e, 0x36, 0xcf, 0xae, 0x94, 0xab, 0xc3, 0x9d, 0x55, 0x7d, + 0x42, 0x7e, 0x69, 0xf3, 0xa4, 0x85, 0x93, 0xae, 0x8e, 0xe6, 0xe3, 0x5b, 0x01, 0x7c, 0x3c, 0x43, + 0x77, 0xa9, 0xbb, 0xec, 0x26, 0x9e, 0x7d, 0xc6, 0x59, 0x48, 0xf7, 0x4f, 0x79, 0x2a, 0x82, 0x72, + 0xc7, 0x7c, 0x04, 0x1f, 0x39, 0xce, 0xb3, 0x28, 0x3f, 0x07, 0x96, 0x80, 0x1d, 0xe2, 0xdb, 0x81, + 0x65, 0x3f, 0x90, 0x7e, 0x03, 0x7a, 0xb0, 0x12, 0x0b, 0xfc, 0x01, 0x46, 0xe6, 0xf7, 0x24, 0x4a, + 0x9c, 0xf9, 0x7e, 0x31, 0x26, 0xd8, 0x50, 0x9c, 0xe7, 0x3c, 0xc3, 0xf3, 0xf3, 0xfa, 0x14, 0x47, + 0x8c, 0xc4, 0xc3, 0x6c, 0xc4, 0x3e, 0xef, 0x97, 0xf9, 0xf9, 0x15, 0xc8, 0x47, 0xc7, 0x51, 0x1e, + 0x92, 0x98, 0xa8, 0x7a, 0x72, 0x56, 0x4f, 0xfa, 0x54, 0x4f, 0x42, 0xe7, 0x37, 0x98, 0x20, 0xa6, + 0x82, 0x65, 0xda, 0xcf, 0xdf, 0x06, 0xc0, 0x48, 0x7d, 0xaf, 0xad, 0xb7, 0x10, 0x11, 0x4c, 0x08, + 0xee, 0xa3, 0x54, 0x3c, 0x24, 0x9f, 0x49, 0xfc, 0xdc, 0xa8, 0x11, 0x3b, 0xf4, 0x60, 0x51, 0x40, + 0x56, 0xc4, 0x89, 0xae, 0x2b, 0x42, 0xd6, 0xa4, 0x54, 0x6c, 0xd2, 0xef, 0x89, 0xf3, 0x0c, 0x3a, + 0x07, 0xd3, 0x7c, 0x13, 0xfb, 0x42, 0x5d, 0x2d, 0xc7, 0xee, 0x30, 0x76, 0x61, 0xfb, 0x96, 0x37, + 0xfb, 0x9a, 0x29, 0x89, 0x47, 0x91, 0xa0, 0x94, 0xff, 0x36, 0x3e, 0x53, 0xac, 0xe1, 0xa6, 0xe2, + 0xc5, 0x47, 0x9b, 0x2f, 0xb6, 0xf7, 0x4e, 0xf3, 0x18, 0x3a, 0x8f, 0x6c, 0x83, 0x78, 0x51, 0xaa, + 0x52, 0x6e, 0xef, 0x39, 0xe5, 0x9e, 0xbc, 0x9a, 0xf1, 0x19, 0x38, 0x5a, 0xb1, 0x8d, 0xa8, 0x5b, + 0x2b, 0xca, 0x5c, 0xae, 0xb0, 0x04, 0xbf, 0x24, 0xc8, 0x5d, 0x13, 0x55, 0x41, 0xb8, 0x40, 0x57, + 0xbc, 0xc1, 0x9b, 0xec, 0xba, 0x37, 0x68, 0xbd, 0x1a, 0x38, 0x7d, 0x38, 0x4d, 0x67, 0xa3, 0xae, + 0x5b, 0xe6, 0x0d, 0xda, 0x2d, 0x57, 0xbe, 0xcb, 0x43, 0x40, 0x62, 0x6d, 0xcc, 0xc8, 0xe9, 0x98, + 0x95, 0xe5, 0x69, 0x1d, 0x49, 0xf3, 0x19, 0x1d, 0xe5, 0x1e, 0xd8, 0xef, 0xe0, 0xbb, 0x16, 0x7d, + 0xa0, 0x9b, 0x38, 0x06, 0x4a, 0x85, 0x15, 0x84, 0x51, 0x86, 0x10, 0x42, 0x48, 0x0c, 0xac, 0x8b, + 0x16, 0x6d, 0xe8, 0x86, 0xe8, 0x81, 0x55, 0xfa, 0x4d, 0x47, 0x03, 0x8f, 0x8f, 0x04, 0xeb, 0x3d, + 0xc0, 0xd8, 0x5f, 0x55, 0xe5, 0x51, 0x3e, 0x43, 0x38, 0xc2, 0x77, 0x84, 0x5e, 0xde, 0x5d, 0xdc, + 0x4e, 0x2e, 0xca, 0x45, 0xb7, 0xb4, 0xb0, 0x0b, 0x81, 0x9d, 0x41, 0x6c, 0x4d, 0x11, 0xde, 0x9c, + 0xfb, 0x41, 0x2d, 0x0a, 0x55, 0xc0, 0xef, 0xc0, 0xc5, 0x95, 0x97, 0x57, 0x15, 0xf4, 0x82, 0x51, + 0x3a, 0x78, 0x88, 0xad, 0xc0, 0xf5, 0x84, 0x48, 0x5f, 0x01, 0xb2, 0xa3, 0xdb, 0x3b, 0xb8, 0xb7, + 0x9b, 0x23, 0x00, 0x95, 0xf6, 0x50, 0x3f, 0x93, 0xf1, 0x3d, 0xbc, 0x05, 0xc8, 0x57, 0x8c, 0x0b, + 0xb3, 0x04, 0x4d, 0x6f, 0x39, 0xef, 0xc3, 0x8a, 0x09, 0x7f, 0x9f, 0xfa, 0x68, 0x46, 0xf7, 0x0f, + 0x0b, 0xdb, 0xd7, 0xfd, 0x65, 0xe8, 0xc6, 0x1e, 0xdb, 0x07, 0x9d, 0x60, 0x70, 0x93, 0x2d, 0xc5, + 0xe1, 0xdc, 0xce, 0x76, 0xf2, 0x6d, 0x25, 0x9f, 0xbf, 0x7a, 0x80, 0x3e, 0x17, 0x5d, 0x4a, 0x1c, + 0x4f, 0x8a, 0x2e, 0xbc, 0x70, 0x40, 0x14, 0xf9, 0xa7, 0x58, 0x04, 0x13, 0x07, 0x89, 0x2b, 0xd3, + 0x97, 0x82, 0x71, 0x1e, 0xb1, 0xcb, 0xd0, 0xc1, 0xa0, 0x1a, 0x9d, 0x42, 0xf7, 0x9b, 0xbc, 0xcc, + 0x6c, 0xf7, 0x30, 0x0c, 0xc3, 0xc0, 0x0d, 0x02, 0xa0, 0x61, 0x53, 0x17, 0x81, 0x1b, 0x01, 0x40, + 0x3f, 0xb8, 0x0d, 0x5c, 0xf8, 0x7f, 0x03, 0xb4, 0xca, 0x0c, 0x04, 0x1a, 0xae, 0x5d, 0xc5, 0x5c, + 0x3c, 0x5e, 0x10, 0xb2, 0x89, 0x05, 0x73, 0xd4, 0xab, 0x59, 0x0c, 0x2b, 0x0c, 0x77, 0x89, 0x1c, + 0x69, 0x8f, 0xe2, 0x20, 0xe5, 0x85, 0x61, 0x1f, 0xd6, 0xb5, 0x32, 0xbb, 0x90, 0xc5, 0x7c, 0xab, + 0x82, 0x0a, 0x40, 0x25, 0x53, 0x4d, 0x49, 0x61, 0xd2, 0xd2, 0xd9, 0x66, 0xb4, 0x90, 0x13, 0xdf, + 0xa3, 0x93, 0xb1, 0xc4, 0x25, 0xfb, 0x5e, 0x04, 0x63, 0x27, 0xa5, 0x18, 0x97, 0xf2, 0x98, 0x3b, + 0xc8, 0xea, 0x6c, 0x6a, 0x77, 0xe3, 0xdf, 0x35, 0x29, 0x89, 0x03, 0x96, 0x69, 0x70, 0x2a, 0xed, + 0xe4, 0x5f, 0x75, 0x72, 0x16, 0x94, 0x51, 0xbc, 0xc8, 0x0e, 0xcf, 0x98, 0x82, 0xe2, 0xd3, 0xfb, + 0xec, 0x97, 0xdb, 0x49, 0x17, 0x38, 0x2d, 0x01, 0x4e, 0xc3, 0x08, 0x79, 0x92, 0xd7, 0xaa, 0xa5, + 0xa6, 0xe2, 0x51, 0x5d, 0x03, 0xba, 0x88, 0x27, 0x09, 0x75, 0x76, 0x63, 0x50, 0x1e, 0xaf, 0x25, + 0xd0, 0xcf, 0x57, 0xe3, 0xf1, 0xb8, 0x73, 0xd0, 0x7b, 0xf9, 0x4d, 0xd0, 0xc1, 0x20, 0x74, 0xde, + 0x3e, 0xcc, 0xeb, 0x7d, 0x2f, 0xc0, 0xcf, 0x5b, 0xf9, 0x39, 0x81, 0xe5, 0x16, 0xc5, 0xd1, 0x1a, + 0x0a, 0xc7, 0x4d, 0xf4, 0xfd, 0xfa, 0xa7, 0xd0, 0x17, 0x86, 0xe1, 0x76, 0xf4, 0x59, 0x35, 0xff, + 0x43, 0x77, 0xac, 0x3d, 0x5a, 0x1f, 0x45, 0x02, 0x9a, 0x84, 0x99, 0x25, 0xc0, 0x26, 0x7c, 0xed, + 0xd3, 0x5f, 0xf6, 0x60, 0xe3, 0xc5, 0x67, 0x5a, 0x1f, 0xc5, 0x67, 0x04, 0xfd, 0xde, 0xdd, 0x45, + 0x5c, 0x73, 0x82, 0xb6, 0xb2, 0x45, 0xa7, 0xbc, 0x27, 0x2a, 0x1a, 0xdf, 0xd0, 0x26, 0x75, 0xf3, + 0x86, 0x2e, 0xc4, 0x46, 0xcf, 0xb7, 0x59, 0x56, 0x46, 0x98, 0x32, 0xd6, 0x0b, 0x6b, 0xae, 0x7c, + 0xeb, 0x07, 0xc0, 0xe7, 0xac, 0xcc, 0xea, 0x29, 0xef, 0x7d, 0x85, 0x58, 0x9e, 0x36, 0x6e, 0x18, + 0x4c, 0x05, 0xa9, 0xdc, 0x92, 0x81, 0xd6, 0x64, 0x9c, 0xcd, 0xc6, 0xe3, 0x30, 0xf4, 0x0c, 0xb0, + 0xdb, 0x9a, 0x69, 0x16, 0x31, 0xd6, 0x56, 0xe9, 0x63, 0xd4, 0x1f, 0x23, 0x54, 0x8e, 0x2b, 0xbb, + 0x45, 0x25, 0x76, 0xe4, 0xc2, 0x88, 0xd0, 0x3d, 0x9a, 0x29, 0xd0, 0x60, 0x5f, 0x72, 0xab, 0x60, + 0x8f, 0xe4, 0xcc, 0x1f, 0xd8, 0x61, 0x96, 0x7e, 0xbf, 0x92, 0x74, 0x36, 0x1f, 0xc3, 0xf2, 0x96, + 0x40, 0x7f, 0x14, 0x9f, 0x60, 0x20, 0xe1, 0x2f, 0x6c, 0x15, 0xd9, 0x7f, 0x24, 0x46, 0x49, 0x65, + 0x34, 0x60, 0x2c, 0xd6, 0x13, 0x32, 0x77, 0x58, 0xe9, 0xef, 0x66, 0xe7, 0xef, 0x94, 0x73, 0xb1, + 0xb1, 0x9c, 0xc2, 0x6b, 0x14, 0x01, 0x95, 0x72, 0x7e, 0xdd, 0x58, 0xce, 0x27, 0xaf, 0x51, 0x66, + 0x54, 0xca, 0xf9, 0x47, 0xbd, 0x9c, 0xee, 0x92, 0x39, 0xbe, 0xdf, 0x34, 0x33, 0x56, 0x95, 0xf7, + 0x71, 0x32, 0x3b, 0x5c, 0x5a, 0x59, 0x17, 0x82, 0x32, 0x6a, 0x5a, 0x15, 0x40, 0xe4, 0x37, 0xad, + 0x09, 0x03, 0xc3, 0x2c, 0x32, 0xb6, 0xa5, 0x72, 0x98, 0x41, 0x3f, 0x4f, 0xff, 0x9a, 0x3d, 0x12, + 0x9a, 0xe3, 0x6f, 0x56, 0x79, 0x73, 0x11, 0x89, 0xa0, 0x9a, 0x76, 0x8b, 0x48, 0xd5, 0x95, 0xb4, + 0x49, 0x54, 0x28, 0xd4, 0x63, 0xf9, 0xa8, 0xd2, 0xc4, 0x0f, 0xae, 0x07, 0xa0, 0x56, 0x06, 0x82, + 0x66, 0xcd, 0xa7, 0xac, 0xcd, 0x11, 0xa1, 0xda, 0xcc, 0xb5, 0xc8, 0x0c, 0x2e, 0xf3, 0x89, 0x8a, + 0x79, 0x48, 0xce, 0x8c, 0x65, 0xbb, 0x86, 0x45, 0xa7, 0xd0, 0x18, 0x85, 0x13, 0x56, 0x9d, 0x4a, + 0x9d, 0xb0, 0xdc, 0x84, 0xa8, 0x6d, 0x0a, 0xc4, 0x50, 0x84, 0x11, 0xfa, 0x6b, 0x02, 0x52, 0xb3, + 0x8b, 0x30, 0xb9, 0x1b, 0x59, 0x86, 0x02, 0xe4, 0x1d, 0xef, 0xe0, 0xab, 0x36, 0x62, 0x74, 0xa3, + 0x09, 0x4a, 0xab, 0x52, 0xbe, 0x8a, 0xa3, 0x55, 0xd5, 0x14, 0xc6, 0x30, 0x0a, 0x85, 0xc2, 0x69, + 0x8c, 0x0f, 0x17, 0xfd, 0x2c, 0x18, 0xc3, 0x20, 0xa4, 0x26, 0xe9, 0x96, 0x92, 0x26, 0x51, 0x62, + 0x92, 0x26, 0x94, 0xf4, 0x00, 0x8b, 0x5b, 0xa5, 0xc3, 0xa8, 0x12, 0x75, 0x98, 0x0b, 0x95, 0xf4, + 0x2f, 0x2f, 0xaf, 0x02, 0xfa, 0x77, 0xb5, 0x5a, 0xc9, 0xc3, 0x4e, 0x84, 0xb2, 0xa6, 0xdc, 0xd1, + 0x25, 0x77, 0x4e, 0x76, 0x55, 0x3d, 0xcc, 0x74, 0x4c, 0x8e, 0xe3, 0x04, 0x3d, 0x4e, 0x9b, 0xcf, + 0x11, 0xa6, 0xd3, 0xb2, 0x6a, 0x1f, 0x46, 0x0a, 0xe6, 0x53, 0x5b, 0xd7, 0x43, 0x44, 0xfa, 0xbf, + 0xa1, 0x74, 0x90, 0x11, 0x0a, 0xf0, 0xb7, 0x8a, 0x76, 0x70, 0x74, 0x74, 0x1b, 0x97, 0xf3, 0xfb, + 0x09, 0x9e, 0xee, 0x1d, 0xbd, 0x89, 0x17, 0xd3, 0x2c, 0xcb, 0x3e, 0xc6, 0xe2, 0x08, 0x83, 0x5b, + 0x1c, 0x3d, 0xc4, 0x1f, 0x63, 0xdc, 0xfa, 0xb2, 0x89, 0x71, 0x01, 0x1d, 0xc9, 0x38, 0x5f, 0x0a, + 0x03, 0xa7, 0xdb, 0x9d, 0x4f, 0xf7, 0xa3, 0xde, 0x2b, 0x7f, 0x78, 0x12, 0xa2, 0x26, 0x83, 0xd5, + 0xfa, 0xc1, 0x7c, 0x3a, 0x3c, 0x56, 0x3f, 0x4f, 0x42, 0x14, 0xf5, 0x2f, 0x5e, 0x44, 0xd1, 0x7c, + 0x4a, 0x29, 0xfb, 0xd1, 0x09, 0xa6, 0x84, 0xaf, 0xac, 0x14, 0x28, 0x40, 0x69, 0x37, 0x88, 0xe5, + 0xe2, 0x3b, 0xfb, 0x86, 0xeb, 0x79, 0x81, 0x8e, 0x61, 0xf3, 0xe9, 0x2a, 0xe8, 0x20, 0x06, 0x4e, + 0xd0, 0x79, 0x19, 0x7e, 0x83, 0xf1, 0xcc, 0x82, 0xd7, 0x3d, 0x19, 0x57, 0x05, 0x34, 0xa2, 0x85, + 0x03, 0x18, 0x08, 0x09, 0xbf, 0x90, 0xf1, 0x8f, 0x0d, 0x97, 0xf8, 0xdc, 0x11, 0x00, 0xb4, 0x49, + 0xc1, 0xb0, 0x9a, 0xfe, 0x40, 0x45, 0xd0, 0x68, 0xdf, 0xab, 0xd8, 0x7e, 0x41, 0x08, 0x3b, 0x37, + 0x8b, 0x17, 0x77, 0x9d, 0x5f, 0xc4, 0x24, 0xcb, 0xe4, 0x86, 0xb0, 0xcb, 0xf5, 0x83, 0x96, 0x5a, + 0x8b, 0x00, 0x01, 0xdb, 0xe6, 0xc8, 0x3b, 0x62, 0x13, 0xc2, 0x4a, 0x91, 0x7a, 0xe1, 0x82, 0x1b, + 0x62, 0x74, 0x76, 0x57, 0x3e, 0x2d, 0x0a, 0xa6, 0x4d, 0xd1, 0x7e, 0xe1, 0x7f, 0x21, 0x95, 0x5c, + 0xb1, 0x21, 0xf2, 0x82, 0x42, 0xd1, 0x28, 0x1a, 0x82, 0x96, 0xe2, 0x66, 0xd5, 0xe2, 0xa8, 0x2f, + 0xf5, 0x81, 0xa7, 0xe7, 0xf8, 0x9b, 0x2c, 0xf9, 0xb8, 0x3a, 0xe4, 0x23, 0x4d, 0x85, 0x0e, 0x41, + 0x3e, 0x06, 0x3b, 0xe1, 0xca, 0xf2, 0x46, 0x11, 0x51, 0x6f, 0x20, 0xa4, 0x37, 0x8a, 0xa8, 0x78, + 0xa3, 0xc8, 0xe3, 0xd0, 0x76, 0x37, 0x18, 0x42, 0x9a, 0xb3, 0x82, 0x42, 0xdb, 0x30, 0x90, 0x4e, + 0x00, 0x69, 0x0b, 0x52, 0x1b, 0xd1, 0x8d, 0xa6, 0xe3, 0x04, 0x36, 0xd8, 0x0b, 0xd0, 0xc2, 0xf0, + 0x52, 0x39, 0x46, 0x07, 0xee, 0x7a, 0x0f, 0x09, 0x21, 0x6b, 0x3e, 0x7a, 0xf2, 0xc6, 0x3d, 0x2a, + 0x21, 0xbc, 0xff, 0xb6, 0xac, 0x6a, 0x25, 0x23, 0xcb, 0x63, 0x44, 0x9e, 0x4f, 0x18, 0x4b, 0x80, + 0x3e, 0xd4, 0x30, 0xd8, 0x35, 0xc2, 0x93, 0x9c, 0x3b, 0x18, 0x84, 0x90, 0xe8, 0xda, 0x0a, 0xcb, + 0xca, 0xc9, 0xb7, 0x5c, 0x05, 0xb7, 0xfa, 0xc0, 0x86, 0x1b, 0x11, 0x06, 0x12, 0x46, 0xcf, 0x22, + 0xb3, 0xa8, 0x91, 0x19, 0x54, 0x80, 0x14, 0x97, 0x79, 0xdf, 0x2e, 0x38, 0xf8, 0x64, 0xc3, 0xce, + 0x61, 0xa0, 0xd6, 0xfa, 0x16, 0x30, 0x60, 0x15, 0x4e, 0x81, 0xf7, 0x89, 0xe0, 0xf5, 0x6b, 0xe7, + 0x48, 0xa2, 0x4a, 0x18, 0x59, 0x54, 0xb6, 0x8b, 0x90, 0x0a, 0xa4, 0x3c, 0x8e, 0x72, 0x52, 0x73, + 0xf7, 0x85, 0x1b, 0x28, 0xf5, 0x0f, 0xa0, 0x35, 0x36, 0xc7, 0x58, 0x5d, 0x8b, 0xbd, 0x58, 0x40, + 0x4f, 0x3a, 0x1d, 0xee, 0x9a, 0xe8, 0xa1, 0xfb, 0x9d, 0x5e, 0x83, 0x61, 0x83, 0x32, 0x4e, 0x8b, + 0xc3, 0xbb, 0x51, 0x15, 0xd6, 0xb0, 0xd6, 0x1b, 0xfb, 0x3d, 0xe8, 0x8f, 0x55, 0x00, 0x5b, 0xd5, + 0x3e, 0x82, 0x7c, 0x6e, 0x19, 0x81, 0x15, 0x91, 0x4f, 0x7f, 0xe6, 0x68, 0xc3, 0x8c, 0xea, 0xa0, + 0xa3, 0x1e, 0x3a, 0x81, 0xa6, 0x36, 0x20, 0xb5, 0x96, 0xcf, 0x03, 0x69, 0x15, 0x3e, 0xe1, 0x14, + 0x96, 0x2d, 0xa8, 0xd8, 0xd6, 0xba, 0x32, 0x5e, 0x60, 0x13, 0x82, 0xd2, 0x4c, 0x24, 0xd1, 0xbe, + 0xa5, 0xd1, 0xd7, 0xba, 0xd1, 0xcc, 0x2d, 0x75, 0x85, 0xaa, 0x6b, 0x9f, 0xbe, 0xd8, 0x8d, 0xcd, + 0x2b, 0xd7, 0xb4, 0x8b, 0x44, 0x42, 0x1c, 0x79, 0x39, 0x9e, 0x9f, 0x7b, 0x11, 0xde, 0x5d, 0x0b, + 0xfb, 0xbd, 0x41, 0x6c, 0x80, 0x3c, 0x62, 0x05, 0xe4, 0x91, 0x46, 0xc5, 0x65, 0x7c, 0x15, 0x24, + 0xb0, 0x41, 0xde, 0xaa, 0x1b, 0xca, 0xec, 0x9f, 0x79, 0x2e, 0x16, 0x67, 0x63, 0x84, 0x69, 0x1d, + 0xa4, 0x15, 0xea, 0x13, 0xd3, 0x4d, 0xdc, 0x04, 0x37, 0xbf, 0x8f, 0x81, 0x81, 0x76, 0x28, 0xf8, + 0xa8, 0x1a, 0x1d, 0x24, 0x6e, 0x77, 0xd7, 0xbc, 0xe7, 0x1d, 0x7f, 0xcf, 0x10, 0xb8, 0xca, 0x51, + 0x11, 0x58, 0xd5, 0x0a, 0xd1, 0x94, 0x88, 0x71, 0xca, 0x90, 0xac, 0x4d, 0xf7, 0xf0, 0xa5, 0x54, + 0x12, 0xe4, 0x73, 0x18, 0x67, 0xf7, 0x85, 0xdb, 0xd5, 0x6a, 0x87, 0x81, 0x58, 0xe1, 0xe5, 0xe1, + 0x2c, 0x9b, 0xde, 0xa3, 0x59, 0xa8, 0xa4, 0x42, 0x90, 0xdf, 0x7e, 0xc0, 0x2d, 0x59, 0x17, 0xf7, + 0x25, 0xfc, 0xcd, 0xa3, 0xd3, 0x57, 0x77, 0x17, 0x90, 0x2d, 0xee, 0xc6, 0xe5, 0x9b, 0x85, 0x51, + 0xcb, 0x02, 0x8c, 0x72, 0x65, 0xa0, 0x40, 0x70, 0x45, 0x71, 0xaf, 0x46, 0x0a, 0xf4, 0x46, 0xf7, + 0x55, 0x6f, 0xd3, 0xaf, 0x01, 0x6f, 0x98, 0x52, 0x9f, 0x30, 0x5a, 0x49, 0xdb, 0xa2, 0xf4, 0xe8, + 0x32, 0xbd, 0x42, 0x8f, 0x9f, 0x6e, 0xc9, 0xf9, 0x14, 0x5e, 0xff, 0x69, 0xe1, 0x2b, 0x4c, 0x0e, + 0x0c, 0xa2, 0x9d, 0x9c, 0x16, 0x07, 0xe5, 0x20, 0x81, 0x21, 0xe4, 0x5c, 0x24, 0xe2, 0x05, 0x3b, + 0xbd, 0x1f, 0xf4, 0x38, 0x64, 0x47, 0x8d, 0x08, 0x0b, 0x6e, 0xd6, 0x5f, 0xa6, 0x0e, 0xfe, 0xac, + 0x4b, 0x4e, 0xb9, 0x40, 0x6a, 0x2c, 0xb0, 0x59, 0x9b, 0x28, 0x0b, 0x89, 0xc2, 0xa5, 0xad, 0x4a, + 0x97, 0x95, 0x51, 0x92, 0x67, 0xfb, 0xb4, 0x23, 0x95, 0xa6, 0x53, 0xb5, 0xc7, 0x99, 0xa5, 0xe8, + 0xb2, 0xeb, 0x29, 0xc3, 0x96, 0x08, 0xcb, 0xef, 0x34, 0x93, 0xea, 0xbf, 0xdc, 0x3a, 0x30, 0x87, + 0x5b, 0x0a, 0x31, 0xce, 0xb2, 0x21, 0xf6, 0xa8, 0x63, 0x7b, 0x2c, 0x1a, 0x6d, 0x8f, 0x76, 0xf0, + 0xbc, 0x1d, 0xe2, 0xc3, 0xa6, 0x5c, 0xda, 0xb5, 0x9b, 0x57, 0xb3, 0x06, 0x77, 0x57, 0x93, 0x23, + 0x10, 0x43, 0x1a, 0x4e, 0x35, 0xd8, 0x48, 0x72, 0xf5, 0x2d, 0xe3, 0xd3, 0x62, 0xde, 0x43, 0xd0, + 0x43, 0x7d, 0x78, 0x99, 0xfa, 0x23, 0xe5, 0xcd, 0x9e, 0x5e, 0x45, 0xb9, 0xfc, 0xa2, 0xcd, 0xd6, + 0x81, 0xe1, 0x41, 0x9d, 0x0b, 0x0f, 0x3f, 0x71, 0x08, 0x75, 0x82, 0x44, 0x74, 0xf0, 0x8d, 0x63, + 0xbc, 0x4e, 0x8b, 0x0c, 0x5e, 0x4a, 0x4a, 0x68, 0x0a, 0x76, 0x0e, 0x44, 0x0b, 0xaa, 0x95, 0x85, + 0xe0, 0x9c, 0x4e, 0x41, 0x88, 0x60, 0x11, 0x2a, 0x73, 0x0d, 0x8d, 0x90, 0x03, 0xf8, 0x4e, 0x3e, + 0xef, 0x29, 0x45, 0xc2, 0xb1, 0xbc, 0xdc, 0x81, 0xef, 0xfa, 0xeb, 0xdf, 0x50, 0xf1, 0x82, 0xf3, + 0x71, 0x1e, 0xff, 0x0a, 0x9a, 0x30, 0x24, 0x28, 0xeb, 0x79, 0x6a, 0x1f, 0xd1, 0x45, 0x49, 0x40, + 0x01, 0x38, 0x6a, 0x27, 0x55, 0x32, 0x14, 0x03, 0xbf, 0x50, 0x39, 0xc6, 0xa4, 0x96, 0xb1, 0xcf, + 0x75, 0xaa, 0x5c, 0xe7, 0x25, 0x62, 0xd5, 0x9a, 0x9b, 0x00, 0x7c, 0x3d, 0xde, 0x0a, 0x23, 0xd9, + 0xd2, 0x02, 0x15, 0x4b, 0xb6, 0x5e, 0xa4, 0xeb, 0x1e, 0xbf, 0x2a, 0xbf, 0xc0, 0xd1, 0xdf, 0xb2, + 0xcd, 0xa6, 0x24, 0xb5, 0x8c, 0x6d, 0xb6, 0xe6, 0x0d, 0x31, 0x49, 0xee, 0x17, 0xdd, 0xc6, 0x60, + 0x3b, 0xf5, 0x27, 0xb6, 0x83, 0x02, 0x3f, 0x5d, 0xf1, 0x8d, 0xe9, 0x7f, 0x9f, 0xd5, 0x3d, 0x48, + 0x14, 0xdf, 0x62, 0xc0, 0xc0, 0xe0, 0x6d, 0xf4, 0x82, 0x66, 0x61, 0x4c, 0x94, 0x44, 0x61, 0xf0, + 0x18, 0x4a, 0x30, 0x6e, 0x6a, 0xdc, 0x05, 0xa4, 0x60, 0x1b, 0xd8, 0x79, 0xda, 0xa2, 0x9e, 0x61, + 0xaa, 0x97, 0x5a, 0xd9, 0xe6, 0xbb, 0x5c, 0x37, 0xef, 0xb3, 0x7b, 0x18, 0xa5, 0x62, 0x54, 0x4d, + 0x40, 0xbc, 0x7a, 0x61, 0xad, 0xf7, 0xe3, 0xe2, 0x7c, 0x91, 0x11, 0x5c, 0x91, 0x5a, 0xf1, 0x59, + 0x60, 0x60, 0xe0, 0x2a, 0x61, 0x87, 0xab, 0xa2, 0xc5, 0x96, 0x62, 0x50, 0xa1, 0xee, 0x5c, 0x7c, + 0x80, 0x0d, 0x58, 0xd7, 0x83, 0x77, 0xf5, 0x61, 0x26, 0x68, 0xce, 0x2a, 0x18, 0x98, 0xad, 0x03, + 0xc3, 0x06, 0x99, 0x6d, 0xf6, 0x3b, 0xf9, 0x14, 0x35, 0x0b, 0x25, 0x91, 0x74, 0x84, 0x70, 0x3d, + 0xae, 0x24, 0xf6, 0x9d, 0xb0, 0xe1, 0x72, 0xad, 0x31, 0x59, 0x06, 0xf6, 0x5c, 0x57, 0x97, 0x4d, + 0x41, 0xe7, 0xb0, 0x9b, 0x51, 0x56, 0x7e, 0x17, 0xf0, 0xbb, 0x0b, 0x9d, 0xa9, 0xba, 0x0a, 0x4a, + 0x43, 0x83, 0xe6, 0xbf, 0x74, 0xc7, 0xca, 0x50, 0xcf, 0xe5, 0x78, 0x32, 0x65, 0x8d, 0xcf, 0xf3, + 0x2f, 0x79, 0x14, 0xae, 0x24, 0x67, 0xbd, 0xcf, 0xf2, 0xe0, 0xdf, 0x67, 0x4d, 0x5e, 0xf9, 0x92, + 0xbd, 0x76, 0xba, 0x6a, 0x6c, 0x42, 0xdf, 0x41, 0x5b, 0x22, 0xde, 0xe7, 0xf6, 0x73, 0x8e, 0xdd, + 0xdd, 0x4a, 0x3f, 0xd4, 0xc9, 0x8a, 0xca, 0x83, 0xc7, 0x50, 0x05, 0x8e, 0x27, 0x3d, 0xb0, 0x40, + 0xe8, 0xcf, 0xfd, 0x6e, 0xfa, 0x97, 0xe2, 0xe8, 0xe1, 0x03, 0xa8, 0x8e, 0xd9, 0x8f, 0xf1, 0xa3, + 0xb8, 0xe9, 0x1e, 0xfb, 0x83, 0x70, 0x07, 0x65, 0x6c, 0x97, 0xc9, 0x1d, 0x86, 0x84, 0xe3, 0xe2, + 0xeb, 0x84, 0x53, 0x0a, 0x66, 0x88, 0x09, 0xc9, 0xf0, 0xb0, 0x77, 0xbc, 0xbb, 0xbb, 0x55, 0x53, + 0x61, 0xe3, 0xc0, 0x3d, 0x03, 0xe5, 0x40, 0xab, 0x59, 0x2b, 0x20, 0xdf, 0x14, 0xd8, 0x83, 0x2f, + 0xca, 0xcf, 0x5d, 0xef, 0xe0, 0x20, 0xf6, 0x02, 0x7e, 0xef, 0x20, 0x4a, 0x91, 0xb8, 0xde, 0x41, + 0xa2, 0xcc, 0x2e, 0x63, 0x54, 0x0c, 0x3e, 0x16, 0x92, 0x04, 0xd0, 0xeb, 0xdb, 0xca, 0x98, 0x79, + 0x41, 0xe2, 0x6f, 0xdb, 0xaf, 0x3d, 0x28, 0x48, 0xce, 0x08, 0xdb, 0xb3, 0xc6, 0xc4, 0xe1, 0x5b, + 0x36, 0x80, 0xcc, 0x56, 0x34, 0x29, 0xb5, 0xdf, 0x48, 0x6f, 0xa6, 0x74, 0x86, 0xf1, 0xf0, 0x61, + 0xf8, 0xdd, 0xeb, 0xef, 0x9e, 0x9e, 0xe0, 0xf3, 0xe5, 0xc9, 0xeb, 0xdd, 0xdd, 0x87, 0x0f, 0xa7, + 0xdf, 0x1d, 0x87, 0x7e, 0x6b, 0x34, 0x4b, 0x06, 0x09, 0x5e, 0x3e, 0x7c, 0x50, 0xb1, 0x16, 0x49, + 0x58, 0x11, 0xb2, 0xa8, 0x1d, 0x11, 0x70, 0x60, 0xed, 0x8a, 0xe9, 0xba, 0x8f, 0x1c, 0x5a, 0x06, + 0x87, 0x1c, 0x14, 0x67, 0x59, 0x82, 0xcd, 0xc7, 0xf6, 0x09, 0x0e, 0xba, 0x12, 0xa8, 0xb4, 0x89, + 0x32, 0x76, 0x92, 0x64, 0x73, 0xde, 0x93, 0x39, 0x19, 0xea, 0xb8, 0x0b, 0xfd, 0xfe, 0xc2, 0xbc, + 0x56, 0xe6, 0xa6, 0x28, 0x89, 0x22, 0x4e, 0x3c, 0x56, 0x47, 0x34, 0x96, 0xe9, 0x0c, 0x61, 0x87, + 0x16, 0x28, 0x66, 0xc6, 0x37, 0x91, 0xe4, 0xca, 0x37, 0x41, 0xf3, 0xc6, 0x2e, 0x9f, 0xde, 0x79, + 0x81, 0xcc, 0xe2, 0xcb, 0x2f, 0x91, 0xfe, 0x0d, 0x1d, 0xd7, 0x3b, 0x7e, 0x19, 0x6a, 0xde, 0x06, + 0x8d, 0x54, 0x50, 0xff, 0xca, 0x64, 0xec, 0xf9, 0x07, 0xfa, 0x4e, 0x9d, 0x1d, 0x59, 0xa9, 0xfc, + 0x03, 0xa7, 0x28, 0x1a, 0x78, 0x80, 0x79, 0xf8, 0x66, 0x97, 0x2a, 0x72, 0x24, 0xab, 0xda, 0xe9, + 0xf5, 0x65, 0x6d, 0x18, 0x79, 0x59, 0xd3, 0x6d, 0x48, 0xa8, 0x30, 0x9f, 0x5a, 0x4a, 0x65, 0x80, + 0x73, 0xa0, 0xde, 0x86, 0x1c, 0xe6, 0xb7, 0x1a, 0xc2, 0x96, 0x67, 0xc6, 0x90, 0xc3, 0xb1, 0x75, + 0x64, 0x56, 0xa8, 0x54, 0x3b, 0x93, 0x43, 0x57, 0x40, 0xbe, 0x91, 0x17, 0xe2, 0x9e, 0xf0, 0xbe, + 0xcc, 0xbc, 0x67, 0x8c, 0x9e, 0x9e, 0x0a, 0x7c, 0x53, 0x52, 0xd1, 0x81, 0x26, 0x22, 0x28, 0xed, + 0x05, 0x7e, 0x90, 0xc3, 0xeb, 0x43, 0x04, 0xf3, 0xdc, 0x92, 0x22, 0x02, 0x84, 0xe2, 0xf7, 0x42, + 0xe4, 0xb0, 0xf7, 0x39, 0x3c, 0x3c, 0x94, 0xe1, 0x54, 0x4b, 0xa5, 0x2f, 0x2a, 0xd9, 0xaf, 0x03, + 0xa9, 0xc2, 0x8a, 0x38, 0x8f, 0x67, 0xb0, 0xed, 0x63, 0x87, 0x7b, 0xd8, 0x54, 0x92, 0xfb, 0x16, + 0x7f, 0x2b, 0x7c, 0xdf, 0x06, 0xf2, 0x88, 0x81, 0xaf, 0x7d, 0xf9, 0x04, 0x01, 0xd9, 0x46, 0x24, + 0xe5, 0x9f, 0x9e, 0xdc, 0x9d, 0x28, 0xec, 0x92, 0x21, 0x95, 0x4e, 0xe5, 0x03, 0x8b, 0x1a, 0x48, + 0x0b, 0xe8, 0x2d, 0xbf, 0xdf, 0x98, 0x9f, 0xae, 0x08, 0x6b, 0x7b, 0x55, 0xad, 0x19, 0x2b, 0x9e, + 0x51, 0xad, 0x12, 0x22, 0xf5, 0x02, 0xe0, 0x72, 0x39, 0xd9, 0x60, 0xd5, 0xa7, 0x3d, 0x04, 0x0a, + 0x0a, 0x91, 0xe2, 0x89, 0x0a, 0xde, 0xed, 0xfe, 0x0f, 0x6c, 0xe2, 0xf0, 0xff, 0x00, 0x75, 0x11, + 0x28, 0xa7, 0x9e, 0xeb, 0x2e, 0x43, 0x97, 0xb0, 0xec, 0x01, 0x0a, 0xc3, 0x69, 0xdd, 0x9e, 0xb1, + 0xc4, 0x15, 0x92, 0x91, 0x99, 0x37, 0xe4, 0xa4, 0x22, 0x61, 0xeb, 0xed, 0x05, 0x28, 0xdf, 0x37, + 0xe4, 0xbb, 0xcf, 0x37, 0x65, 0xa3, 0x8a, 0x41, 0x01, 0x34, 0xf9, 0xfe, 0xe7, 0xf4, 0x08, 0x64, + 0x70, 0x9c, 0x97, 0xc3, 0xce, 0xe9, 0x11, 0x06, 0x81, 0xc0, 0xcf, 0x79, 0x79, 0x97, 0x0c, 0x3b, + 0xff, 0x07, 0x63, 0xb0, 0x46, 0xbb, 0x26, 0x5b, 0x01, 0x00 }; diff --git a/wled00/ir.cpp b/wled00/ir.cpp index 9222845b..7937bee2 100644 --- a/wled00/ir.cpp +++ b/wled00/ir.cpp @@ -502,8 +502,8 @@ void decodeIR44(uint32_t code) case IR44_WARMWHITE : changeColor(COLOR_WARMWHITE, 63); changeEffect(FX_MODE_STATIC); break; case IR44_COLDWHITE : changeColor(COLOR_COLDWHITE, 191); changeEffect(FX_MODE_STATIC); break; case IR44_COLDWHITE2 : changeColor(COLOR_COLDWHITE2, 255); changeEffect(FX_MODE_STATIC); break; - case IR44_REDPLUS : changeEffect(relativeChange(effectCurrent, 1, 0, MODE_COUNT -1)); break; - case IR44_REDMINUS : changeEffect(relativeChange(effectCurrent, -1, 0, MODE_COUNT -1)); break; + case IR44_REDPLUS : changeEffect(relativeChange(effectCurrent, 1, 0, strip.getModeCount() -1)); break; + case IR44_REDMINUS : changeEffect(relativeChange(effectCurrent, -1, 0, strip.getModeCount() -1)); break; case IR44_GREENPLUS : changePalette(relativeChange(effectPalette, 1, 0, strip.getPaletteCount() -1)); break; case IR44_GREENMINUS : changePalette(relativeChange(effectPalette, -1, 0, strip.getPaletteCount() -1)); break; case IR44_BLUEPLUS : changeEffectIntensity( 16); break; @@ -562,7 +562,7 @@ void decodeIR6(uint32_t code) case IR6_POWER: toggleOnOff(); break; case IR6_CHANNEL_UP: incBrightness(); break; case IR6_CHANNEL_DOWN: decBrightness(); break; - case IR6_VOLUME_UP: changeEffect(relativeChange(effectCurrent, 1, 0, MODE_COUNT -1)); break; + case IR6_VOLUME_UP: changeEffect(relativeChange(effectCurrent, 1, 0, strip.getModeCount() -1)); break; case IR6_VOLUME_DOWN: changePalette(relativeChange(effectPalette, 1, 0, strip.getPaletteCount() -1)); switch(lastIR6ColourIdx) { case 0: changeColor(COLOR_RED); break; @@ -600,7 +600,7 @@ void decodeIR9(uint32_t code) case IR9_DOWN : decBrightness(); break; case IR9_LEFT : changeEffectSpeed(-16); break; case IR9_RIGHT : changeEffectSpeed(16); break; - case IR9_SELECT : changeEffect(relativeChange(effectCurrent, 1, 0, MODE_COUNT -1)); break; + case IR9_SELECT : changeEffect(relativeChange(effectCurrent, 1, 0, strip.getModeCount() -1)); break; default: return; } lastValidCode = code; @@ -670,7 +670,7 @@ void decodeIRJson(uint32_t code) decBrightness(); } else if (cmdStr.startsWith(F("!presetF"))) { //!presetFallback uint8_t p1 = fdo["PL"] | 1; - uint8_t p2 = fdo["FX"] | random8(MODE_COUNT -1); + uint8_t p2 = fdo["FX"] | random8(strip.getModeCount() -1); uint8_t p3 = fdo["FP"] | 0; presetFallback(p1, p2, p3); } diff --git a/wled00/json.cpp b/wled00/json.cpp index 7cd09671..9ce83b38 100644 --- a/wled00/json.cpp +++ b/wled00/json.cpp @@ -72,6 +72,8 @@ void deserializeSegment(JsonObject elem, byte it, byte presetId) uint16_t spc = elem[F("spc")] | seg.spacing; uint16_t of = seg.offset; + if (spc>0 && spc!=seg.spacing) strip.fill(BLACK, id); // clear spacing gaps + uint16_t len = 1; if (stop > start) len = stop - start; int offset = elem[F("of")] | INT32_MAX; @@ -829,9 +831,9 @@ void serializeNodes(JsonObject root) void serializeModeData(JsonArray fxdata) { - for (size_t i = 0; i < MODE_COUNT; i++) { + for (size_t i = 0; i < strip.getModeCount(); i++) { //String lineBuffer = (const char*)pgm_read_dword(&(WS2812FX::_modeData[i])); - String lineBuffer = WS2812FX::_modeData[i]; + String lineBuffer = strip.getModeData(i); if (lineBuffer.length() > 0) { uint8_t endPos = lineBuffer.indexOf('@'); if (endPos>0) fxdata.add(lineBuffer.substring(endPos)); @@ -843,12 +845,12 @@ void serializeModeData(JsonArray fxdata) // deserializes mode names string into JsonArray // also removes WLED-SR extensions (@...) from deserialised names void serializeModeNames(JsonArray arr) { - for (size_t i = 0; i < MODE_COUNT; i++) { + for (size_t i = 0; i < strip.getModeCount(); i++) { //String lineBuffer = (const char*)pgm_read_dword(&(WS2812FX::_modeData[i])); - String lineBuffer = WS2812FX::_modeData[i]; + String lineBuffer = strip.getModeData(i); if (lineBuffer.length() > 0) { uint8_t endPos = lineBuffer.indexOf('@'); - if (endPos>0) arr.add(lineBuffer.substring(0,endPos)); + if (endPos>0) arr.add(lineBuffer.substring(0, endPos)); else arr.add(lineBuffer); } } diff --git a/wled00/pin_manager.h b/wled00/pin_manager.h index 5f009425..3a9bcf5a 100644 --- a/wled00/pin_manager.h +++ b/wled00/pin_manager.h @@ -25,7 +25,7 @@ enum struct PinOwner : uint8_t { // High bit is set for all built-in pin owners Ethernet = 0x81, BusDigital = 0x82, - BusDigital2 = 0x83, + BusOnOff = 0x83, BusPwm = 0x84, // 'BusP' == PWM output using BusPwm Button = 0x85, // 'Butn' == button from configuration IR = 0x86, // 'IR' == IR receiver pin from configuration @@ -34,6 +34,8 @@ enum struct PinOwner : uint8_t { DebugOut = 0x89, // 'Dbg' == debug output always IO1 DMX = 0x8A, // 'DMX' == hard-coded to IO2 HW_I2C = 0x8B, // 'I2C' == hardware I2C pins (4&5 on ESP8266, 21&22 on ESP32) + AnalogMic = 0x8C, // WLEDSR + DigitalMic = 0x8D, // WLEDSR // Use UserMod IDs from const.h here UM_Unspecified = USERMOD_ID_UNSPECIFIED, // 0x01 UM_Example = USERMOD_ID_EXAMPLE, // 0x02 // Usermod "usermod_v2_example.h" @@ -53,7 +55,8 @@ enum struct PinOwner : uint8_t { // #define USERMOD_ID_ELEKSTUBE_IPS // 0x10 // Usermod "usermod_elekstube_ips.h" -- Uses quite a few pins ... see Hardware.h and User_Setup.h // #define USERMOD_ID_SN_PHOTORESISTOR // 0x11 // Usermod "usermod_sn_photoresistor.h" -- Uses hard-coded pin (PHOTORESISTOR_PIN == A0), but could be easily updated to use pinManager UM_RGBRotaryEncoder = USERMOD_RGB_ROTARY_ENCODER, // 0x16 // Usermod "rgb-rotary-encoder.h" - UM_QuinLEDAnPenta = USERMOD_ID_QUINLED_AN_PENTA // 0x17 // Usermod "quinled-an-penta.h" + UM_QuinLEDAnPenta = USERMOD_ID_QUINLED_AN_PENTA, // 0x17 // Usermod "quinled-an-penta.h" + UM_Audioreactive = USERMOD_ID_AUDIOREACTIVE // 0x1E // Usermod: "audio_reactive.h" }; static_assert(0u == static_cast(PinOwner::None), "PinOwner::None must be zero, so default array initialization works as expected"); diff --git a/wled00/src/dependencies/dmx/ESPDMX.cpp b/wled00/src/dependencies/dmx/ESPDMX.cpp index 6ad1268e..9f7c6e56 100644 --- a/wled00/src/dependencies/dmx/ESPDMX.cpp +++ b/wled00/src/dependencies/dmx/ESPDMX.cpp @@ -11,6 +11,8 @@ // - - - - - /* ----- LIBRARIES ----- */ +#ifdef ESP8266 + #include #include "ESPDMX.h" @@ -29,12 +31,12 @@ bool dmxStarted = false; int sendPin = 2; //dafault on ESP8266 //DMX value array and size. Entry 0 will hold startbyte -uint8_t dmxData[dmxMaxChannel] = {}; -int chanSize; +uint8_t dmxDataStore[dmxMaxChannel] = {}; +int channelSize; void DMXESPSerial::init() { - chanSize = defaultMax; + channelSize = defaultMax; Serial1.begin(DMXSPEED); pinMode(sendPin, OUTPUT); @@ -48,7 +50,7 @@ void DMXESPSerial::init(int chanQuant) { chanQuant = defaultMax; } - chanSize = chanQuant; + channelSize = chanQuant; Serial1.begin(DMXSPEED); pinMode(sendPin, OUTPUT); @@ -61,7 +63,7 @@ uint8_t DMXESPSerial::read(int Channel) { if (Channel < 1) Channel = 1; if (Channel > dmxMaxChannel) Channel = dmxMaxChannel; - return(dmxData[Channel]); + return(dmxDataStore[Channel]); } // Function to send DMX data @@ -69,15 +71,15 @@ void DMXESPSerial::write(int Channel, uint8_t value) { if (dmxStarted == false) init(); if (Channel < 1) Channel = 1; - if (Channel > chanSize) Channel = chanSize; + if (Channel > channelSize) Channel = channelSize; if (value < 0) value = 0; if (value > 255) value = 255; - dmxData[Channel] = value; + dmxDataStore[Channel] = value; } void DMXESPSerial::end() { - chanSize = 0; + channelSize = 0; Serial1.end(); dmxStarted = false; } @@ -96,10 +98,12 @@ void DMXESPSerial::update() { //send data Serial1.begin(DMXSPEED, DMXFORMAT); digitalWrite(sendPin, LOW); - Serial1.write(dmxData, chanSize); + Serial1.write(dmxDataStore, channelSize); Serial1.flush(); delay(1); Serial1.end(); } // Function to update the DMX bus + +#endif \ No newline at end of file diff --git a/wled00/src/dependencies/dmx/LICENSE.md b/wled00/src/dependencies/dmx/LICENSE.md new file mode 100644 index 00000000..e64bd4ef --- /dev/null +++ b/wled00/src/dependencies/dmx/LICENSE.md @@ -0,0 +1,55 @@ +SparkFun License Information +============================ + +SparkFun uses two different licenses for our files — one for hardware and one for code. + +Hardware +--------- + +**SparkFun hardware is released under [Creative Commons Share-alike 4.0 International](http://creativecommons.org/licenses/by-sa/4.0/).** + +Note: This is a human-readable summary of (and not a substitute for) the [license](http://creativecommons.org/licenses/by-sa/4.0/legalcode). + +You are free to: + +Share — copy and redistribute the material in any medium or format +Adapt — remix, transform, and build upon the material +for any purpose, even commercially. +The licensor cannot revoke these freedoms as long as you follow the license terms. +Under the following terms: + +Attribution — You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use. +ShareAlike — If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original. +No additional restrictions — You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits. +Notices: + +You do not have to comply with the license for elements of the material in the public domain or where your use is permitted by an applicable exception or limitation. +No warranties are given. The license may not give you all of the permissions necessary for your intended use. For example, other rights such as publicity, privacy, or moral rights may limit how you use the material. + + +Code +-------- + +**SparkFun code, firmware, and software is released under the MIT License(http://opensource.org/licenses/MIT).** + +The MIT License (MIT) + +Copyright (c) 2016 SparkFun Electronics + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/wled00/src/dependencies/dmx/SparkFunDMX.cpp b/wled00/src/dependencies/dmx/SparkFunDMX.cpp new file mode 100644 index 00000000..79202a6a --- /dev/null +++ b/wled00/src/dependencies/dmx/SparkFunDMX.cpp @@ -0,0 +1,160 @@ +/****************************************************************************** +SparkFunDMX.h +Arduino Library for the SparkFun ESP32 LED to DMX Shield +Andy England @ SparkFun Electronics +7/22/2019 + +Development environment specifics: +Arduino IDE 1.6.4 + +This code is released under the [MIT License](http://opensource.org/licenses/MIT). +Please review the LICENSE.md file included with this example. If you have any questions +or concerns with licensing, please contact techsupport@sparkfun.com. +Distributed as-is; no warranty is given. +******************************************************************************/ + +/* ----- LIBRARIES ----- */ +#ifdef ESP32 + +#include + +#include "SparkFunDMX.h" +#include + +#define dmxMaxChannel 512 +#define defaultMax 32 + +#define DMXSPEED 250000 +#define DMXFORMAT SERIAL_8N2 +#define BREAKSPEED 83333 +#define BREAKFORMAT SERIAL_8N1 + +int enablePin = -1; // disable the enable pin because it is not needed +int rxPin = -1; // disable the receiving pin because it is not needed +int txPin = 2; // transmit DMX data over this pin (default is pin 2) + +//DMX value array and size. Entry 0 will hold startbyte +uint8_t dmxData[dmxMaxChannel] = {}; +int chanSize; +int currentChannel = 0; + +HardwareSerial DMXSerial(2); + +/* Interrupt Timer for DMX Receive */ +hw_timer_t * timer = NULL; +portMUX_TYPE timerMux = portMUX_INITIALIZER_UNLOCKED; + +volatile int _interruptCounter; +volatile bool _startCodeDetected = false; + + +/* Start Code is detected by 21 low interrupts */ +void IRAM_ATTR onTimer() { + if (digitalRead(rxPin) == 1) + { + _interruptCounter = 0; //If the RX Pin is high, we are not in an interrupt + } + else + { + _interruptCounter++; + } + if (_interruptCounter > 9) + { + portENTER_CRITICAL_ISR(&timerMux); + _startCodeDetected = true; + DMXSerial.begin(DMXSPEED, DMXFORMAT, rxPin, txPin); + portEXIT_CRITICAL_ISR(&timerMux); + _interruptCounter = 0; + } +} + +void SparkFunDMX::initRead(int chanQuant) { + + timer = timerBegin(0, 1, true); + timerAttachInterrupt(timer, &onTimer, true); + timerAlarmWrite(timer, 320, true); + timerAlarmEnable(timer); + _READWRITE = _READ; + if (chanQuant > dmxMaxChannel || chanQuant <= 0) + { + chanQuant = defaultMax; + } + chanSize = chanQuant; + pinMode(enablePin, OUTPUT); + digitalWrite(enablePin, LOW); + pinMode(rxPin, INPUT); +} + +// Set up the DMX-Protocol +void SparkFunDMX::initWrite (int chanQuant) { + + _READWRITE = _WRITE; + if (chanQuant > dmxMaxChannel || chanQuant <= 0) { + chanQuant = defaultMax; + } + + chanSize = chanQuant + 1; //Add 1 for start code + + DMXSerial.begin(DMXSPEED, DMXFORMAT, rxPin, txPin); + pinMode(enablePin, OUTPUT); + digitalWrite(enablePin, HIGH); +} + +// Function to read DMX data +uint8_t SparkFunDMX::read(int Channel) { + if (Channel > chanSize) Channel = chanSize; + return(dmxData[Channel - 1]); //subtract one to account for start byte +} + +// Function to send DMX data +void SparkFunDMX::write(int Channel, uint8_t value) { + if (Channel < 0) Channel = 0; + if (Channel > chanSize) chanSize = Channel; + dmxData[0] = 0; + dmxData[Channel] = value; //add one to account for start byte +} + + + +void SparkFunDMX::update() { + if (_READWRITE == _WRITE) + { + //Send DMX break + digitalWrite(txPin, HIGH); + DMXSerial.begin(BREAKSPEED, BREAKFORMAT, rxPin, txPin);//Begin the Serial port + DMXSerial.write(0); + DMXSerial.flush(); + delay(1); + DMXSerial.end(); + + //Send DMX data + DMXSerial.begin(DMXSPEED, DMXFORMAT, rxPin, txPin);//Begin the Serial port + DMXSerial.write(dmxData, chanSize); + DMXSerial.flush(); + DMXSerial.end();//clear our DMX array, end the Hardware Serial port + } + else if (_READWRITE == _READ)//In a perfect world, this function ends serial communication upon packet completion and attaches RX to a CHANGE interrupt so the start code can be read again + { + if (_startCodeDetected == true) + { + while (DMXSerial.available()) + { + dmxData[currentChannel++] = DMXSerial.read(); + } + if (currentChannel > chanSize) //Set the channel counter back to 0 if we reach the known end size of our packet + { + + portENTER_CRITICAL(&timerMux); + _startCodeDetected = false; + DMXSerial.flush(); + DMXSerial.end(); + portEXIT_CRITICAL(&timerMux); + currentChannel = 0; + } + } + } +} + +// Function to update the DMX bus + +#endif \ No newline at end of file diff --git a/wled00/src/dependencies/dmx/SparkFunDMX.h b/wled00/src/dependencies/dmx/SparkFunDMX.h new file mode 100644 index 00000000..388425b7 --- /dev/null +++ b/wled00/src/dependencies/dmx/SparkFunDMX.h @@ -0,0 +1,38 @@ +/****************************************************************************** +SparkFunDMX.h +Arduino Library for the SparkFun ESP32 LED to DMX Shield +Andy England @ SparkFun Electronics +7/22/2019 + +Development environment specifics: +Arduino IDE 1.6.4 + +This code is released under the [MIT License](http://opensource.org/licenses/MIT). +Please review the LICENSE.md file included with this example. If you have any questions +or concerns with licensing, please contact techsupport@sparkfun.com. +Distributed as-is; no warranty is given. +******************************************************************************/ + +#include + + +#ifndef SparkFunDMX_h +#define SparkFunDMX_h + +// ---- Methods ---- + +class SparkFunDMX { +public: + void initRead(int maxChan); + void initWrite(int maxChan); + uint8_t read(int Channel); + void write(int channel, uint8_t value); + void update(); +private: + uint8_t _startCodeValue = 0xFF; + bool _READ = true; + bool _WRITE = false; + bool _READWRITE; +}; + +#endif \ No newline at end of file diff --git a/wled00/um_manager.cpp b/wled00/um_manager.cpp index caaf100d..b2b16945 100644 --- a/wled00/um_manager.cpp +++ b/wled00/um_manager.cpp @@ -4,8 +4,11 @@ */ //Usermod Manager internals +void UsermodManager::setup() { for (byte i = 0; i < numMods; i++) ums[i]->setup(); } +void UsermodManager::connected() { for (byte i = 0; i < numMods; i++) ums[i]->connected(); } void UsermodManager::loop() { for (byte i = 0; i < numMods; i++) ums[i]->loop(); } void UsermodManager::handleOverlayDraw() { for (byte i = 0; i < numMods; i++) ums[i]->handleOverlayDraw(); } +void UsermodManager::appendConfigData() { for (byte i = 0; i < numMods; i++) ums[i]->appendConfigData(); } bool UsermodManager::handleButton(uint8_t b) { bool overrideIO = false; for (byte i = 0; i < numMods; i++) { @@ -13,10 +16,13 @@ bool UsermodManager::handleButton(uint8_t b) { } return overrideIO; } - -void UsermodManager::setup() { for (byte i = 0; i < numMods; i++) ums[i]->setup(); } -void UsermodManager::connected() { for (byte i = 0; i < numMods; i++) ums[i]->connected(); } - +bool UsermodManager::getUMData(um_data_t **data, uint8_t mod_id) { + for (byte i = 0; i < numMods; i++) { + if (mod_id > 0 && ums[i]->getId() != mod_id) continue; // only get data form requested usermod if provided + if (ums[i]->getUMData(data)) return true; // if usermod does provide data return immediately (only one usermod can povide data at one time) + } + return false; +} void UsermodManager::addToJsonState(JsonObject& obj) { for (byte i = 0; i < numMods; i++) ums[i]->addToJsonState(obj); } void UsermodManager::addToJsonInfo(JsonObject& obj) { for (byte i = 0; i < numMods; i++) ums[i]->addToJsonInfo(obj); } void UsermodManager::readFromJsonState(JsonObject& obj) { for (byte i = 0; i < numMods; i++) ums[i]->readFromJsonState(obj); } @@ -33,6 +39,7 @@ bool UsermodManager::onMqttMessage(char* topic, char* payload) { for (byte i = 0; i < numMods; i++) if (ums[i]->onMqttMessage(topic, payload)) return true; return false; } +void UsermodManager::onUpdateBegin(bool init) { for (byte i = 0; i < numMods; i++) ums[i]->onUpdateBegin(init); } // notify usermods that update is to begin /* * Enables usermods to lookup another Usermod. @@ -49,8 +56,7 @@ Usermod* UsermodManager::lookup(uint16_t mod_id) { bool UsermodManager::add(Usermod* um) { if (numMods >= WLED_MAX_USERMODS || um == nullptr) return false; - ums[numMods] = um; - numMods++; + ums[numMods++] = um; return true; } diff --git a/wled00/usermods_list.cpp b/wled00/usermods_list.cpp index 8b38730d..d63730d4 100644 --- a/wled00/usermods_list.cpp +++ b/wled00/usermods_list.cpp @@ -132,6 +132,10 @@ #include "../usermods/Si7021_MQTT_HA/usermod_si7021_mqtt_ha.h" #endif +#ifdef USERMOD_AUDIOREACTIVE +#include "../usermods/audioreactive/audio_reactive.h" +#endif + void registerUsermods() { /* @@ -251,4 +255,8 @@ void registerUsermods() #ifdef USERMOD_SI7021_MQTT_HA usermods.add(new Si7021_MQTT_HA()); #endif + + #ifdef USERMOD_AUDIOREACTIVE + usermods.add(new AudioReactive()); + #endif } diff --git a/wled00/util.cpp b/wled00/util.cpp index 8b132672..6900c88c 100644 --- a/wled00/util.cpp +++ b/wled00/util.cpp @@ -234,10 +234,10 @@ void releaseJSONBufferLock() uint8_t extractModeName(uint8_t mode, const char *src, char *dest, uint8_t maxLen) { if (src == JSON_mode_names || src == nullptr) { - if (mode < MODE_COUNT) { + if (mode < strip.getModeCount()) { char lineBuffer[256]; //strcpy_P(lineBuffer, (const char*)pgm_read_dword(&(WS2812FX::_modeData[mode]))); - strcpy_P(lineBuffer, WS2812FX::_modeData[mode]); + strcpy_P(lineBuffer, strip.getModeData(mode)); if (strlen(lineBuffer) > 0) { size_t j = 0; for (; j < maxLen; j++) { @@ -286,8 +286,8 @@ uint8_t extractModeSlider(uint8_t mode, uint8_t slider, char *dest, uint8_t maxL { dest[0] = '\0'; // start by clearing buffer - if (mode < MODE_COUNT) { - String lineBuffer = WS2812FX::_modeData[mode]; + if (mode < strip.getModeCount()) { + String lineBuffer = strip.getModeData(mode); if (lineBuffer.length() > 0) { int16_t start = lineBuffer.indexOf('@'); int16_t stop = lineBuffer.indexOf(';', start); diff --git a/wled00/wled.cpp b/wled00/wled.cpp index 9b008b98..2d1f3470 100644 --- a/wled00/wled.cpp +++ b/wled00/wled.cpp @@ -367,7 +367,9 @@ void WLED::setup() sprintf(mqttClientID + 5, "%*s", 6, escapedMac.c_str() + 6); } +#ifdef WLED_ENABLE_ADALIGHT if (Serial.available() > 0 && Serial.peek() == 'I') handleImprovPacket(); +#endif strip.service(); @@ -392,7 +394,10 @@ void WLED::setup() initDMX(); #endif +#ifdef WLED_ENABLE_ADALIGHT if (Serial.available() > 0 && Serial.peek() == 'I') handleImprovPacket(); +#endif + // HTTP server page init initServer(); diff --git a/wled00/wled.h b/wled00/wled.h index 9e74121b..e1bc06fc 100644 --- a/wled00/wled.h +++ b/wled00/wled.h @@ -8,7 +8,7 @@ */ // version code in format yymmddb (b = daily build) -#define VERSION 2206171 +#define VERSION 2206291 //uncomment this if you have a "my_config.h" file you'd like to use //#define WLED_USE_MY_CONFIG @@ -118,7 +118,11 @@ #endif #ifdef WLED_ENABLE_DMX + #ifdef ESP8266 #include "src/dependencies/dmx/ESPDMX.h" + #else //ESP32 + #include "src/dependencies/dmx/SparkFunDMX.h" + #endif #endif #include "src/dependencies/e131/ESPAsyncE131.h" @@ -359,7 +363,11 @@ WLED_GLOBAL bool arlsDisableGammaCorrection _INIT(true); // activate if WLED_GLOBAL bool arlsForceMaxBri _INIT(false); // enable to force max brightness if source has very dark colors that would be black #ifdef WLED_ENABLE_DMX -WLED_GLOBAL DMXESPSerial dmx; + #ifdef ESP8266 + WLED_GLOBAL DMXESPSerial dmx; + #else //ESP32 + WLED_GLOBAL SparkFunDMX dmx; + #endif WLED_GLOBAL uint16_t e131ProxyUniverse _INIT(0); // output this E1.31 (sACN) / ArtNet universe via MAX485 (0 = disabled) #endif WLED_GLOBAL uint16_t e131Universe _INIT(1); // settings for E1.31 (sACN) protocol (only DMX_MODE_MULTIPLE_* can span over consequtive universes) diff --git a/wled00/wled_serial.cpp b/wled00/wled_serial.cpp index 4dafaa54..a73127e0 100644 --- a/wled00/wled_serial.cpp +++ b/wled00/wled_serial.cpp @@ -86,8 +86,8 @@ void handleSerial() Serial.write(0xC9); Serial.write(0xDA); uint16_t used = strip.getLengthTotal(); uint16_t len = used*3; - Serial.write((len << 8) & 0xFF); - Serial.write( len & 0xFF); + Serial.write(highByte(len)); + Serial.write(lowByte(len)); for (uint16_t i=0; i < used; i++) { uint32_t c = strip.getPixelColor(i); Serial.write(qadd8(W(c), R(c))); //R, add white channel to RGB channels as a simple RGBW -> RGB map diff --git a/wled00/wled_server.cpp b/wled00/wled_server.cpp index dbad5f80..86c993be 100644 --- a/wled00/wled_server.cpp +++ b/wled00/wled_server.cpp @@ -284,6 +284,7 @@ void initServer() if(!index){ DEBUG_PRINTLN(F("OTA Update Start")); WLED::instance().disableWatchdog(); + usermods.onUpdateBegin(true); // notify usermods that update is about to begin (some may require task de-init) lastEditTime = millis(); // make sure PIN does not lock during update #ifdef ESP8266 Update.runAsync(true); @@ -297,6 +298,7 @@ void initServer() } else { DEBUG_PRINTLN(F("Update Failed")); WLED::instance().enableWatchdog(); + usermods.onUpdateBegin(false); // notify usermods that update has failed (some may require task init) } } }); diff --git a/wled00/xml.cpp b/wled00/xml.cpp index 2ebeb7ac..b621012f 100644 --- a/wled00/xml.cpp +++ b/wled00/xml.cpp @@ -615,6 +615,7 @@ void getSettingsJS(byte subPage, char* dest) oappend(SET_F("numM=")); oappendi(usermods.getModCount()); oappend(";"); + usermods.appendConfigData(); } if (subPage == 9) // update