1
0
mirror of https://github.com/esphome/esphome.git synced 2025-11-01 23:51:47 +00:00

Compare commits

...

29 Commits

Author SHA1 Message Date
Jesse Hills
9e516efe10 Merge pull request #4074 from esphome/bump-2022.11.2
2022.11.2
2022-11-23 16:06:34 +13:00
Jesse Hills
366e29439e Bump version to 2022.11.2 2022-11-23 13:04:21 +13:00
J. Nick Koston
1c9c700d7f Avoid creating a new espbt::ESPBTUUID each loop when registering for notify (#4069) 2022-11-23 13:04:21 +13:00
J. Nick Koston
b2e6b9d31f Avoid 128bit uuid loop for 16/32 bit uuids (#4068) 2022-11-23 13:04:21 +13:00
Jesse Hills
7623f63846 rp2040_pwm frequency is per pair of pins (#4061) 2022-11-23 13:04:21 +13:00
Jesse Hills
2bfaf9dce3 Update web_server index (#4060) 2022-11-23 13:04:20 +13:00
Jesse Hills
5c2c1560bb Fix rp2040 pwm to use pico-sdk, not mbed (#4059) 2022-11-23 13:04:20 +13:00
Jesse Hills
f7096ab78e Merge pull request #4041 from esphome/bump-2022.11.1
2022.11.1
2022-11-17 15:40:51 +13:00
Jesse Hills
98f8feb625 Bump version to 2022.11.1 2022-11-17 13:52:15 +13:00
Jesse Hills
9944ca414e Support ADC on RP2040 (#4040) 2022-11-17 13:52:15 +13:00
Jesse Hills
70f1c71a9f Merge pull request #4038 from esphome/bump-2022.11.0
2022.11.0
2022-11-17 08:05:52 +13:00
John Moxley
816df5ad47 bump nginx-light 1.18.0-6.1+deb11u2 to 1.18.0-6.1+deb11u3 (#4034)
fixes https://github.com/esphome/issues/issues/3793
2022-11-17 07:45:26 +13:00
Jesse Hills
7e88eea532 Bump version to 2022.11.0 2022-11-17 07:17:42 +13:00
Jesse Hills
d1cdfd3b72 Merge branch 'beta' into bump-2022.11.0 2022-11-17 07:17:41 +13:00
Jesse Hills
d6a03d48f5 Merge pull request #4037 from esphome/bump-2022.11.0b6
2022.11.0b6
2022-11-16 17:26:45 +13:00
Jesse Hills
d453b42b1a Bump version to 2022.11.0b6 2022-11-16 15:48:50 +13:00
Jesse Hills
7c19b961e2 Always save user wifi credentials if non in config (#4036) 2022-11-16 15:48:50 +13:00
Jesse Hills
d924702825 Merge pull request #4035 from esphome/bump-2022.11.0b5
2022.11.0b5
2022-11-16 15:45:53 +13:00
Jesse Hills
e8784ba383 Bump version to 2022.11.0b5 2022-11-16 12:30:41 +13:00
2mikrobi
e3a454d1a6 Update_interval less that 1 second in QMC5883L integration (#4031)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2022-11-16 12:30:41 +13:00
Jesse Hills
fd8b9fb028 Merge pull request #3975 from esphome/bump-2022.10.2
2022.10.2
2022-11-02 19:01:54 +13:00
Jesse Hills
bdf1813b3a Bump version to 2022.10.2 2022-11-01 12:38:54 +13:00
Jesse Hills
45b6c93f5f Fix bluetooth_proxy not connecting (#3967) 2022-11-01 12:38:54 +13:00
Jesse Hills
6124531479 Merge pull request #3944 from esphome/bump-2022.10.1
2022.10.1
2022-10-26 12:49:08 +13:00
Jesse Hills
b8549d323c Bump version to 2022.10.1 2022-10-26 12:08:19 +13:00
Franck Nijhof
01adece673 Add wind_speed sensor device class (#3941) 2022-10-26 12:08:19 +13:00
NP v/d Spek
0220934e4c Fixed touch release issue using the interrupt pin (#3925)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2022-10-26 12:08:19 +13:00
Franck Nijhof
ca09693efa Add water & precipitation_intensity sensor device classes (#3940) 2022-10-26 12:08:19 +13:00
Jesse Hills
e96d7483b3 Update bluetooth proxy limit as soon as connection requested (#3935) 2022-10-26 12:08:18 +13:00
14 changed files with 296 additions and 236 deletions

View File

@@ -94,7 +94,7 @@ RUN \
apt-get update \
# Use pinned versions so that we get updates with build caching
&& apt-get install -y --no-install-recommends \
nginx-light=1.18.0-6.1+deb11u2 \
nginx-light=1.18.0-6.1+deb11u3 \
&& rm -rf \
/tmp/* \
/var/{cache,log}/* \

View File

@@ -11,6 +11,10 @@ ADC_MODE(ADC_VCC)
#endif
#endif
#ifdef USE_RP2040
#include <hardware/adc.h>
#endif
namespace esphome {
namespace adc {
@@ -32,9 +36,13 @@ static const int ADC_MAX = (1 << SOC_ADC_RTC_MAX_BITWIDTH) - 1; // 4095 (12 b
static const int ADC_HALF = (1 << SOC_ADC_RTC_MAX_BITWIDTH) >> 1; // 2048 (12 bit) or 4096 (13 bit)
#endif
void ADCSensor::setup() {
#ifdef USE_RP2040
extern "C"
#endif
void
ADCSensor::setup() {
ESP_LOGCONFIG(TAG, "Setting up ADC '%s'...", this->get_name().c_str());
#ifndef USE_ADC_SENSOR_VCC
#if !defined(USE_ADC_SENSOR_VCC) && !defined(USE_RP2040)
pin_->setup();
#endif
@@ -63,6 +71,16 @@ void ADCSensor::setup() {
}
#endif // USE_ESP32
#ifdef USE_RP2040
static bool initialized = false;
if (!initialized) {
adc_init();
initialized = true;
}
#endif
ESP_LOGCONFIG(TAG, "ADC '%s' setup finished!", this->get_name().c_str());
}
void ADCSensor::dump_config() {
@@ -98,6 +116,12 @@ void ADCSensor::dump_config() {
}
}
#endif // USE_ESP32
#ifdef USE_RP2040
if (this->is_temperature_)
ESP_LOGCONFIG(TAG, " Pin: Temperature");
else
LOG_PIN(" Pin: ", pin_);
#endif
LOG_UPDATE_INTERVAL(this);
}
@@ -175,6 +199,29 @@ float ADCSensor::sample() {
}
#endif // USE_ESP32
#ifdef USE_RP2040
float ADCSensor::sample() {
if (this->is_temperature_) {
adc_set_temp_sensor_enabled(true);
delay(1);
adc_select_input(4);
} else {
uint8_t pin = this->pin_->get_pin();
adc_gpio_init(pin);
adc_select_input(pin - 26);
}
int raw = adc_read();
if (this->is_temperature_) {
adc_set_temp_sensor_enabled(false);
}
if (output_raw_) {
return raw;
}
return raw * 3.3f / 4096.0f;
}
#endif
#ifdef USE_ESP8266
std::string ADCSensor::unique_id() { return get_mac_address() + "-adc"; }
#endif

View File

@@ -38,10 +38,18 @@ class ADCSensor : public sensor::Sensor, public PollingComponent, public voltage
std::string unique_id() override;
#endif
#ifdef USE_RP2040
void set_is_temperature() { is_temperature_ = true; }
#endif
protected:
InternalGPIOPin *pin_;
bool output_raw_{false};
#ifdef USE_RP2040
bool is_temperature_{false};
#endif
#ifdef USE_ESP32
adc_atten_t attenuation_{ADC_ATTEN_DB_0};
adc1_channel_t channel_{};

View File

@@ -94,6 +94,9 @@ def validate_adc_pin(value):
if str(value).upper() == "VCC":
return cv.only_on_esp8266("VCC")
if str(value).upper() == "TEMPERATURE":
return cv.only_on_rp2040("TEMPERATURE")
if CORE.is_esp32:
value = pins.internal_gpio_input_pin_number(value)
variant = get_esp32_variant()
@@ -117,6 +120,12 @@ def validate_adc_pin(value):
{CONF_ANALOG: True, CONF_INPUT: True}, internal=True
)(value)
if CORE.is_rp2040:
value = pins.internal_gpio_input_pin_number(value)
if value not in (26, 27, 28, 29):
raise cv.Invalid("RP2040: Only pins 26, 27, 28 and 29 support ADC.")
return pins.internal_gpio_input_pin_schema(value)
raise NotImplementedError
@@ -160,6 +169,8 @@ async def to_code(config):
if config[CONF_PIN] == "VCC":
cg.add_define("USE_ADC_SENSOR_VCC")
elif config[CONF_PIN] == "TEMPERATURE":
cg.add(var.set_is_temperature())
else:
pin = await cg.gpio_pin_expression(config[CONF_PIN])
cg.add(var.set_pin(pin))

View File

@@ -1,9 +1,8 @@
import esphome.codegen as cg
import esphome.config_validation as cv
import esphome.final_validate as fv
from esphome.components import web_server_base
from esphome.components.web_server_base import CONF_WEB_SERVER_BASE_ID
from esphome.const import CONF_ID, CONF_NETWORKS, CONF_PASSWORD, CONF_SSID, CONF_WIFI
from esphome.const import CONF_ID
from esphome.core import coroutine_with_priority, CORE
AUTO_LOAD = ["web_server_base"]
@@ -13,7 +12,6 @@ CODEOWNERS = ["@OttoWinter"]
captive_portal_ns = cg.esphome_ns.namespace("captive_portal")
CaptivePortal = captive_portal_ns.class_("CaptivePortal", cg.Component)
CONF_KEEP_USER_CREDENTIALS = "keep_user_credentials"
CONFIG_SCHEMA = cv.All(
cv.Schema(
{
@@ -21,7 +19,6 @@ CONFIG_SCHEMA = cv.All(
cv.GenerateID(CONF_WEB_SERVER_BASE_ID): cv.use_id(
web_server_base.WebServerBase
),
cv.Optional(CONF_KEEP_USER_CREDENTIALS, default=False): cv.boolean,
}
).extend(cv.COMPONENT_SCHEMA),
cv.only_with_arduino,
@@ -29,22 +26,6 @@ CONFIG_SCHEMA = cv.All(
)
def validate_wifi(config):
wifi_conf = fv.full_config.get()[CONF_WIFI]
if config.get(CONF_KEEP_USER_CREDENTIALS, False) and (
CONF_SSID in wifi_conf
or CONF_PASSWORD in wifi_conf
or CONF_NETWORKS in wifi_conf
):
raise cv.Invalid(
f"WiFi credentials cannot be used together with {CONF_KEEP_USER_CREDENTIALS}"
)
return config
FINAL_VALIDATE_SCHEMA = validate_wifi
@coroutine_with_priority(64.0)
async def to_code(config):
paren = await cg.get_variable(config[CONF_WEB_SERVER_BASE_ID])
@@ -58,6 +39,3 @@ async def to_code(config):
cg.add_library("WiFi", None)
if CORE.is_esp8266:
cg.add_library("DNSServer", None)
if config.get(CONF_KEEP_USER_CREDENTIALS, False):
cg.add_define("USE_CAPTIVE_PORTAL_KEEP_USER_CREDENTIALS")

View File

@@ -299,7 +299,7 @@ BLEDescriptor *BLEClientBase::get_config_descriptor(uint16_t handle) {
auto *chr = this->get_characteristic(handle);
if (chr != nullptr) {
for (auto &desc : chr->descriptors) {
if (desc->uuid == espbt::ESPBTUUID::from_uint16(0x2902))
if (desc->uuid.get_uuid().uuid.uuid16 == 0x2902)
return desc;
}
}

View File

@@ -449,10 +449,13 @@ ESPBTUUID ESPBTUUID::from_raw(const std::string &data) {
ESPBTUUID ESPBTUUID::from_uuid(esp_bt_uuid_t uuid) {
ESPBTUUID ret;
ret.uuid_.len = uuid.len;
ret.uuid_.uuid.uuid16 = uuid.uuid.uuid16;
ret.uuid_.uuid.uuid32 = uuid.uuid.uuid32;
for (size_t i = 0; i < ESP_UUID_LEN_128; i++)
ret.uuid_.uuid.uuid128[i] = uuid.uuid.uuid128[i];
if (uuid.len == ESP_UUID_LEN_16) {
ret.uuid_.uuid.uuid16 = uuid.uuid.uuid16;
} else if (uuid.len == ESP_UUID_LEN_32) {
ret.uuid_.uuid.uuid32 = uuid.uuid.uuid32;
} else if (uuid.len == ESP_UUID_LEN_128) {
memcpy(ret.uuid_.uuid.uuid128, uuid.uuid.uuid128, ESP_UUID_LEN_128);
}
return ret;
}
ESPBTUUID ESPBTUUID::as_128bit() const {

View File

@@ -103,7 +103,7 @@ CONFIG_SCHEMA = (
def auto_data_rate(config):
interval_sec = config[CONF_UPDATE_INTERVAL].seconds
interval_sec = config[CONF_UPDATE_INTERVAL].total_milliseconds / 1000
interval_hz = 1.0 / interval_sec
for datarate in sorted(QMC5883LDatarates.keys()):
if float(datarate) >= interval_hz:

View File

@@ -6,7 +6,9 @@
#include "esphome/core/log.h"
#include "esphome/core/macros.h"
#include <PinNames.h>
#include <hardware/clocks.h>
#include <hardware/gpio.h>
#include <hardware/pwm.h>
namespace esphome {
namespace rp2040_pwm {
@@ -15,10 +17,17 @@ static const char *const TAG = "rp2040_pwm";
void RP2040PWM::setup() {
ESP_LOGCONFIG(TAG, "Setting up RP2040 PWM Output...");
this->pin_->setup();
this->pwm_ = new mbed::PwmOut((PinName) this->pin_->get_pin());
this->turn_off();
this->setup_pwm_();
}
void RP2040PWM::setup_pwm_() {
pwm_config config = pwm_get_default_config();
pwm_config_set_clkdiv(&config, clock_get_hz(clk_sys) / (255.0f * this->frequency_));
pwm_config_set_wrap(&config, 254);
pwm_init(pwm_gpio_to_slice_num(this->pin_->get_pin()), &config, true);
}
void RP2040PWM::dump_config() {
ESP_LOGCONFIG(TAG, "RP2040 PWM:");
LOG_PIN(" Pin: ", this->pin_);
@@ -33,10 +42,13 @@ void HOT RP2040PWM::write_state(float state) {
state = 1.0f - state;
}
auto total_time_us = static_cast<uint32_t>(roundf(1e6f / this->frequency_));
if (this->frequency_changed_) {
this->setup_pwm_();
this->frequency_changed_ = false;
}
this->pwm_->period_us(total_time_us);
this->pwm_->write(state);
gpio_set_function(this->pin_->get_pin(), GPIO_FUNC_PWM);
pwm_set_gpio_level(this->pin_->get_pin(), state * 255.0f);
}
} // namespace rp2040_pwm

View File

@@ -7,8 +7,6 @@
#include "esphome/core/component.h"
#include "esphome/core/hal.h"
#include "drivers/PwmOut.h"
namespace esphome {
namespace rp2040_pwm {
@@ -19,6 +17,7 @@ class RP2040PWM : public output::FloatOutput, public Component {
/// Dynamically update frequency
void update_frequency(float frequency) override {
this->set_frequency(frequency);
this->frequency_changed_ = true;
this->write_state(this->last_output_);
}
@@ -31,11 +30,13 @@ class RP2040PWM : public output::FloatOutput, public Component {
protected:
void write_state(float state) override;
void setup_pwm_();
InternalGPIOPin *pin_;
mbed::PwmOut *pwm_;
float frequency_{1000.0};
/// Cache last output level for dynamic frequency updating
float last_output_{0.0};
bool frequency_changed_{false};
};
template<typename... Ts> class SetFrequencyAction : public Action<Ts...> {

View File

@@ -395,194 +395,196 @@ const uint8_t INDEX_GZ[] PROGMEM = {
0x5e, 0x6e, 0x73, 0x19, 0x48, 0x16, 0xa1, 0x79, 0x8d, 0x2a, 0xa5, 0x48, 0xda, 0x93, 0x28, 0x5d, 0xd7, 0x14, 0xa0,
0x9f, 0x33, 0x36, 0xf6, 0x6c, 0x0b, 0xe4, 0xab, 0x78, 0xfe, 0x98, 0xb0, 0x53, 0x26, 0x3f, 0xcc, 0xa2, 0x07, 0xd1,
0x95, 0x23, 0xb0, 0x00, 0xb8, 0xbc, 0x33, 0x2a, 0xd9, 0x53, 0xe1, 0x28, 0x29, 0x51, 0x47, 0xc4, 0xb3, 0x8d, 0x41,
0x9b, 0x73, 0xb4, 0xeb, 0xc3, 0x7a, 0xa0, 0x93, 0x6c, 0x5b, 0xc0, 0x4b, 0x66, 0xe3, 0xcd, 0xc8, 0xc1, 0x00, 0x6c,
0x32, 0x81, 0xed, 0xa2, 0x02, 0xd9, 0x5a, 0x3e, 0x08, 0xa8, 0xc0, 0x07, 0xf6, 0x6c, 0xd1, 0xc2, 0xae, 0xda, 0xea,
0x27, 0x49, 0x1c, 0xd0, 0x9f, 0x9f, 0xd6, 0xcc, 0x05, 0xdc, 0xb1, 0x21, 0x02, 0xbb, 0x0d, 0x99, 0x67, 0xff, 0xeb,
0x3f, 0xfd, 0xaf, 0xff, 0x06, 0x03, 0x53, 0x3f, 0xb7, 0xb4, 0xae, 0x6e, 0xf5, 0x3f, 0xa1, 0xd5, 0x22, 0xbd, 0xa1,
0xdd, 0x5f, 0xff, 0xe1, 0xbf, 0x43, 0x33, 0xba, 0x00, 0x04, 0xb2, 0x84, 0x20, 0x1a, 0xa1, 0xcd, 0xf5, 0x59, 0x20,
0xd5, 0x06, 0xb9, 0x72, 0xa6, 0x7f, 0x44, 0xb0, 0x0b, 0x9e, 0xcd, 0xaf, 0x05, 0x07, 0xa1, 0x1e, 0x25, 0x59, 0xc1,
0x34, 0x3c, 0x42, 0xfe, 0x7e, 0x1e, 0x40, 0x34, 0xd7, 0x1c, 0xb8, 0xbc, 0xb0, 0xf4, 0x38, 0x62, 0x79, 0xd6, 0x8d,
0xd3, 0x58, 0xbd, 0x82, 0x71, 0x42, 0x87, 0xc2, 0x18, 0xb0, 0x5e, 0xe2, 0x09, 0x1e, 0x48, 0x20, 0xb8, 0xf5, 0x8f,
0x8a, 0xad, 0x1f, 0x4c, 0xf3, 0xa7, 0x18, 0x4b, 0x44, 0x6e, 0xd4, 0x08, 0xf0, 0x13, 0x84, 0xd6, 0x47, 0xfd, 0x1c,
0x9d, 0xeb, 0x67, 0x14, 0x6c, 0x62, 0x02, 0xd0, 0x4f, 0x33, 0x34, 0x3d, 0xcc, 0x19, 0x44, 0xd6, 0x41, 0xe5, 0xb6,
0x1a, 0xc9, 0x2b, 0x42, 0x78, 0x7d, 0xc4, 0x1c, 0x4f, 0xbc, 0xd1, 0xb3, 0xc8, 0xd9, 0xc7, 0x24, 0x3b, 0xc3, 0x58,
0x18, 0x12, 0xe9, 0xaa, 0xfa, 0xf2, 0x5f, 0xfe, 0xd9, 0xf7, 0xff, 0xe5, 0x9f, 0xaf, 0x68, 0x30, 0x85, 0x7d, 0x00,
0xc6, 0x2b, 0x0f, 0x35, 0x9d, 0x1b, 0x68, 0xad, 0x1f, 0x14, 0xf1, 0x5c, 0x5f, 0x23, 0x11, 0xc7, 0x52, 0x89, 0xb7,
0x7c, 0x24, 0xb4, 0x35, 0x53, 0xdc, 0x3c, 0x0b, 0x42, 0x76, 0xc5, 0x34, 0x58, 0x75, 0xc3, 0x3c, 0x47, 0x6e, 0x70,
0x0d, 0x5d, 0x3e, 0x13, 0xe3, 0xf5, 0x60, 0xdc, 0x08, 0x81, 0x07, 0xd2, 0x5f, 0xe8, 0x87, 0x27, 0x42, 0xba, 0x07,
0x62, 0x19, 0xa4, 0xac, 0xaf, 0x01, 0xe4, 0x59, 0x07, 0x34, 0x01, 0x35, 0x89, 0x2b, 0xdd, 0x4a, 0xe6, 0xc9, 0x71,
0xde, 0x7f, 0x85, 0x97, 0xf8, 0x2c, 0xec, 0x8d, 0x9a, 0xb5, 0x20, 0x43, 0x80, 0x93, 0x21, 0x20, 0x35, 0x90, 0xa9,
0x83, 0xd1, 0xa1, 0xc9, 0xd6, 0xeb, 0xda, 0x8f, 0xd8, 0xbd, 0xa6, 0x2d, 0xb9, 0xd4, 0x96, 0xb1, 0xb4, 0x6e, 0xa5,
0xb6, 0xc4, 0x4f, 0xb5, 0x34, 0xb4, 0x65, 0x7c, 0xa5, 0xb6, 0x44, 0xca, 0x0d, 0x70, 0xe4, 0xd0, 0xde, 0xc4, 0xa8,
0x8d, 0xa1, 0x9b, 0x39, 0xda, 0x25, 0xe0, 0xaa, 0x8f, 0x3e, 0x49, 0xb3, 0x84, 0x10, 0xc0, 0xb0, 0x85, 0x36, 0xbe,
0x04, 0x06, 0xa0, 0x62, 0x8f, 0x4a, 0xbd, 0xe9, 0xf1, 0xd1, 0x98, 0x80, 0xbb, 0xcb, 0x09, 0x43, 0x91, 0x0c, 0x6b,
0xf6, 0x35, 0x2b, 0xb7, 0x70, 0x1c, 0xb1, 0x61, 0xc4, 0x33, 0x60, 0xb6, 0x85, 0x83, 0x1d, 0x79, 0x4b, 0x11, 0x04,
0x0b, 0xec, 0xb7, 0x6f, 0xf6, 0x0f, 0x6c, 0xef, 0x38, 0x1b, 0x5f, 0x04, 0x36, 0x78, 0x19, 0x60, 0x7d, 0xb8, 0x3e,
0x9f, 0xb2, 0xd4, 0x51, 0x76, 0x7e, 0x96, 0x80, 0x0b, 0x95, 0x9d, 0x88, 0x6f, 0x36, 0x34, 0x03, 0xf8, 0x40, 0x58,
0xfa, 0xa8, 0x63, 0x7f, 0x97, 0x8b, 0xef, 0x9d, 0xf2, 0x1c, 0x1f, 0xfb, 0x98, 0xc2, 0xb0, 0xbb, 0x05, 0x0f, 0xf8,
0xb2, 0x8f, 0xfa, 0x48, 0xbf, 0x09, 0x60, 0x0b, 0xf1, 0xbe, 0x85, 0xed, 0xb7, 0x54, 0x5f, 0x84, 0xa2, 0x2f, 0xb9,
0x4d, 0x9b, 0xe2, 0x95, 0x2d, 0x47, 0x63, 0x8f, 0xd1, 0x54, 0x23, 0x53, 0x1c, 0x48, 0xc2, 0xc7, 0xba, 0x44, 0xa8,
0x7f, 0xa3, 0x88, 0x46, 0xa9, 0x94, 0xb5, 0xac, 0xc2, 0x09, 0xc9, 0xbc, 0x13, 0x93, 0xc1, 0x4f, 0x02, 0xff, 0xc8,
0xfc, 0x3e, 0x99, 0xf8, 0x94, 0x90, 0x46, 0xf2, 0xf0, 0x2f, 0xde, 0x19, 0xf3, 0x2e, 0x8e, 0xa8, 0xa5, 0x72, 0x86,
0x31, 0x4a, 0x83, 0x41, 0x83, 0xb6, 0x8a, 0x7a, 0x80, 0x7d, 0x92, 0x44, 0xf3, 0x82, 0x05, 0xea, 0x41, 0xfa, 0xc5,
0xe8, 0x5e, 0xaf, 0x06, 0x22, 0x4c, 0x3b, 0xa6, 0xe4, 0xd3, 0xa5, 0xe9, 0x38, 0x3f, 0x00, 0xc7, 0x19, 0x93, 0xfe,
0x5b, 0x11, 0x68, 0xdf, 0x34, 0x48, 0xd8, 0x84, 0x97, 0x1c, 0x6f, 0x95, 0x2f, 0x55, 0xa4, 0xc2, 0xef, 0xee, 0x80,
0x33, 0x6d, 0xf9, 0xf8, 0xff, 0x4d, 0x63, 0x8f, 0x83, 0x14, 0x9c, 0x5f, 0xba, 0x66, 0x82, 0x57, 0xf8, 0x00, 0x22,
0xf3, 0x7d, 0x69, 0x4c, 0x34, 0x62, 0x18, 0xc5, 0x29, 0x79, 0x0e, 0x72, 0xdb, 0xe3, 0xb9, 0xd9, 0x0e, 0xe4, 0xed,
0x4a, 0x28, 0x67, 0x35, 0x98, 0xb0, 0xed, 0x4a, 0xbf, 0x60, 0xb5, 0xb1, 0x8a, 0xc8, 0xd4, 0xdf, 0x56, 0x28, 0x64,
0xc4, 0x8e, 0x4a, 0xa1, 0x6a, 0x96, 0xa2, 0x87, 0x89, 0xd3, 0x6a, 0x54, 0xe9, 0x46, 0x4b, 0xb1, 0xa4, 0x6d, 0x7f,
0x48, 0xdb, 0x9e, 0xc4, 0xd8, 0x70, 0x29, 0xe6, 0x1e, 0x45, 0xc9, 0xc8, 0x41, 0x00, 0xac, 0x96, 0xf5, 0x08, 0xa8,
0xe9, 0xaa, 0xc8, 0x86, 0xff, 0x10, 0x89, 0x5b, 0x0a, 0xa1, 0xb7, 0x86, 0x4a, 0x47, 0xc3, 0xb2, 0xec, 0x5d, 0x30,
0xe7, 0xf0, 0x37, 0x79, 0x49, 0x41, 0xdc, 0x4d, 0xd5, 0xdf, 0xf7, 0x6b, 0x97, 0xee, 0x10, 0x9c, 0x79, 0xe3, 0xab,
0x69, 0xb6, 0xe2, 0x68, 0xdb, 0xeb, 0x92, 0x9f, 0x8f, 0xbd, 0x5f, 0x39, 0x36, 0x1a, 0x97, 0x54, 0x75, 0xd1, 0x22,
0x0e, 0xb3, 0xa9, 0xa3, 0x88, 0xb2, 0x7f, 0x73, 0x55, 0xb0, 0xe4, 0xdb, 0x9b, 0x83, 0x25, 0xfc, 0x96, 0xc1, 0x92,
0x6f, 0xff, 0xe0, 0x60, 0xc9, 0x37, 0x66, 0xb0, 0x04, 0x65, 0xe5, 0x8b, 0xcf, 0x89, 0x68, 0xe4, 0xd9, 0x59, 0x11,
0x76, 0xe4, 0xe1, 0x3c, 0x88, 0x9d, 0xff, 0x98, 0xd0, 0x06, 0x4c, 0xd4, 0x08, 0x6c, 0x50, 0x24, 0x43, 0xe4, 0x13,
0x82, 0x84, 0x97, 0x71, 0x84, 0xb6, 0x4e, 0xdc, 0x6b, 0xdd, 0x57, 0x37, 0x95, 0xc0, 0x6b, 0x73, 0x75, 0x38, 0xa7,
0xab, 0x22, 0x0d, 0x01, 0x7d, 0x6a, 0x54, 0x77, 0xec, 0x6e, 0xaa, 0x8c, 0x31, 0x73, 0x84, 0x9e, 0x3a, 0x08, 0x10,
0x1c, 0xb4, 0xb4, 0xff, 0xf3, 0x61, 0xa7, 0xb7, 0xdd, 0x99, 0x41, 0x6f, 0xd0, 0xa5, 0xf0, 0xd6, 0xee, 0x6d, 0x6f,
0xe3, 0xdb, 0x99, 0x7a, 0xeb, 0xe2, 0x5b, 0xac, 0xde, 0x76, 0xf0, 0x6d, 0xa4, 0xde, 0x1e, 0xe0, 0xdb, 0x58, 0xbd,
0x3d, 0xc4, 0xb7, 0x53, 0xbb, 0x3c, 0xe4, 0x1a, 0xb8, 0x87, 0xc0, 0x58, 0x64, 0xf0, 0x07, 0xaa, 0x0c, 0xf6, 0x2d,
0xde, 0xf0, 0x8b, 0x4e, 0x82, 0xd8, 0x13, 0x8e, 0x51, 0x90, 0x7b, 0x67, 0x20, 0xfc, 0x03, 0x4a, 0x68, 0x7b, 0x8a,
0x9f, 0x7a, 0x00, 0x3f, 0xe2, 0x20, 0x9e, 0x31, 0xf5, 0xcd, 0x5b, 0x85, 0x35, 0xd8, 0x92, 0x87, 0xed, 0x61, 0xd9,
0xd3, 0xeb, 0x24, 0x02, 0x29, 0x2a, 0x61, 0x80, 0x56, 0xae, 0xaa, 0x13, 0xd3, 0xb5, 0xf4, 0x0a, 0x5f, 0xa1, 0x4a,
0x0c, 0x57, 0x7a, 0x02, 0x36, 0x52, 0xeb, 0x1c, 0x9c, 0xaf, 0xb5, 0xea, 0x05, 0x21, 0xd2, 0x0a, 0x85, 0x70, 0xd2,
0x6f, 0x07, 0xd1, 0x89, 0x7e, 0x7e, 0x05, 0x46, 0x6f, 0x74, 0xc2, 0x6e, 0x52, 0x35, 0x04, 0xa2, 0xa9, 0x66, 0x14,
0x10, 0x64, 0x15, 0xc1, 0xd2, 0xa0, 0x13, 0x28, 0xd5, 0x0c, 0x52, 0xa7, 0xae, 0x78, 0x68, 0xfa, 0x7a, 0x11, 0x50,
0xb4, 0x2a, 0xd8, 0x05, 0xdb, 0x9b, 0x4a, 0x05, 0x85, 0xa1, 0x02, 0x0b, 0xae, 0xd5, 0x46, 0xda, 0x4f, 0xbe, 0x52,
0x27, 0x59, 0x4a, 0x1d, 0x99, 0x07, 0x08, 0xfa, 0xf4, 0x60, 0x55, 0x42, 0x7e, 0xd1, 0x19, 0xe1, 0x1f, 0x29, 0x7f,
0xbf, 0x98, 0x4c, 0x26, 0xd7, 0xaa, 0xa7, 0x2f, 0xc6, 0x13, 0xd6, 0x65, 0x3b, 0x3d, 0x0c, 0x2e, 0xb7, 0xa4, 0x44,
0xec, 0x94, 0x44, 0xbb, 0xe5, 0xed, 0x1a, 0xa3, 0xf0, 0x04, 0x8d, 0x75, 0x7b, 0x3d, 0x56, 0x02, 0x55, 0x96, 0x20,
0xbf, 0x4f, 0xe2, 0x34, 0x68, 0x97, 0xfe, 0xa9, 0x14, 0xfc, 0x5f, 0x3c, 0x7a, 0xf4, 0xa8, 0xf4, 0xc7, 0xea, 0xad,
0x3d, 0x1e, 0x97, 0xfe, 0x68, 0xa9, 0xd1, 0x68, 0xb7, 0x27, 0x93, 0xd2, 0x8f, 0x55, 0xc1, 0x76, 0x77, 0x34, 0xde,
0xee, 0x96, 0xfe, 0x99, 0xd1, 0xa2, 0xf4, 0x99, 0x7c, 0xcb, 0xd9, 0xb8, 0x16, 0xa1, 0x7e, 0xd8, 0x86, 0x4a, 0xc1,
0x68, 0x4b, 0x74, 0xf4, 0xc4, 0x63, 0x10, 0x2d, 0x78, 0x06, 0x36, 0x16, 0xf0, 0x36, 0x08, 0xe8, 0x89, 0x14, 0xef,
0xe2, 0x93, 0xb2, 0x28, 0xd4, 0x5f, 0x98, 0x32, 0x1d, 0x99, 0x99, 0xe4, 0x39, 0x27, 0x55, 0xd0, 0xac, 0x46, 0xce,
0xa2, 0xea, 0x17, 0x21, 0xaf, 0xa4, 0x3d, 0x4a, 0x1b, 0x6c, 0x29, 0x64, 0xfc, 0x8f, 0x57, 0xc9, 0xf8, 0x1f, 0x6e,
0x96, 0xf1, 0xc7, 0xb7, 0x13, 0xf1, 0x3f, 0xfc, 0xc1, 0x22, 0xfe, 0x47, 0x53, 0xc4, 0x0b, 0x21, 0xb6, 0x07, 0x56,
0x2c, 0x99, 0xaf, 0xc7, 0xd9, 0x79, 0x0b, 0xb7, 0x44, 0x6e, 0x93, 0xf4, 0xdc, 0xb8, 0x95, 0xf0, 0x5f, 0x93, 0x72,
0xa4, 0x06, 0x33, 0xbe, 0x4f, 0xcb, 0xb3, 0x93, 0x93, 0x84, 0x29, 0x19, 0x6f, 0x54, 0x90, 0x65, 0xfc, 0x26, 0x0d,
0xed, 0x37, 0xe0, 0xa4, 0x1a, 0x25, 0x93, 0x09, 0x14, 0x4d, 0x26, 0xb6, 0x4a, 0xc9, 0x05, 0x79, 0x46, 0xad, 0x5e,
0xd7, 0x4a, 0xa8, 0xd5, 0x57, 0x5f, 0x99, 0x65, 0x66, 0x81, 0x8c, 0x46, 0x99, 0xf6, 0x84, 0xac, 0x19, 0xc7, 0x05,
0xee, 0xc1, 0xea, 0x7b, 0xba, 0x68, 0xb2, 0xcc, 0x40, 0xa9, 0xc4, 0x23, 0xfc, 0x50, 0x4b, 0xf3, 0xdb, 0x25, 0x22,
0x7d, 0x7a, 0x15, 0xb9, 0xea, 0x88, 0xd5, 0xf8, 0x4c, 0x5e, 0x75, 0xac, 0x0a, 0x8b, 0x2f, 0x53, 0x28, 0x1e, 0x5f,
0xbc, 0x18, 0x3b, 0x7b, 0x60, 0xca, 0xc6, 0xc5, 0x9b, 0xb4, 0x91, 0x9a, 0x26, 0xc0, 0x0e, 0x43, 0x13, 0xd3, 0x52,
0x10, 0xac, 0xca, 0xd1, 0xaf, 0x2a, 0x7b, 0x46, 0x27, 0x99, 0xc1, 0x84, 0x43, 0x0e, 0x6a, 0x64, 0x09, 0xcc, 0xc1,
0xa4, 0x2e, 0xa4, 0xef, 0xa5, 0x8b, 0xbc, 0x8e, 0x53, 0xf9, 0x61, 0x6d, 0x3a, 0x15, 0x58, 0x4a, 0xfd, 0x21, 0x4f,
0xfc, 0xab, 0x9e, 0x18, 0x88, 0x17, 0x33, 0x8c, 0x4b, 0x15, 0x7c, 0x07, 0xc2, 0xcd, 0xf1, 0x2b, 0x40, 0x62, 0x08,
0x15, 0xe3, 0xae, 0xa8, 0x77, 0x79, 0x69, 0x7e, 0x8c, 0xb2, 0xf6, 0xe1, 0xc2, 0x06, 0x0f, 0x30, 0xfc, 0x8a, 0x2c,
0x6a, 0x83, 0x6c, 0xc1, 0x1d, 0x87, 0x5a, 0x39, 0x6e, 0xe9, 0xed, 0xb4, 0xdb, 0xa0, 0x62, 0x7c, 0xf1, 0xa9, 0x21,
0x47, 0x77, 0x96, 0xf8, 0x5e, 0x15, 0x52, 0x5f, 0xf9, 0xf4, 0x97, 0x26, 0x31, 0x7e, 0x9b, 0x44, 0x20, 0x6a, 0x5c,
0x4f, 0x51, 0x8b, 0xd8, 0x7c, 0xf7, 0x95, 0x1b, 0x67, 0x10, 0xd6, 0x5d, 0xc7, 0xc1, 0x32, 0x56, 0x56, 0x2f, 0xc4,
0xb6, 0xc2, 0xaa, 0x59, 0x05, 0xe7, 0x06, 0x9d, 0x59, 0x9c, 0x19, 0xb1, 0xe7, 0xda, 0x36, 0x28, 0x55, 0xf0, 0x59,
0x44, 0x90, 0xf7, 0x30, 0x4e, 0x2a, 0x7c, 0x60, 0x05, 0x74, 0xdd, 0xfb, 0x34, 0x20, 0x47, 0xbf, 0x54, 0x33, 0xba,
0xaa, 0x52, 0x05, 0xa5, 0x79, 0x7a, 0x60, 0x20, 0x43, 0x41, 0x60, 0x58, 0xe3, 0x54, 0xe8, 0x2d, 0x98, 0x86, 0x04,
0xb0, 0x76, 0xca, 0xd0, 0x33, 0xb1, 0x15, 0xd8, 0x42, 0x5a, 0x80, 0xd2, 0xc3, 0x0e, 0x7d, 0xab, 0x06, 0x7a, 0xba,
0x1a, 0x3b, 0xbe, 0xce, 0x4f, 0xbb, 0x38, 0xf2, 0x8b, 0x33, 0x0f, 0xfe, 0x59, 0x7f, 0x5a, 0x82, 0x94, 0x3f, 0xfe,
0x14, 0x73, 0x30, 0xaa, 0xe7, 0x2d, 0x8c, 0x84, 0x50, 0x28, 0x53, 0xaa, 0x43, 0x3a, 0xed, 0x14, 0xb7, 0x92, 0x7a,
0x8b, 0x02, 0xdd, 0x39, 0xf2, 0x5b, 0x82, 0x34, 0x4b, 0x59, 0xaf, 0x7e, 0xaa, 0x6d, 0xba, 0x0e, 0x8a, 0x58, 0xc3,
0x65, 0x86, 0xee, 0x1f, 0xbf, 0x00, 0xf7, 0x4f, 0xa8, 0xd1, 0xb6, 0xf2, 0x1b, 0xda, 0x6b, 0xdb, 0x07, 0x92, 0xb6,
0x9b, 0x64, 0x2d, 0xe4, 0xab, 0xfe, 0xd1, 0x55, 0xfe, 0xcd, 0x4d, 0x67, 0xbc, 0xdd, 0x9d, 0x1d, 0x4f, 0xfd, 0x33,
0x0e, 0xc7, 0x9b, 0xc5, 0x74, 0xc6, 0x7b, 0x1b, 0xc8, 0x82, 0x68, 0x82, 0x1f, 0xf1, 0xbb, 0x4d, 0xcb, 0x63, 0x4a,
0xb0, 0x5c, 0xa2, 0x5a, 0x0f, 0x3a, 0x8f, 0xc0, 0x61, 0xbb, 0xf5, 0xf0, 0xd7, 0xa3, 0x5f, 0x4a, 0x1a, 0xa9, 0x7b,
0xb2, 0xb6, 0xdd, 0x43, 0x79, 0x91, 0x44, 0x17, 0xe0, 0x37, 0x92, 0x8d, 0x71, 0x8c, 0x81, 0xdc, 0xde, 0x3c, 0x93,
0xc9, 0x0a, 0x39, 0x4b, 0xe8, 0x37, 0x65, 0xc8, 0xa5, 0xd8, 0x7e, 0x30, 0x3f, 0x57, 0xab, 0xd1, 0x69, 0x24, 0x21,
0xfc, 0xa1, 0xb9, 0x06, 0x57, 0x27, 0x37, 0xd4, 0xcf, 0xcb, 0x77, 0x00, 0x06, 0x61, 0xd8, 0xb4, 0x72, 0x01, 0x55,
0x1b, 0x4a, 0x8c, 0x6c, 0x8b, 0x6a, 0x20, 0xcb, 0xdf, 0x06, 0x55, 0x19, 0x15, 0xac, 0x87, 0x5f, 0x53, 0x8c, 0xc1,
0x3b, 0x95, 0xc6, 0xd3, 0x2c, 0x1e, 0x8f, 0x13, 0xd6, 0x53, 0xf6, 0x91, 0xd5, 0x79, 0x80, 0xc9, 0x0a, 0xe6, 0x92,
0xd5, 0x57, 0xc5, 0x20, 0x9e, 0xa6, 0x53, 0x74, 0x0c, 0xf6, 0x1a, 0x7e, 0x12, 0x71, 0x2d, 0x39, 0xe5, 0x29, 0x7e,
0xbb, 0x22, 0x1e, 0x3d, 0xd7, 0x71, 0xd9, 0x01, 0x63, 0x91, 0x16, 0xbc, 0xdd, 0xe3, 0xd9, 0x3c, 0x68, 0x6d, 0xd7,
0x11, 0xc1, 0x2a, 0x8d, 0x82, 0xb7, 0x06, 0x2d, 0x0f, 0xad, 0x03, 0xa1, 0xe5, 0x2c, 0xbf, 0x23, 0xcb, 0x68, 0x00,
0xfc, 0xec, 0x9e, 0x2e, 0x2a, 0xeb, 0xc8, 0xfc, 0xfb, 0xec, 0x96, 0x2f, 0xd7, 0xef, 0x96, 0x2f, 0xd5, 0x6e, 0xb9,
0x9e, 0x63, 0xbf, 0x98, 0x74, 0xf0, 0x4f, 0xaf, 0x42, 0x08, 0x56, 0x05, 0xc8, 0x61, 0xa1, 0x5d, 0xdc, 0xea, 0xc2,
0x7f, 0x34, 0x74, 0xdb, 0xc3, 0x3f, 0x3e, 0x58, 0x80, 0x6d, 0x0b, 0x0b, 0xf1, 0x5f, 0xbb, 0x56, 0xd5, 0xb9, 0x8f,
0x75, 0xd8, 0x6b, 0x67, 0xb5, 0xae, 0x7b, 0xfd, 0xa6, 0x05, 0x79, 0xc5, 0x9d, 0x40, 0x09, 0x63, 0x70, 0xd5, 0xa2,
0xe3, 0x63, 0x28, 0x9d, 0x64, 0xa3, 0x45, 0xf1, 0x77, 0x12, 0x7e, 0x49, 0xc4, 0x6b, 0xb7, 0x74, 0x63, 0x1c, 0xd5,
0x55, 0x64, 0xbe, 0xa8, 0x11, 0x96, 0x7a, 0x9d, 0x82, 0x02, 0x18, 0x93, 0x39, 0x5d, 0xff, 0xfe, 0x9a, 0x4d, 0xf0,
0x1f, 0xb2, 0x36, 0x6b, 0x91, 0xf9, 0xb7, 0x12, 0xe3, 0x5a, 0x22, 0x7c, 0x16, 0x0d, 0xcc, 0x35, 0x6c, 0x3f, 0x5a,
0x0f, 0xee, 0xa1, 0x9a, 0x69, 0xa8, 0x94, 0x82, 0xd4, 0x3b, 0xe0, 0x05, 0x44, 0x8b, 0x84, 0x5f, 0x3f, 0xea, 0x55,
0x9c, 0xb1, 0x32, 0xea, 0x35, 0x02, 0xbd, 0x6a, 0x7b, 0x4b, 0x29, 0xfd, 0xc5, 0x97, 0xf7, 0xf1, 0x8f, 0x88, 0x7d,
0x1d, 0x57, 0xbe, 0x91, 0x88, 0x0d, 0xa0, 0x6f, 0xb4, 0x51, 0x73, 0x7e, 0x84, 0x06, 0x27, 0xff, 0xe7, 0xb6, 0xad,
0xd1, 0x58, 0xbf, 0x55, 0x73, 0x69, 0x95, 0x7e, 0x56, 0xeb, 0xcf, 0x1b, 0xfc, 0x96, 0x6d, 0x47, 0xc2, 0x21, 0xa8,
0xb7, 0x95, 0xbf, 0xb5, 0x64, 0xa5, 0xb1, 0xa2, 0xf8, 0x6d, 0xdb, 0x57, 0x26, 0x31, 0xf5, 0xd8, 0x08, 0x8f, 0xb5,
0x13, 0x29, 0xcf, 0x9d, 0xb1, 0x87, 0xf0, 0x23, 0xff, 0xc2, 0xc2, 0x7b, 0xf8, 0xc1, 0x2f, 0xeb, 0x7c, 0x96, 0xa4,
0x60, 0x56, 0x4d, 0x39, 0x9f, 0x07, 0x5b, 0x5b, 0x67, 0x67, 0x67, 0xfe, 0xd9, 0xb6, 0x9f, 0xe5, 0x27, 0x5b, 0xdd,
0x76, 0xbb, 0x8d, 0xdf, 0x69, 0xb2, 0xad, 0xd3, 0x98, 0x9d, 0x3d, 0x06, 0xf7, 0xc3, 0x7e, 0x68, 0x3d, 0xb2, 0x1e,
0x6e, 0x5b, 0x3b, 0x0f, 0x6c, 0x8b, 0x14, 0x00, 0x94, 0x6c, 0xdb, 0x96, 0x50, 0x00, 0xa1, 0x0d, 0xc5, 0xfd, 0xdd,
0x13, 0x65, 0xc3, 0x61, 0x1e, 0xbc, 0xb0, 0x90, 0xc0, 0x7f, 0xcb, 0x3e, 0xb1, 0xfa, 0x56, 0x17, 0x65, 0x2d, 0xa9,
0x46, 0xd4, 0x2b, 0xee, 0xf7, 0x51, 0x34, 0x0f, 0x88, 0x8d, 0xcc, 0x42, 0x0c, 0x93, 0x89, 0x52, 0x9a, 0x02, 0xed,
0xd2, 0x63, 0x78, 0xc2, 0xcc, 0x29, 0x0b, 0x9e, 0x5f, 0x75, 0x1f, 0x82, 0x8e, 0x3b, 0x6d, 0xdd, 0x1f, 0xb5, 0x5b,
0x1d, 0xab, 0xd3, 0xea, 0xfa, 0x0f, 0xad, 0xae, 0xf8, 0x1f, 0x64, 0xe4, 0xb6, 0xd5, 0x81, 0xa7, 0x6d, 0x0b, 0xde,
0x4f, 0xef, 0x8b, 0xb4, 0x88, 0xc8, 0xde, 0xea, 0xef, 0xe2, 0xaf, 0x2d, 0x02, 0xa4, 0xbe, 0xb4, 0xc5, 0x2f, 0x5a,
0xb3, 0xbf, 0x30, 0x4b, 0x3b, 0x8f, 0xd6, 0x16, 0x77, 0x1f, 0xae, 0x2d, 0xde, 0x7e, 0xb0, 0xb6, 0xf8, 0xfe, 0x4e,
0xbd, 0x78, 0xeb, 0x44, 0x54, 0x69, 0xb9, 0x10, 0xda, 0xb3, 0x08, 0x18, 0xe5, 0xdc, 0xe9, 0x00, 0x9c, 0x6d, 0xab,
0x85, 0x3f, 0x1e, 0x76, 0x5d, 0xdd, 0xeb, 0x18, 0x7b, 0x69, 0x2c, 0x1f, 0x3e, 0x02, 0x2c, 0x9f, 0x77, 0x1f, 0x8c,
0xb0, 0x1d, 0x21, 0x0a, 0xff, 0x4e, 0xb7, 0x1f, 0x8d, 0x40, 0x23, 0x58, 0xf8, 0x0f, 0xfe, 0x4c, 0x77, 0xba, 0x23,
0xf1, 0xd2, 0xc6, 0xfa, 0x0f, 0x9d, 0x87, 0x05, 0x34, 0xc5, 0x3f, 0xbf, 0x69, 0x13, 0x1a, 0x0d, 0x78, 0x73, 0xdc,
0xfb, 0x40, 0xa3, 0x47, 0xd3, 0xae, 0xff, 0xe5, 0xe9, 0x43, 0xff, 0xd1, 0xb4, 0xf3, 0xf0, 0x83, 0x78, 0x4b, 0x80,
0x82, 0x5f, 0xe2, 0xbf, 0x0f, 0xdb, 0xed, 0x69, 0xab, 0xe3, 0x3f, 0x3a, 0xdd, 0xf6, 0xb7, 0x93, 0xd6, 0x03, 0xff,
0x11, 0xfe, 0xab, 0x86, 0x9b, 0x66, 0x33, 0x66, 0x5b, 0xb8, 0xde, 0x0d, 0xbf, 0xd7, 0x9c, 0xa3, 0x7b, 0xdf, 0xda,
0xb9, 0xff, 0xfc, 0x11, 0xac, 0xd1, 0xb4, 0xd3, 0x85, 0xff, 0xaf, 0x7a, 0xfc, 0x80, 0x84, 0x97, 0x03, 0x47, 0x0c,
0x33, 0x58, 0x15, 0xe1, 0xe8, 0x9b, 0x61, 0xf7, 0xbc, 0xef, 0xaf, 0x0a, 0x80, 0x30, 0x7e, 0x73, 0x90, 0x9b, 0xdf,
0x2e, 0x02, 0x42, 0x1f, 0xb4, 0xff, 0x03, 0x23, 0x20, 0xdf, 0x37, 0x83, 0xdc, 0xe7, 0xab, 0x79, 0x7b, 0x4d, 0x67,
0xed, 0x35, 0x73, 0x0e, 0xff, 0xc2, 0x86, 0x98, 0xad, 0x0d, 0xad, 0x39, 0x37, 0xe3, 0x41, 0x19, 0x6e, 0xe4, 0x73,
0x19, 0xf5, 0x2f, 0xf8, 0x15, 0x04, 0x89, 0x6f, 0x26, 0xc8, 0xaf, 0xb7, 0xa3, 0x47, 0xfc, 0x07, 0xd3, 0xa3, 0xe0,
0x06, 0x3d, 0x6a, 0x11, 0x77, 0x8a, 0x18, 0x90, 0xa3, 0xbf, 0x4f, 0xef, 0xce, 0xf7, 0xf8, 0xb5, 0xaf, 0x2d, 0x86,
0x25, 0x85, 0x2d, 0x72, 0x05, 0xdf, 0x7d, 0xce, 0x09, 0x81, 0x48, 0x68, 0x0e, 0x6d, 0x19, 0x84, 0x99, 0xe3, 0x67,
0x71, 0xd5, 0xcb, 0xa9, 0xb8, 0x34, 0x13, 0xd2, 0x8d, 0xb7, 0x1d, 0x1d, 0xc0, 0xc1, 0x1c, 0xf3, 0x70, 0x99, 0xf1,
0x08, 0x7f, 0xef, 0x12, 0x8f, 0x79, 0x82, 0xf7, 0x71, 0xe5, 0xdd, 0x35, 0x4c, 0x89, 0xfe, 0x16, 0xd3, 0xb9, 0xd5,
0x41, 0xc1, 0x0c, 0x83, 0x06, 0xaf, 0xd8, 0x38, 0x8e, 0x1c, 0xdb, 0x99, 0xc3, 0xae, 0x85, 0x31, 0x5b, 0xb5, 0x5c,
0x6a, 0x4a, 0xa3, 0x76, 0x6d, 0xf5, 0xab, 0x7e, 0x72, 0xfc, 0x74, 0x5a, 0x78, 0x28, 0x83, 0x8c, 0xb6, 0xf4, 0x02,
0x60, 0x7c, 0x55, 0x92, 0xa3, 0xc0, 0xaf, 0x2c, 0x07, 0x5b, 0x98, 0x0e, 0x1d, 0xbf, 0x0b, 0xae, 0x04, 0x15, 0xe3,
0xa7, 0xa8, 0x7e, 0x70, 0x5a, 0xdb, 0x60, 0xda, 0x18, 0xdd, 0xf4, 0x40, 0xc3, 0x95, 0x50, 0x92, 0x08, 0x10, 0x34,
0x4a, 0x3d, 0xfd, 0xbb, 0xcf, 0xaa, 0x90, 0x51, 0xf1, 0xf8, 0xe2, 0x40, 0x5e, 0x37, 0xb7, 0x31, 0x7a, 0x4b, 0x51,
0xfb, 0xea, 0x53, 0x57, 0x9b, 0xa0, 0x32, 0xe8, 0x17, 0x50, 0xd2, 0x19, 0x38, 0x6a, 0x05, 0xcc, 0xf6, 0xb6, 0xa4,
0xf7, 0x10, 0xda, 0x42, 0x27, 0x8c, 0xd9, 0x69, 0x3c, 0x92, 0xa2, 0xdd, 0xb3, 0xe4, 0x2d, 0x95, 0x16, 0x61, 0x11,
0x76, 0x3c, 0xe1, 0x3f, 0xc3, 0x0b, 0x6a, 0xb6, 0x30, 0xcd, 0xec, 0xfe, 0xbd, 0x9e, 0x86, 0xa4, 0x9e, 0x28, 0x6f,
0xe3, 0x6f, 0xc3, 0x3c, 0x04, 0x7f, 0xed, 0xef, 0xc2, 0x7b, 0xf8, 0xfb, 0x30, 0xef, 0x0d, 0x6d, 0xd7, 0x27, 0xc1,
0x78, 0xaf, 0xfa, 0xa5, 0x98, 0x28, 0x15, 0x36, 0x41, 0x87, 0x79, 0xb7, 0x55, 0x66, 0x52, 0x71, 0x75, 0x77, 0x2a,
0xc5, 0x05, 0xcf, 0x86, 0xa4, 0x02, 0x21, 0xda, 0xf5, 0x77, 0x0c, 0x71, 0x78, 0xda, 0xc2, 0x9f, 0x35, 0x81, 0x78,
0x1f, 0x1a, 0x28, 0x89, 0xf8, 0x12, 0x9a, 0x6f, 0x0b, 0xe1, 0x0b, 0xfd, 0x7e, 0x24, 0x71, 0x25, 0x44, 0x55, 0x9d,
0x63, 0xd6, 0x1c, 0x24, 0x89, 0x7c, 0x01, 0xdb, 0x33, 0x62, 0x4e, 0x82, 0x5d, 0x65, 0x44, 0xe5, 0x29, 0xf4, 0x75,
0xf4, 0x17, 0xa4, 0xd7, 0xd5, 0x79, 0xb5, 0xdd, 0xb3, 0x66, 0x0a, 0x64, 0xf8, 0xc6, 0x61, 0x15, 0xdd, 0x9a, 0x10,
0x5f, 0x52, 0x13, 0x5b, 0xb9, 0xfa, 0xd6, 0xdc, 0x9a, 0xec, 0x5c, 0x73, 0x53, 0xb0, 0x8a, 0x69, 0x68, 0x5f, 0x60,
0xfa, 0x0c, 0xfe, 0xac, 0x8a, 0xd5, 0x83, 0x64, 0x28, 0x3f, 0x89, 0xf0, 0x17, 0xc1, 0xd0, 0x8f, 0xb2, 0xda, 0x80,
0x9c, 0x3e, 0x95, 0x49, 0x90, 0xbe, 0x18, 0x97, 0x4d, 0x24, 0xc0, 0x66, 0xc0, 0xdf, 0x2b, 0x58, 0xdd, 0xd2, 0x90,
0xd7, 0x2f, 0x31, 0xb5, 0x60, 0x1c, 0xe7, 0x74, 0xab, 0x57, 0xe1, 0x5f, 0x8b, 0x6a, 0x56, 0xa4, 0xa6, 0x5d, 0xc9,
0x8a, 0x81, 0x8d, 0x45, 0x76, 0x20, 0x13, 0xd3, 0xcc, 0x6f, 0x45, 0x9b, 0xd7, 0x2e, 0xc7, 0x22, 0x27, 0x0d, 0xbf,
0xa5, 0x6f, 0x0b, 0x22, 0xdb, 0x20, 0xca, 0xae, 0xc4, 0x89, 0x0c, 0x1c, 0xbc, 0xad, 0x58, 0xfd, 0x72, 0x24, 0x73,
0xc3, 0xdb, 0xe6, 0x6a, 0xe9, 0x71, 0x69, 0x1d, 0x5c, 0x19, 0xc3, 0x3b, 0x66, 0x11, 0xf7, 0xa3, 0x94, 0xf2, 0x94,
0x1c, 0x43, 0x2c, 0x78, 0x1d, 0xb6, 0xed, 0x96, 0x20, 0x79, 0x8c, 0xdf, 0x1e, 0x25, 0x48, 0xef, 0x43, 0xa1, 0xca,
0x71, 0xfe, 0xbe, 0x96, 0xa2, 0x3b, 0xed, 0xf6, 0xdf, 0x1c, 0xec, 0x59, 0x62, 0x63, 0xef, 0x6e, 0xc1, 0xeb, 0x2e,
0x79, 0xc7, 0x22, 0x63, 0x23, 0x14, 0x19, 0x1b, 0x96, 0xc8, 0xf3, 0x12, 0x29, 0xad, 0x5b, 0x02, 0x6b, 0xdb, 0x62,
0xe9, 0x48, 0x84, 0xf5, 0x66, 0xe0, 0x41, 0xc4, 0xf8, 0x79, 0xb1, 0x2d, 0xec, 0xda, 0xc2, 0x85, 0xb7, 0x55, 0xf2,
0x8b, 0xb2, 0x19, 0x78, 0xaa, 0x82, 0x80, 0xa0, 0xe9, 0x99, 0xca, 0x83, 0x91, 0x43, 0xe9, 0x74, 0xd5, 0xd5, 0xd6,
0xc5, 0xe2, 0x78, 0x06, 0x62, 0x49, 0xe5, 0xae, 0xbc, 0x97, 0x1d, 0x76, 0x69, 0xaa, 0xfe, 0x51, 0xb9, 0x2e, 0x4a,
0x39, 0xed, 0xf4, 0x77, 0x23, 0x69, 0x03, 0xe1, 0x5e, 0x2e, 0x60, 0x33, 0x83, 0xea, 0x43, 0x43, 0xc3, 0x8f, 0xb3,
0xad, 0x33, 0x76, 0xdc, 0x8a, 0xe6, 0x71, 0x15, 0x12, 0x44, 0x8d, 0xd8, 0xdf, 0x55, 0xca, 0x51, 0xa6, 0x60, 0xca,
0xc7, 0xc8, 0x48, 0xee, 0x40, 0x42, 0x12, 0xc3, 0x96, 0x32, 0xde, 0x48, 0x86, 0x24, 0x2c, 0x06, 0x00, 0x4b, 0xfc,
0xac, 0xe2, 0x92, 0x52, 0x33, 0x94, 0x76, 0xff, 0xaf, 0xff, 0xfb, 0xff, 0xc8, 0x50, 0x23, 0xd0, 0x16, 0xc0, 0xc2,
0xec, 0x98, 0xea, 0xd4, 0x91, 0x9d, 0x83, 0x73, 0x1a, 0x8f, 0x5b, 0xd3, 0x28, 0x99, 0x00, 0x04, 0x05, 0x13, 0xb9,
0xfe, 0xb2, 0x1e, 0xb8, 0x42, 0x82, 0x65, 0x9e, 0xd8, 0x4b, 0xf0, 0xea, 0x45, 0xb8, 0x6c, 0xbf, 0x2b, 0xa7, 0x55,
0xe5, 0x12, 0x13, 0x83, 0x1b, 0x19, 0xae, 0x06, 0x0f, 0xd6, 0xb2, 0x5c, 0xd5, 0xef, 0x6a, 0x92, 0xc2, 0x84, 0xd5,
0x52, 0x5c, 0xa1, 0xa5, 0x3e, 0x1c, 0xf9, 0xd7, 0x7f, 0xfa, 0x2f, 0xff, 0x43, 0xbd, 0xe2, 0x99, 0xc7, 0x5f, 0xff,
0xf1, 0xef, 0xff, 0xdf, 0xff, 0xfd, 0xaf, 0x98, 0x41, 0x2c, 0xcf, 0x45, 0x68, 0x6b, 0x59, 0xd5, 0xa1, 0x88, 0xd8,
0x63, 0x56, 0xe5, 0x84, 0xd4, 0x53, 0x61, 0xf7, 0x69, 0x42, 0x62, 0x50, 0x09, 0x1d, 0xf1, 0x39, 0xa5, 0x4e, 0x13,
0xd5, 0xae, 0x21, 0x1f, 0x2c, 0xa5, 0x45, 0x47, 0xfd, 0xf6, 0x4e, 0xdb, 0xae, 0x96, 0xb7, 0x6f, 0xf4, 0xdd, 0xc2,
0x85, 0xb9, 0x55, 0x62, 0x8e, 0xaf, 0x97, 0x6d, 0xa9, 0x42, 0x5b, 0x58, 0x52, 0x56, 0xe5, 0x16, 0xc6, 0x9c, 0x97,
0xf8, 0x1a, 0x74, 0x8d, 0x62, 0x5a, 0xe5, 0x5a, 0x9f, 0xde, 0x2f, 0x0b, 0x40, 0x74, 0x82, 0x4b, 0x23, 0x02, 0x68,
0x74, 0x9e, 0xda, 0x42, 0x6b, 0x25, 0xb9, 0x28, 0x69, 0x14, 0xe1, 0xe1, 0xdc, 0x7f, 0xf4, 0xb7, 0xe5, 0x9f, 0x67,
0x68, 0x25, 0x58, 0xce, 0x2c, 0x3a, 0x97, 0x7e, 0xcf, 0x83, 0x76, 0x7b, 0x7e, 0xee, 0x2e, 0xab, 0x19, 0xbc, 0xab,
0x26, 0xa3, 0xa0, 0x9b, 0x39, 0x20, 0x1d, 0xc4, 0xea, 0xf8, 0x1e, 0x98, 0xfa, 0x6d, 0x0c, 0x07, 0x95, 0xe5, 0x9f,
0x96, 0x14, 0x62, 0x8a, 0x7f, 0xc3, 0x03, 0x53, 0x19, 0x8d, 0x83, 0x12, 0x03, 0x8b, 0xa5, 0xd1, 0xab, 0x2b, 0x7a,
0x4d, 0x3b, 0xab, 0x29, 0x2b, 0xe6, 0x81, 0xaf, 0x79, 0x54, 0x7b, 0x1f, 0x0f, 0x5f, 0xa7, 0x1d, 0x6f, 0xda, 0x5d,
0xea, 0xe1, 0x39, 0xcf, 0x66, 0xe6, 0x09, 0x2f, 0x8b, 0xd8, 0x88, 0x4d, 0x54, 0x14, 0x53, 0xd6, 0x8b, 0xd3, 0xdb,
0xf2, 0x0b, 0xdc, 0x6e, 0x40, 0xdb, 0x2c, 0xe2, 0x01, 0x31, 0x6d, 0xcf, 0x3c, 0x03, 0x8e, 0xf0, 0x74, 0x3d, 0x5b,
0x1a, 0x73, 0xf5, 0x44, 0x53, 0x8c, 0x15, 0xd6, 0xd3, 0x81, 0x4a, 0x9f, 0xba, 0x9b, 0x43, 0x89, 0x50, 0xc3, 0xaf,
0xf2, 0x68, 0xf5, 0x5d, 0xcd, 0x47, 0x97, 0xa2, 0x19, 0xdc, 0xe2, 0xb5, 0xf5, 0x42, 0x4d, 0x8a, 0xda, 0x0f, 0x60,
0xfd, 0x10, 0x98, 0x76, 0xb3, 0x15, 0x15, 0x62, 0xab, 0x77, 0xe1, 0xaf, 0xda, 0x1e, 0x8f, 0xe6, 0x73, 0x6a, 0xe8,
0x02, 0x37, 0x92, 0x5d, 0x8d, 0x92, 0x82, 0xd2, 0x06, 0xc4, 0x29, 0xbd, 0x6c, 0x23, 0xd9, 0x56, 0x3c, 0xc9, 0xf3,
0x7b, 0xfa, 0xd5, 0xdf, 0xff, 0x1f, 0x2a, 0x12, 0x27, 0x08, 0x10, 0x7c, 0x00, 0x00};
0x9b, 0x73, 0xb4, 0xeb, 0xc3, 0x7a, 0xa0, 0x93, 0x6c, 0x5b, 0xc0, 0x4b, 0x66, 0xe3, 0xcd, 0xc8, 0xc1, 0x00, 0xc7,
0x39, 0x36, 0x4d, 0x59, 0x51, 0xac, 0x03, 0x0b, 0x9c, 0x60, 0xcf, 0xae, 0x9a, 0xd8, 0xb5, 0x0e, 0x00, 0x40, 0x77,
0x67, 0x47, 0x4c, 0x0b, 0x15, 0x6c, 0x32, 0x81, 0x8d, 0x87, 0x1a, 0x23, 0xe1, 0x18, 0xf6, 0x0f, 0xfb, 0xf6, 0x6b,
0xd8, 0xe3, 0x36, 0xf8, 0x57, 0xae, 0x3e, 0xc0, 0xa5, 0xe9, 0x95, 0x10, 0x32, 0xe6, 0x10, 0x9d, 0x8d, 0x61, 0xf4,
0x93, 0x81, 0x54, 0x36, 0xfa, 0xb4, 0x06, 0x27, 0xe0, 0xc2, 0x0d, 0x11, 0x40, 0x6e, 0xc8, 0x56, 0xfb, 0x5f, 0xff,
0xe9, 0x7f, 0xfd, 0x37, 0x18, 0x9b, 0xfa, 0xb9, 0xa5, 0x75, 0x75, 0xab, 0xff, 0x09, 0xad, 0x16, 0xe9, 0x0d, 0xed,
0xfe, 0xfa, 0x0f, 0xff, 0x1d, 0x9a, 0xd1, 0x45, 0x23, 0x90, 0x59, 0x04, 0xd1, 0x08, 0x6d, 0xbb, 0xcf, 0x02, 0xa9,
0x36, 0xc8, 0x95, 0x33, 0xfd, 0x23, 0x82, 0x5d, 0xf0, 0x6c, 0x7e, 0x2d, 0x38, 0x08, 0xf5, 0x28, 0xc9, 0x0a, 0xa6,
0xe1, 0x11, 0x72, 0xfe, 0xf3, 0x00, 0xa2, 0xb9, 0xe6, 0xb0, 0x9b, 0x0a, 0x4b, 0x8f, 0x23, 0x56, 0x68, 0xdd, 0x38,
0x8d, 0x05, 0x2c, 0x18, 0x27, 0x74, 0x28, 0x5c, 0x02, 0x4b, 0x26, 0x9e, 0xe0, 0x81, 0x04, 0x8f, 0x5b, 0xff, 0x78,
0xd9, 0xfa, 0xc1, 0x34, 0xc3, 0x89, 0xb1, 0x44, 0x84, 0x48, 0x8d, 0x00, 0x3f, 0x41, 0x38, 0x7e, 0xd4, 0xcf, 0xd1,
0xb9, 0x7e, 0x46, 0x01, 0x2a, 0x26, 0x00, 0x3d, 0x38, 0x43, 0x13, 0xc7, 0x9c, 0x41, 0x64, 0x37, 0x54, 0xee, 0xb1,
0x91, 0x24, 0x23, 0x84, 0xe4, 0x47, 0xcc, 0x25, 0xc5, 0x9b, 0x43, 0x8b, 0x9c, 0x7d, 0x4c, 0xb2, 0x33, 0x8c, 0xb9,
0x21, 0x91, 0xae, 0xaa, 0x2f, 0xff, 0xe5, 0x9f, 0x7d, 0xff, 0x5f, 0xfe, 0xf9, 0x8a, 0x06, 0x53, 0xd8, 0x13, 0x60,
0x24, 0xf3, 0x50, 0xd3, 0xb9, 0x81, 0xd6, 0xfa, 0x41, 0x11, 0xcf, 0xf5, 0x35, 0x12, 0x71, 0x2c, 0x95, 0x78, 0xcb,
0x47, 0x42, 0x5b, 0x33, 0xc5, 0xcd, 0xb3, 0x20, 0x64, 0x57, 0x4c, 0x83, 0x55, 0x37, 0xcc, 0x73, 0xe4, 0x06, 0xd7,
0xd0, 0xe5, 0x33, 0x31, 0x5e, 0x0f, 0xc6, 0x8d, 0x10, 0x78, 0xa0, 0x65, 0x84, 0x1e, 0x7a, 0x22, 0xb4, 0x48, 0x20,
0x96, 0x41, 0xea, 0x94, 0x1a, 0x40, 0x9e, 0x75, 0x40, 0x13, 0x50, 0x93, 0xb8, 0xd2, 0xe1, 0x64, 0x06, 0x1d, 0xe7,
0xfd, 0x57, 0x78, 0x59, 0xd0, 0xc2, 0xde, 0xa8, 0xc1, 0x0b, 0x32, 0x38, 0x38, 0x19, 0x1c, 0x52, 0xd3, 0x99, 0xba,
0x1e, 0x1d, 0xa7, 0x6c, 0xbd, 0x4e, 0xff, 0x88, 0xdd, 0x6b, 0x5a, 0x99, 0x4b, 0xad, 0x1c, 0x4b, 0x2b, 0x5a, 0x6a,
0x65, 0xfc, 0x24, 0x4c, 0x43, 0x2b, 0xc7, 0x57, 0x6a, 0x65, 0xa4, 0xdc, 0x00, 0x47, 0x0e, 0xed, 0x4d, 0x8c, 0x0e,
0x19, 0x36, 0x00, 0x47, 0xfb, 0x67, 0x34, 0x65, 0xa3, 0x4f, 0xd2, 0xfc, 0x21, 0x04, 0x30, 0x3c, 0xa2, 0x8d, 0x3c,
0x81, 0x01, 0xa8, 0xf2, 0xa3, 0x52, 0x6f, 0x7a, 0x7c, 0x34, 0x26, 0xe0, 0xee, 0x72, 0xc2, 0x50, 0xf4, 0xc3, 0x9a,
0x7d, 0xcd, 0xca, 0x2d, 0x1c, 0x47, 0x6c, 0x18, 0xf1, 0x0c, 0x98, 0x6d, 0xe1, 0x60, 0x47, 0xde, 0x52, 0x04, 0xdb,
0x02, 0xfb, 0xed, 0x9b, 0xfd, 0x03, 0xdb, 0x3b, 0xce, 0xc6, 0x17, 0x81, 0x0d, 0xde, 0x0c, 0x58, 0x39, 0xae, 0xcf,
0xa7, 0x2c, 0x75, 0x94, 0x3f, 0x91, 0x25, 0xe0, 0xaa, 0x65, 0x27, 0xe2, 0xdb, 0x10, 0xcd, 0x83, 0x02, 0x20, 0x2c,
0x7d, 0x3c, 0xb2, 0xbf, 0xcb, 0xc5, 0x77, 0x55, 0x79, 0x8e, 0x8f, 0x7d, 0x4c, 0x95, 0xd8, 0xdd, 0x82, 0x07, 0x7c,
0xd9, 0x47, 0xbd, 0xa7, 0xdf, 0x04, 0xb0, 0x85, 0x78, 0xdf, 0xc2, 0xf6, 0x5b, 0xaa, 0x2f, 0x42, 0xd1, 0x97, 0xdc,
0xa6, 0x4d, 0xfe, 0xca, 0x66, 0xa4, 0xb1, 0xc7, 0x68, 0x12, 0x92, 0xc9, 0x0f, 0x24, 0xe1, 0x63, 0x5d, 0x22, 0xcc,
0x0c, 0xa3, 0x88, 0x46, 0xa9, 0x8c, 0x02, 0x59, 0x85, 0x13, 0x92, 0x19, 0x29, 0x26, 0x83, 0x9f, 0x04, 0xfe, 0x91,
0xf9, 0x1d, 0x34, 0xf1, 0xc9, 0x22, 0x8d, 0xe4, 0xe1, 0x5f, 0xbc, 0x33, 0xe6, 0x5d, 0x1c, 0x51, 0x4b, 0xe5, 0x74,
0x63, 0x34, 0x08, 0x83, 0x13, 0x6d, 0x15, 0x5d, 0x01, 0x3b, 0x28, 0x89, 0xe6, 0x05, 0x0b, 0xd4, 0x83, 0xf4, 0xbf,
0xd1, 0x8d, 0x5f, 0x0d, 0x78, 0x98, 0xf6, 0x52, 0xc9, 0xa7, 0x4b, 0xd3, 0x41, 0x7f, 0x00, 0x0e, 0x3a, 0x5e, 0x2e,
0x68, 0x45, 0xa0, 0xe5, 0xd3, 0x20, 0x61, 0x13, 0x5e, 0x72, 0xbc, 0xbd, 0xbe, 0x54, 0x11, 0x11, 0xbf, 0xbb, 0x03,
0x4e, 0xbb, 0xe5, 0xe3, 0xff, 0x37, 0x8d, 0x3d, 0x0e, 0x52, 0x70, 0xb2, 0xe9, 0x3a, 0x0b, 0x5e, 0x15, 0x04, 0x88,
0xcc, 0xf7, 0xa5, 0x31, 0xd1, 0x88, 0x61, 0xb4, 0xa8, 0xe4, 0x39, 0xc8, 0x6d, 0x8f, 0xe7, 0x66, 0x3b, 0x90, 0xb7,
0x2b, 0x21, 0xa3, 0xd5, 0xa0, 0xc5, 0xb6, 0x2b, 0xfd, 0x8f, 0xd5, 0xc6, 0x2a, 0xf2, 0x53, 0x7f, 0x5b, 0xa1, 0x90,
0x11, 0xa3, 0x2a, 0x85, 0xaa, 0x59, 0x8a, 0x1e, 0x26, 0x4e, 0xab, 0xd1, 0xab, 0x1b, 0x2d, 0xd2, 0x92, 0xb6, 0xfd,
0x21, 0x6d, 0x7b, 0x12, 0x63, 0xc3, 0xa5, 0x98, 0x7b, 0x14, 0x25, 0x23, 0x07, 0x01, 0xb0, 0x5a, 0xd6, 0x23, 0xa0,
0xa6, 0xab, 0x22, 0x28, 0xfe, 0x43, 0x24, 0x6e, 0x29, 0x84, 0xde, 0x1a, 0x2a, 0x1d, 0x0d, 0xcb, 0xb2, 0x77, 0xc1,
0x9c, 0xc3, 0xdf, 0xe4, 0x65, 0x08, 0x71, 0x07, 0x56, 0x7f, 0x47, 0xb0, 0x5d, 0xba, 0x43, 0x8f, 0x31, 0xe3, 0xeb,
0x6c, 0xb6, 0xe2, 0x68, 0xdb, 0xeb, 0x52, 0x3c, 0x01, 0x7b, 0xbf, 0x72, 0x6c, 0x34, 0x62, 0xa9, 0xea, 0xa2, 0x45,
0x1c, 0x66, 0x53, 0x47, 0x11, 0xcd, 0xff, 0xe6, 0xaa, 0xa0, 0xcc, 0xb7, 0x37, 0x07, 0x65, 0xf8, 0x2d, 0x83, 0x32,
0xdf, 0xfe, 0xc1, 0x41, 0x99, 0x6f, 0xcc, 0xa0, 0x0c, 0xca, 0xca, 0x17, 0x9f, 0x13, 0x39, 0xc9, 0xb3, 0xb3, 0x22,
0xec, 0xc8, 0x24, 0x00, 0x10, 0x3b, 0xff, 0x31, 0x21, 0x14, 0x98, 0xa8, 0x11, 0x40, 0xa1, 0x88, 0x89, 0xc8, 0x5b,
0x04, 0x09, 0x2f, 0xe3, 0x15, 0x6d, 0x9d, 0x20, 0xd8, 0xba, 0xaf, 0x6e, 0x44, 0x81, 0x77, 0xe8, 0xea, 0xb0, 0x51,
0x57, 0x45, 0x34, 0x02, 0xfa, 0xa4, 0xa9, 0xee, 0xd8, 0xdd, 0x54, 0x99, 0x69, 0xe6, 0x08, 0x3d, 0x75, 0xe0, 0x20,
0x38, 0x68, 0x69, 0xff, 0xe7, 0xc3, 0x4e, 0x6f, 0xbb, 0x33, 0x83, 0xde, 0xa0, 0x4b, 0xe1, 0xad, 0xdd, 0xdb, 0xde,
0xc6, 0xb7, 0x33, 0xf5, 0xd6, 0xc5, 0xb7, 0x58, 0xbd, 0xed, 0xe0, 0xdb, 0x48, 0xbd, 0x3d, 0xc0, 0xb7, 0xb1, 0x7a,
0x7b, 0x88, 0x6f, 0xa7, 0x76, 0x79, 0xc8, 0x35, 0x70, 0x0f, 0x81, 0xb1, 0xc8, 0xb1, 0x08, 0x54, 0x19, 0xec, 0x5b,
0xbc, 0x49, 0x18, 0x9d, 0x04, 0xb1, 0x27, 0x1c, 0xb0, 0x20, 0xf7, 0xce, 0x40, 0xf8, 0x07, 0x94, 0x38, 0xf7, 0x14,
0x3f, 0x29, 0x01, 0xfe, 0xca, 0x41, 0x3c, 0x63, 0xea, 0xdb, 0xba, 0x0a, 0x6b, 0xb0, 0x25, 0x0f, 0xdb, 0xc3, 0xb2,
0xa7, 0xd7, 0x49, 0x04, 0x6c, 0x54, 0x62, 0x02, 0xad, 0x5c, 0x55, 0x27, 0xa6, 0x6b, 0xe9, 0x15, 0xbe, 0x42, 0x95,
0x18, 0x2e, 0xfb, 0x04, 0x6c, 0xa4, 0xd6, 0x39, 0x38, 0x79, 0x6b, 0xd5, 0x0b, 0x42, 0xa4, 0x15, 0x0a, 0xe1, 0xa4,
0xdf, 0x0e, 0xa2, 0x13, 0xfd, 0xfc, 0x0a, 0x8c, 0xde, 0xe8, 0x84, 0xdd, 0xa4, 0x6a, 0x08, 0x44, 0x53, 0xcd, 0x28,
0x20, 0xc8, 0x2a, 0x82, 0xa5, 0x41, 0x67, 0x53, 0xaa, 0x19, 0xa4, 0x4e, 0x5d, 0xf1, 0xd0, 0xf4, 0xf5, 0x22, 0xa0,
0x68, 0x55, 0xb0, 0x0b, 0xb6, 0x37, 0x95, 0x0a, 0x0a, 0x43, 0x05, 0x16, 0x5c, 0xab, 0x8d, 0xb4, 0x3f, 0x7e, 0xa5,
0x4e, 0xb2, 0x94, 0x3a, 0x32, 0x0f, 0x2a, 0xf4, 0x29, 0xc5, 0xaa, 0x84, 0xfc, 0xa2, 0x33, 0xc2, 0x3f, 0x52, 0xfe,
0x7e, 0x31, 0x99, 0x4c, 0xae, 0x55, 0x4f, 0x5f, 0x8c, 0x27, 0xac, 0xcb, 0x76, 0x7a, 0x18, 0xc4, 0x6e, 0x49, 0x89,
0xd8, 0x29, 0x89, 0x76, 0xcb, 0xdb, 0x35, 0x46, 0xe1, 0x09, 0x1a, 0xeb, 0xf6, 0x7a, 0xac, 0x04, 0xaa, 0x2c, 0x41,
0x7e, 0x9f, 0xc4, 0x69, 0xd0, 0x2e, 0xfd, 0x53, 0x29, 0xf8, 0xbf, 0x78, 0xf4, 0xe8, 0x51, 0xe9, 0x8f, 0xd5, 0x5b,
0x7b, 0x3c, 0x2e, 0xfd, 0xd1, 0x52, 0xa3, 0xd1, 0x6e, 0x4f, 0x26, 0xa5, 0x1f, 0xab, 0x82, 0xed, 0xee, 0x68, 0xbc,
0xdd, 0x2d, 0xfd, 0x33, 0xa3, 0x45, 0xe9, 0x33, 0xf9, 0x96, 0xb3, 0x71, 0x2d, 0x12, 0xfe, 0xb0, 0x0d, 0x95, 0x82,
0xd1, 0x96, 0xe8, 0xe8, 0x89, 0xc7, 0x20, 0x5a, 0xf0, 0x0c, 0x6c, 0x2c, 0xe0, 0x6d, 0x10, 0xd0, 0x13, 0x29, 0xde,
0xc5, 0xa7, 0x6b, 0x51, 0xa8, 0xbf, 0x30, 0x65, 0x3a, 0x32, 0x33, 0xc9, 0x73, 0x4e, 0xaa, 0xa0, 0x59, 0x8d, 0x9c,
0x45, 0xd5, 0x2f, 0x42, 0x5e, 0x49, 0x7b, 0x94, 0x36, 0xd8, 0x52, 0xc8, 0xf8, 0x1f, 0xaf, 0x92, 0xf1, 0x3f, 0xdc,
0x2c, 0xe3, 0x8f, 0x6f, 0x27, 0xe2, 0x7f, 0xf8, 0x83, 0x45, 0xfc, 0x8f, 0xa6, 0x88, 0x17, 0x42, 0x6c, 0x0f, 0xac,
0x58, 0x32, 0x5f, 0x8f, 0xb3, 0xf3, 0x16, 0x6e, 0x89, 0xdc, 0x26, 0xe9, 0xb9, 0x71, 0x2b, 0xe1, 0xbf, 0x26, 0xb5,
0x49, 0x0d, 0x66, 0x7c, 0x07, 0x97, 0x67, 0x27, 0x27, 0x09, 0x53, 0x32, 0xde, 0xa8, 0x20, 0xcb, 0xf8, 0x4d, 0x1a,
0xda, 0x6f, 0xc0, 0x49, 0x35, 0x4a, 0x26, 0x13, 0x28, 0x9a, 0x4c, 0x6c, 0x95, 0xfa, 0x0b, 0xf2, 0x8c, 0x5a, 0xbd,
0xae, 0x95, 0x50, 0xab, 0xaf, 0xbe, 0x32, 0xcb, 0xcc, 0x02, 0x19, 0xf5, 0x32, 0xed, 0x09, 0x59, 0x33, 0x8e, 0x0b,
0xdc, 0x83, 0xd5, 0x77, 0x7b, 0xd1, 0x64, 0x99, 0x81, 0x52, 0x89, 0x47, 0xf8, 0x41, 0x98, 0xe6, 0x37, 0x52, 0x44,
0x9a, 0xf6, 0x2a, 0x72, 0xd5, 0x51, 0xae, 0xf1, 0x39, 0xbe, 0xea, 0xf8, 0x16, 0x16, 0x5f, 0xa6, 0x6a, 0x3c, 0xbe,
0x78, 0x31, 0x76, 0xf6, 0xc0, 0x94, 0x8d, 0x8b, 0x37, 0x69, 0x23, 0x05, 0x4e, 0x80, 0x1d, 0x86, 0x26, 0xa6, 0xa5,
0x20, 0x58, 0x75, 0x17, 0xa0, 0xaa, 0xec, 0x19, 0x9d, 0x64, 0xa6, 0x14, 0x0e, 0x39, 0xa8, 0x91, 0x25, 0x30, 0x07,
0x93, 0xba, 0x90, 0xbe, 0xcb, 0x2e, 0xf2, 0x47, 0x4e, 0xe5, 0x07, 0xbc, 0xe9, 0xf4, 0x61, 0x29, 0xf5, 0x87, 0xcc,
0x2c, 0xa8, 0x7a, 0x62, 0xc0, 0x5f, 0xcc, 0x30, 0x2e, 0x55, 0x90, 0x1f, 0x08, 0x37, 0xc7, 0xaf, 0x0d, 0x89, 0x21,
0x54, 0x2c, 0xbd, 0xa2, 0xde, 0xe5, 0xa5, 0xf9, 0xd1, 0xcb, 0xda, 0x07, 0x12, 0x1b, 0x3c, 0xc0, 0xf0, 0x6b, 0xb5,
0xa8, 0x0d, 0xb2, 0x05, 0x77, 0x1c, 0x6a, 0xe5, 0xb8, 0xa5, 0xb7, 0xd3, 0x6e, 0x83, 0x8a, 0xf1, 0xc5, 0x27, 0x8d,
0x1c, 0xdd, 0x59, 0xe2, 0x7b, 0x55, 0xe8, 0x7e, 0xe5, 0x13, 0x63, 0x9a, 0xc4, 0xf8, 0x0d, 0x14, 0x81, 0xa8, 0x71,
0x0d, 0x46, 0x2d, 0x62, 0xf3, 0xdd, 0x57, 0x6e, 0x9c, 0x41, 0x58, 0x77, 0x1d, 0x07, 0xcb, 0x34, 0xd1, 0x7a, 0x21,
0xb6, 0x15, 0x56, 0xcd, 0x2a, 0x38, 0x37, 0xe8, 0xcc, 0xe2, 0xcc, 0x88, 0x71, 0xd7, 0xb6, 0x41, 0xa9, 0x82, 0xdc,
0x22, 0x52, 0xbd, 0x87, 0xf1, 0x58, 0xe1, 0x03, 0x2b, 0xa0, 0xeb, 0xde, 0xa7, 0x01, 0x39, 0xfa, 0xa5, 0x9a, 0xd1,
0x55, 0x95, 0x2a, 0x28, 0xcd, 0x53, 0x0a, 0x03, 0x19, 0x0a, 0x36, 0xc3, 0x1a, 0xa7, 0x42, 0x6f, 0xc1, 0x34, 0x24,
0x80, 0xb5, 0x53, 0x86, 0x9e, 0x89, 0xad, 0xc0, 0x16, 0xd2, 0x02, 0x94, 0x1e, 0x76, 0xe8, 0x5b, 0x35, 0xd0, 0xd3,
0xd5, 0x18, 0xf5, 0x75, 0x7e, 0xda, 0xc5, 0x91, 0x5f, 0x9c, 0x79, 0xf0, 0xcf, 0xfa, 0xd3, 0x12, 0xa4, 0xfc, 0xf1,
0xa7, 0x98, 0x83, 0x51, 0x3d, 0x6f, 0x61, 0x24, 0x84, 0x42, 0xa6, 0x52, 0x1d, 0xd2, 0xa9, 0xaa, 0xb8, 0xfd, 0xd4,
0x5b, 0x14, 0xe8, 0xce, 0x91, 0xdf, 0x12, 0xa4, 0x59, 0xca, 0x7a, 0xf5, 0xd3, 0x73, 0xd3, 0x75, 0x50, 0xc4, 0x1a,
0x2e, 0x33, 0x74, 0xff, 0xf8, 0x05, 0xb8, 0x7f, 0x42, 0x8d, 0xb6, 0x95, 0xdf, 0xd0, 0x5e, 0xdb, 0x3e, 0x90, 0xb4,
0xdd, 0x24, 0x6b, 0x21, 0x5f, 0xf5, 0x8f, 0xae, 0xf2, 0x6f, 0x6e, 0x3a, 0x4b, 0xc6, 0xf8, 0xac, 0xfa, 0x67, 0x1c,
0xc2, 0x37, 0x8b, 0xe9, 0x2c, 0xf9, 0x36, 0x90, 0x05, 0xd1, 0x04, 0x3f, 0x16, 0x78, 0x9b, 0x96, 0xc7, 0x94, 0xc8,
0xb9, 0x44, 0xb5, 0x1e, 0x74, 0x1e, 0x81, 0xc3, 0x76, 0xeb, 0xe1, 0xaf, 0x47, 0xbf, 0x94, 0x34, 0x52, 0xf7, 0x71,
0x6d, 0xbb, 0x87, 0xf2, 0x22, 0x89, 0x2e, 0xc0, 0x6f, 0x24, 0x1b, 0xe3, 0x18, 0x03, 0xb9, 0xbd, 0x79, 0x26, 0x93,
0x22, 0x72, 0x96, 0xd0, 0x6f, 0xe4, 0x90, 0x4b, 0xb1, 0xfd, 0x60, 0x7e, 0xae, 0x56, 0xa3, 0xd3, 0x48, 0x76, 0xf8,
0x43, 0x73, 0x1a, 0xae, 0x4e, 0xa2, 0xa8, 0x9f, 0xcb, 0xef, 0x00, 0x0c, 0xc2, 0xb0, 0x69, 0xe5, 0x02, 0xaa, 0x36,
0x94, 0x18, 0x59, 0x1d, 0xd5, 0x40, 0x96, 0xbf, 0x0d, 0xaa, 0x32, 0x2a, 0x58, 0x0f, 0xbf, 0xda, 0x18, 0x83, 0x77,
0x2a, 0x8d, 0xa7, 0x59, 0x3c, 0x1e, 0x27, 0xac, 0xa7, 0xec, 0x23, 0xab, 0xf3, 0x00, 0x93, 0x22, 0xcc, 0x25, 0xab,
0xaf, 0x8a, 0x41, 0x3c, 0x4d, 0xa7, 0xe8, 0x18, 0xec, 0x35, 0xfc, 0xf4, 0xe2, 0x5a, 0x72, 0xca, 0x6c, 0x81, 0x76,
0x45, 0x3c, 0x7a, 0xae, 0xe3, 0xb2, 0x03, 0xc6, 0x22, 0x2d, 0x78, 0xbb, 0xc7, 0xb3, 0x79, 0xd0, 0xda, 0xae, 0x23,
0x82, 0x55, 0x1a, 0x05, 0x6f, 0x0d, 0x5a, 0x1e, 0x5a, 0x07, 0x42, 0xcb, 0x59, 0x7e, 0x47, 0x96, 0xd1, 0x00, 0xf8,
0x79, 0x3f, 0x5d, 0x54, 0xd6, 0x91, 0xf9, 0xf7, 0xd9, 0x2d, 0x5f, 0xae, 0xdf, 0x2d, 0x5f, 0xaa, 0xdd, 0x72, 0x3d,
0xc7, 0x7e, 0x31, 0xe9, 0xe0, 0x9f, 0x5e, 0x85, 0x10, 0xac, 0x0a, 0x90, 0xc3, 0x42, 0xbb, 0xb8, 0xd5, 0x85, 0xff,
0x68, 0xe8, 0xb6, 0x87, 0x7f, 0x7c, 0xb0, 0x00, 0xdb, 0x16, 0x16, 0xe2, 0xbf, 0x76, 0xad, 0xaa, 0x73, 0x1f, 0xeb,
0xb0, 0xd7, 0xce, 0x6a, 0x5d, 0xf7, 0xfa, 0x4d, 0x0b, 0xf2, 0x8a, 0x3b, 0x81, 0x12, 0xc6, 0xe0, 0xaa, 0x45, 0xc7,
0xc7, 0x50, 0x3a, 0xc9, 0x46, 0x8b, 0xe2, 0xef, 0x24, 0xfc, 0x92, 0x88, 0xd7, 0x6e, 0xe9, 0xc6, 0x38, 0xaa, 0xab,
0xc8, 0xb0, 0x51, 0x23, 0x2c, 0xf5, 0x3a, 0x05, 0x05, 0x30, 0x26, 0x73, 0xba, 0xfe, 0xfd, 0x35, 0x9b, 0xe0, 0x3f,
0x64, 0x6d, 0xd6, 0x22, 0xf3, 0x6f, 0x25, 0xc6, 0xb5, 0x44, 0xf8, 0x2c, 0x1a, 0x98, 0x6b, 0xd8, 0x7e, 0xb4, 0x1e,
0xdc, 0x43, 0x35, 0xd3, 0x50, 0x29, 0x05, 0xa9, 0x77, 0xc0, 0x0b, 0x88, 0x16, 0x09, 0xbf, 0x7e, 0xd4, 0xab, 0x38,
0x63, 0x65, 0xd4, 0x6b, 0x04, 0x7a, 0xd5, 0xf6, 0x96, 0x52, 0xfa, 0x8b, 0x2f, 0xef, 0xe3, 0x1f, 0x11, 0xfb, 0x3a,
0xae, 0x7c, 0x23, 0x11, 0x1b, 0x40, 0xdf, 0x68, 0xa3, 0xe6, 0xfc, 0x08, 0x0d, 0x4e, 0xfe, 0xcf, 0x6d, 0x5b, 0xa3,
0xb1, 0x7e, 0xab, 0xe6, 0xd2, 0x2a, 0xfd, 0xac, 0xd6, 0x9f, 0x37, 0xf8, 0x2d, 0xdb, 0x8e, 0x84, 0x43, 0x50, 0x6f,
0x2b, 0x7f, 0x3b, 0xca, 0x4a, 0x63, 0x45, 0xf1, 0xdb, 0xb6, 0xaf, 0x4c, 0x62, 0xea, 0xb1, 0x11, 0x1e, 0x6b, 0x27,
0x52, 0x9e, 0x6f, 0x63, 0x0f, 0xe1, 0x47, 0xfe, 0x85, 0x85, 0xf7, 0xf0, 0xc3, 0x62, 0xd6, 0xf9, 0x2c, 0x49, 0xc1,
0xac, 0x9a, 0x72, 0x3e, 0x0f, 0xb6, 0xb6, 0xce, 0xce, 0xce, 0xfc, 0xb3, 0x6d, 0x3f, 0xcb, 0x4f, 0xb6, 0xba, 0xed,
0x76, 0x1b, 0xbf, 0x07, 0x65, 0x5b, 0xa7, 0x31, 0x3b, 0x7b, 0x0c, 0xee, 0x87, 0xfd, 0xd0, 0x7a, 0x64, 0x3d, 0xdc,
0xb6, 0x76, 0x1e, 0xd8, 0x16, 0x29, 0x00, 0x28, 0xd9, 0xb6, 0x2d, 0xa1, 0x00, 0x42, 0x1b, 0x8a, 0xfb, 0xbb, 0x27,
0xca, 0x86, 0xc3, 0x7c, 0x7b, 0x61, 0x21, 0x81, 0xff, 0x96, 0x7d, 0x62, 0xf5, 0xad, 0x2e, 0xca, 0x5a, 0x52, 0x8d,
0xa8, 0x57, 0xdc, 0xef, 0xa3, 0x68, 0x1e, 0x10, 0x1b, 0x99, 0x85, 0x18, 0x26, 0x13, 0xa5, 0x34, 0x05, 0xda, 0xa5,
0xc7, 0xf0, 0x84, 0x19, 0x5a, 0x16, 0x3c, 0xbf, 0xea, 0x3e, 0x04, 0x1d, 0x77, 0xda, 0xba, 0x3f, 0x6a, 0xb7, 0x3a,
0x56, 0xa7, 0xd5, 0xf5, 0x1f, 0x5a, 0x5d, 0xf1, 0x3f, 0xc8, 0xc8, 0x6d, 0xab, 0x03, 0x4f, 0xdb, 0x16, 0xbc, 0x9f,
0xde, 0x17, 0xe9, 0x17, 0x91, 0xbd, 0xd5, 0xdf, 0xc5, 0x5f, 0x8f, 0x04, 0x48, 0x7d, 0x69, 0x8b, 0x5f, 0xe8, 0x66,
0x7f, 0x61, 0x96, 0x76, 0x1e, 0xad, 0x2d, 0xee, 0x3e, 0x5c, 0x5b, 0xbc, 0xfd, 0x60, 0x6d, 0xf1, 0xfd, 0x9d, 0x7a,
0xf1, 0xd6, 0x89, 0xa8, 0xd2, 0x72, 0x21, 0xb4, 0x67, 0x11, 0x30, 0xca, 0xb9, 0xd3, 0x01, 0x38, 0xdb, 0x56, 0x0b,
0x7f, 0x3c, 0xec, 0xba, 0xba, 0xd7, 0x31, 0xf6, 0xd2, 0x58, 0x3e, 0x7c, 0x04, 0x58, 0x3e, 0xef, 0x3e, 0x18, 0x61,
0x3b, 0x42, 0x14, 0xfe, 0x9d, 0x6e, 0x3f, 0x1a, 0x81, 0x46, 0xb0, 0xf0, 0x1f, 0xfc, 0x99, 0xee, 0x74, 0x47, 0xe2,
0xa5, 0x8d, 0xf5, 0x1f, 0x3a, 0x0f, 0x0b, 0x68, 0x8a, 0x7f, 0x7e, 0xd3, 0x26, 0x34, 0x1a, 0xf0, 0xe6, 0xb8, 0xf7,
0x81, 0x46, 0x8f, 0xa6, 0x5d, 0xff, 0xcb, 0xd3, 0x87, 0xfe, 0xa3, 0x69, 0xe7, 0xe1, 0x07, 0xf1, 0x96, 0x00, 0x05,
0xbf, 0xc4, 0x7f, 0x1f, 0xb6, 0xdb, 0xd3, 0x56, 0xc7, 0x7f, 0x74, 0xba, 0xed, 0x6f, 0x27, 0xad, 0x07, 0xfe, 0x23,
0xfc, 0x57, 0x0d, 0x37, 0xcd, 0x66, 0xcc, 0xb6, 0x70, 0xbd, 0x1b, 0x7e, 0xaf, 0x39, 0x47, 0xf7, 0xbe, 0xb5, 0x73,
0xff, 0xf9, 0x23, 0x58, 0xa3, 0x69, 0xa7, 0x0b, 0xff, 0x5f, 0xf5, 0xf8, 0x01, 0x09, 0x2f, 0x07, 0x8e, 0x18, 0x66,
0xca, 0x2a, 0xc2, 0xd1, 0xb7, 0xc9, 0xee, 0x79, 0xdf, 0x5f, 0x15, 0x00, 0x61, 0xfc, 0xe6, 0x20, 0x37, 0xbf, 0x5d,
0x04, 0x84, 0x3e, 0x9c, 0xff, 0x07, 0x46, 0x40, 0xbe, 0x6f, 0x06, 0xb9, 0xcf, 0x57, 0xf3, 0x03, 0x9b, 0xce, 0xda,
0x6b, 0xe6, 0x1c, 0xfe, 0x85, 0x0d, 0x31, 0x2b, 0x1c, 0x5a, 0x73, 0x6e, 0xc6, 0x83, 0x32, 0xdc, 0xc8, 0xe7, 0x32,
0xea, 0x5f, 0xf0, 0x2b, 0x08, 0x12, 0xdf, 0x4c, 0x90, 0x5f, 0x6f, 0x47, 0x8f, 0xf8, 0x0f, 0xa6, 0x47, 0xc1, 0x0d,
0x7a, 0xd4, 0x22, 0xee, 0x14, 0x31, 0x20, 0x47, 0x7f, 0x9f, 0xde, 0x9d, 0xef, 0xf1, 0xab, 0x62, 0x5b, 0x0c, 0x4b,
0x0a, 0x5b, 0xe4, 0x24, 0xbe, 0xfb, 0x9c, 0x13, 0x02, 0x91, 0x38, 0x1d, 0xda, 0x32, 0x08, 0x33, 0xc7, 0xcf, 0xef,
0xaa, 0x97, 0x53, 0x71, 0x39, 0x27, 0xa4, 0x9b, 0x75, 0x3b, 0x3a, 0x80, 0x83, 0xb9, 0xec, 0xe1, 0x32, 0xe3, 0x11,
0xfe, 0x7e, 0x27, 0x1e, 0xf3, 0x04, 0xef, 0xfd, 0xca, 0x3b, 0x72, 0x98, 0x7a, 0xfd, 0x2d, 0xa6, 0x8d, 0xab, 0x83,
0x82, 0x19, 0x06, 0x0d, 0x5e, 0xb1, 0x71, 0x1c, 0x39, 0xb6, 0x33, 0x87, 0x5d, 0x0b, 0x63, 0xb6, 0x6a, 0x39, 0xdb,
0x94, 0xae, 0xed, 0xda, 0xea, 0x57, 0x0a, 0xe5, 0xf8, 0x89, 0xb6, 0xf0, 0x50, 0x06, 0x19, 0x6d, 0xe9, 0x05, 0xc0,
0xf8, 0xaa, 0x24, 0x47, 0x81, 0x5f, 0x59, 0x0e, 0xb6, 0x30, 0x1d, 0x3a, 0x7e, 0x17, 0x5c, 0x09, 0x2a, 0xc6, 0x4f,
0x5e, 0xfd, 0xe0, 0xb4, 0xb6, 0xc1, 0xb4, 0x31, 0xba, 0xe9, 0x81, 0x86, 0x2b, 0xa1, 0x24, 0x11, 0x20, 0x68, 0x94,
0x7a, 0xfa, 0x77, 0xac, 0x55, 0x21, 0xa3, 0xe2, 0xf1, 0xc5, 0x81, 0xbc, 0xd6, 0x6e, 0x63, 0xf4, 0x96, 0xa2, 0xf6,
0xd5, 0x27, 0xb5, 0x36, 0x41, 0x65, 0xd0, 0x2f, 0xba, 0xa4, 0x33, 0x70, 0xd4, 0x0a, 0x98, 0x55, 0x6e, 0x49, 0xef,
0x21, 0xb4, 0x85, 0x4e, 0x18, 0xb3, 0xd3, 0x78, 0x24, 0x45, 0xbb, 0x67, 0xc9, 0xdb, 0x30, 0x2d, 0xc2, 0x22, 0xec,
0x78, 0xc2, 0x7f, 0x86, 0x17, 0xd4, 0x6c, 0x61, 0x9a, 0xd9, 0xfd, 0x7b, 0x3d, 0x0d, 0x49, 0x3d, 0x21, 0xdf, 0xc6,
0xdf, 0xba, 0x79, 0x08, 0xfe, 0xda, 0xdf, 0x85, 0xf7, 0xf0, 0xf7, 0x6e, 0xde, 0x1b, 0xda, 0xae, 0x4f, 0x82, 0xf1,
0x5e, 0xf5, 0xcb, 0x37, 0x51, 0x2a, 0x6c, 0x82, 0x0e, 0xf3, 0x6e, 0xab, 0xcc, 0xa4, 0xe2, 0xea, 0xee, 0x54, 0x8a,
0x0b, 0x9e, 0x0d, 0x49, 0x05, 0x42, 0xb4, 0xeb, 0xef, 0x18, 0xe2, 0xf0, 0xb4, 0x85, 0x3f, 0x6b, 0x02, 0xf1, 0x3e,
0x34, 0x50, 0x12, 0xf1, 0x25, 0x34, 0xdf, 0x16, 0xc2, 0x17, 0xfa, 0xfd, 0x48, 0xe2, 0x4a, 0x88, 0xaa, 0x3a, 0xc7,
0xac, 0x39, 0x48, 0x12, 0xf9, 0x02, 0xb6, 0x67, 0xc4, 0x9c, 0x04, 0xbb, 0xca, 0x88, 0xca, 0x53, 0xe8, 0xeb, 0xe8,
0x2f, 0x55, 0xaf, 0xab, 0xf3, 0x6a, 0xbb, 0x67, 0xcd, 0x14, 0xc8, 0xf0, 0x8d, 0xc3, 0x2a, 0xba, 0x9d, 0x21, 0xbe,
0xd8, 0x26, 0xb6, 0x72, 0xf5, 0x4d, 0xbb, 0x35, 0x59, 0xc0, 0xe6, 0xa6, 0x60, 0x15, 0xd3, 0xd0, 0xbe, 0xc0, 0xf4,
0x19, 0xfc, 0x59, 0x15, 0xab, 0x07, 0xc9, 0x50, 0x7e, 0x12, 0xe1, 0x2f, 0x9c, 0xa1, 0x1f, 0x65, 0xb5, 0x01, 0x39,
0x7d, 0x92, 0x93, 0x20, 0x7d, 0x31, 0x2e, 0x9b, 0x48, 0x80, 0xcd, 0x80, 0xbf, 0xbf, 0xb0, 0xba, 0x0d, 0x22, 0xaf,
0x79, 0x62, 0x6a, 0xc1, 0x38, 0xce, 0xe9, 0xf6, 0xb0, 0xc2, 0xbf, 0x16, 0xd5, 0xac, 0x48, 0x4d, 0xbb, 0x92, 0x15,
0x03, 0x1b, 0x8b, 0xec, 0x40, 0x26, 0xc0, 0x99, 0xdf, 0xa4, 0x36, 0xaf, 0x77, 0x8e, 0x45, 0xee, 0x1b, 0x7e, 0xb3,
0xdf, 0x16, 0x44, 0xb6, 0x41, 0x94, 0x5d, 0x89, 0x13, 0x19, 0x38, 0x78, 0x2b, 0xb2, 0xfa, 0x25, 0x4c, 0xe6, 0x86,
0xb7, 0xcd, 0xd5, 0xd2, 0xe3, 0xd2, 0x3a, 0xb8, 0x32, 0x86, 0x77, 0xcc, 0x22, 0xee, 0x47, 0x29, 0xe5, 0x29, 0x39,
0x86, 0x58, 0xf0, 0x3a, 0x6c, 0xdb, 0x2d, 0x41, 0xf2, 0x18, 0xbf, 0xa5, 0x4a, 0x90, 0xde, 0x87, 0x42, 0x95, 0x4b,
0xfd, 0x7d, 0x2d, 0x15, 0x78, 0xda, 0xed, 0xbf, 0x39, 0xd8, 0xb3, 0xc4, 0xc6, 0xde, 0xdd, 0x82, 0xd7, 0x5d, 0xf2,
0x8e, 0x45, 0xc6, 0x46, 0x28, 0x32, 0x36, 0x2c, 0x91, 0xe7, 0x25, 0x52, 0x67, 0xb7, 0x04, 0xd6, 0xb6, 0xc5, 0xd2,
0x91, 0x08, 0xeb, 0xcd, 0xc0, 0x83, 0x88, 0xf1, 0x33, 0x66, 0x5b, 0xd8, 0xb5, 0x85, 0x0b, 0x6f, 0xab, 0xe4, 0x17,
0x65, 0x33, 0xf0, 0x54, 0x05, 0x01, 0x41, 0xd3, 0x33, 0x95, 0x07, 0x23, 0x87, 0xd2, 0x69, 0xb1, 0xab, 0xad, 0x8b,
0xc5, 0xf1, 0x0c, 0xc4, 0x92, 0xca, 0x5d, 0x79, 0x2f, 0x3b, 0xec, 0xd2, 0x54, 0xfd, 0xa3, 0x72, 0x5d, 0x94, 0x72,
0xda, 0xe9, 0xef, 0x46, 0xd2, 0x06, 0xc2, 0xbd, 0x5c, 0xc0, 0x66, 0x06, 0xd5, 0x87, 0x86, 0x86, 0x1f, 0x67, 0x5b,
0x67, 0xec, 0xb8, 0x15, 0xcd, 0xe3, 0x2a, 0x24, 0x88, 0x1a, 0xb1, 0xbf, 0xab, 0x94, 0xa3, 0x4c, 0xf5, 0x94, 0x8f,
0x91, 0x91, 0xdc, 0x81, 0x84, 0x24, 0x86, 0x2d, 0x65, 0xbc, 0x91, 0x0c, 0x49, 0x58, 0x0c, 0x00, 0x96, 0xf8, 0x59,
0xc5, 0x25, 0xa5, 0x66, 0x28, 0xed, 0xfe, 0x5f, 0xff, 0xf7, 0xff, 0x91, 0xa1, 0x46, 0xa0, 0x2d, 0x80, 0x85, 0xd9,
0x31, 0xd5, 0xa9, 0x23, 0x3b, 0x07, 0xe7, 0x34, 0x1e, 0xb7, 0xa6, 0x51, 0x32, 0x01, 0x08, 0x0a, 0x26, 0xee, 0x14,
0xc8, 0x7a, 0xe0, 0x0a, 0x09, 0x96, 0x79, 0x62, 0x2f, 0xc1, 0xab, 0x17, 0xe1, 0xb2, 0xfd, 0xae, 0xdc, 0x59, 0x95,
0xb3, 0x4c, 0x0c, 0x6e, 0x64, 0xd2, 0x1a, 0x3c, 0x58, 0xcb, 0xa6, 0x55, 0xbf, 0x13, 0x4a, 0x0a, 0x13, 0x56, 0x4b,
0xa5, 0x85, 0x96, 0xfa, 0x70, 0xe4, 0x5f, 0xff, 0xe9, 0xbf, 0xfc, 0x0f, 0xf5, 0x8a, 0x67, 0x1e, 0x7f, 0xfd, 0xc7,
0xbf, 0xff, 0x7f, 0xff, 0xf7, 0xbf, 0x62, 0xa6, 0xb2, 0x3c, 0x17, 0xa1, 0xad, 0x65, 0x55, 0x87, 0x22, 0x62, 0x8f,
0x59, 0x95, 0x13, 0x52, 0x4f, 0xb9, 0xdd, 0xa7, 0x09, 0x89, 0x41, 0x25, 0x74, 0xc4, 0xe7, 0x94, 0xa2, 0x4d, 0x54,
0xbb, 0x86, 0x7c, 0xb0, 0x94, 0x16, 0x1d, 0xf5, 0xdb, 0x3b, 0x6d, 0xbb, 0x5a, 0xde, 0xbe, 0xd1, 0x77, 0x0b, 0x17,
0xe6, 0x56, 0x89, 0x39, 0xbe, 0x5e, 0xb6, 0xa5, 0x0a, 0x6d, 0x61, 0x49, 0x59, 0x95, 0x5b, 0x18, 0x73, 0x5e, 0xe2,
0x6b, 0xd0, 0x35, 0x8a, 0x69, 0x95, 0x6b, 0x7d, 0x7a, 0xbf, 0x2c, 0x00, 0xd1, 0x09, 0x2e, 0x8d, 0x08, 0xa0, 0xd1,
0x79, 0x6a, 0x0b, 0xad, 0x95, 0xe4, 0xa2, 0xa4, 0x51, 0x84, 0x87, 0x73, 0xff, 0xd1, 0xdf, 0x96, 0x7f, 0x9e, 0xa1,
0x95, 0x60, 0x39, 0xb3, 0xe8, 0x5c, 0xfa, 0x3d, 0x0f, 0xda, 0xed, 0xf9, 0xb9, 0xbb, 0xac, 0x66, 0xf0, 0xae, 0x9a,
0x8c, 0x82, 0x6e, 0xe6, 0x80, 0x74, 0x10, 0xab, 0xe3, 0x7b, 0x60, 0xea, 0xb7, 0x31, 0x1c, 0x54, 0x96, 0x7f, 0x5a,
0x52, 0x88, 0x29, 0xfe, 0x0d, 0x0f, 0x4c, 0x65, 0x34, 0x0e, 0x4a, 0x0c, 0x2c, 0x96, 0x46, 0xaf, 0xae, 0xe8, 0x35,
0xed, 0xac, 0xa6, 0xac, 0x98, 0x07, 0xbe, 0xe6, 0x51, 0xed, 0x7d, 0x3c, 0x7c, 0x9d, 0x76, 0xbc, 0x69, 0x77, 0xa9,
0x87, 0xe7, 0x3c, 0x9b, 0x99, 0x27, 0xbc, 0x2c, 0x62, 0x23, 0x36, 0x51, 0x51, 0x4c, 0x59, 0x2f, 0x4e, 0x6f, 0xcb,
0x2f, 0x70, 0xbb, 0x01, 0x6d, 0xb3, 0x88, 0x07, 0xc4, 0xb4, 0x3d, 0xf3, 0x0c, 0x38, 0xc2, 0xd3, 0xf5, 0x6c, 0x69,
0xcc, 0xd5, 0x13, 0x4d, 0x31, 0x56, 0x58, 0x4f, 0x07, 0x2a, 0x7d, 0xea, 0x6e, 0x0e, 0x25, 0x42, 0x0d, 0xbf, 0xca,
0xa3, 0xd5, 0x77, 0x35, 0x1f, 0x5d, 0x8a, 0x66, 0x70, 0x8b, 0xd7, 0xd6, 0x0b, 0x35, 0x29, 0x6a, 0x3f, 0x80, 0xf5,
0x43, 0x60, 0xda, 0xcd, 0x56, 0x54, 0x88, 0xad, 0xde, 0x85, 0xbf, 0x6a, 0x7b, 0x3c, 0x9a, 0xcf, 0xa9, 0xa1, 0x0b,
0xdc, 0x48, 0x76, 0x35, 0x4a, 0x0a, 0x4a, 0x1b, 0x10, 0xa7, 0xf4, 0xb2, 0x8d, 0x64, 0x5b, 0xf1, 0x24, 0xcf, 0xef,
0xe9, 0x57, 0x8c, 0xff, 0x7f, 0x2a, 0xa5, 0xd0, 0x17, 0x78, 0x7c, 0x00, 0x00};
} // namespace web_server
} // namespace esphome

View File

@@ -39,11 +39,8 @@ void WiFiComponent::setup() {
this->last_connected_ = millis();
this->wifi_pre_setup_();
#ifndef USE_CAPTIVE_PORTAL_KEEP_USER_CREDENTIALS
uint32_t hash = fnv1_hash(App.get_compilation_time());
#else
uint32_t hash = 88491487UL;
#endif
uint32_t hash = this->has_sta() ? fnv1_hash(App.get_compilation_time()) : 88491487UL;
this->pref_ = global_preferences->make_preference<wifi::SavedWifiSettings>(hash, true);
SavedWifiSettings save{};

View File

@@ -548,6 +548,7 @@ def only_with_framework(frameworks):
only_on_esp32 = only_on("esp32")
only_on_esp8266 = only_on("esp8266")
only_on_rp2040 = only_on("rp2040")
only_with_arduino = only_with_framework("arduino")
only_with_esp_idf = only_with_framework("esp-idf")

View File

@@ -1,6 +1,6 @@
"""Constants used by esphome."""
__version__ = "2022.11.0b4"
__version__ = "2022.11.2"
ALLOWED_NAME_CHARS = "abcdefghijklmnopqrstuvwxyz0123456789-_"