Merge pull request #28 from netmindz/DMX-Input-esp_dmx

Dmx input esp dmx
This commit is contained in:
MoonModules
2023-04-06 20:57:41 +02:00
committed by GitHub
13 changed files with 386 additions and 266 deletions

View File

@@ -290,6 +290,7 @@ lib_depsV4 =
;https://github.com/Makuna/NeoPixelBus.git#master ;; NPB 2.6.9 tends to crash whith IDF V4.4.3 -> use latest NeoPixelBus dev instead
makuna/NeoPixelBus @ 2.7.1
https://github.com/pbolduc/AsyncTCP.git @ 1.2.0
https://github.com/someweisguy/esp_dmx.git#feature/rdm-rx
[esp32s2]
build_flags = -g
@@ -909,7 +910,7 @@ platform = ${esp32.platformV4}
platform_packages = ${esp32.platformV4_packages}
build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags} ${esp32.build_flagsV4} ${common_mm.build_flags_S}
-Wno-misleading-indentation -Wno-format-truncation
-Wno-misleading-indentation -Wno-format-truncation -D WLED_ENABLE_DMX_INPUT
lib_deps = ${esp32.lib_depsV4} ${common_mm.lib_deps_S}
board_build.partitions = ${esp32.default_partitions}
board_build.f_flash = 80000000L ; use full 80MHz speed for flash (default = 40Mhz)

View File

@@ -435,6 +435,13 @@ bool deserializeConfig(JsonObject doc, bool fromFS) {
tdd = if_live[F("timeout")] | -1;
if (tdd >= 0) realtimeTimeoutMs = tdd * 100;
#ifdef WLED_ENABLE_DMX_INPUT
CJSON(dmxTransmitPin, if_live_dmx[F("rxPin")]);
CJSON(dmxReceivePin, if_live_dmx[F("txPin")]);
CJSON(dmxEnablePin, if_live_dmx[F("enablePin")]);
#endif
CJSON(arlsForceMaxBri, if_live[F("maxbri")]);
CJSON(arlsDisableGammaCorrection, if_live[F("no-gc")]); // false
CJSON(arlsOffset, if_live[F("offset")]); // 0
@@ -902,6 +909,11 @@ void serializeConfig() {
if_live_dmx[F("addr")] = DMXAddress;
if_live_dmx[F("dss")] = DMXSegmentSpacing;
if_live_dmx["mode"] = DMXMode;
#ifdef WLED_ENABLE_DMX_INPUT
if_live_dmx[F("rxPin")] = dmxTransmitPin;
if_live_dmx[F("txPin")] = dmxReceivePin;
if_live_dmx[F("enablePin")] = dmxEnablePin;
#endif
if_live[F("timeout")] = realtimeTimeoutMs / 100;
if_live[F("maxbri")] = arlsForceMaxBri;

View File

@@ -178,6 +178,7 @@
#define REALTIME_MODE_ARTNET 6
#define REALTIME_MODE_TPM2NET 7
#define REALTIME_MODE_DDP 8
#define REALTIME_MODE_DMX 9
//realtime override modes
#define REALTIME_OVERRIDE_NONE 0

View File

@@ -12,6 +12,8 @@
function hideNoDMX(){gId("dmxOnOff2").style.display="none";} //WLEDMM
function hideNoLOX(){gId("loxOnOff2").style.display="none";} //WLEDMM
function hideNoADA(){gId("adaOnOff2").style.display="none";} //WLEDMM
function hideDMXInput(){gId("dmxInput").style.display="none";} //WLEDMM
function hideNoDMXInput(){gId("dmxInputOff").style.display="none";} //WLEDMM
function H(){window.open("https://mm.kno.wled.ge/interfaces/udp-notifier/");}
function B(){window.open("/settings","_self");}
function adj(){if (d.Sf.DI.value == 6454) {if (d.Sf.EU.value == 1) d.Sf.EU.value = 0;}
@@ -172,6 +174,15 @@ Timeout: <input name="ET" type="number" min="1" max="65000" required> ms<br>
Force max brightness: <input type="checkbox" name="FB"><br>
Disable realtime gamma correction: <input type="checkbox" name="RG"><br>
Realtime LED offset: <input name="WO" type="number" min="-255" max="255" required>
<div id="dmxInput"> <!--WLEDMM-->
<em>DMX Input Pins</em><br/>
DMX RX: <input name="DMR" type="number" min="-1" max="99"><br/>
DMX TX: <input name="DMT" type="number" min="-1" max="99"><br/>
DMX Enable: <input name="DME" type="number" min="-1" max="99"><br/>
</div>
<div id="dmxInputOff"> <!--WLEDMM-->
<br><em style="color:darkorange">This firmware build does not include DMX Input support. <br></em>
</div>
<div id="dmxOnOff2"> <!--WLEDMM-->
<br><em style="color:darkorange">This firmware build does not include DMX output support. <br></em>
</div>

View File

@@ -89,8 +89,73 @@ void initDMX() {
dmx.initWrite(512); // initialize with bus length
#endif
}
#else
void handleDMX() {}
void initDMX() {}
#endif
#ifdef WLED_ENABLE_DMX_INPUT
#include <esp_dmx.h>
dmx_port_t dmxPort = 2;
void initDMX() {
/* Set the DMX hardware pins to the pins that we want to use. */
if(dmxReceivePin > 0) {
USER_PRINTF("Listening for DMX on pin %u\n", dmxReceivePin);
dmx_set_pin(dmxPort, dmxTransmitPin, dmxReceivePin, dmxEnablePin);
}
else {
USER_PRINTLN("DMX input disabled due to dmxReceivePin not being set");
return;
}
/* Now we can install the DMX driver! We'll tell it which DMX port to use and
which interrupt priority it should have. If you aren't sure which interrupt
priority to use, you can use the macro `DMX_DEFAULT_INTR_FLAG` to set the
interrupt to its default settings.*/
dmx_driver_install(dmxPort, ESP_INTR_FLAG_LEVEL3);
}
bool dmxIsConnected = false;
unsigned long dmxLastUpdate = 0;
void handleDMXInput() {
if(dmxReceivePin < 1) {
return;
}
byte dmxdata[DMX_PACKET_SIZE];
dmx_packet_t packet;
unsigned long now = millis();
if (dmx_receive(dmxPort, &packet, 0)) {
/* We should check to make sure that there weren't any DMX errors. */
if (!packet.err) {
/* If this is the first DMX data we've received, lets log it! */
if (!dmxIsConnected) {
USER_PRINTLN("DMX is connected!");
dmxIsConnected = true;
}
dmx_read(dmxPort, dmxdata, packet.size);
handleDMXData(1, 512, dmxdata, REALTIME_MODE_DMX, 0);
dmxLastUpdate = now;
} else {
/* Oops! A DMX error occurred! Don't worry, this can happen when you first
connect or disconnect your DMX devices. If you are consistently getting
DMX errors, then something may have gone wrong with your code or
something is seriously wrong with your DMX transmitter. */
DEBUG_PRINT("A DMX error occurred - ");
DEBUG_PRINTLN(packet.err);
}
}
else if (dmxIsConnected && (now - dmxLastUpdate > 5000)) {
dmxIsConnected = false;
USER_PRINTLN("DMX was disconnected.");
}
}
#else
void initDMX();
#endif

View File

@@ -90,15 +90,6 @@ void handleE131Packet(e131_packet_t* p, IPAddress clientIP, byte protocol){
return;
}
#ifdef WLED_ENABLE_DMX
// does not act on out-of-order packets yet
if (e131ProxyUniverse > 0 && uni == e131ProxyUniverse) {
for (uint16_t i = 1; i <= dmxChannels; i++)
dmx.write(i, e131_data[i]);
dmx.update();
}
#endif
// only listen for universes we're handling & allocated memory
if (uni < e131Universe || uni >= (e131Universe + E131_MAX_UNIVERSE_COUNT)) return;
@@ -119,6 +110,21 @@ void handleE131Packet(e131_packet_t* p, IPAddress clientIP, byte protocol){
// update status info
realtimeIP = clientIP;
handleDMXData(uni, dmxChannels, e131_data, mde, previousUniverses);
}
void handleDMXData(uint16_t uni, uint16_t dmxChannels, uint8_t* e131_data, uint8_t mde, uint8_t previousUniverses) {
#ifdef WLED_ENABLE_DMX
// does not act on out-of-order packets yet
if (e131ProxyUniverse > 0 && uni == e131ProxyUniverse) {
for (uint16_t i = 1; i <= dmxChannels; i++)
dmx.write(i, e131_data[i]);
dmx.update();
}
#endif
byte wChannel = 0;
uint16_t totalLen = strip.getLengthTotal();
uint16_t availDMXLen = 0;
@@ -133,7 +139,7 @@ void handleE131Packet(e131_packet_t* p, IPAddress clientIP, byte protocol){
}
// DMX data in Art-Net packet starts at index 0, for E1.31 at index 1
if (protocol == P_ARTNET && dataOffset > 0) {
if (mde == REALTIME_MODE_ARTNET && dataOffset > 0) {
dataOffset--;
}
@@ -197,7 +203,7 @@ void handleE131Packet(e131_packet_t* p, IPAddress clientIP, byte protocol){
else
dataOffset = DMXAddress;
// Modify address for Art-Net data
if (protocol == P_ARTNET && dataOffset > 0)
if (mde == REALTIME_MODE_ARTNET && dataOffset > 0)
dataOffset--;
// Skip out of universe addresses
if (dataOffset > dmxChannels - dmxEffectChannels + 1)
@@ -266,7 +272,7 @@ void handleE131Packet(e131_packet_t* p, IPAddress clientIP, byte protocol){
}
} else {
// All subsequent universes start at the first channel.
dmxOffset = (protocol == P_ARTNET) ? 0 : 1;
dmxOffset = (mde == REALTIME_MODE_ARTNET) ? 0 : 1;
const uint16_t dimmerOffset = (DMXMode == DMX_MODE_MULTIPLE_DRGB) ? 1 : 0;
uint16_t ledsInFirstUniverse = (((MAX_CHANNELS_PER_UNIVERSE - DMXAddress) + dmxLenOffset) - dimmerOffset) / dmxChannelsPerLed;
previousLeds = ledsInFirstUniverse + (previousUniverses - 1) * ledsPerUniverse;

View File

@@ -71,9 +71,11 @@ uint32_t gamma32(uint32_t);
//dmx.cpp
void initDMX();
void handleDMX();
void handleDMXInput();
//e131.cpp
void handleE131Packet(e131_packet_t* p, IPAddress clientIP, byte protocol);
void handleDMXData(uint16_t uni, uint16_t dmxChannels, uint8_t* e131_data, uint8_t mde, uint8_t previousUniverses);
void handleArtnetPollReply(IPAddress ipAddress);
void prepareArtnetPollReply(ArtPollReply* reply);
void sendArtnetPollReply(ArtPollReply* reply, IPAddress ipAddress, uint16_t portAddress);

View File

@@ -8,7 +8,7 @@
// Autogenerated from wled00/data/style.css, do not edit!!
const uint16_t PAGE_settingsCss_length = 847;
const uint8_t PAGE_settingsCss[] PROGMEM = {
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xad, 0x55, 0xc1, 0x8e, 0x9b, 0x30,
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0xad, 0x55, 0xc1, 0x8e, 0x9b, 0x30,
0x10, 0xfd, 0x15, 0xaa, 0x68, 0xa5, 0xad, 0x14, 0x10, 0x10, 0xc8, 0xa6, 0x46, 0x95, 0xaa, 0xde,
0x7b, 0xab, 0xaa, 0x4a, 0xd5, 0x1e, 0x0c, 0x1e, 0x82, 0x15, 0x63, 0x23, 0xdb, 0x74, 0x49, 0x11,
0xff, 0x5e, 0xdb, 0xc0, 0x42, 0xb2, 0x68, 0x7b, 0xa9, 0xa2, 0x44, 0xc4, 0x63, 0xc6, 0x6f, 0xde,
@@ -67,7 +67,7 @@ const uint8_t PAGE_settingsCss[] PROGMEM = {
// Autogenerated from wled00/data/settings.htm, do not edit!!
const uint16_t PAGE_settings_length = 1267;
const uint8_t PAGE_settings[] PROGMEM = {
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xad, 0x56, 0xe1, 0x6e, 0xdb, 0x36,
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0xad, 0x56, 0xe1, 0x6e, 0xdb, 0x36,
0x10, 0xfe, 0xef, 0xa7, 0x60, 0xd8, 0x2d, 0x91, 0x50, 0x59, 0x76, 0xdc, 0x61, 0xd8, 0x64, 0x4b,
0x45, 0x9b, 0xa4, 0x6d, 0x86, 0x04, 0x09, 0x90, 0xa4, 0xdd, 0xb0, 0x0d, 0x28, 0x4d, 0x9e, 0x6c,
0x36, 0x12, 0x29, 0x90, 0x94, 0x13, 0xcf, 0xf5, 0x7b, 0xec, 0x69, 0xf6, 0x30, 0x7b, 0x92, 0x1d,
@@ -153,7 +153,7 @@ const uint8_t PAGE_settings[] PROGMEM = {
// Autogenerated from wled00/data/settings_wifi.htm, do not edit!!
const uint16_t PAGE_settings_wifi_length = 2101;
const uint8_t PAGE_settings_wifi[] PROGMEM = {
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xb5, 0x58, 0x6b, 0x6f, 0xdb, 0xca,
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0xb5, 0x58, 0x6b, 0x6f, 0xdb, 0xca,
0x11, 0xfd, 0xae, 0x5f, 0xb1, 0xde, 0x16, 0x06, 0x09, 0xd3, 0x94, 0x64, 0x35, 0x69, 0x60, 0x8b,
0x4a, 0xfd, 0xd0, 0x8d, 0xdd, 0x3a, 0x8e, 0x0a, 0x19, 0xd7, 0x28, 0xd2, 0xe0, 0x5e, 0x9a, 0x1c,
0x49, 0x1b, 0x93, 0xbb, 0xbc, 0xdc, 0xa5, 0x64, 0xc3, 0xd6, 0x7f, 0xef, 0xcc, 0x2e, 0xf5, 0xb4,
@@ -291,7 +291,7 @@ const uint8_t PAGE_settings_wifi[] PROGMEM = {
// Autogenerated from wled00/data/settings_leds.htm, do not edit!!
const uint16_t PAGE_settings_leds_length = 7635;
const uint8_t PAGE_settings_leds[] PROGMEM = {
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xdd, 0x3c, 0xdb, 0x72, 0xe2, 0xc8,
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0xdd, 0x3c, 0xdb, 0x72, 0xe2, 0xc8,
0x92, 0xef, 0x7c, 0x45, 0x59, 0x33, 0xe3, 0x91, 0x0e, 0x32, 0x48, 0x5c, 0x7a, 0x6c, 0x40, 0x78,
0x8d, 0xfb, 0x32, 0xde, 0x63, 0x8f, 0x1d, 0xe0, 0xe9, 0x3e, 0x27, 0x7a, 0x3a, 0xba, 0x85, 0x54,
0x80, 0xda, 0x42, 0x62, 0x25, 0xe1, 0xcb, 0xda, 0xec, 0x37, 0xed, 0x37, 0xec, 0x97, 0x6d, 0x66,
@@ -775,7 +775,7 @@ const uint8_t PAGE_settings_leds[] PROGMEM = {
// Autogenerated from wled00/data/settings_dmx.htm, do not edit!!
const uint16_t PAGE_settings_dmx_length = 1612;
const uint8_t PAGE_settings_dmx[] PROGMEM = {
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0x95, 0x57, 0xdb, 0x72, 0xdb, 0x36,
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x95, 0x57, 0xdb, 0x72, 0xdb, 0x36,
0x10, 0x7d, 0xd7, 0x57, 0x20, 0x78, 0x88, 0xc9, 0x31, 0x43, 0x4a, 0x4e, 0x95, 0x36, 0x32, 0x49,
0x37, 0x56, 0x5c, 0xdb, 0x1d, 0xdb, 0xf5, 0x44, 0x49, 0xd3, 0x4e, 0xd3, 0xe9, 0x40, 0xe4, 0x4a,
0x44, 0x4c, 0x02, 0x2c, 0x00, 0x4a, 0x76, 0x2e, 0xff, 0xde, 0x05, 0x48, 0x5d, 0xec, 0xd8, 0x69,
@@ -882,7 +882,7 @@ const uint8_t PAGE_settings_dmx[] PROGMEM = {
// Autogenerated from wled00/data/settings_ui.htm, do not edit!!
const uint16_t PAGE_settings_ui_length = 3183;
const uint8_t PAGE_settings_ui[] PROGMEM = {
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xad, 0x59, 0x6b, 0x73, 0xdb, 0x36,
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0xad, 0x59, 0x6b, 0x73, 0xdb, 0x36,
0x16, 0xfd, 0xae, 0x5f, 0x81, 0x20, 0x1d, 0x57, 0x1a, 0x33, 0xb4, 0x9c, 0x74, 0x67, 0x13, 0x49,
0x94, 0x37, 0x76, 0xdc, 0xc4, 0x1d, 0xa7, 0xc9, 0x46, 0xce, 0xa6, 0x9d, 0x6c, 0xc6, 0xa5, 0x48,
0x48, 0x42, 0x4c, 0x12, 0x2c, 0x01, 0xfa, 0xb1, 0x8a, 0xfe, 0xfb, 0x9e, 0x0b, 0x90, 0x12, 0x25,
@@ -1085,244 +1085,249 @@ const uint8_t PAGE_settings_ui[] PROGMEM = {
// Autogenerated from wled00/data/settings_sync.htm, do not edit!!
const uint16_t PAGE_settings_sync_length = 3653;
const uint16_t PAGE_settings_sync_length = 3742;
const uint8_t PAGE_settings_sync[] PROGMEM = {
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xad, 0x5a, 0xeb, 0x72, 0xdb, 0x36,
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0xad, 0x5a, 0xeb, 0x72, 0xdb, 0x36,
0x16, 0xfe, 0xcf, 0xa7, 0x40, 0xd8, 0x99, 0x56, 0xaa, 0x65, 0xdd, 0x6c, 0x39, 0x8e, 0x2d, 0x32,
0x2b, 0x5b, 0x8e, 0xad, 0xae, 0x2f, 0x8a, 0xe4, 0x34, 0xe9, 0x74, 0x3b, 0x1d, 0x88, 0x84, 0x24,
0xda, 0x24, 0xc1, 0x12, 0xa0, 0x2f, 0x93, 0xe6, 0x3d, 0xf6, 0x69, 0xf6, 0x61, 0xf6, 0x49, 0xf6,
0x1c, 0x80, 0xa4, 0x24, 0x5a, 0x37, 0x6f, 0x9b, 0x99, 0xd0, 0x24, 0x88, 0x73, 0x70, 0x70, 0xae,
0xdf, 0x81, 0xd8, 0x7e, 0xd3, 0xbd, 0x39, 0xbd, 0xfd, 0xa5, 0x7f, 0x46, 0xa6, 0x32, 0xf0, 0xed,
0x36, 0x5e, 0x89, 0x4f, 0xc3, 0x89, 0x65, 0xb2, 0xd0, 0x84, 0x67, 0x46, 0x5d, 0xbb, 0x1d, 0x30,
0x49, 0x49, 0x48, 0x03, 0x66, 0x99, 0x0f, 0x1e, 0x7b, 0x8c, 0x78, 0x2c, 0x4d, 0xe2, 0xf0, 0x50,
0xb2, 0x50, 0x5a, 0xe6, 0xa3, 0xe7, 0xca, 0xa9, 0xd5, 0xaa, 0xd7, 0x4d, 0xdb, 0xd0, 0x53, 0x8d,
0xc2, 0x3b, 0x97, 0x3d, 0x78, 0x0e, 0xdb, 0x55, 0x0f, 0x15, 0x2f, 0xf4, 0xa4, 0x47, 0xfd, 0x5d,
0xe1, 0x50, 0x9f, 0x59, 0x8d, 0x4a, 0x40, 0x9f, 0xbc, 0x20, 0x09, 0xf2, 0xe7, 0x44, 0xb0, 0x58,
0x3d, 0xd0, 0x11, 0x3c, 0x87, 0xdc, 0x24, 0x46, 0x61, 0xe9, 0x54, 0x20, 0x67, 0x4a, 0x63, 0xc1,
0x60, 0x91, 0x44, 0x8e, 0x77, 0x0f, 0x61, 0x54, 0x7a, 0xd2, 0x67, 0xf6, 0xf0, 0x39, 0x74, 0xc8,
0x90, 0x49, 0xe9, 0x85, 0x13, 0xd1, 0xae, 0xe9, 0xc1, 0xb6, 0x70, 0x62, 0x2f, 0x92, 0xb6, 0xf1,
0x40, 0x63, 0xe2, 0x73, 0xc7, 0x8b, 0x2a, 0xae, 0xe5, 0x72, 0x27, 0x09, 0x40, 0xcc, 0x0a, 0x0c,
0x58, 0x6f, 0x1a, 0xc7, 0xe3, 0x24, 0x74, 0xa4, 0xc7, 0x43, 0x32, 0xe9, 0xb9, 0x25, 0x56, 0xfe,
0x1a, 0x33, 0x99, 0xc4, 0x21, 0x71, 0xab, 0x13, 0x26, 0xcf, 0x7c, 0x86, 0x53, 0x4f, 0x9e, 0xd5,
0xab, 0x6f, 0xf9, 0x54, 0xc9, 0x27, 0x13, 0x9f, 0xe1, 0x6c, 0x4d, 0x54, 0x75, 0x7c, 0x2a, 0xc4,
0xa5, 0x27, 0x64, 0x35, 0x7d, 0x65, 0x4e, 0x3d, 0x97, 0x99, 0xe5, 0x0a, 0xbe, 0x37, 0xaf, 0xb9,
0xb9, 0xb3, 0x66, 0xd2, 0x8c, 0x2f, 0x3e, 0x5f, 0xf3, 0xee, 0xd5, 0x97, 0x92, 0xe6, 0x6c, 0xba,
0xc1, 0xd3, 0x4d, 0x78, 0x33, 0x1e, 0x37, 0xcd, 0x72, 0x55, 0xc8, 0x67, 0x9f, 0x55, 0x5d, 0x4f,
0x44, 0x3e, 0x7d, 0xb6, 0xcc, 0x90, 0x87, 0xcc, 0x2c, 0x92, 0x5e, 0xde, 0xe4, 0xa4, 0x3e, 0x7f,
0x1d, 0x69, 0xa7, 0xdb, 0xc9, 0x48, 0xa9, 0x4b, 0xb7, 0x24, 0xbd, 0x00, 0x92, 0x47, 0x2f, 0x74,
0xf9, 0x63, 0x95, 0x47, 0x2c, 0x84, 0x1d, 0x49, 0x19, 0x89, 0xa3, 0x5a, 0x2d, 0x08, 0xaa, 0xf7,
0x21, 0xaf, 0x3e, 0xfa, 0x0c, 0x15, 0x59, 0xf3, 0xc0, 0x33, 0xe2, 0x31, 0x75, 0x98, 0xa8, 0x25,
0x6e, 0xb4, 0x1b, 0x72, 0xe9, 0x8d, 0x3d, 0x16, 0xd7, 0xe6, 0x37, 0x7f, 0x52, 0xe4, 0x55, 0x13,
0xa9, 0x3d, 0xcd, 0x8a, 0xf9, 0xbb, 0x60, 0xfe, 0x78, 0x7e, 0x36, 0x75, 0xef, 0x60, 0xfe, 0xc1,
0x7e, 0x6b, 0xdf, 0xb2, 0xdc, 0xea, 0x70, 0x5c, 0xed, 0xf6, 0xaa, 0x0f, 0xd4, 0x4f, 0xd8, 0xfb,
0x46, 0x3a, 0x70, 0xf6, 0x49, 0x0f, 0x7c, 0xff, 0x7d, 0x69, 0xe1, 0xd9, 0xaa, 0x97, 0x8f, 0x5a,
0xad, 0x83, 0xc3, 0x02, 0x1d, 0x4c, 0xab, 0x67, 0x43, 0x9d, 0x45, 0xca, 0xec, 0xd9, 0x6a, 0x94,
0x2b, 0xf5, 0x4d, 0xdc, 0x1b, 0xe5, 0x39, 0x29, 0x7d, 0x4e, 0xdd, 0x9f, 0x86, 0x25, 0x56, 0x91,
0xd6, 0x9b, 0x7a, 0xf9, 0xab, 0xcf, 0x24, 0xe1, 0x40, 0xef, 0xc4, 0x8c, 0x4a, 0x96, 0x7a, 0x57,
0xc9, 0xd4, 0x6e, 0x6a, 0x96, 0x8f, 0x79, 0x15, 0xb6, 0xdc, 0x91, 0x32, 0xf6, 0x46, 0x89, 0x04,
0xff, 0x10, 0xb1, 0x63, 0x56, 0x58, 0xb9, 0x52, 0x1c, 0x97, 0xcf, 0x11, 0x03, 0xa5, 0x48, 0xf6,
0x24, 0x6b, 0x77, 0xf4, 0x81, 0x66, 0x0c, 0x5e, 0x4c, 0xa4, 0x02, 0xe2, 0xc2, 0xac, 0xc8, 0x72,
0xc5, 0xad, 0x8e, 0xb8, 0xfb, 0x5c, 0xa5, 0x11, 0xa8, 0xd6, 0x3d, 0x9d, 0x7a, 0xbe, 0x5b, 0xe2,
0x38, 0x9f, 0xba, 0xee, 0xd9, 0x03, 0x48, 0x81, 0x7e, 0xc9, 0x42, 0x16, 0xa3, 0xe3, 0x50, 0xd7,
0xac, 0x94, 0xca, 0x96, 0xfd, 0xf5, 0x9c, 0xc9, 0x9f, 0x4b, 0xe5, 0x0a, 0xc4, 0xd5, 0xcf, 0xd4,
0x2f, 0x95, 0xbf, 0x2d, 0x27, 0x60, 0x71, 0xcc, 0x63, 0x90, 0x13, 0x08, 0x20, 0x05, 0x08, 0x0e,
0xfe, 0xe2, 0xf3, 0x49, 0xc9, 0x3c, 0xc3, 0x71, 0x92, 0x6a, 0x01, 0xec, 0x48, 0xc6, 0x9e, 0xcf,
0xd4, 0x7e, 0x20, 0xe6, 0x63, 0xd8, 0xf7, 0x65, 0x3a, 0xce, 0xc7, 0x98, 0x57, 0xc6, 0xde, 0x24,
0x89, 0xa9, 0x52, 0x9b, 0xde, 0x0f, 0x19, 0x53, 0x0f, 0xfd, 0xe7, 0x5f, 0x61, 0x2f, 0x74, 0x78,
0x10, 0x81, 0xf6, 0x18, 0x89, 0xe8, 0x84, 0x11, 0x97, 0x4a, 0xfa, 0x06, 0xbc, 0x61, 0x4e, 0xd3,
0x1f, 0x4e, 0xc1, 0x1d, 0xc6, 0x3c, 0x2e, 0xdd, 0x59, 0xf5, 0xe3, 0xbb, 0xf6, 0xe1, 0xf1, 0xdd,
0xce, 0x4e, 0x59, 0x79, 0xf3, 0xb9, 0xb9, 0x53, 0xba, 0xdb, 0x01, 0xb3, 0x54, 0x9d, 0x29, 0x73,
0xee, 0x99, 0x6b, 0xe9, 0xe1, 0x21, 0x78, 0xb7, 0x32, 0x99, 0x6d, 0xdf, 0x7d, 0xdf, 0xd0, 0x91,
0x3a, 0x58, 0x31, 0x77, 0xb0, 0x30, 0x77, 0xb6, 0xea, 0x39, 0xae, 0x8a, 0xd9, 0x05, 0xbc, 0x0a,
0x6c, 0x5c, 0xaf, 0x70, 0x0b, 0x32, 0x4a, 0x41, 0x0a, 0xb6, 0x63, 0x2d, 0x17, 0xe4, 0x47, 0x5e,
0x91, 0xe9, 0xbb, 0xc1, 0x92, 0x77, 0xfc, 0x47, 0xab, 0x79, 0x5c, 0x90, 0xd5, 0x62, 0x95, 0x82,
0x44, 0x96, 0x9c, 0x89, 0x33, 0xec, 0xe7, 0xe2, 0x2c, 0xf8, 0xb6, 0xe6, 0xf2, 0x14, 0xbd, 0x88,
0x67, 0x66, 0xd7, 0xdf, 0xeb, 0x98, 0x3e, 0x32, 0x47, 0x90, 0x10, 0xef, 0xc1, 0x3c, 0x76, 0x3d,
0xf7, 0xe9, 0x7e, 0xb6, 0xe8, 0x9c, 0xa2, 0x33, 0x67, 0xf8, 0x2a, 0x1e, 0x3d, 0xe9, 0x4c, 0x4b,
0x11, 0xe6, 0xe3, 0x1e, 0xb8, 0xf1, 0x02, 0x49, 0xb9, 0xfc, 0xd5, 0xa1, 0x82, 0x11, 0x0c, 0xb4,
0xa3, 0x05, 0x59, 0x2c, 0x1c, 0x3a, 0x1e, 0x41, 0x04, 0xdc, 0x1f, 0xab, 0x29, 0x18, 0xc3, 0x85,
0x29, 0x38, 0x34, 0x3f, 0x65, 0xbf, 0xbe, 0x5f, 0xe4, 0x82, 0x43, 0xdf, 0x70, 0xbf, 0x15, 0xb4,
0xfc, 0x9c, 0x78, 0x20, 0x99, 0x89, 0x8e, 0x76, 0x64, 0x5a, 0x56, 0x9a, 0x4e, 0x60, 0x63, 0xca,
0xaf, 0xaa, 0x51, 0xcc, 0x25, 0x77, 0xb8, 0x0f, 0x1b, 0x54, 0xd9, 0xbf, 0x5e, 0x29, 0xa9, 0xb2,
0x60, 0xe1, 0x0c, 0x7f, 0x28, 0x79, 0x0c, 0xde, 0x85, 0x89, 0xbf, 0x27, 0x59, 0x80, 0x91, 0xe0,
0xf4, 0x40, 0x67, 0xe5, 0x3f, 0xff, 0x4c, 0xa7, 0x01, 0x7d, 0x10, 0x81, 0xe3, 0x7e, 0x00, 0xfe,
0xe4, 0x8a, 0xbb, 0xac, 0x4a, 0xfa, 0x3e, 0x43, 0x09, 0x19, 0x26, 0x38, 0xf2, 0xf9, 0xf2, 0xac,
0x4b, 0x7a, 0x7d, 0x70, 0xcd, 0xca, 0x02, 0x47, 0xb1, 0xc8, 0xb1, 0xa2, 0xb8, 0x95, 0xcb, 0x38,
0x4b, 0xe5, 0x07, 0x64, 0xff, 0x5e, 0xe5, 0x4e, 0x48, 0x9d, 0xe6, 0x8e, 0x7a, 0x7d, 0x64, 0x9a,
0xe5, 0x9d, 0x59, 0x0e, 0xac, 0x89, 0xea, 0x9d, 0x78, 0x1f, 0x59, 0xfb, 0x66, 0xe5, 0x4d, 0xa3,
0xfc, 0xcd, 0x68, 0xd7, 0xd2, 0xe2, 0xd6, 0x56, 0x16, 0xb5, 0xff, 0xe1, 0x05, 0x58, 0x26, 0x49,
0x12, 0xfb, 0x90, 0x37, 0x94, 0x91, 0x1d, 0x21, 0x20, 0xa7, 0xc0, 0x44, 0x35, 0xa1, 0x5d, 0xd3,
0x65, 0x1d, 0xd3, 0x00, 0x04, 0x25, 0xae, 0x6c, 0x99, 0xa0, 0x2d, 0x28, 0xa1, 0xe0, 0xb0, 0x81,
0x41, 0x3c, 0x78, 0xc6, 0xbb, 0xdf, 0x85, 0x99, 0x96, 0xfd, 0xe1, 0xd8, 0x24, 0x50, 0x74, 0xa7,
0x1c, 0xde, 0x44, 0x5c, 0x40, 0xf9, 0x87, 0xf0, 0x4e, 0x46, 0x81, 0x07, 0xe5, 0x17, 0x3d, 0x1f,
0x48, 0x5d, 0xef, 0x81, 0xa8, 0xba, 0x66, 0x99, 0x92, 0x83, 0x7a, 0x1e, 0xd3, 0x31, 0x23, 0x1d,
0x9c, 0x32, 0x3f, 0x3a, 0x81, 0x31, 0x48, 0x47, 0x12, 0x0b, 0x27, 0x24, 0x2e, 0xcb, 0xd4, 0x0f,
0xc8, 0xcd, 0xf1, 0x3d, 0xe7, 0xde, 0x32, 0x2f, 0x90, 0xd7, 0xfb, 0x76, 0x4d, 0xbf, 0x00, 0x51,
0x81, 0x45, 0x4e, 0x63, 0xac, 0x20, 0x3a, 0x41, 0xa2, 0x13, 0xea, 0xdc, 0xcf, 0xe8, 0x16, 0x56,
0xd1, 0x92, 0x9a, 0xf6, 0x90, 0x3e, 0xb0, 0xd9, 0x94, 0x69, 0x0c, 0x78, 0x45, 0xf3, 0x9f, 0x36,
0x35, 0x6c, 0x00, 0x15, 0x27, 0x11, 0xa8, 0xa7, 0x09, 0x43, 0x7b, 0xb6, 0xb2, 0xe1, 0x49, 0x0c,
0xea, 0x01, 0xd7, 0x93, 0x30, 0xbc, 0x67, 0x7f, 0xea, 0xf6, 0x49, 0x1f, 0x94, 0x7b, 0x44, 0xda,
0x5e, 0x18, 0x25, 0x32, 0x55, 0xcf, 0xa7, 0xbe, 0x99, 0x09, 0x17, 0x26, 0xc1, 0x88, 0xc5, 0xa0,
0x2d, 0x2f, 0xb4, 0xcc, 0x06, 0xfc, 0xa5, 0x4f, 0x96, 0x79, 0xd0, 0x6a, 0xed, 0xb5, 0xcc, 0x4c,
0x3d, 0x2e, 0xdc, 0xc6, 0xec, 0x8f, 0xc4, 0x8b, 0x19, 0x5a, 0x21, 0xb6, 0x9b, 0xa1, 0xbb, 0xc8,
0x35, 0x45, 0x3c, 0x9f, 0x9a, 0x26, 0xf9, 0xff, 0xb9, 0xe2, 0x16, 0x0c, 0xb5, 0xad, 0x49, 0xcc,
0x93, 0x48, 0xa8, 0x0d, 0x2c, 0x88, 0x0d, 0xc9, 0x44, 0xd9, 0x1a, 0xff, 0x2e, 0xae, 0xa3, 0x1c,
0x05, 0x78, 0xea, 0xe4, 0x70, 0xa4, 0xf2, 0x82, 0x4d, 0x8c, 0x45, 0xea, 0x41, 0x4a, 0x3d, 0xd8,
0x8a, 0xba, 0x2d, 0x11, 0xd0, 0x11, 0x23, 0x7d, 0x19, 0xd0, 0x78, 0xe2, 0x85, 0x47, 0x75, 0x42,
0x13, 0xc9, 0xf1, 0x2d, 0x08, 0x2c, 0x41, 0xf0, 0x1a, 0x5e, 0xe0, 0x7f, 0x23, 0xbf, 0x6b, 0xe6,
0x77, 0x7b, 0xf9, 0xdd, 0x7e, 0x7e, 0xd7, 0x32, 0xf2, 0xdb, 0x83, 0xfc, 0xee, 0x6d, 0x7e, 0x77,
0xa8, 0xef, 0x6a, 0x8a, 0xbd, 0x5e, 0x62, 0x08, 0x65, 0xef, 0x28, 0x9f, 0x90, 0x69, 0x5c, 0xef,
0x40, 0xa5, 0xdc, 0x11, 0x7f, 0x4a, 0x77, 0xd6, 0xc8, 0xfc, 0x1f, 0xee, 0xec, 0x22, 0xc9, 0x52,
0x8a, 0x66, 0x0e, 0x57, 0xe1, 0x76, 0x3b, 0x92, 0xbd, 0x7c, 0x91, 0xbd, 0x97, 0x14, 0xcb, 0xe5,
0xda, 0xcf, 0x49, 0xf6, 0xb7, 0x5c, 0xa4, 0x35, 0x93, 0xab, 0xb5, 0x25, 0xc9, 0x41, 0xbe, 0xc8,
0xc1, 0xb6, 0x72, 0xbd, 0xcd, 0x49, 0xde, 0x6e, 0xb9, 0xc8, 0xe1, 0x4c, 0xae, 0xc3, 0x8c, 0x64,
0xde, 0x58, 0x03, 0xe6, 0x30, 0xef, 0x81, 0x1d, 0x6d, 0xc3, 0x6c, 0xd0, 0xc8, 0x99, 0x0d, 0xb6,
0xb4, 0xd7, 0xa0, 0x99, 0x49, 0x3c, 0x68, 0x6e, 0xb9, 0xc9, 0x41, 0x6e, 0xaf, 0xc1, 0xde, 0x96,
0x8b, 0xec, 0xcf, 0xe4, 0xda, 0xd2, 0x5e, 0x83, 0x56, 0xbe, 0x48, 0x6b, 0x5b, 0xb9, 0x72, 0x7b,
0x0d, 0x0e, 0xb6, 0x5c, 0xe4, 0xed, 0x4c, 0xae, 0x2d, 0xed, 0x35, 0x38, 0xcc, 0x17, 0x59, 0x34,
0x57, 0x4d, 0x45, 0x37, 0x24, 0x54, 0x48, 0x3c, 0xb9, 0xcd, 0x42, 0xfe, 0x18, 0xd3, 0x68, 0x15,
0xbf, 0x94, 0x0f, 0xd4, 0x84, 0x93, 0xd8, 0x9b, 0x4c, 0x65, 0xc8, 0x84, 0xa8, 0xb4, 0x6b, 0x29,
0x91, 0xb1, 0x1d, 0xf5, 0xa9, 0x69, 0x9f, 0x72, 0x9f, 0xc7, 0x33, 0xc2, 0x8c, 0x8e, 0x42, 0x52,
0x5d, 0xa5, 0xaf, 0x94, 0xf8, 0x8b, 0x69, 0x9f, 0x8d, 0xc7, 0xcc, 0x91, 0x62, 0x46, 0x8d, 0x89,
0x73, 0xdd, 0x8a, 0xc3, 0x1b, 0x68, 0x73, 0x01, 0xfa, 0x4c, 0x10, 0xb0, 0x13, 0x1e, 0x21, 0x9a,
0x10, 0x15, 0xb2, 0x9e, 0xe6, 0x1c, 0x92, 0xe7, 0x88, 0x27, 0xa1, 0x2b, 0x90, 0xbf, 0x81, 0x19,
0x88, 0xe8, 0xce, 0x47, 0xc3, 0x11, 0x81, 0xd8, 0xd8, 0x85, 0xcc, 0xed, 0x48, 0x6c, 0x6b, 0xc3,
0x09, 0x3b, 0xda, 0xc0, 0xb1, 0x6b, 0xda, 0x6b, 0x58, 0xa5, 0xd5, 0x2f, 0x8a, 0x41, 0xa5, 0x04,
0x90, 0x77, 0x6f, 0xb0, 0x89, 0xdf, 0xc9, 0x3c, 0xbf, 0x8e, 0xcf, 0x9e, 0xe8, 0x22, 0xd7, 0x4d,
0xf4, 0x9d, 0x79, 0xfa, 0x3e, 0x34, 0x15, 0x5e, 0x24, 0xc8, 0x45, 0xc2, 0xd2, 0xed, 0xbc, 0x8e,
0xd9, 0xc5, 0x3c, 0xb3, 0x2b, 0xea, 0xc4, 0xfc, 0x75, 0xf4, 0x57, 0x29, 0x3d, 0x56, 0xeb, 0x08,
0x60, 0x01, 0xf4, 0x5a, 0xd0, 0xcb, 0xc7, 0x34, 0x14, 0x81, 0x27, 0xc4, 0x02, 0x87, 0xb4, 0xd0,
0x0e, 0x96, 0x16, 0xda, 0x7a, 0x5a, 0x68, 0xf7, 0xe0, 0xc6, 0x58, 0x59, 0x66, 0x95, 0xc7, 0x80,
0xd3, 0x8f, 0x38, 0x97, 0xf9, 0x2b, 0x22, 0x39, 0x81, 0x0e, 0xcb, 0x7f, 0x4e, 0x15, 0x20, 0xaa,
0xed, 0x9a, 0x87, 0x98, 0x23, 0x67, 0x24, 0x02, 0xdf, 0x54, 0x35, 0xba, 0x17, 0x0a, 0x49, 0x43,
0x87, 0x11, 0xec, 0xa3, 0x54, 0x91, 0x3e, 0x0b, 0x55, 0xa9, 0xf4, 0xb2, 0x17, 0x3e, 0xbc, 0x58,
0xb9, 0xe7, 0x34, 0x82, 0xaf, 0x2f, 0xf5, 0xa6, 0xaf, 0xe8, 0x3d, 0x23, 0x72, 0xea, 0x89, 0x19,
0x39, 0xd4, 0x61, 0x87, 0x3f, 0xb0, 0x18, 0x99, 0x6e, 0x50, 0xdd, 0xf5, 0x09, 0x1e, 0xe2, 0x80,
0x94, 0x45, 0x21, 0x07, 0x8c, 0xfa, 0xd2, 0x0b, 0x98, 0x92, 0x2f, 0x0d, 0x70, 0x82, 0xfa, 0x8d,
0xd3, 0x17, 0x9b, 0xe4, 0x1b, 0xa4, 0x1e, 0xfb, 0x09, 0x20, 0x72, 0x40, 0x3d, 0xe8, 0xec, 0xb2,
0x10, 0x0a, 0xfd, 0xe7, 0x0d, 0x52, 0x5d, 0xdd, 0x98, 0xb9, 0xaa, 0x01, 0x83, 0xd8, 0xd7, 0x4c,
0x3e, 0xf2, 0xf8, 0x9e, 0x74, 0xaf, 0xbe, 0x10, 0x45, 0xa7, 0x74, 0x0b, 0x2f, 0x6f, 0x81, 0x1c,
0x78, 0x09, 0xe6, 0x63, 0x24, 0x69, 0xe2, 0x6e, 0x4f, 0x21, 0x45, 0x65, 0x05, 0xf0, 0x0d, 0xec,
0x13, 0xd4, 0x89, 0x01, 0x6e, 0x54, 0x87, 0x2f, 0xd1, 0x7d, 0x84, 0x89, 0xed, 0x08, 0x64, 0x84,
0x46, 0x75, 0xaf, 0x41, 0x4a, 0xa2, 0x73, 0x7a, 0x5d, 0x6e, 0xd7, 0xf4, 0x0c, 0xbb, 0x30, 0x13,
0xbb, 0x12, 0xd3, 0xee, 0xc4, 0x72, 0x17, 0x44, 0xc9, 0x27, 0x15, 0xf9, 0x81, 0xd7, 0x68, 0x49,
0xa0, 0x79, 0x34, 0xb3, 0x3b, 0xc8, 0x57, 0x89, 0x90, 0x3c, 0x20, 0x88, 0xd1, 0x67, 0xfc, 0x6b,
0xfa, 0xbd, 0xde, 0xa6, 0x82, 0xcd, 0x98, 0x6e, 0xa1, 0x4f, 0xb3, 0x97, 0xc0, 0xcd, 0xb3, 0xfe,
0x36, 0xb8, 0x70, 0x7e, 0x57, 0x6b, 0xdc, 0x57, 0x21, 0xe0, 0xab, 0x04, 0x8c, 0x88, 0x28, 0x77,
0x83, 0x25, 0xce, 0xb2, 0xd0, 0x1a, 0x4a, 0x8a, 0x2d, 0x46, 0x08, 0x6e, 0x00, 0x4d, 0x5f, 0x51,
0xbe, 0x4f, 0x6b, 0xc3, 0xe9, 0x60, 0xef, 0xdd, 0xbb, 0x77, 0x05, 0x31, 0x8c, 0x97, 0x21, 0xa4,
0x22, 0x86, 0x9c, 0xa2, 0x04, 0x84, 0x03, 0xef, 0x36, 0x25, 0xd3, 0x98, 0x8d, 0xad, 0xfc, 0x64,
0x69, 0xe2, 0xc9, 0x69, 0x32, 0xaa, 0x3a, 0x3c, 0xa8, 0x5d, 0x32, 0xf7, 0xc3, 0x93, 0xbe, 0x22,
0x12, 0x07, 0x6c, 0x89, 0x07, 0x83, 0xbf, 0x8f, 0x7c, 0x1a, 0xde, 0x9b, 0xb6, 0x1a, 0x6f, 0xd7,
0xa8, 0xfd, 0x06, 0x97, 0x1a, 0xde, 0x7b, 0x11, 0x32, 0xdc, 0xe5, 0xe3, 0x5d, 0x01, 0x6b, 0x31,
0x8c, 0x11, 0x9d, 0x26, 0x66, 0x79, 0x61, 0x45, 0xc9, 0x38, 0x1b, 0xea, 0xfd, 0xa3, 0xe7, 0x09,
0xa5, 0x02, 0xea, 0xba, 0x98, 0x65, 0x0b, 0x1a, 0xe8, 0x76, 0x8a, 0x1a, 0x30, 0x16, 0x4c, 0xd4,
0x6a, 0xd4, 0x0b, 0x0a, 0x50, 0x1c, 0xd3, 0x90, 0x10, 0x20, 0x0d, 0x74, 0x7a, 0x05, 0x9e, 0x5f,
0xbe, 0x2c, 0x6f, 0x32, 0x32, 0xb5, 0x36, 0x5a, 0x45, 0x9e, 0xda, 0x95, 0x55, 0x33, 0x18, 0xc5,
0x1e, 0x8f, 0x3d, 0xf9, 0x5c, 0x6c, 0x31, 0xfa, 0xbf, 0xac, 0x35, 0x55, 0xb3, 0xbe, 0x4c, 0xce,
0x00, 0xfa, 0xdd, 0x59, 0x98, 0xa5, 0x9c, 0xba, 0xe8, 0x1a, 0xc5, 0x00, 0xb0, 0xbb, 0x9e, 0xc0,
0xb4, 0xe3, 0xae, 0x8a, 0x24, 0xc0, 0x69, 0x43, 0xd8, 0x2a, 0x64, 0xbb, 0xc1, 0xf9, 0x89, 0xb1,
0x6a, 0x56, 0x33, 0x9f, 0xd5, 0x85, 0x69, 0xab, 0x66, 0xed, 0x65, 0xe5, 0x7c, 0x65, 0x44, 0xbe,
0xcd, 0x66, 0x90, 0x1d, 0xf2, 0x79, 0xea, 0x49, 0xb6, 0x8a, 0xd5, 0x61, 0x3e, 0x31, 0xad, 0xf4,
0x2b, 0x45, 0x7b, 0x57, 0x9c, 0xb9, 0x89, 0x35, 0x24, 0x0e, 0x43, 0x85, 0x1b, 0x59, 0xb3, 0x95,
0x16, 0x6a, 0x2e, 0x08, 0x58, 0x0c, 0xdc, 0x56, 0x4f, 0x36, 0xb2, 0x74, 0x64, 0xda, 0xf9, 0xa4,
0xcf, 0x2b, 0x35, 0x0d, 0xd6, 0xe8, 0x83, 0xab, 0xb2, 0x55, 0x59, 0x87, 0x12, 0x63, 0x31, 0xbe,
0x56, 0x9f, 0xdc, 0x32, 0x74, 0xac, 0x5d, 0x37, 0x78, 0xaa, 0x81, 0xf7, 0x14, 0x82, 0x4d, 0x3b,
0x9d, 0x17, 0x8e, 0xb9, 0x81, 0x21, 0xa7, 0xd2, 0x32, 0xd4, 0x07, 0x08, 0xb8, 0x62, 0x96, 0xb8,
0xdd, 0x90, 0xc5, 0xea, 0x0b, 0xce, 0x47, 0x02, 0xa1, 0xd0, 0xe5, 0x07, 0x1e, 0x3b, 0x58, 0x42,
0x9e, 0xc8, 0x28, 0x87, 0x8d, 0x1b, 0xb2, 0xd6, 0x87, 0x0c, 0xdd, 0xa4, 0xde, 0x98, 0x17, 0x2d,
0x32, 0xa1, 0x41, 0x40, 0x89, 0xc3, 0x63, 0x84, 0x5e, 0xa0, 0x92, 0x0d, 0x8c, 0x06, 0xe7, 0x29,
0xa3, 0xac, 0x1c, 0x12, 0x3c, 0x22, 0xe0, 0xe3, 0x31, 0x68, 0xb5, 0xb0, 0xbb, 0xcf, 0x37, 0x4b,
0x77, 0xb7, 0xdb, 0x6c, 0xb5, 0xb2, 0xd8, 0xc2, 0x3b, 0x63, 0x16, 0x5c, 0x98, 0xf5, 0x31, 0xe9,
0xcf, 0x4e, 0xfa, 0xb5, 0x5d, 0x58, 0x90, 0x35, 0xd4, 0x0e, 0x22, 0xdd, 0xa3, 0xef, 0xc6, 0xe3,
0x43, 0x47, 0xfd, 0xda, 0x72, 0x8b, 0x65, 0x7e, 0xec, 0xc5, 0xc1, 0x23, 0x8d, 0x19, 0x80, 0x3e,
0xcf, 0x77, 0x89, 0xcb, 0x99, 0x40, 0xb4, 0x04, 0x16, 0x70, 0xfc, 0xc4, 0x65, 0xaa, 0x48, 0x82,
0xf2, 0x51, 0x32, 0x91, 0x44, 0x98, 0x0c, 0xaa, 0x3a, 0xef, 0xb3, 0x20, 0x3b, 0x5e, 0x59, 0x86,
0x4a, 0x34, 0x06, 0xfc, 0x99, 0x7b, 0xa0, 0xec, 0x0e, 0x80, 0x26, 0xc4, 0x12, 0x1a, 0x9d, 0xe4,
0x82, 0x5e, 0x73, 0x35, 0x29, 0x3f, 0x81, 0x50, 0xbf, 0x61, 0x28, 0x79, 0x8d, 0x82, 0xc0, 0x14,
0xa4, 0xdd, 0x4a, 0x58, 0xbd, 0xea, 0x0b, 0x39, 0x8d, 0x59, 0xa5, 0xca, 0x57, 0xd7, 0x6b, 0xdb,
0x67, 0x41, 0xe2, 0x53, 0x99, 0x51, 0xea, 0x5f, 0x9a, 0x36, 0x61, 0x91, 0x4e, 0x8a, 0x95, 0x34,
0x8d, 0x17, 0x3e, 0xa4, 0xa7, 0x82, 0xca, 0x74, 0x05, 0x62, 0x3c, 0x59, 0xcf, 0xcc, 0xdf, 0xe9,
0x61, 0x1e, 0xa7, 0x4f, 0x3e, 0x0b, 0x27, 0x72, 0x0a, 0x09, 0xa7, 0x99, 0xf1, 0x11, 0x9c, 0xb0,
0x54, 0x10, 0x2d, 0x82, 0x40, 0x00, 0xe8, 0x50, 0xdf, 0x07, 0x2c, 0xc6, 0x70, 0xdb, 0x42, 0x2e,
0xfa, 0x47, 0xe7, 0xe5, 0x91, 0x51, 0x66, 0x82, 0x42, 0x0e, 0x9e, 0x2f, 0x95, 0x0a, 0xd2, 0x43,
0x9d, 0xca, 0x81, 0xe7, 0x0a, 0x03, 0xa2, 0x92, 0x96, 0xd8, 0xe0, 0xfb, 0xef, 0xde, 0x1d, 0x1e,
0x1e, 0x1e, 0x93, 0xf6, 0x08, 0x72, 0xd0, 0xc7, 0xdb, 0x5b, 0x82, 0x4d, 0x12, 0xa2, 0x74, 0xfc,
0x71, 0x80, 0xa0, 0xb4, 0x0e, 0x0f, 0x43, 0x4c, 0x66, 0x20, 0x3d, 0x6c, 0x9c, 0xc5, 0x21, 0xf5,
0xc9, 0x94, 0x0b, 0x29, 0x54, 0xe9, 0xd4, 0x1e, 0x17, 0xd0, 0x67, 0xe2, 0x05, 0x50, 0xa3, 0xa4,
0xda, 0x1c, 0x48, 0x14, 0x01, 0xa4, 0x06, 0x24, 0x10, 0xaa, 0x76, 0x63, 0xac, 0x0e, 0x3f, 0xa1,
0x7a, 0x8f, 0xe6, 0x44, 0x34, 0x20, 0x6c, 0xc9, 0x88, 0x09, 0x2c, 0xef, 0x02, 0x72, 0x15, 0xb4,
0x4c, 0x08, 0xfc, 0x48, 0x02, 0x70, 0x90, 0x87, 0x0c, 0xa9, 0x80, 0x17, 0x3c, 0x08, 0x16, 0x6b,
0xfd, 0x51, 0xa8, 0xad, 0x04, 0x63, 0x4c, 0xb9, 0x81, 0x51, 0x82, 0x80, 0x43, 0x71, 0x24, 0xac,
0xe3, 0x3f, 0x57, 0x72, 0x41, 0xc1, 0x5b, 0x18, 0xdc, 0xbb, 0xe4, 0x6c, 0xd8, 0x47, 0xa9, 0x81,
0x4b, 0xa0, 0xb6, 0x85, 0x9c, 0x51, 0x3c, 0x04, 0xa9, 0xb8, 0xbd, 0xf2, 0x52, 0x37, 0x47, 0x2d,
0x14, 0xbd, 0x1a, 0xc7, 0x96, 0x38, 0xf5, 0x12, 0x7d, 0x6e, 0x17, 0x81, 0x4a, 0xd3, 0xab, 0x62,
0x2f, 0x5b, 0x56, 0x2d, 0x6a, 0x1b, 0x29, 0xf4, 0xc7, 0xa7, 0x4d, 0xa0, 0xf8, 0xa3, 0x76, 0xbe,
0x93, 0x98, 0xdf, 0xb3, 0x78, 0xa9, 0xd7, 0xa6, 0xee, 0x7e, 0x35, 0x54, 0x9e, 0x34, 0xef, 0xb5,
0xcb, 0x0e, 0x31, 0xaf, 0x3e, 0xf6, 0x6f, 0x06, 0x2b, 0x73, 0xb2, 0xb1, 0xfc, 0xc8, 0x31, 0xc5,
0xe5, 0xa8, 0x89, 0x74, 0xa3, 0x0e, 0xf8, 0x29, 0x94, 0x41, 0x8f, 0xfa, 0x60, 0xc3, 0x18, 0x0d,
0x8a, 0x20, 0x1f, 0x60, 0x22, 0x58, 0x05, 0x00, 0x23, 0x58, 0x2b, 0xc1, 0xfe, 0x28, 0xb5, 0x1f,
0x9e, 0xc5, 0x2b, 0xfb, 0x5e, 0x33, 0x9c, 0x92, 0x19, 0x4d, 0x71, 0x8a, 0x60, 0x11, 0xc0, 0xf9,
0x2e, 0x19, 0x73, 0x24, 0xe6, 0xf0, 0x22, 0xce, 0xfc, 0xe3, 0x4d, 0xe6, 0x5e, 0xd0, 0x4f, 0xc4,
0x0b, 0x61, 0x6b, 0xbc, 0x8c, 0xdb, 0xab, 0x8f, 0x9f, 0x86, 0x67, 0x83, 0x05, 0x25, 0xec, 0xd7,
0xb5, 0xe8, 0xfd, 0x74, 0x8d, 0x82, 0xfe, 0xb2, 0xa5, 0x67, 0x3a, 0xfc, 0xd8, 0xef, 0x0c, 0x17,
0xf5, 0x78, 0xb0, 0xaf, 0x59, 0x9c, 0xfa, 0x1e, 0x6e, 0xb1, 0xd7, 0x5d, 0x93, 0x39, 0xae, 0x3e,
0x9e, 0xf6, 0xba, 0x8b, 0xc9, 0x23, 0x93, 0xa0, 0xab, 0xf2, 0x05, 0xb9, 0xe5, 0x91, 0xe7, 0xac,
0xe3, 0xd0, 0x7d, 0x61, 0x44, 0x95, 0x15, 0xcf, 0xf1, 0x6c, 0x77, 0x33, 0xf5, 0xf9, 0x0b, 0x6a,
0xa5, 0xf5, 0x7e, 0x32, 0x82, 0xe6, 0x72, 0x5a, 0x3c, 0x33, 0xd8, 0xe0, 0x7a, 0x27, 0x69, 0x17,
0x00, 0x98, 0xdd, 0xd8, 0xd8, 0xf7, 0x12, 0xd5, 0x9c, 0xbd, 0x02, 0x5c, 0x04, 0x7f, 0x48, 0xb9,
0x04, 0x57, 0x28, 0x97, 0x40, 0x58, 0x81, 0xa8, 0x22, 0x3f, 0xb8, 0xdf, 0xb3, 0xe7, 0x0e, 0x1b,
0x8a, 0x81, 0x0c, 0x43, 0x7f, 0x67, 0x1c, 0xcf, 0x1f, 0x6b, 0xac, 0x0b, 0x67, 0xd5, 0xba, 0xe1,
0xda, 0x4a, 0x41, 0xbf, 0xf0, 0x04, 0x0a, 0x41, 0x08, 0xdc, 0x21, 0x29, 0xa1, 0x6f, 0x03, 0x6c,
0x71, 0x27, 0x8c, 0xf4, 0xfa, 0x2a, 0x4d, 0xe1, 0x88, 0x8f, 0x38, 0x86, 0xe8, 0x88, 0x83, 0xd5,
0xd4, 0xd8, 0x0f, 0x9d, 0x11, 0x54, 0xed, 0x1f, 0x30, 0xbb, 0xa9, 0xd2, 0xa4, 0x13, 0x24, 0x99,
0xc2, 0xda, 0xa0, 0xdf, 0xaa, 0x91, 0xb5, 0xbc, 0x7d, 0x0e, 0x59, 0x1b, 0x25, 0xd2, 0x4c, 0x16,
0x22, 0xfa, 0xe2, 0x72, 0x2d, 0xc2, 0x82, 0x26, 0xcc, 0x26, 0x18, 0x76, 0xcf, 0x85, 0x93, 0xfd,
0x8b, 0xde, 0x72, 0xba, 0x7a, 0x7d, 0x01, 0x9b, 0x21, 0x24, 0xdb, 0xd4, 0x30, 0x5d, 0xf4, 0xb5,
0xab, 0x40, 0x7a, 0x08, 0x2b, 0xe0, 0x25, 0xfa, 0xe0, 0x60, 0xad, 0x77, 0x5d, 0xa8, 0x13, 0xb6,
0x9b, 0xb0, 0x06, 0x18, 0x68, 0xc3, 0xc1, 0xda, 0x05, 0x00, 0x3b, 0x32, 0x77, 0x7a, 0x48, 0x36,
0x1f, 0xfa, 0x5d, 0x9c, 0x02, 0x89, 0x3a, 0x32, 0x44, 0xb1, 0x50, 0x71, 0x27, 0x99, 0x3d, 0x8e,
0xe6, 0x0e, 0xff, 0xd2, 0xc9, 0xf5, 0x6d, 0x8b, 0x34, 0x82, 0x39, 0x9b, 0x54, 0x0b, 0xfa, 0x6f,
0xbc, 0xe8, 0x02, 0x5f, 0x45, 0xfe, 0xe2, 0xe7, 0x9f, 0x97, 0xd4, 0xc6, 0x1a, 0xf2, 0xbd, 0xcd,
0xe4, 0x33, 0xea, 0x2c, 0x8f, 0xf7, 0xd5, 0x99, 0x21, 0xba, 0x5a, 0x94, 0x88, 0xa9, 0xef, 0x85,
0xf7, 0x59, 0x66, 0xe0, 0xe1, 0x9c, 0xfb, 0x82, 0xaa, 0xc7, 0xf8, 0x3b, 0xa7, 0x9c, 0x42, 0x9d,
0x16, 0xf4, 0x21, 0x3d, 0x73, 0xc2, 0xdf, 0xe4, 0xf3, 0xd4, 0x6c, 0x94, 0x1e, 0xc1, 0xea, 0x29,
0xf8, 0xc9, 0xf2, 0x7d, 0x38, 0x29, 0xcf, 0x50, 0x81, 0x8a, 0x24, 0x49, 0x65, 0x82, 0x7e, 0x04,
0x5d, 0x6f, 0x98, 0x8b, 0xe8, 0x45, 0x66, 0x0e, 0xd7, 0x5d, 0x1d, 0x13, 0xc0, 0x5e, 0x05, 0x26,
0x74, 0x2d, 0x30, 0x73, 0x16, 0xe7, 0xb3, 0xcf, 0x5b, 0xfe, 0x32, 0x56, 0xbe, 0xe4, 0x4f, 0x08,
0x46, 0x2e, 0xd1, 0xa1, 0xf0, 0x73, 0x84, 0x95, 0x80, 0x19, 0x7f, 0x59, 0x63, 0x31, 0xd4, 0xb8,
0xc5, 0x94, 0x33, 0xfb, 0x5c, 0xe6, 0x2f, 0x8b, 0xa2, 0xd9, 0x83, 0xa7, 0x42, 0x83, 0x02, 0x4e,
0x3d, 0x2f, 0x89, 0xd1, 0x71, 0xa9, 0x8a, 0xf6, 0xda, 0x6d, 0xff, 0xaa, 0x59, 0xc9, 0xa6, 0xfe,
0x34, 0xbc, 0xb9, 0xae, 0x90, 0x5e, 0x10, 0xc5, 0xfc, 0x41, 0x47, 0x82, 0xd0, 0x2f, 0x84, 0x84,
0x7e, 0x27, 0xc0, 0xfd, 0xe0, 0x7a, 0xb8, 0x48, 0xc4, 0x01, 0xd1, 0x83, 0x66, 0x35, 0xbb, 0xb9,
0x9d, 0x9d, 0xd0, 0xc4, 0x25, 0x31, 0xc0, 0xd8, 0xe2, 0x29, 0xda, 0x49, 0xf7, 0x45, 0x77, 0xdf,
0x68, 0xb4, 0x60, 0x9f, 0x78, 0xad, 0xd7, 0x57, 0x76, 0xdc, 0xcd, 0xbd, 0x3a, 0x94, 0x49, 0xbc,
0xce, 0x4d, 0x2a, 0x76, 0xc4, 0x07, 0x75, 0xe8, 0xb7, 0xf1, 0xba, 0x64, 0x4e, 0xd6, 0xe3, 0xea,
0x8c, 0x83, 0xd7, 0xd5, 0x8c, 0x5a, 0x6f, 0x0f, 0x70, 0x0e, 0x5c, 0xd7, 0x30, 0x7a, 0xd7, 0x6c,
0x40, 0xbf, 0x8c, 0xd7, 0xd5, 0x8c, 0x1a, 0x75, 0xb5, 0x9a, 0xfa, 0xb3, 0x86, 0x55, 0x43, 0x0b,
0xd5, 0x28, 0x4a, 0xb5, 0xd0, 0x56, 0x43, 0x09, 0xf8, 0x27, 0x63, 0x11, 0xe2, 0x59, 0xad, 0x2b,
0x2c, 0x91, 0x88, 0x73, 0xb4, 0xa5, 0xaa, 0x64, 0xc8, 0xa1, 0x8f, 0x1c, 0x71, 0x1a, 0xbb, 0x1a,
0x5a, 0xa3, 0x81, 0x52, 0x73, 0x93, 0x29, 0x98, 0x59, 0xd9, 0x23, 0x3b, 0x3f, 0xde, 0x43, 0xa4,
0x24, 0x49, 0x3f, 0x86, 0x82, 0x49, 0xfe, 0xfb, 0xef, 0xff, 0x14, 0x4b, 0x1e, 0xbc, 0xec, 0xb2,
0x51, 0x32, 0xf9, 0x3b, 0xeb, 0xde, 0x6c, 0xc1, 0x8d, 0x55, 0x2f, 0x5f, 0x1e, 0xcf, 0x68, 0xa1,
0xa9, 0x52, 0xbd, 0xc3, 0xd2, 0xd4, 0x7a, 0x5d, 0x5f, 0x9d, 0x9d, 0x8c, 0xcd, 0xb9, 0xf1, 0xba,
0xf1, 0x9a, 0xe4, 0x66, 0xbc, 0x20, 0x6f, 0xbe, 0x86, 0x7c, 0x46, 0x9d, 0x1d, 0xb6, 0xbf, 0x3a,
0xb5, 0xce, 0xab, 0x43, 0x61, 0xef, 0xf4, 0xd0, 0x73, 0x5e, 0xa6, 0xfe, 0xda, 0xa3, 0xb8, 0x77,
0xf8, 0x0f, 0x64, 0x41, 0x87, 0xea, 0x8d, 0x49, 0x1d, 0x1a, 0xcd, 0x31, 0x85, 0x4e, 0x4a, 0x9f,
0xef, 0xbd, 0x3d, 0x3c, 0x38, 0x24, 0x8f, 0x1e, 0x60, 0x81, 0x11, 0x43, 0xef, 0x72, 0x33, 0x7c,
0x80, 0xd3, 0xf1, 0xcb, 0x3e, 0x5c, 0xf8, 0x57, 0x2f, 0xfa, 0x8d, 0xe0, 0x17, 0x75, 0x90, 0x8d,
0x75, 0x5a, 0xd1, 0x9f, 0xb1, 0xa8, 0x64, 0xa1, 0xbe, 0x5b, 0x69, 0x03, 0xfc, 0xb3, 0xa1, 0x15,
0xdc, 0xf5, 0xc9, 0xaf, 0xc8, 0xf7, 0x37, 0xb2, 0x9b, 0xb4, 0x6b, 0x38, 0xa8, 0xf8, 0xe9, 0x56,
0x0e, 0xbf, 0x9c, 0xd8, 0xf0, 0x19, 0xc7, 0x6b, 0xbe, 0xc8, 0x30, 0xe6, 0xbe, 0xf6, 0xc0, 0xaf,
0x4e, 0xe0, 0x0f, 0x7e, 0x99, 0x82, 0x9f, 0xa9, 0xe0, 0x37, 0xa9, 0xff, 0x03, 0xc2, 0xe7, 0x0c,
0x2d, 0xa3, 0x2a, 0x00, 0x00
0x1c, 0x80, 0xa4, 0x24, 0x5a, 0x37, 0x6f, 0x9b, 0x99, 0xc8, 0x24, 0x88, 0x73, 0x70, 0x70, 0xae,
0xdf, 0x01, 0xd9, 0x7e, 0xd3, 0xbd, 0x39, 0xbd, 0xfd, 0xa5, 0x7f, 0x46, 0xa6, 0x32, 0xf0, 0xed,
0x36, 0xfe, 0x12, 0x9f, 0x86, 0x13, 0xcb, 0x64, 0xa1, 0x09, 0xf7, 0x8c, 0xba, 0x76, 0x3b, 0x60,
0x92, 0x92, 0x90, 0x06, 0xcc, 0x32, 0x1f, 0x3c, 0xf6, 0x18, 0xf1, 0x58, 0x9a, 0xc4, 0xe1, 0xa1,
0x64, 0xa1, 0xb4, 0xcc, 0x47, 0xcf, 0x95, 0x53, 0xab, 0x55, 0xaf, 0x9b, 0xb6, 0xa1, 0xa7, 0x1a,
0x85, 0x67, 0x2e, 0x7b, 0xf0, 0x1c, 0xb6, 0xab, 0x6e, 0x2a, 0x5e, 0xe8, 0x49, 0x8f, 0xfa, 0xbb,
0xc2, 0xa1, 0x3e, 0xb3, 0x1a, 0x95, 0x80, 0x3e, 0x79, 0x41, 0x12, 0xe4, 0xf7, 0x89, 0x60, 0xb1,
0xba, 0xa1, 0x23, 0xb8, 0x0f, 0xb9, 0x49, 0x8c, 0xc2, 0xd2, 0xa9, 0x40, 0xce, 0x94, 0xc6, 0x82,
0xc1, 0x22, 0x89, 0x1c, 0xef, 0x1e, 0xc2, 0xa8, 0xf4, 0xa4, 0xcf, 0xec, 0xe1, 0x73, 0xe8, 0x90,
0x21, 0x93, 0xd2, 0x0b, 0x27, 0xa2, 0x5d, 0xd3, 0x83, 0x6d, 0xe1, 0xc4, 0x5e, 0x24, 0x6d, 0xe3,
0x81, 0xc6, 0xc4, 0xe7, 0x8e, 0x17, 0x55, 0x5c, 0xcb, 0xe5, 0x4e, 0x12, 0x80, 0x98, 0x15, 0x18,
0xb0, 0xde, 0x34, 0x8e, 0xc7, 0x49, 0xe8, 0x48, 0x8f, 0x87, 0x64, 0xd2, 0x73, 0x4b, 0xac, 0xfc,
0x35, 0x66, 0x32, 0x89, 0x43, 0xe2, 0x56, 0x27, 0x4c, 0x9e, 0xf9, 0x0c, 0xa7, 0x9e, 0x3c, 0xab,
0x47, 0xdf, 0xf2, 0xa9, 0x92, 0x4f, 0x26, 0x3e, 0xc3, 0xd9, 0x9a, 0xa8, 0xea, 0xf8, 0x54, 0x88,
0x4b, 0x4f, 0xc8, 0x6a, 0xfa, 0xc8, 0x9c, 0x7a, 0x2e, 0x33, 0xcb, 0x15, 0x7c, 0x6e, 0x5e, 0x73,
0x73, 0x67, 0xcd, 0xa4, 0x19, 0x5f, 0xbc, 0xbf, 0xe6, 0xdd, 0xab, 0x2f, 0x25, 0xcd, 0xd9, 0x74,
0x83, 0xa7, 0x9b, 0xf0, 0x66, 0x3c, 0x6e, 0x9a, 0xe5, 0xaa, 0x90, 0xcf, 0x3e, 0xab, 0xba, 0x9e,
0x88, 0x7c, 0xfa, 0x6c, 0x99, 0x21, 0x0f, 0x99, 0x59, 0x24, 0xbd, 0xbc, 0xc9, 0x49, 0x7d, 0xfe,
0x3a, 0xd2, 0x4e, 0xb7, 0x93, 0x91, 0x52, 0x97, 0xbe, 0x82, 0x14, 0xc4, 0xed, 0x85, 0x51, 0x22,
0xe7, 0x64, 0x56, 0xf7, 0x5b, 0xae, 0xbb, 0x8a, 0x1c, 0xd6, 0xdf, 0xc8, 0xe1, 0x02, 0x88, 0x1e,
0xbd, 0xd0, 0xe5, 0x8f, 0x55, 0x1e, 0xb1, 0x10, 0x14, 0x2a, 0x65, 0x24, 0x8e, 0x6a, 0xb5, 0x20,
0xa8, 0xde, 0x87, 0xbc, 0xfa, 0xe8, 0x33, 0xb4, 0x63, 0xcd, 0x03, 0xc7, 0x8c, 0xc7, 0xd4, 0x61,
0xa2, 0x96, 0xb8, 0xd1, 0x6e, 0xc8, 0xa5, 0x37, 0xf6, 0x58, 0x5c, 0x9b, 0xd7, 0xfd, 0x49, 0x91,
0x57, 0x4d, 0xa4, 0xee, 0x64, 0x56, 0xcc, 0xdf, 0x05, 0xf3, 0xc7, 0xf3, 0xb3, 0xa9, 0x7b, 0x07,
0xf3, 0x0f, 0xf6, 0x5b, 0xfb, 0x96, 0xe5, 0x56, 0x87, 0xe3, 0x6a, 0xb7, 0x57, 0x7d, 0xa0, 0x7e,
0xc2, 0xde, 0x37, 0xd2, 0x81, 0xb3, 0x4f, 0x7a, 0xe0, 0xfb, 0xef, 0x4b, 0x0b, 0xf7, 0x56, 0xbd,
0x7c, 0xd4, 0x6a, 0x1d, 0x1c, 0x16, 0xe8, 0x60, 0x5a, 0x3d, 0x1b, 0xea, 0x2c, 0x52, 0x66, 0xf7,
0x56, 0xa3, 0x5c, 0xa9, 0x6f, 0xe2, 0xde, 0x28, 0xcf, 0x49, 0xe9, 0x73, 0xea, 0xfe, 0x34, 0x2c,
0xb1, 0x8a, 0xb4, 0xde, 0xd4, 0xcb, 0x5f, 0x7d, 0x26, 0x49, 0x08, 0xf4, 0x4e, 0xcc, 0xa8, 0x64,
0xa9, 0x73, 0x97, 0x4c, 0x1d, 0x25, 0x66, 0xf9, 0x38, 0xac, 0xc2, 0x96, 0x3b, 0x52, 0xc6, 0xde,
0x28, 0x91, 0xe0, 0x9e, 0x22, 0x76, 0xcc, 0x0a, 0x2b, 0x57, 0x8a, 0xe3, 0xf2, 0x39, 0x62, 0xa0,
0x14, 0xc9, 0x9e, 0x64, 0xed, 0x8e, 0x3e, 0xd0, 0x8c, 0xc1, 0x8b, 0x89, 0x54, 0x40, 0x58, 0x9a,
0x15, 0x59, 0xae, 0xb8, 0xd5, 0x11, 0x77, 0x9f, 0xab, 0x34, 0x02, 0xd5, 0xba, 0xa7, 0x53, 0xcf,
0x77, 0x4b, 0x21, 0xce, 0xa7, 0xae, 0x7b, 0xf6, 0x00, 0x52, 0x60, 0x58, 0xb0, 0x90, 0xc5, 0xe8,
0xb7, 0xd4, 0x35, 0x2b, 0xa5, 0xb2, 0x65, 0x7f, 0x3d, 0x67, 0xf2, 0xe7, 0x52, 0xb9, 0x02, 0x61,
0xfd, 0x33, 0xf5, 0x4b, 0xe5, 0x6f, 0xcb, 0x09, 0x58, 0x1c, 0xf3, 0x18, 0xe4, 0x04, 0x02, 0xc8,
0x40, 0x82, 0x83, 0xbf, 0xf8, 0x7c, 0x52, 0x32, 0xcf, 0x70, 0x9c, 0xa4, 0x5a, 0x00, 0x3b, 0x92,
0xb1, 0xe7, 0x33, 0xb5, 0x1f, 0x48, 0x39, 0x31, 0xec, 0xfb, 0x32, 0x1d, 0xe7, 0x63, 0x4c, 0x6b,
0x63, 0x6f, 0x92, 0xc4, 0x54, 0xa9, 0x4d, 0xef, 0x87, 0x8c, 0xa9, 0x87, 0xfe, 0xf3, 0xaf, 0xb0,
0x17, 0x3a, 0x3c, 0x88, 0x40, 0x7b, 0x8c, 0x44, 0x74, 0xc2, 0x88, 0x4b, 0x25, 0x7d, 0x03, 0xde,
0x30, 0xa7, 0xe9, 0x0f, 0xa7, 0xe0, 0x0e, 0x63, 0x1e, 0x97, 0xee, 0xac, 0xfa, 0xf1, 0x5d, 0xfb,
0xf0, 0xf8, 0x6e, 0x67, 0xa7, 0xac, 0xfc, 0xf9, 0xdc, 0xdc, 0x29, 0xdd, 0xed, 0x80, 0x59, 0xaa,
0xce, 0x94, 0x39, 0xf7, 0xcc, 0xb5, 0xf4, 0xf0, 0x10, 0xbc, 0x5b, 0x99, 0xcc, 0xb6, 0xef, 0xbe,
0x6f, 0xe8, 0x44, 0x31, 0x58, 0x31, 0x77, 0xb0, 0x30, 0x77, 0xb6, 0xea, 0x39, 0xae, 0x8a, 0xc9,
0x0d, 0xbc, 0x0a, 0x6c, 0x5c, 0xaf, 0x84, 0x16, 0x24, 0xb4, 0x82, 0x14, 0x6c, 0xc7, 0x5a, 0x2e,
0xc8, 0x8f, 0x61, 0x45, 0xa6, 0xcf, 0x06, 0x4b, 0x9e, 0x85, 0x3f, 0x5a, 0xcd, 0xe3, 0x82, 0xac,
0x16, 0xab, 0x14, 0x24, 0xb2, 0xe4, 0x4c, 0x9c, 0x61, 0x3f, 0x17, 0x67, 0xc1, 0xb7, 0x35, 0x97,
0xa7, 0xe8, 0x45, 0x3c, 0x33, 0xbb, 0xfe, 0x5e, 0xc7, 0xf4, 0x91, 0x39, 0x82, 0x7c, 0x7c, 0x0f,
0xe6, 0xb1, 0xeb, 0xb9, 0x4f, 0xf7, 0xb3, 0x45, 0xe7, 0x14, 0x9d, 0x39, 0xc3, 0x57, 0xf1, 0xe8,
0x49, 0x67, 0x5a, 0x8a, 0xb0, 0x1c, 0xf4, 0xc0, 0x8d, 0x17, 0x48, 0xca, 0xe5, 0xaf, 0x0e, 0x15,
0x8c, 0x60, 0xa0, 0x1d, 0x2d, 0xc8, 0x62, 0xe1, 0xd0, 0xf1, 0x08, 0x22, 0xe0, 0xfe, 0x58, 0x4d,
0xc1, 0x18, 0x2e, 0x4c, 0xc1, 0xa1, 0xf9, 0x29, 0xfb, 0xf5, 0xfd, 0x22, 0x17, 0x1c, 0xfa, 0x86,
0xfb, 0xad, 0xa0, 0xe5, 0xe7, 0xc4, 0x03, 0xc9, 0x4c, 0x74, 0xb4, 0x23, 0xd3, 0xb2, 0xd2, 0x74,
0x02, 0x1b, 0x53, 0x7e, 0x55, 0x8d, 0x62, 0x2e, 0xb9, 0xc3, 0x7d, 0xd8, 0xa0, 0x2a, 0x3e, 0xf5,
0x4a, 0x49, 0x55, 0x25, 0x0b, 0x67, 0xf8, 0x43, 0xc9, 0x63, 0xf0, 0x2e, 0xac, 0x3b, 0x3d, 0xc9,
0x02, 0x8c, 0x04, 0xa7, 0x07, 0x3a, 0x2b, 0xff, 0xf9, 0x67, 0x3a, 0x0d, 0xe8, 0x83, 0x08, 0x1c,
0xf7, 0x03, 0xf0, 0x27, 0x57, 0xdc, 0x65, 0x55, 0xd2, 0xf7, 0x19, 0x4a, 0xc8, 0x30, 0xc1, 0x91,
0xcf, 0x97, 0x67, 0x5d, 0xd2, 0xeb, 0x83, 0x6b, 0x56, 0x16, 0x38, 0x8a, 0x45, 0x8e, 0x15, 0xc5,
0xad, 0x5c, 0xc6, 0x59, 0x2a, 0x3f, 0x20, 0xfb, 0xf7, 0x2a, 0x77, 0x42, 0xea, 0x34, 0x77, 0xd4,
0xe3, 0x23, 0xd3, 0x2c, 0xef, 0xcc, 0x72, 0x60, 0x4d, 0x54, 0xef, 0xc4, 0xfb, 0xc8, 0xda, 0x37,
0x2b, 0x6f, 0x1a, 0xe5, 0x6f, 0x46, 0xbb, 0x96, 0xd6, 0xd6, 0xb6, 0xb2, 0xa8, 0xfd, 0x0f, 0x2f,
0xc0, 0x2a, 0x4d, 0x92, 0xd8, 0x87, 0xbc, 0xa1, 0x8c, 0xec, 0x08, 0x01, 0x39, 0x05, 0x26, 0xaa,
0x09, 0xed, 0x9a, 0x46, 0x15, 0x98, 0x06, 0x20, 0x28, 0x71, 0x65, 0xcb, 0x04, 0x6d, 0x41, 0x05,
0x07, 0x87, 0x0d, 0x0c, 0xe2, 0xc1, 0x3d, 0x5e, 0xfd, 0x2e, 0xcc, 0x14, 0x75, 0x0c, 0xc7, 0x26,
0x81, 0x9a, 0x3f, 0xe5, 0xf0, 0x24, 0xe2, 0x02, 0xd0, 0x07, 0x84, 0x77, 0x32, 0x0a, 0x3c, 0xa8,
0xfe, 0xe8, 0xf9, 0x40, 0xea, 0x7a, 0x0f, 0x44, 0x95, 0x55, 0xcb, 0x94, 0x1c, 0xd4, 0xf3, 0x98,
0x8e, 0x19, 0xe9, 0xe0, 0x94, 0xf9, 0xd1, 0x09, 0x8c, 0x41, 0x3a, 0x92, 0x58, 0xb7, 0x21, 0x71,
0x59, 0xa6, 0xbe, 0x41, 0x6e, 0x8e, 0xef, 0x39, 0xf7, 0x96, 0x79, 0x81, 0xbc, 0xde, 0xb7, 0x6b,
0xfa, 0x01, 0x88, 0x0a, 0x2c, 0x72, 0x1a, 0x63, 0x05, 0xd1, 0x09, 0x12, 0x9d, 0x50, 0xe7, 0x7e,
0x46, 0xb7, 0xb0, 0x8a, 0x96, 0xd4, 0xb4, 0x87, 0xf4, 0x81, 0xcd, 0xa6, 0x4c, 0x63, 0x80, 0x4b,
0x9a, 0xff, 0xb4, 0xa9, 0x51, 0x0b, 0xa8, 0x38, 0x89, 0x40, 0x3d, 0x4d, 0x18, 0xda, 0xb3, 0x95,
0x0d, 0x4f, 0x62, 0x50, 0x0f, 0xb8, 0x9e, 0x84, 0xe1, 0x3d, 0xfb, 0x53, 0xb7, 0x4f, 0xfa, 0xa0,
0xdc, 0x23, 0xd2, 0xf6, 0xb0, 0x32, 0xa6, 0xea, 0xf9, 0xd4, 0x37, 0x33, 0xe1, 0xc2, 0x24, 0x18,
0xb1, 0x18, 0xb4, 0xe5, 0x85, 0x96, 0xd9, 0x80, 0xbf, 0xf4, 0xc9, 0x32, 0x0f, 0x5a, 0xad, 0xbd,
0x96, 0x99, 0xa9, 0xc7, 0x85, 0xcb, 0x98, 0xfd, 0x91, 0x78, 0x31, 0x43, 0x2b, 0xc4, 0x76, 0x33,
0x74, 0x17, 0xb9, 0xa6, 0x80, 0xeb, 0x53, 0xd3, 0x24, 0xff, 0x3f, 0x57, 0xdc, 0x82, 0xa1, 0xb6,
0x35, 0x89, 0x79, 0x12, 0x09, 0xb5, 0x81, 0x05, 0xb1, 0x21, 0x99, 0x28, 0x5b, 0xe3, 0xdf, 0xc5,
0x75, 0x94, 0xa3, 0x00, 0x4f, 0x9d, 0x1c, 0x8e, 0x54, 0x5e, 0xb0, 0x89, 0xb1, 0x48, 0x3d, 0x48,
0xa9, 0x07, 0x5b, 0x51, 0xb7, 0x25, 0xe2, 0x49, 0x62, 0xa4, 0x0f, 0x03, 0x1a, 0x4f, 0xbc, 0xf0,
0xa8, 0x4e, 0x68, 0x22, 0x39, 0x3e, 0x05, 0x81, 0x25, 0x08, 0x5e, 0xc3, 0x1f, 0xf8, 0xdf, 0xc8,
0xaf, 0x9a, 0xf9, 0xd5, 0x5e, 0x7e, 0xb5, 0x9f, 0x5f, 0xb5, 0x8c, 0xfc, 0xf2, 0x20, 0xbf, 0x7a,
0x9b, 0x5f, 0x1d, 0xea, 0xab, 0x9a, 0x62, 0xaf, 0x97, 0x18, 0x42, 0xd9, 0x3b, 0xca, 0x27, 0x64,
0x1a, 0xd7, 0x3b, 0x50, 0x29, 0x77, 0xc4, 0x9f, 0xd2, 0x9d, 0x35, 0x32, 0xff, 0x87, 0x2b, 0xbb,
0x48, 0xb2, 0x94, 0xa2, 0x99, 0xa3, 0x65, 0xb8, 0xdc, 0x8e, 0x64, 0x2f, 0x5f, 0x64, 0xef, 0x25,
0xc5, 0x72, 0xb9, 0xf6, 0x73, 0x92, 0xfd, 0x2d, 0x17, 0x69, 0xcd, 0xe4, 0x6a, 0x6d, 0x49, 0x72,
0x90, 0x2f, 0x72, 0xb0, 0xad, 0x5c, 0x6f, 0x73, 0x92, 0xb7, 0x5b, 0x2e, 0x72, 0x38, 0x93, 0xeb,
0x30, 0x23, 0x99, 0x37, 0xd6, 0x80, 0x39, 0xcc, 0x7b, 0x60, 0x47, 0xdb, 0x30, 0x1b, 0x34, 0x72,
0x66, 0x83, 0x2d, 0xed, 0x35, 0x68, 0x66, 0x12, 0x0f, 0x9a, 0x5b, 0x6e, 0x72, 0x90, 0xdb, 0x6b,
0xb0, 0xb7, 0xe5, 0x22, 0xfb, 0x33, 0xb9, 0xb6, 0xb4, 0xd7, 0xa0, 0x95, 0x2f, 0xd2, 0xda, 0x56,
0xae, 0xdc, 0x5e, 0x83, 0x83, 0x2d, 0x17, 0x79, 0x3b, 0x93, 0x6b, 0x4b, 0x7b, 0x0d, 0x0e, 0xf3,
0x45, 0x16, 0xcd, 0x55, 0x53, 0xd1, 0x0d, 0x09, 0x15, 0x12, 0x4f, 0x6e, 0xb3, 0x90, 0x3f, 0xc6,
0x34, 0x5a, 0xc5, 0x2f, 0xe5, 0x03, 0x35, 0xe1, 0x24, 0xf6, 0x26, 0x53, 0x19, 0x32, 0x21, 0x2a,
0xed, 0x5a, 0x4a, 0x64, 0x6c, 0x47, 0x7d, 0x6a, 0xda, 0xa7, 0xdc, 0xe7, 0xf1, 0x8c, 0x30, 0xa3,
0xa3, 0x90, 0x54, 0x57, 0xe9, 0x2b, 0x25, 0xfe, 0x62, 0xda, 0x67, 0xe3, 0x31, 0x73, 0xa4, 0x98,
0x51, 0x63, 0xe2, 0x5c, 0xb7, 0xe2, 0xf0, 0x06, 0xba, 0x6c, 0x80, 0x3e, 0x13, 0x04, 0xec, 0x84,
0x47, 0x88, 0x26, 0x44, 0x85, 0xac, 0xa7, 0x39, 0x87, 0xe4, 0x39, 0xe2, 0x49, 0xe8, 0x0a, 0xe4,
0x6f, 0x60, 0x06, 0x22, 0xba, 0xf3, 0xd1, 0x70, 0x44, 0x20, 0x36, 0x76, 0x21, 0x73, 0x3b, 0x12,
0xbb, 0xea, 0x70, 0xc2, 0x8e, 0x36, 0x70, 0xec, 0x9a, 0xf6, 0x1a, 0x56, 0x69, 0xf5, 0x8b, 0x62,
0x50, 0x29, 0x01, 0xe4, 0xdd, 0x1b, 0x6c, 0xe2, 0x77, 0x32, 0xcf, 0xaf, 0xe3, 0xb3, 0x27, 0xba,
0xc8, 0x75, 0x13, 0x7d, 0x67, 0x9e, 0xbe, 0x0f, 0x4d, 0x85, 0x17, 0x09, 0x72, 0x91, 0xb0, 0x74,
0x3b, 0xaf, 0x63, 0x76, 0x31, 0xcf, 0xec, 0x8a, 0x3a, 0x31, 0x7f, 0x1d, 0xfd, 0x55, 0x4a, 0x8f,
0xd5, 0x3a, 0x02, 0x58, 0x00, 0xbd, 0x56, 0xcc, 0x64, 0x4c, 0x43, 0x11, 0x78, 0x42, 0x2c, 0x70,
0x48, 0x0b, 0xed, 0x60, 0x69, 0xa1, 0xad, 0xa7, 0x85, 0x76, 0x0f, 0x2e, 0x8c, 0x95, 0x65, 0x56,
0x79, 0x0c, 0x38, 0xfd, 0x88, 0x73, 0x99, 0x3f, 0x22, 0x92, 0x13, 0xe8, 0xb0, 0xfc, 0xe7, 0x54,
0x01, 0xa2, 0xda, 0xae, 0x79, 0x88, 0x39, 0x72, 0x46, 0x22, 0xf0, 0x4d, 0x55, 0xa3, 0x7b, 0xa1,
0x90, 0x34, 0x74, 0x18, 0xc1, 0x3e, 0x4a, 0x15, 0xe9, 0xb3, 0x50, 0x95, 0x4a, 0x2f, 0x7b, 0xe0,
0xc3, 0x83, 0x95, 0x7b, 0x4e, 0x23, 0xf8, 0xfa, 0x52, 0x6f, 0xfa, 0x8a, 0xde, 0x33, 0x22, 0xa7,
0x9e, 0x98, 0x91, 0x43, 0x1d, 0x76, 0xf8, 0x03, 0x8b, 0x91, 0xe9, 0x06, 0xd5, 0x5d, 0x9f, 0xe0,
0x19, 0x12, 0x48, 0x59, 0x14, 0x72, 0xc0, 0xa8, 0x2f, 0xbd, 0x80, 0x29, 0xf9, 0xd2, 0x00, 0x27,
0xa8, 0xdf, 0x38, 0x7d, 0xb0, 0x49, 0xbe, 0x41, 0xea, 0xb1, 0x9f, 0x00, 0x22, 0x07, 0xd4, 0x83,
0xce, 0x2e, 0x0b, 0xa1, 0xd0, 0x7f, 0xde, 0x20, 0xd5, 0xd5, 0x8d, 0x99, 0xab, 0x1a, 0x30, 0x88,
0x7d, 0xcd, 0xe4, 0x23, 0x8f, 0xef, 0x49, 0xf7, 0xea, 0x0b, 0x51, 0x74, 0x4a, 0xb7, 0xf0, 0xf0,
0x16, 0xc8, 0x81, 0x97, 0x60, 0x3e, 0x46, 0x92, 0x26, 0xee, 0xf6, 0x14, 0x52, 0x54, 0x56, 0x00,
0xdf, 0xc0, 0x3e, 0x41, 0x9d, 0x18, 0xe0, 0x46, 0x75, 0xf8, 0x12, 0xdd, 0x47, 0x98, 0xd8, 0x8e,
0x40, 0x46, 0x68, 0x54, 0xf7, 0x1a, 0xa4, 0x24, 0x3a, 0xa7, 0xd7, 0xe5, 0x76, 0x4d, 0xcf, 0xb0,
0x0b, 0x33, 0xb1, 0x2b, 0x31, 0xed, 0x4e, 0x2c, 0x77, 0x41, 0x94, 0x7c, 0x52, 0x91, 0x1f, 0x78,
0x8d, 0x96, 0x04, 0x9a, 0x47, 0x33, 0xbb, 0x82, 0x7c, 0x95, 0x08, 0xc9, 0x03, 0x82, 0x18, 0x7d,
0xc6, 0xbf, 0xa6, 0x9f, 0xeb, 0x6d, 0x2a, 0xd8, 0x8c, 0xe9, 0x16, 0xfa, 0x34, 0x7b, 0x09, 0xdc,
0x3c, 0xeb, 0x6f, 0x83, 0x0b, 0xe7, 0x77, 0xb5, 0xc6, 0x7d, 0x15, 0x02, 0xbe, 0x4a, 0xc0, 0x88,
0x88, 0x72, 0x37, 0x58, 0xe2, 0x2c, 0x0b, 0xad, 0xa1, 0xa4, 0xd8, 0x62, 0x84, 0xe0, 0x06, 0xd0,
0xf4, 0x15, 0xe5, 0xfb, 0xb4, 0x36, 0x9c, 0x0e, 0xf6, 0xde, 0xbd, 0x7b, 0x57, 0x10, 0xc3, 0x78,
0x19, 0x42, 0x2a, 0x62, 0xc8, 0x29, 0x4a, 0x40, 0x38, 0xf0, 0x6e, 0x53, 0x32, 0x8d, 0xd9, 0xd8,
0xca, 0x4f, 0x96, 0x26, 0x9e, 0x9c, 0x26, 0xa3, 0xaa, 0xc3, 0x83, 0xda, 0x25, 0x73, 0x3f, 0x3c,
0xe9, 0x5f, 0x44, 0xe2, 0x80, 0x2d, 0xf1, 0x5c, 0xf2, 0xf7, 0x91, 0x4f, 0xc3, 0x7b, 0xd3, 0x56,
0xe3, 0xed, 0x1a, 0xb5, 0xdf, 0xe0, 0x52, 0xc3, 0x7b, 0x2f, 0x42, 0x86, 0xbb, 0x7c, 0xbc, 0x2b,
0x60, 0x2d, 0x86, 0x31, 0xa2, 0xd3, 0xc4, 0x2c, 0x2f, 0xac, 0x28, 0x19, 0x67, 0x43, 0xbd, 0x7f,
0xf4, 0x3c, 0xa1, 0x54, 0x40, 0x5d, 0x17, 0xb3, 0x6c, 0x41, 0x03, 0xdd, 0x4e, 0x51, 0x03, 0xc6,
0x82, 0x89, 0x5a, 0x8d, 0x7a, 0x41, 0x01, 0x8a, 0x63, 0x1a, 0x12, 0x02, 0xa4, 0x81, 0x4e, 0xaf,
0xc0, 0xf3, 0xcb, 0x97, 0xe5, 0x4d, 0x46, 0xa6, 0xd6, 0x46, 0xab, 0xc8, 0x53, 0xbb, 0xb2, 0x6a,
0x06, 0xa3, 0xd8, 0xe3, 0xb1, 0x27, 0x9f, 0x8b, 0x2d, 0x46, 0xff, 0x97, 0xb5, 0xa6, 0x6a, 0xd6,
0x97, 0xc9, 0x19, 0x40, 0xbf, 0x3b, 0x0b, 0xb3, 0x94, 0x53, 0x17, 0x5d, 0xa3, 0x18, 0x00, 0x76,
0xd7, 0x13, 0x98, 0x76, 0xdc, 0x55, 0x91, 0x04, 0x38, 0x6d, 0x08, 0x5b, 0x85, 0x6c, 0x37, 0x38,
0x3f, 0x31, 0x56, 0xcd, 0x6a, 0xe6, 0xb3, 0xba, 0x30, 0x6d, 0xd5, 0xac, 0xbd, 0xac, 0x9c, 0xaf,
0x8c, 0xc8, 0xb7, 0xd9, 0x0c, 0xb2, 0x43, 0x3e, 0x4f, 0x3d, 0xc9, 0x56, 0xb1, 0x3a, 0xcc, 0x27,
0xa6, 0x95, 0x7e, 0xa5, 0x68, 0xef, 0x8a, 0x33, 0x37, 0xb1, 0x86, 0xc4, 0x61, 0xa8, 0x70, 0x23,
0x6b, 0xb6, 0xd2, 0x42, 0xcd, 0x05, 0x01, 0x8b, 0x81, 0xdb, 0xea, 0xc9, 0x46, 0x96, 0x8e, 0x4c,
0x3b, 0x9f, 0xf4, 0x79, 0xa5, 0xa6, 0xc1, 0x1a, 0x7d, 0x70, 0x55, 0xb6, 0x2a, 0xeb, 0x50, 0x62,
0x2c, 0xc6, 0xd7, 0xea, 0x93, 0x5b, 0x86, 0x8e, 0xb5, 0xeb, 0x06, 0x4f, 0x35, 0xf0, 0x9e, 0x42,
0xb0, 0x69, 0xa7, 0xf3, 0xc2, 0x31, 0x37, 0x30, 0xe4, 0x54, 0x5a, 0x86, 0xfa, 0x00, 0x01, 0x57,
0xcc, 0x12, 0xb7, 0x1b, 0xb2, 0x58, 0x7d, 0xc1, 0xf9, 0x48, 0x20, 0x14, 0xba, 0xfc, 0xc0, 0x63,
0x07, 0x4b, 0xc8, 0x13, 0x19, 0xe5, 0xb0, 0x71, 0x43, 0xd6, 0xfa, 0x90, 0xa1, 0x9b, 0xd4, 0x1b,
0xf3, 0xa2, 0x45, 0x26, 0x34, 0x08, 0x28, 0x71, 0x78, 0x8c, 0xd0, 0x0b, 0x54, 0xb2, 0x81, 0xd1,
0xe0, 0x3c, 0x65, 0x94, 0x95, 0x43, 0x82, 0x47, 0x04, 0x7c, 0x3c, 0x06, 0xad, 0x16, 0x76, 0xf7,
0xf9, 0x66, 0xe9, 0xee, 0x76, 0x9b, 0xad, 0x56, 0x16, 0x5b, 0x78, 0x65, 0xcc, 0x82, 0x0b, 0xb3,
0x3e, 0x26, 0xfd, 0xfc, 0xd0, 0xde, 0x6e, 0xb3, 0x40, 0xc5, 0x9b, 0xba, 0x25, 0x7d, 0x28, 0xe8,
0xed, 0x1a, 0x0c, 0x65, 0x61, 0x38, 0xf8, 0x52, 0x8c, 0xe6, 0xee, 0xd5, 0x72, 0x20, 0xb3, 0x9b,
0x29, 0x15, 0xf2, 0x6e, 0x4e, 0x7e, 0xfb, 0xa5, 0x98, 0xb4, 0xae, 0x6e, 0x97, 0x67, 0x98, 0xa5,
0xe4, 0x1a, 0xa4, 0xbc, 0x60, 0x71, 0xb6, 0x3c, 0xf1, 0xbd, 0x60, 0x91, 0x9e, 0xbc, 0x14, 0x37,
0x8d, 0xaf, 0x1a, 0xf4, 0x73, 0x16, 0x64, 0xe7, 0x08, 0x0e, 0x02, 0xfc, 0xa3, 0xef, 0xc6, 0xe3,
0x43, 0x47, 0xbd, 0xe3, 0xba, 0x45, 0x74, 0x33, 0xf6, 0xe2, 0xe0, 0x91, 0xc6, 0x0c, 0xb0, 0xae,
0xe7, 0xbb, 0xc4, 0xe5, 0x4c, 0x20, 0x48, 0x04, 0xc7, 0x73, 0xfc, 0xc4, 0x65, 0x64, 0xa6, 0x37,
0x91, 0x44, 0x98, 0x02, 0xab, 0x7a, 0x55, 0xd4, 0xdf, 0x6c, 0x69, 0x23, 0x5d, 0x3b, 0x7d, 0xc7,
0xf2, 0xb7, 0xad, 0x0c, 0xde, 0xbe, 0x6e, 0xe9, 0x65, 0x30, 0x50, 0x83, 0xee, 0x9f, 0xb9, 0x07,
0xde, 0xdd, 0x01, 0x94, 0x8a, 0xe0, 0x4d, 0xc3, 0xc1, 0x5c, 0x49, 0xd7, 0x5c, 0x4d, 0xca, 0x8f,
0x7c, 0xd4, 0x3b, 0x2b, 0x25, 0xaf, 0x51, 0x10, 0x98, 0x82, 0xb4, 0x5b, 0x09, 0xab, 0x57, 0x7d,
0x21, 0xa7, 0xb1, 0xc4, 0x44, 0x7a, 0x6d, 0xfb, 0x2c, 0x48, 0x7c, 0x2a, 0x33, 0x4a, 0xfd, 0x66,
0x71, 0x13, 0xf8, 0xeb, 0xa4, 0xe0, 0x54, 0xd3, 0x78, 0xe1, 0x43, 0x7a, 0x0c, 0xab, 0xbc, 0xa6,
0x40, 0x8c, 0xaf, 0x32, 0xb2, 0x78, 0xeb, 0xf4, 0xd0, 0x7f, 0xe8, 0x93, 0xcf, 0xc2, 0x89, 0x9c,
0x42, 0x86, 0x6f, 0x66, 0x7c, 0x04, 0x27, 0x2c, 0x15, 0x44, 0x8b, 0x20, 0x10, 0x71, 0x3b, 0xd4,
0xf7, 0x01, 0xfc, 0x32, 0xdc, 0xb6, 0x90, 0x8b, 0xae, 0xd9, 0x79, 0x79, 0x46, 0x97, 0x99, 0xa0,
0x50, 0xf4, 0xe6, 0xb1, 0x89, 0xea, 0xa1, 0x00, 0x18, 0xe4, 0x48, 0x7f, 0x85, 0x01, 0x51, 0x49,
0x4b, 0x6c, 0xf0, 0xfd, 0x77, 0xef, 0x0e, 0x0f, 0x0f, 0x8f, 0x49, 0x7b, 0x04, 0x49, 0xff, 0xe3,
0xed, 0x2d, 0xc1, 0xae, 0x14, 0xdb, 0x22, 0x7c, 0x1b, 0x43, 0x50, 0x5a, 0x87, 0x87, 0x21, 0x56,
0x0f, 0x90, 0x1e, 0x36, 0xce, 0xe2, 0x90, 0xfa, 0x64, 0xca, 0x85, 0x14, 0x0a, 0xab, 0x68, 0x8f,
0x0b, 0xe8, 0x33, 0xf1, 0x02, 0x00, 0x05, 0x52, 0x6d, 0x0e, 0x24, 0x8a, 0xa0, 0x87, 0x01, 0xe8,
0x15, 0xaa, 0xfe, 0x6e, 0xac, 0x4e, 0x9b, 0x01, 0x2e, 0x8d, 0xe6, 0x44, 0x34, 0x20, 0x4f, 0x92,
0x11, 0x13, 0x88, 0xa7, 0x04, 0x14, 0x07, 0xe8, 0x51, 0x11, 0x69, 0x93, 0x04, 0xf0, 0x37, 0x0f,
0x19, 0x52, 0x01, 0x2f, 0xb8, 0x11, 0x2c, 0xd6, 0xfa, 0xa3, 0x00, 0x66, 0x08, 0x26, 0x35, 0xe5,
0x06, 0x46, 0x09, 0x32, 0x1c, 0x8a, 0x23, 0x61, 0x1d, 0xff, 0xb9, 0x92, 0x0b, 0x0a, 0xde, 0xc2,
0xe0, 0xda, 0x25, 0x67, 0xc3, 0x3e, 0x4a, 0x0d, 0x5c, 0x02, 0xb5, 0x2d, 0xe4, 0x8c, 0xe2, 0x61,
0x57, 0x80, 0xdb, 0x2b, 0x2f, 0x75, 0x73, 0xd4, 0x42, 0xd1, 0xab, 0x71, 0x6c, 0x89, 0x53, 0x2f,
0xd1, 0xe7, 0x76, 0x11, 0xa8, 0x34, 0xbd, 0x2e, 0xec, 0x71, 0x59, 0xb5, 0xa8, 0x6d, 0xa4, 0xbd,
0x16, 0xde, 0x6d, 0xea, 0x42, 0x3e, 0x6a, 0xe7, 0x3b, 0x89, 0xf9, 0x3d, 0x8b, 0x97, 0x7a, 0x6d,
0xea, 0xee, 0x57, 0x43, 0xe5, 0x49, 0xf3, 0x5e, 0xbb, 0xec, 0xd4, 0xf8, 0xea, 0x63, 0xff, 0x66,
0xb0, 0xb2, 0x08, 0x1a, 0xcb, 0xcf, 0x78, 0xd3, 0x46, 0x08, 0x35, 0x91, 0x6e, 0xd4, 0x01, 0x3f,
0x05, 0xdc, 0xe1, 0x51, 0x1f, 0x6c, 0x18, 0xa3, 0x41, 0xb1, 0xab, 0x02, 0x5c, 0x0e, 0x56, 0x01,
0x84, 0x0e, 0xd6, 0x4a, 0xb0, 0x21, 0x4d, 0xed, 0x87, 0x2f, 0x3f, 0x94, 0x7d, 0xaf, 0x19, 0x4e,
0xc9, 0x8c, 0xa6, 0x38, 0x45, 0xb0, 0x08, 0x34, 0x56, 0x2e, 0x19, 0x73, 0x24, 0xe6, 0xf0, 0x20,
0xce, 0xfc, 0xe3, 0x4d, 0xe6, 0x5e, 0xd0, 0xc0, 0xc5, 0x0b, 0x61, 0x6b, 0xbc, 0x8c, 0xdb, 0xab,
0x8f, 0x9f, 0x86, 0x67, 0x83, 0x05, 0x25, 0xec, 0xd7, 0xb5, 0xe8, 0xfd, 0x74, 0x8d, 0x82, 0xfe,
0xb2, 0xa5, 0x67, 0x3a, 0xfc, 0xd8, 0xef, 0x0c, 0x17, 0xf5, 0x78, 0xb0, 0xaf, 0x59, 0x9c, 0xfa,
0x1e, 0x6e, 0xb1, 0xd7, 0x5d, 0x93, 0x39, 0xae, 0x3e, 0x9e, 0xf6, 0xba, 0x8b, 0xc9, 0x23, 0x93,
0xa0, 0xab, 0xf2, 0x05, 0xb9, 0xe5, 0x91, 0xe7, 0xac, 0xe3, 0xd0, 0x7d, 0x61, 0x44, 0x95, 0x15,
0xcf, 0xf1, 0x30, 0x7d, 0x33, 0xf5, 0xf9, 0x0b, 0x6a, 0xa5, 0xf5, 0x7e, 0x32, 0x82, 0x6e, 0x7e,
0x5a, 0x3c, 0xa4, 0xd9, 0xe0, 0x7a, 0x27, 0x69, 0xdb, 0x05, 0x4d, 0x92, 0xb1, 0xf1, 0xa0, 0x81,
0xa8, 0x6e, 0xf8, 0x15, 0x68, 0x2e, 0xf8, 0x43, 0xca, 0x25, 0x40, 0x4e, 0xb9, 0x04, 0xe2, 0x38,
0x84, 0x71, 0xf9, 0x9b, 0x92, 0x3d, 0x7b, 0xee, 0x74, 0xa7, 0x18, 0xc8, 0x30, 0xf4, 0x77, 0xc6,
0xf1, 0xfc, 0x39, 0xd2, 0xc6, 0x2a, 0x8e, 0x6b, 0x2b, 0x05, 0xfd, 0xc2, 0x13, 0x28, 0x04, 0x21,
0x70, 0x87, 0xa4, 0x84, 0xbe, 0x0d, 0x38, 0xd1, 0x9d, 0x30, 0xd2, 0xeb, 0xab, 0x34, 0x85, 0x23,
0x3e, 0x02, 0x47, 0xa2, 0x23, 0x0e, 0x56, 0x53, 0x63, 0x3f, 0x74, 0x46, 0x50, 0xb5, 0x7f, 0xc0,
0xec, 0xa6, 0x4a, 0x93, 0x4e, 0x90, 0x64, 0x0a, 0x6b, 0x83, 0x7e, 0xab, 0x46, 0x76, 0xc6, 0xd0,
0xe7, 0x90, 0xb5, 0x51, 0x22, 0xcd, 0x64, 0x21, 0xa2, 0x2f, 0x2e, 0xd7, 0x42, 0x5a, 0xc4, 0x3e,
0x04, 0xc3, 0xee, 0xb9, 0xf0, 0x2a, 0xe5, 0xa2, 0xb7, 0x9c, 0xae, 0x5e, 0x5f, 0x00, 0xc3, 0x88,
0x81, 0x37, 0x75, 0xa8, 0x17, 0x7d, 0xed, 0x2a, 0x90, 0x1e, 0xc2, 0x0a, 0x78, 0x89, 0x3e, 0xa9,
0x59, 0xeb, 0x5d, 0x17, 0xea, 0x48, 0xf3, 0x26, 0xac, 0x01, 0x06, 0xda, 0x70, 0x92, 0x79, 0x01,
0x48, 0x9a, 0xcc, 0x1d, 0xd7, 0x92, 0xcd, 0xa7, 0xac, 0x17, 0xa7, 0x40, 0xa2, 0xce, 0x68, 0x51,
0x2c, 0x54, 0xdc, 0x49, 0x66, 0x8f, 0xa3, 0xb9, 0xd3, 0xd6, 0x74, 0x72, 0x7d, 0xdb, 0x22, 0x8d,
0xe8, 0xd9, 0x26, 0xd5, 0x82, 0xfe, 0x1b, 0x2f, 0xd0, 0xe7, 0xab, 0xc8, 0x5f, 0xbc, 0x6f, 0x7b,
0x49, 0x6d, 0xac, 0x21, 0xdf, 0xdb, 0x4c, 0x3e, 0xa3, 0xce, 0xf2, 0x78, 0x5f, 0x1d, 0xd2, 0xa2,
0xab, 0x45, 0x89, 0x98, 0xfa, 0x5e, 0x78, 0x9f, 0x65, 0x06, 0x1e, 0xce, 0xb9, 0x2f, 0xa8, 0x7a,
0x8c, 0x2f, 0x96, 0xe5, 0x14, 0xea, 0xb4, 0xa0, 0x0f, 0xe9, 0x21, 0x1f, 0x7e, 0x04, 0x91, 0xa7,
0x66, 0xa3, 0xf4, 0x08, 0x56, 0x4f, 0xc1, 0x4f, 0x96, 0xef, 0xc3, 0x49, 0x79, 0x86, 0x0a, 0x54,
0x24, 0x49, 0x2a, 0x13, 0xf4, 0x23, 0x11, 0x41, 0x94, 0x64, 0x22, 0x7a, 0x91, 0x99, 0xf7, 0x47,
0xae, 0x8e, 0x09, 0x60, 0xaf, 0x02, 0x13, 0xda, 0x44, 0x98, 0x39, 0x8b, 0xf3, 0xd9, 0xe7, 0x4c,
0x7f, 0x19, 0x2b, 0x5f, 0xf2, 0x27, 0x04, 0x23, 0x97, 0xe8, 0x50, 0xf8, 0xfd, 0xc7, 0x4a, 0xc0,
0x8c, 0xaf, 0x32, 0x59, 0x0c, 0x35, 0x6e, 0x31, 0xe5, 0xcc, 0x3e, 0x8f, 0xfa, 0xcb, 0xa2, 0x68,
0xf6, 0xe0, 0xa9, 0xd0, 0x11, 0x82, 0x53, 0xcf, 0x4b, 0x62, 0x74, 0x5c, 0xaa, 0xa2, 0xbd, 0x76,
0xdb, 0xbf, 0x6a, 0x56, 0xb2, 0xa9, 0x3f, 0x0d, 0x6f, 0xae, 0x2b, 0xa4, 0x17, 0x44, 0x31, 0x7f,
0xd0, 0x91, 0x20, 0xf4, 0x03, 0x21, 0xa1, 0xc1, 0x0c, 0x70, 0x3f, 0xb8, 0x1e, 0x2e, 0x12, 0x71,
0x40, 0xf4, 0xa0, 0x59, 0xcd, 0x6e, 0x6e, 0x67, 0x27, 0x34, 0x71, 0x49, 0x0c, 0x30, 0xb6, 0x78,
0x6c, 0x79, 0xd2, 0x7d, 0x71, 0x9c, 0xd2, 0x68, 0xb4, 0x60, 0x9f, 0xf8, 0x5b, 0xaf, 0xaf, 0x3c,
0xe2, 0x68, 0xee, 0xd5, 0xa1, 0x4c, 0xe2, 0xef, 0xdc, 0xa4, 0xe2, 0x11, 0xc4, 0x41, 0xfd, 0xd0,
0xb4, 0xf1, 0x77, 0xc9, 0x9c, 0xec, 0x50, 0x41, 0x67, 0x1c, 0xfc, 0x5d, 0xcd, 0xa8, 0xf5, 0xf6,
0x00, 0xe7, 0xc0, 0xef, 0x1a, 0x46, 0xef, 0x9a, 0x8d, 0x03, 0xd3, 0xc6, 0xdf, 0xd5, 0x8c, 0x1a,
0x75, 0xb5, 0x9a, 0xfa, 0xb3, 0x86, 0x55, 0x43, 0x0b, 0xd5, 0x28, 0x4a, 0xb5, 0x70, 0x8e, 0x01,
0x25, 0xe0, 0x9f, 0x8c, 0x45, 0x88, 0x67, 0xb5, 0xae, 0xb0, 0x44, 0x22, 0xce, 0xd1, 0x96, 0xaa,
0x92, 0x21, 0x87, 0xc6, 0x7d, 0xc4, 0x69, 0xec, 0x6a, 0x68, 0x8d, 0x06, 0x4a, 0xcd, 0x4d, 0xa6,
0x60, 0x66, 0x65, 0x8f, 0xec, 0xc0, 0x7e, 0x0f, 0x91, 0x12, 0x34, 0xdf, 0x31, 0x14, 0x4c, 0xf2,
0xdf, 0x7f, 0xff, 0xa7, 0x58, 0xf2, 0xe0, 0x61, 0x97, 0x8d, 0x92, 0xc9, 0xdf, 0x59, 0xf7, 0x66,
0x0b, 0x6e, 0xac, 0x7a, 0xf9, 0xf2, 0x78, 0x28, 0x0e, 0x4d, 0x95, 0xea, 0x1d, 0x96, 0xa6, 0xd6,
0xeb, 0xfa, 0xea, 0xec, 0x64, 0x6c, 0xce, 0x8d, 0xd7, 0x8d, 0xd7, 0x24, 0x37, 0xe3, 0x05, 0x79,
0xf3, 0x35, 0xe4, 0x33, 0xea, 0xec, 0xed, 0xc6, 0xab, 0x53, 0xeb, 0xbc, 0x3a, 0x14, 0xf6, 0x4e,
0x4f, 0x99, 0xe7, 0x65, 0xea, 0xaf, 0x3d, 0xfb, 0x7c, 0x87, 0xff, 0x40, 0x16, 0x74, 0xa8, 0xde,
0x98, 0xd4, 0xa1, 0xd1, 0x1c, 0x53, 0xe8, 0xa4, 0xf4, 0x81, 0xea, 0xdb, 0xc3, 0x83, 0x43, 0xf2,
0xe8, 0x01, 0x16, 0x18, 0x31, 0xf4, 0x2e, 0x37, 0xc3, 0x07, 0x38, 0x1d, 0xbf, 0xa8, 0xc4, 0x85,
0x7f, 0xf5, 0xa2, 0xdf, 0x08, 0x7e, 0xc2, 0x08, 0xd9, 0x58, 0xa7, 0x15, 0xfd, 0xdd, 0x90, 0x4a,
0x16, 0xea, 0x43, 0xa1, 0x36, 0xc0, 0x3f, 0x1b, 0x5a, 0xc1, 0x5d, 0x9f, 0xfc, 0x8a, 0x7c, 0x7f,
0x23, 0xbb, 0x49, 0xbb, 0x86, 0x83, 0x8a, 0x9f, 0x6e, 0xe5, 0xf0, 0x53, 0x95, 0x0d, 0xdf, 0xcd,
0xbc, 0xe6, 0x13, 0x18, 0x63, 0xee, 0xf3, 0x1a, 0xfc, 0xcc, 0x07, 0xfe, 0xe0, 0xa7, 0x40, 0xf8,
0x5d, 0x10, 0x7e, 0x83, 0xfc, 0x3f, 0x51, 0x35, 0xf1, 0x4c, 0x93, 0x2c, 0x00, 0x00
};
// Autogenerated from wled00/data/settings_time.htm, do not edit!!
const uint16_t PAGE_settings_time_length = 3316;
const uint8_t PAGE_settings_time[] PROGMEM = {
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xd5, 0x1a, 0x6b, 0x57, 0xdb, 0x38,
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0xd5, 0x1a, 0x6b, 0x57, 0xdb, 0x38,
0xf6, 0x7b, 0x7e, 0x85, 0x50, 0x7b, 0x98, 0x78, 0x70, 0x9e, 0x90, 0x16, 0x92, 0xd8, 0xdd, 0x10,
0xd2, 0x42, 0x4b, 0x02, 0x67, 0x92, 0x0e, 0xbb, 0xd3, 0xf6, 0x4c, 0x15, 0x5b, 0x49, 0x0c, 0x8e,
0xe4, 0xb5, 0x65, 0x02, 0x4b, 0xf9, 0xef, 0x7b, 0x25, 0x39, 0xce, 0xd3, 0xd0, 0x76, 0x66, 0x3f,
@@ -1536,19 +1541,6 @@ const uint8_t PAGE_settings_time[] PROGMEM = {
// Autogenerated from wled00/data/settings_sec.htm, do not edit!!
const uint16_t PAGE_settings_sec_length = 2500;
const uint8_t PAGE_settings_sec[] PROGMEM = {
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xa5, 0x58, 0xff, 0x72, 0xdb, 0x36,
0x12, 0xfe, 0x5f, 0x4f, 0x01, 0xa1, 0x33, 0xa9, 0x78, 0xa5, 0x29, 0xdb, 0x49, 0x3b, 0x89, 0x23,
0x2a, 0x67, 0xc7, 0x4e, 0xe3, 0x1b, 0x3b, 0xf6, 0x44, 0x4a, 0x73, 0x37, 0xbd, 0x4e, 0x06, 0x22,
0x21, 0x11, 0x11, 0x49, 0xb0, 0x00, 0x68, 0x45, 0x97, 0xf6, 0x3d, 0xee, 0x69, 0xee, 0x61, 0xee,
0x49, 0xee, 0x5b, 0x90, 0x94, 0x64, 0xc7, 0x49, 0x26, 0x73, 0x7f, 0xd8, 0x12, 0x09, 0x60, 0x7f,
0x7c, 0xbb, 0xfb, 0xed, 0x42, 0xa3, 0xfe, 0xe9, 0xd5, 0xf3, 0xe9, 0x3f, 0xae, 0xcf, 0x58, 0xe6,
0x8a, 0x7c, 0x3c, 0xa2, 0xff, 0x2c, 0x17, 0xe5, 0x22, 0xe6, 0xb2, 0xe4, 0x78, 0x96, 0x22, 0x1d,
0x8f, 0x0a, 0xe9, 0x04, 0x2b, 0x45, 0x21, 0x63, 0x7e, 0xa3, 0xe4, 0xaa, 0xd2, 0xc6, 0x71, 0x96,
0xe8, 0xd2, 0xc9, 0xd2, 0xc5, 0x7c, 0xa5, 0x52, 0x97, 0xc5, 0x3f, 0xee, 0xef, 0xf3, 0x71, 0xaf,
0xd9, 0xda, 0xbb, 0xb3, 0x96, 0xca, 0x1b, 0x95, 0xc8, 0x3d, 0xff, 0x10, 0xaa, 0x52, 0x39, 0x25,
0xf2, 0x3d, 0x9b, 0x88, 0x5c, 0xc6, 0x07, 0x61, 0x21, 0x3e, 0xa8, 0xa2, 0x2e, 0x36, 0xcf, 0xb5,
0x95, 0xc6, 0x3f, 0x88, 0x19, 0x9e, 0x4b, 0xcd, 0x59, 0xef, 0x8e, 0xea, 0xd6, 0xa0, 0x24, 0x13,
0xc6, 0x4a, 0x28, 0xa9, 0xdd, 0x7c, 0xef, 0x31, 0xde, 0x3a, 0xe5, 0x72, 0x39, 0xbe, 0x54, 0x36,
0x61, 0x13, 0xe9, 0x9c, 0x2a, 0x17, 0x76, 0x34, 0x6c, 0x5e, 0x8e, 0x6c, 0x62, 0x54, 0xe5, 0xc6,
0xbd, 0x1b, 0x61, 0x58, 0xae, 0x13, 0x55, 0x85, 0x4e, 0x15, 0x52, 0xd7, 0x2e, 0x4c, 0xe3, 0x54,
0x27, 0x75, 0x01, 0x73, 0x43, 0x2c, 0xc4, 0xfd, 0x83, 0xa7, 0xf3, 0xba, 0x4c, 0x9c, 0xd2, 0x25,
@@ -1699,7 +1691,7 @@ const uint8_t PAGE_settings_sec[] PROGMEM = {
// Autogenerated from wled00/data/settings_um.htm, do not edit!!
const uint16_t PAGE_settings_um_length = 3223;
const uint8_t PAGE_settings_um[] PROGMEM = {
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xcd, 0x59, 0xeb, 0x72, 0xdb, 0xc6,
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0xcd, 0x59, 0xeb, 0x72, 0xdb, 0xc6,
0x15, 0xfe, 0xaf, 0xa7, 0x80, 0x36, 0xaa, 0x04, 0x0c, 0x21, 0x90, 0x8a, 0x93, 0x19, 0x9b, 0x20,
0xa0, 0xda, 0xb2, 0x13, 0xab, 0xb5, 0x23, 0x4d, 0x64, 0x27, 0xe9, 0x28, 0xaa, 0x0d, 0x02, 0x4b,
0x72, 0x2d, 0x70, 0x17, 0x01, 0x16, 0xba, 0x94, 0xd2, 0x5b, 0xf4, 0x7f, 0x3a, 0xed, 0x2b, 0xf4,
@@ -1907,7 +1899,7 @@ const uint8_t PAGE_settings_um[] PROGMEM = {
// Autogenerated from wled00/data/settings_2D.htm, do not edit!!
const uint16_t PAGE_settings_2D_length = 3774;
const uint8_t PAGE_settings_2D[] PROGMEM = {
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xc5, 0x5a, 0xeb, 0x76, 0xdb, 0x36,
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0xc5, 0x5a, 0xeb, 0x76, 0xdb, 0x36,
0x12, 0xfe, 0xaf, 0xa7, 0x80, 0xd9, 0xae, 0x4b, 0xda, 0xd4, 0xcd, 0x4d, 0x7a, 0x5a, 0x49, 0xa4,
0xd6, 0x97, 0x34, 0xf6, 0x1e, 0x3b, 0xd1, 0xb1, 0x5c, 0x3b, 0x39, 0x6d, 0x4f, 0x4b, 0x93, 0xa0,
0x84, 0x84, 0x02, 0x58, 0x12, 0xf2, 0xa5, 0x8e, 0xdf, 0x63, 0x9f, 0x66, 0x1f, 0x66, 0x9f, 0x64,
@@ -2149,7 +2141,7 @@ const uint8_t PAGE_settings_2D[] PROGMEM = {
// Autogenerated from wled00/data/settings_pin.htm, do not edit!!
const uint16_t PAGE_settings_pin_length = 471;
const uint8_t PAGE_settings_pin[] PROGMEM = {
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0x5d, 0x52, 0x4d, 0x6f, 0x13, 0x31,
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x5d, 0x52, 0x4d, 0x6f, 0x13, 0x31,
0x10, 0xbd, 0xef, 0xaf, 0x30, 0x73, 0x69, 0x82, 0x92, 0x6c, 0xa8, 0xa8, 0x04, 0xaa, 0xbd, 0x42,
0x81, 0x1e, 0xb8, 0x94, 0x48, 0xe5, 0x52, 0x55, 0x55, 0xe5, 0xd8, 0xb3, 0x89, 0x55, 0x7f, 0x2c,
0xb6, 0x37, 0x21, 0x54, 0xfc, 0x77, 0xc6, 0xbb, 0xa1, 0xa0, 0x5c, 0xd6, 0x7e, 0x33, 0xe3, 0x37,

View File

@@ -828,6 +828,7 @@ void serializeInfo(JsonObject root)
case REALTIME_MODE_ARTNET: root["lm"] = F("Art-Net"); break;
case REALTIME_MODE_TPM2NET: root["lm"] = F("tpm2.net"); break;
case REALTIME_MODE_DDP: root["lm"] = F("DDP"); break;
case REALTIME_MODE_DMX: root["lm"] = F("DMX"); break;
}
if (realtimeIP[0] == 0)

View File

@@ -314,6 +314,12 @@ void handleSettingsSet(AsyncWebServerRequest *request, byte subPage)
t = request->arg(F("WO")).toInt();
if (t >= -255 && t <= 255) arlsOffset = t;
#ifdef WLED_ENABLE_DMX_INPUT
dmxTransmitPin = request->arg(F("DMT")).toInt();
dmxReceivePin = request->arg(F("DMR")).toInt();
dmxEnablePin= request->arg(F("DME")).toInt();
#endif
alexaEnabled = request->hasArg(F("AL"));
strlcpy(alexaInvocationName, request->arg(F("AI")).c_str(), 33);
t = request->arg(F("AP")).toInt();

View File

@@ -106,6 +106,9 @@ void WLED::loop()
handleTransitions();
#ifdef WLED_ENABLE_DMX
handleDMX();
#endif
#ifdef WLED_ENABLE_DMX_INPUT
handleDMXInput();
#endif
userLoop();
@@ -492,6 +495,11 @@ void WLED::setup()
#ifdef WLED_ENABLE_DMX //reserve GPIO2 as hardcoded DMX pin
pinManager.allocatePin(2, true, PinOwner::DMX);
#endif
#ifdef WLED_ENABLE_DMX_INPUT
if(dmxTransmitPin > 0) pinManager.allocatePin(dmxTransmitPin, true, PinOwner::DMX);
if(dmxReceivePin > 0) pinManager.allocatePin(dmxReceivePin, true, PinOwner::DMX);
if(dmxEnablePin > 0) pinManager.allocatePin(dmxEnablePin, true, PinOwner::DMX);
#endif
// WLEDMM experimental: support for single neoPixel on Adafruit boards
#if 0
@@ -613,7 +621,7 @@ void WLED::setup()
ArduinoOTA.setHostname(cmDNS);
}
#endif
#ifdef WLED_ENABLE_DMX
#if defined(WLED_ENABLE_DMX) || defined(WLED_ENABLE_DMX_INPUT)
initDMX();
#endif

View File

@@ -36,6 +36,7 @@
#undef WLED_ENABLE_ADALIGHT // disable has priority over enable
#endif
//#define WLED_ENABLE_DMX // uses 3.5kb (use LEDPIN other than 2)
//#define WLED_ENABLE_DMX_INPUT // Listen for DMX over Serial
//#define WLED_ENABLE_JSONLIVE // peek LED output via /json/live (WS binary peek is always enabled)
#ifndef WLED_DISABLE_LOXONE
#define WLED_ENABLE_LOXONE // uses 1.2kb
@@ -393,6 +394,12 @@ WLED_GLOBAL bool arlsForceMaxBri _INIT(false); // enable to f
#endif
WLED_GLOBAL uint16_t e131ProxyUniverse _INIT(0); // output this E1.31 (sACN) / ArtNet universe via MAX485 (0 = disabled)
#endif
#ifdef WLED_ENABLE_DMX_INPUT
WLED_GLOBAL int dmxTransmitPin _INIT(0);
WLED_GLOBAL int dmxReceivePin _INIT(0);
WLED_GLOBAL int dmxEnablePin _INIT(0);
#endif
WLED_GLOBAL uint16_t e131Universe _INIT(1); // settings for E1.31 (sACN) protocol (only DMX_MODE_MULTIPLE_* can span over consequtive universes)
WLED_GLOBAL uint16_t e131Port _INIT(5568); // DMX in port. E1.31 default is 5568, Art-Net is 6454
WLED_GLOBAL byte e131Priority _INIT(0); // E1.31 port priority (if != 0 priority handling is active)

View File

@@ -531,6 +531,14 @@ void getSettingsJS(AsyncWebServerRequest* request, byte subPage, char* dest) //W
sappend('v',SET_F("EU"),e131Universe);
#ifdef WLED_ENABLE_DMX
oappend(SET_F("hideNoDMX();")); // WLEDMM hide "not compiled in" message
#endif
#ifndef WLED_ENABLE_DMX_INPUT
oappend(SET_F("hideDMXInput();")); // WLEDMM hide "dmx input" settings
#else
oappend(SET_F("hideNoDMXInput();")); // WLEDMM hide "not compiled in" message
sappend('v',SET_F("DMT"),dmxTransmitPin);
sappend('v',SET_F("DMR"),dmxReceivePin);
sappend('v',SET_F("DME"),dmxEnablePin);
#endif
sappend('v',SET_F("DA"),DMXAddress);
sappend('v',SET_F("XX"),DMXSegmentSpacing);