From 7afa550ba46431682cf2f069b170e6de2f598f50 Mon Sep 17 00:00:00 2001 From: lost-hope Date: Thu, 25 Jan 2024 17:55:41 +0100 Subject: [PATCH 01/35] Usermod Klipper Percentage: fix error with slashes on non windows devices --- wled00/usermods_list.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wled00/usermods_list.cpp b/wled00/usermods_list.cpp index 024e2bdc9c..e5f9c28415 100644 --- a/wled00/usermods_list.cpp +++ b/wled00/usermods_list.cpp @@ -170,7 +170,7 @@ #endif #ifdef USERMOD_KLIPPER_PERCENTAGE - #include "..\usermods\usermod_v2_klipper_percentage\usermod_v2_klipper_percentage.h" + #include "../usermods/usermod_v2_klipper_percentage/usermod_v2_klipper_percentage.h" #endif #ifdef USERMOD_BOBLIGHT From 4316024dc73a1f369dda1032ffc7c3db9015978f Mon Sep 17 00:00:00 2001 From: wled-install <96419931+wled-install@users.noreply.github.com> Date: Tue, 30 Jan 2024 22:51:18 +0100 Subject: [PATCH 02/35] Update audio_reactive.h --- usermods/audioreactive/audio_reactive.h | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/usermods/audioreactive/audio_reactive.h b/usermods/audioreactive/audio_reactive.h index 4725c097ca..8787b9980e 100644 --- a/usermods/audioreactive/audio_reactive.h +++ b/usermods/audioreactive/audio_reactive.h @@ -73,7 +73,11 @@ static uint8_t audioSyncEnabled = 0; // bit field: bit 0 - send, bit 1 static bool udpSyncConnected = false; // UDP connection status -> true if connected to multicast group // user settable parameters for limitSoundDynamics() -static bool limiterOn = true; // bool: enable / disable dynamics limiter +#ifdef UM_AUDIOREACTIVE_RISE_FALL_LIMITER_OFF +static bool limiterOn = false; // bool: enable / disable dynamics limiter +#else +static bool limiterOn = true; +#endif static uint16_t attackTime = 80; // int: attack time in milliseconds. Default 0.08sec static uint16_t decayTime = 1400; // int: decay time in milliseconds. Default 1.40sec // user settable options for FFTResult scaling @@ -612,7 +616,12 @@ class AudioReactive : public Usermod { }; // set your config variables to their boot default value (this can also be done in readFromConfig() or a constructor if you prefer) + #ifdef UM_AUDIOREACTIVE_ENABLE + bool enabled = true; + #else bool enabled = false; + #endif + bool initDone = false; // variables for UDP sound sync From f1c27e1798b630981ff38db1a25ccfead6f3236e Mon Sep 17 00:00:00 2001 From: wled-install <96419931+wled-install@users.noreply.github.com> Date: Tue, 30 Jan 2024 22:56:09 +0100 Subject: [PATCH 03/35] Update readme.md --- usermods/audioreactive/readme.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/usermods/audioreactive/readme.md b/usermods/audioreactive/readme.md index 1dd5f5d9cf..fefbf4d3b1 100644 --- a/usermods/audioreactive/readme.md +++ b/usermods/audioreactive/readme.md @@ -55,6 +55,11 @@ If you want to define default GPIOs during compile time, use the following (defa - `-D ES7243_SDAPIN` : GPIO for I2C SDA pin on ES7243 microphone (-1) - `-D ES7243_SCLPIN` : GPIO for I2C SCL pin on ES7243 microphone (-1) +Other options: + +- `-D UM_AUDIOREACTIVE_ENABLE` : makes msermod default enabled +- `-D UM_AUDIOREACTIVE_RISE_FALL_LIMITER_OFF` : disables rise/fall limiter default + **NOTE** I2S is used for analog audio sampling. Hence, the analog *buttons* (i.e. potentiometers) are disabled when running this usermod with an analog microphone. ### Advanced Compile-Time Options From 345346315abdb76675528f27011bbc3349e20115 Mon Sep 17 00:00:00 2001 From: wled-install <96419931+wled-install@users.noreply.github.com> Date: Tue, 30 Jan 2024 22:59:29 +0100 Subject: [PATCH 04/35] Update readme.md --- usermods/audioreactive/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usermods/audioreactive/readme.md b/usermods/audioreactive/readme.md index fefbf4d3b1..09bfc483e9 100644 --- a/usermods/audioreactive/readme.md +++ b/usermods/audioreactive/readme.md @@ -57,7 +57,7 @@ If you want to define default GPIOs during compile time, use the following (defa Other options: -- `-D UM_AUDIOREACTIVE_ENABLE` : makes msermod default enabled +- `-D UM_AUDIOREACTIVE_ENABLE` : makes usermod default enabled (not the same as include into build option!) - `-D UM_AUDIOREACTIVE_RISE_FALL_LIMITER_OFF` : disables rise/fall limiter default **NOTE** I2S is used for analog audio sampling. Hence, the analog *buttons* (i.e. potentiometers) are disabled when running this usermod with an analog microphone. From 89f8b6060f5966bc046acfffd1da033fc10f41e0 Mon Sep 17 00:00:00 2001 From: wled-install <96419931+wled-install@users.noreply.github.com> Date: Wed, 31 Jan 2024 06:33:48 +0100 Subject: [PATCH 05/35] Update readme.md --- usermods/audioreactive/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usermods/audioreactive/readme.md b/usermods/audioreactive/readme.md index 09bfc483e9..47804b611f 100644 --- a/usermods/audioreactive/readme.md +++ b/usermods/audioreactive/readme.md @@ -58,7 +58,7 @@ If you want to define default GPIOs during compile time, use the following (defa Other options: - `-D UM_AUDIOREACTIVE_ENABLE` : makes usermod default enabled (not the same as include into build option!) -- `-D UM_AUDIOREACTIVE_RISE_FALL_LIMITER_OFF` : disables rise/fall limiter default +- `-D UM_AUDIOREACTIVE_DYNAMICS_LIMITER_OFF` : disables rise/fall limiter default **NOTE** I2S is used for analog audio sampling. Hence, the analog *buttons* (i.e. potentiometers) are disabled when running this usermod with an analog microphone. From 917a98109663ee21c17dd651b01442e4e77e4751 Mon Sep 17 00:00:00 2001 From: wled-install <96419931+wled-install@users.noreply.github.com> Date: Wed, 31 Jan 2024 06:34:15 +0100 Subject: [PATCH 06/35] Update audio_reactive.h --- usermods/audioreactive/audio_reactive.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usermods/audioreactive/audio_reactive.h b/usermods/audioreactive/audio_reactive.h index 8787b9980e..fec0525ec7 100644 --- a/usermods/audioreactive/audio_reactive.h +++ b/usermods/audioreactive/audio_reactive.h @@ -73,7 +73,7 @@ static uint8_t audioSyncEnabled = 0; // bit field: bit 0 - send, bit 1 static bool udpSyncConnected = false; // UDP connection status -> true if connected to multicast group // user settable parameters for limitSoundDynamics() -#ifdef UM_AUDIOREACTIVE_RISE_FALL_LIMITER_OFF +#ifdef UM_AUDIOREACTIVE_DYNAMICS_LIMITER_OFF static bool limiterOn = false; // bool: enable / disable dynamics limiter #else static bool limiterOn = true; From 4457067045707b54558a298cd6daa4df8f5caf41 Mon Sep 17 00:00:00 2001 From: Blaz Kristan Date: Sat, 10 Feb 2024 11:45:33 +0100 Subject: [PATCH 07/35] Multiple analog button fix for #3549 --- wled00/button.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/wled00/button.cpp b/wled00/button.cpp index 60df15eb63..c1d0337667 100644 --- a/wled00/button.cpp +++ b/wled00/button.cpp @@ -226,11 +226,11 @@ void handleAnalog(uint8_t b) void handleButton() { - static unsigned long lastRead = 0UL; + static unsigned long lastAnalogRead = 0UL; static unsigned long lastRun = 0UL; unsigned long now = millis(); - if (strip.isUpdating() && (now - lastRun < 400)) return; // don't interfere with strip update (unless strip is updating continuously, e.g. very long strips) + if (strip.isUpdating() && (now - lastRun < ANALOG_BTN_READ_CYCLE+1)) return; // don't interfere with strip update (unless strip is updating continuously, e.g. very long strips) lastRun = now; for (uint8_t b=0; b ANALOG_BTN_READ_CYCLE) { + if (now - lastAnalogRead > ANALOG_BTN_READ_CYCLE) { handleAnalog(b); - lastRead = now; } continue; } @@ -325,6 +324,9 @@ void handleButton() shortPressAction(b); } } + if (now - lastAnalogRead > ANALOG_BTN_READ_CYCLE) { + lastAnalogRead = now; + } } // If enabled, RMT idle level is set to HIGH when off From 4f42a176efdb06fdd18117770fbcfcfbb24972ca Mon Sep 17 00:00:00 2001 From: Blaz Kristan Date: Wed, 7 Feb 2024 18:58:56 +0100 Subject: [PATCH 08/35] Prevent JSON buffer clear after failed lock attempt (alternative to #3743) --- wled00/json.cpp | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/wled00/json.cpp b/wled00/json.cpp index 2e3b27b977..62d40e42df 100644 --- a/wled00/json.cpp +++ b/wled00/json.cpp @@ -1013,17 +1013,18 @@ void serializeModeNames(JsonArray arr) } } - -// Global buffer locking response helper class -class GlobalBufferAsyncJsonResponse: public JSONBufferGuard, public AsyncJsonResponse { +// Global buffer locking response helper class (to make sure lock is released when AsyncJsonResponse is destroyed) +class LockedJsonResponse: public AsyncJsonResponse { public: - inline GlobalBufferAsyncJsonResponse(bool isArray) : JSONBufferGuard(17), AsyncJsonResponse(&doc, isArray) {}; - virtual ~GlobalBufferAsyncJsonResponse() {}; - - // Other members are inherited + // WARNING: constructor assumes requestJSONBufferLock() was successfully acquired externally/prior to constructing the instance + // Not a good practice with C++. Unfortunately AsyncJsonResponse only has 2 constructors - for dynamic buffer or existing buffer, + // with existing buffer it clears its content during construction + // if the lock was not acquired (using JSONBufferGuard class) previous implementation still cleared existing buffer + inline LockedJsonResponse(JsonDocument *doc, bool isArray) : AsyncJsonResponse(doc, isArray) {}; + // destructor will remove JSON buffer lock when response is destroyed in AsyncWebServer + virtual ~LockedJsonResponse() { releaseJSONBufferLock(); }; }; - void serveJson(AsyncWebServerRequest* request) { byte subJson = 0; @@ -1054,12 +1055,13 @@ void serveJson(AsyncWebServerRequest* request) return; } - GlobalBufferAsyncJsonResponse *response = new GlobalBufferAsyncJsonResponse(subJson==JSON_PATH_FXDATA || subJson==JSON_PATH_EFFECTS); // will clear and convert JsonDocument into JsonArray if necessary - if (!response->owns_lock()) { + if (!requestJSONBufferLock(17)) { request->send(503, "application/json", F("{\"error\":3}")); - delete response; return; } + // releaseJSONBufferLock() will be called when "response" is destroyed (from AsyncWebServer) + // make sure you delete "response" if no "request->send(response);" is made + LockedJsonResponse *response = new LockedJsonResponse(&doc, subJson==JSON_PATH_FXDATA || subJson==JSON_PATH_EFFECTS); // will clear and convert JsonDocument into JsonArray if necessary JsonVariant lDoc = response->getRoot(); From 0a8a88421e07b7e5edf56522bbf51695348e11c3 Mon Sep 17 00:00:00 2001 From: Blaz Kristan Date: Tue, 9 Jan 2024 18:20:20 +0100 Subject: [PATCH 09/35] Possible fix for #3589 & partial fix for #3605 --- wled00/json.cpp | 9 ++++++++- wled00/udp.cpp | 2 ++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/wled00/json.cpp b/wled00/json.cpp index 62d40e42df..dcd6f1e591 100644 --- a/wled00/json.cpp +++ b/wled00/json.cpp @@ -214,7 +214,14 @@ bool deserializeSegment(JsonObject elem, byte it, byte presetId) #endif byte fx = seg.mode; - if (getVal(elem["fx"], &fx, 0, strip.getModeCount())) { //load effect ('r' random, '~' inc/dec, 0-255 exact value) + byte last = strip.getModeCount(); + // partial fix for #3605 + if (!elem["fx"].isNull() && elem["fx"].is()) { + const char *tmp = elem["fx"].as(); + if (strlen(tmp) > 3 && (strchr(tmp,'r') || strchr(tmp,'~') != strrchr(tmp,'~'))) last = 0; // we have "X~Y(r|[w]~[-])" form + } + // end fix + if (getVal(elem["fx"], &fx, 0, last)) { //load effect ('r' random, '~' inc/dec, 0-255 exact value, 5~10r pick random between 5 & 10) if (!presetId && currentPlaylist>=0) unloadPlaylist(); if (fx != seg.mode) seg.setMode(fx, elem[F("fxdef")]); } diff --git a/wled00/udp.cpp b/wled00/udp.cpp index 07ce9eb706..4644b16475 100644 --- a/wled00/udp.cpp +++ b/wled00/udp.cpp @@ -195,6 +195,8 @@ void exitRealtime() { realtimeIP[0] = 0; if (useMainSegmentOnly) { // unfreeze live segment again strip.getMainSegment().freeze = false; + } else { + strip.show(); // possible fix for #3589 } updateInterfaces(CALL_MODE_WS_SEND); } From 7ae5459fe7bf3f6d3feaf493498ee29bbf76cc66 Mon Sep 17 00:00:00 2001 From: Blaz Kristan Date: Mon, 12 Feb 2024 13:29:08 +0100 Subject: [PATCH 10/35] 0.14.2-b1 --- CHANGELOG.md | 8 ++++++++ package-lock.json | 2 +- package.json | 2 +- wled00/improv.cpp | 2 +- wled00/wled.h | 2 +- 5 files changed, 12 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ba6000dd50..8b22c64ac2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ ## WLED changelog +#### Build 2402120 +- Beta WLED 0.14.2-b1 +- Possible fix for #3589 & partial fix for #3605 +- Prevent JSON buffer clear after failed lock attempt +- Multiple analog button fix for #3549 +- UM Audioreactive: add two compiler options (#3732 by @wled-install) +- Fix for #3693 + #### Build 2401141 - Official release of WLED 0.14.1 - Fix for #3566, #3665, #3672 diff --git a/package-lock.json b/package-lock.json index 9b3fa3632c..1b07a547a8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "wled", - "version": "0.14.1", + "version": "0.14.2-b1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index eaf0996d01..aa4cfe8791 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "wled", - "version": "0.14.1", + "version": "0.14.2-b1", "description": "Tools for WLED project", "main": "tools/cdata.js", "directories": { diff --git a/wled00/improv.cpp b/wled00/improv.cpp index bbe3d72768..db1b7115c4 100644 --- a/wled00/improv.cpp +++ b/wled00/improv.cpp @@ -210,7 +210,7 @@ void sendImprovInfoResponse() { //Use serverDescription if it has been changed from the default "WLED", else mDNS name bool useMdnsName = (strcmp(serverDescription, "WLED") == 0 && strlen(cmDNS) > 0); char vString[20]; - sprintf_P(vString, PSTR("0.14.1/%i"), VERSION); + sprintf_P(vString, PSTR("0.14.2-b1/%i"), VERSION); const char *str[4] = {"WLED", vString, bString, useMdnsName ? cmDNS : serverDescription}; sendImprovRPCResult(ImprovRPCType::Request_Info, 4, str); diff --git a/wled00/wled.h b/wled00/wled.h index 4868323c18..5f050dc745 100644 --- a/wled00/wled.h +++ b/wled00/wled.h @@ -8,7 +8,7 @@ */ // version code in format yymmddb (b = daily build) -#define VERSION 2401141 +#define VERSION 2402120 //uncomment this if you have a "my_config.h" file you'd like to use //#define WLED_USE_MY_CONFIG From 23aad24027c00ddd76ab02908ea606d0ce3db4a8 Mon Sep 17 00:00:00 2001 From: lost-hope Date: Mon, 12 Feb 2024 22:41:13 +0100 Subject: [PATCH 11/35] Fixing stairway usermod and adding buildflags Fixing Stairway: missing setup function Adding builflags: USERMOD_STAIRCASE_WIPE to install the usermod --- usermods/stairway_wipe_basic/readme.md | 10 +++++++++- .../stairway_wipe_basic/stairway-wipe-usermod-v2.h | 8 +++++--- wled00/const.h | 1 + wled00/usermods_list.cpp | 7 +++++++ 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/usermods/stairway_wipe_basic/readme.md b/usermods/stairway_wipe_basic/readme.md index 35bc0d416c..353856b3c1 100644 --- a/usermods/stairway_wipe_basic/readme.md +++ b/usermods/stairway_wipe_basic/readme.md @@ -1,5 +1,13 @@ -### Stairway lighting +# Stairway lighting +## Install +Add the buildflag `-D USERMOD_STAIRCASE_WIPE` to your enviroment to activate it. + +### Configuration +`-D STAIRCASE_WIPE_OFF` +
Have the LEDs wipe off instead of fading out + +## Description Quick usermod to accomplish something similar to [this video](https://www.youtube.com/watch?v=NHkju5ncC4A). This usermod enables you to add a lightstrip alongside or on the steps of a staircase. diff --git a/usermods/stairway_wipe_basic/stairway-wipe-usermod-v2.h b/usermods/stairway_wipe_basic/stairway-wipe-usermod-v2.h index 9cc0bea4c1..f712316b86 100644 --- a/usermods/stairway_wipe_basic/stairway-wipe-usermod-v2.h +++ b/usermods/stairway_wipe_basic/stairway-wipe-usermod-v2.h @@ -19,10 +19,12 @@ class StairwayWipeUsermod : public Usermod { unsigned long timeStaticStart = 0; uint16_t previousUserVar0 = 0; +//moved to buildflag //comment this out if you want the turn off effect to be just fading out instead of reverse wipe -#define STAIRCASE_WIPE_OFF +//#define STAIRCASE_WIPE_OFF public: - +void setup() { + } void loop() { //userVar0 (U0 in HTTP API): //has to be set to 1 if movement is detected on the PIR that is the same side of the staircase as the ESP8266 @@ -84,7 +86,7 @@ class StairwayWipeUsermod : public Usermod { uint16_t getId() { - return USERMOD_ID_EXAMPLE; + return USERMOD_ID_STAIRWAY_WIPE; } diff --git a/wled00/const.h b/wled00/const.h index 3f4ef5cfc1..388b64c820 100644 --- a/wled00/const.h +++ b/wled00/const.h @@ -151,6 +151,7 @@ #define USERMOD_ID_WIREGUARD 41 //Usermod "wireguard.h" #define USERMOD_ID_INTERNAL_TEMPERATURE 42 //Usermod "usermod_internal_temperature.h" #define USERMOD_ID_LDR_DUSK_DAWN 43 //Usermod "usermod_LDR_Dusk_Dawn_v2.h" +#define USERMOD_ID_STAIRWAY_WIPE 44 //Usermod "stairway-wipe-usermod-v2.h" //Access point behavior #define AP_BEHAVIOR_BOOT_NO_CONN 0 //Open AP when no connection after boot diff --git a/wled00/usermods_list.cpp b/wled00/usermods_list.cpp index e5f9c28415..db016f5508 100644 --- a/wled00/usermods_list.cpp +++ b/wled00/usermods_list.cpp @@ -201,6 +201,9 @@ #include "../usermods/LDR_Dusk_Dawn_v2/usermod_LDR_Dusk_Dawn_v2.h" #endif +#ifdef USERMOD_STAIRCASE_WIPE +#include "../usermods/stairway_wipe_basic/stairway-wipe-usermod-v2.h" +#endif void registerUsermods() { /* @@ -380,4 +383,8 @@ void registerUsermods() #ifdef USERMOD_LDR_DUSK_DAWN usermods.add(new LDR_Dusk_Dawn_v2()); #endif + + #ifdef USERMOD_STAIRCASE_WIPE + usermods.add(new StairwayWipeUsermod()); + #endif } From 8422ffcd19c767a58e82bacbcf011fc5b4774c36 Mon Sep 17 00:00:00 2001 From: Frank <91616163+softhack007@users.noreply.github.com> Date: Thu, 15 Feb 2024 00:53:00 +0100 Subject: [PATCH 12/35] Fixing a potential array bounds violation in ESPDMX DMXESPSerial::write and DMXESPSerial::read could access DMXDataStore[512] - one more than the allocated number of elements (i.e. 0...511]. --- wled00/src/dependencies/dmx/ESPDMX.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/wled00/src/dependencies/dmx/ESPDMX.cpp b/wled00/src/dependencies/dmx/ESPDMX.cpp index d0d652c825..c9d1a894af 100644 --- a/wled00/src/dependencies/dmx/ESPDMX.cpp +++ b/wled00/src/dependencies/dmx/ESPDMX.cpp @@ -30,8 +30,8 @@ bool dmxStarted = false; int sendPin = 2; //default on ESP8266 -//DMX value array and size. Entry 0 will hold startbyte -uint8_t dmxDataStore[dmxMaxChannel] = {}; +//DMX value array and size. Entry 0 will hold startbyte, so we need 512+1 elements +uint8_t dmxDataStore[dmxMaxChannel+1] = {}; int channelSize; @@ -106,4 +106,4 @@ void DMXESPSerial::update() { // Function to update the DMX bus -#endif \ No newline at end of file +#endif From c932621b5d8646158d0e56078f5246155dbbb387 Mon Sep 17 00:00:00 2001 From: Blaz Kristan Date: Sat, 17 Feb 2024 15:00:47 +0100 Subject: [PATCH 13/35] string fix --- wled00/html_other.h | 74 +++++----- wled00/html_settings.h | 314 ++++++++++++++++++++--------------------- wled00/wled.h | 2 +- 3 files changed, 195 insertions(+), 195 deletions(-) diff --git a/wled00/html_other.h b/wled00/html_other.h index 6801861aed..5588cd1007 100644 --- a/wled00/html_other.h +++ b/wled00/html_other.h @@ -41,47 +41,47 @@ const char PAGE_dmxmap[] PROGMEM = R"=====()====="; #endif // Autogenerated from wled00/data/update.htm, do not edit!! -const uint16_t PAGE_update_length = 613; +const uint16_t PAGE_update_length = 616; const uint8_t PAGE_update[] PROGMEM = { 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0x75, 0x53, 0x5d, 0x6f, 0xd4, 0x30, - 0x10, 0x7c, 0xcf, 0xaf, 0x70, 0xfd, 0x74, 0x27, 0x51, 0x9b, 0x22, 0x5e, 0x28, 0x49, 0x0a, 0x47, - 0x2b, 0x54, 0x09, 0xa9, 0x95, 0xda, 0x82, 0x78, 0x42, 0x8e, 0xbd, 0xb9, 0x98, 0x73, 0xec, 0xd4, + 0x10, 0x7c, 0xcf, 0xaf, 0x70, 0xfd, 0x74, 0x27, 0x71, 0x36, 0xad, 0x78, 0xa1, 0x24, 0x29, 0x94, + 0x56, 0xa8, 0x12, 0x12, 0x95, 0xda, 0x82, 0x78, 0x42, 0x8e, 0xbd, 0xb9, 0x98, 0x73, 0xec, 0xd4, 0xde, 0xdc, 0xe9, 0x84, 0xfa, 0xdf, 0xd9, 0x38, 0x77, 0x05, 0xf1, 0xf1, 0x12, 0xc5, 0xd9, 0xd9, - 0xf1, 0xee, 0xcc, 0xa4, 0x3c, 0xb9, 0xbc, 0xf9, 0x70, 0xff, 0xf5, 0xf6, 0x8a, 0x75, 0xd8, 0xbb, - 0xba, 0x3c, 0x3c, 0x41, 0x99, 0xba, 0xec, 0x01, 0x15, 0xd3, 0xc1, 0x23, 0x78, 0xac, 0xf8, 0xce, - 0x1a, 0xec, 0x2a, 0x03, 0x5b, 0xab, 0xe1, 0x34, 0x1f, 0x38, 0xf3, 0xaa, 0x87, 0x8a, 0x6f, 0x2d, - 0xec, 0x86, 0x10, 0x91, 0xd7, 0x45, 0x89, 0x16, 0x1d, 0xd4, 0x5f, 0x3e, 0x5d, 0x5d, 0xb2, 0x87, + 0xf1, 0xee, 0xcc, 0xa4, 0x3c, 0xb9, 0xfa, 0xf4, 0xfe, 0xfe, 0xeb, 0xed, 0x35, 0xeb, 0xb0, 0x77, + 0x75, 0x79, 0x78, 0x82, 0x32, 0x75, 0xd9, 0x03, 0x2a, 0xa6, 0x83, 0x47, 0xf0, 0x58, 0xf1, 0x9d, + 0x35, 0xd8, 0x55, 0x06, 0xb6, 0x56, 0xc3, 0x2a, 0x1f, 0x38, 0xf3, 0xaa, 0x87, 0x8a, 0x6f, 0x2d, + 0xec, 0x86, 0x10, 0x91, 0xd7, 0x45, 0x89, 0x16, 0x1d, 0xd4, 0x5f, 0x3e, 0x5e, 0x5f, 0xb1, 0x87, 0xc1, 0x28, 0x84, 0x52, 0xce, 0x9f, 0xca, 0xa4, 0xa3, 0x1d, 0xb0, 0x2e, 0xda, 0xd1, 0x6b, 0xb4, - 0xc1, 0xb3, 0xd5, 0x62, 0xf9, 0x63, 0x67, 0xbd, 0x09, 0x3b, 0xd1, 0xd9, 0x84, 0x21, 0xee, 0x45, - 0xa3, 0xf4, 0x66, 0xb1, 0x7c, 0x7a, 0x86, 0x3c, 0x10, 0xc4, 0x04, 0x3d, 0xf6, 0x34, 0x81, 0x58, - 0x03, 0x5e, 0x39, 0x98, 0x5e, 0x57, 0xfb, 0x6b, 0xb3, 0xe0, 0x63, 0xcb, 0x97, 0x22, 0xe1, 0xde, - 0x81, 0x30, 0x36, 0x0d, 0x4e, 0xed, 0x2b, 0xee, 0x83, 0x07, 0xfe, 0xe2, 0xbf, 0x2d, 0x7d, 0x5a, - 0xff, 0xdd, 0xd3, 0xb8, 0xa0, 0x37, 0xfc, 0xa9, 0x28, 0xe5, 0x61, 0xc4, 0xc3, 0xa8, 0x2c, 0x45, - 0x5d, 0x71, 0x99, 0x00, 0xd1, 0xfa, 0x75, 0x92, 0x49, 0x7c, 0x4f, 0x17, 0x43, 0xf5, 0x86, 0xd7, - 0xbf, 0x21, 0x27, 0xaa, 0xba, 0x78, 0x67, 0xfb, 0x49, 0x00, 0x36, 0x46, 0xb7, 0xe0, 0x33, 0xbd, - 0x4e, 0x89, 0x2f, 0xdf, 0x12, 0x32, 0x23, 0x4a, 0x39, 0x4b, 0xda, 0x04, 0xb3, 0x67, 0xc1, 0xbb, - 0xa0, 0x4c, 0xc5, 0x3f, 0x02, 0x7e, 0x5e, 0x2c, 0x89, 0xae, 0x7b, 0x55, 0x17, 0x59, 0xb2, 0xbb, - 0xd0, 0xe2, 0x4e, 0x45, 0x78, 0xd6, 0x8e, 0x2a, 0x65, 0x1b, 0x62, 0xcf, 0xc8, 0x8b, 0x2e, 0x50, - 0xcf, 0xed, 0xcd, 0xdd, 0x3d, 0x67, 0x2a, 0xcb, 0x53, 0x71, 0x21, 0xc7, 0x0c, 0xe4, 0xcc, 0x52, - 0x8d, 0x04, 0x61, 0x05, 0x90, 0x74, 0xfb, 0x81, 0x5c, 0xe9, 0x47, 0x87, 0x76, 0x50, 0x11, 0xe5, - 0x44, 0x70, 0x4a, 0x30, 0xc5, 0xe9, 0xea, 0x34, 0x36, 0xbd, 0x25, 0x3b, 0x1f, 0xa6, 0x9b, 0xaf, - 0x7d, 0x42, 0xe5, 0x1c, 0x18, 0xb6, 0x85, 0x98, 0x88, 0xf2, 0x9c, 0x95, 0x69, 0x50, 0x9e, 0x15, - 0xda, 0xa9, 0x94, 0x2a, 0x9e, 0xec, 0xc0, 0xeb, 0x97, 0xe2, 0xec, 0xb5, 0x38, 0xa3, 0x55, 0xa8, - 0x42, 0x2b, 0xc4, 0xfa, 0x32, 0xec, 0xf2, 0x0a, 0x0c, 0x3b, 0x60, 0x8e, 0xee, 0x4f, 0xc8, 0x1a, - 0xeb, 0x55, 0xdc, 0x53, 0xbf, 0x62, 0x45, 0x17, 0xa1, 0xad, 0x78, 0x87, 0x38, 0xa4, 0x73, 0x29, - 0xd7, 0x16, 0xbb, 0xb1, 0x11, 0x3a, 0xf4, 0xf2, 0xbd, 0x8d, 0x3a, 0x84, 0xb0, 0xb1, 0x20, 0xa7, - 0x7d, 0x65, 0x04, 0x07, 0x2a, 0x41, 0xe2, 0x0c, 0x55, 0x24, 0xb3, 0x2a, 0xfe, 0xad, 0x71, 0xca, - 0x6f, 0x48, 0x13, 0xdb, 0xaf, 0x59, 0x91, 0x1d, 0x38, 0xf2, 0xd0, 0x17, 0x91, 0x3a, 0x0b, 0xce, - 0x24, 0x61, 0xc3, 0x81, 0xf6, 0x48, 0xf1, 0x27, 0xb5, 0x48, 0xdb, 0xf5, 0x45, 0xd6, 0xbe, 0x6a, - 0x69, 0xc2, 0xd3, 0xf4, 0x38, 0x92, 0xae, 0x53, 0x42, 0xa5, 0xca, 0x3b, 0x94, 0xd6, 0x0f, 0x23, - 0xb2, 0x59, 0xab, 0xd6, 0x3a, 0x38, 0xa6, 0xf9, 0xa8, 0x68, 0x84, 0xc7, 0xd1, 0x46, 0x30, 0x33, - 0xba, 0x19, 0x11, 0x29, 0x90, 0x33, 0x7c, 0xd6, 0x90, 0xc8, 0x66, 0x9b, 0x4e, 0x4a, 0x39, 0x97, - 0xff, 0x01, 0x9d, 0x0f, 0x93, 0xf0, 0xda, 0x59, 0xbd, 0xa9, 0xf8, 0x6a, 0xd2, 0x7d, 0x45, 0x39, - 0xff, 0xd5, 0x94, 0x0d, 0xaa, 0x4b, 0x63, 0xb7, 0x45, 0xf6, 0x71, 0x4a, 0x29, 0xd1, 0xd4, 0x99, - 0x9d, 0xa2, 0x27, 0x84, 0x20, 0x70, 0x26, 0xbf, 0xcd, 0xcb, 0x32, 0x13, 0x98, 0x0f, 0xc8, 0xb4, - 0x0b, 0x74, 0x08, 0x91, 0x66, 0x6d, 0x23, 0xa4, 0x2e, 0xfb, 0x31, 0xa8, 0x35, 0xb0, 0xf3, 0x65, - 0x29, 0x89, 0x6f, 0x5a, 0x77, 0x8a, 0xdc, 0x94, 0xbf, 0xe9, 0xc7, 0xfe, 0x09, 0xf9, 0xeb, 0x48, - 0xda, 0xee, 0x03, 0x00, 0x00 + 0xc1, 0xb3, 0xcb, 0xc5, 0xf2, 0xc7, 0xce, 0x7a, 0x13, 0x76, 0xa2, 0xb3, 0x09, 0x43, 0xdc, 0x8b, + 0x46, 0xe9, 0xcd, 0x62, 0xf9, 0xf4, 0x0c, 0x79, 0x20, 0x88, 0x09, 0x7a, 0xec, 0x69, 0x02, 0xb1, + 0x06, 0xbc, 0x76, 0x30, 0xbd, 0x5e, 0xee, 0x6f, 0xcc, 0x82, 0x8f, 0x2d, 0x5f, 0x8a, 0x84, 0x7b, + 0x07, 0xc2, 0xd8, 0x34, 0x38, 0xb5, 0xaf, 0xb8, 0x0f, 0x1e, 0xf8, 0x8b, 0xff, 0xb6, 0xf4, 0x69, + 0xfd, 0x77, 0x4f, 0xe3, 0x82, 0xde, 0xf0, 0xa7, 0xa2, 0x94, 0x87, 0x11, 0x0f, 0xa3, 0xb2, 0x14, + 0x75, 0xc5, 0x65, 0x02, 0x44, 0xeb, 0xd7, 0x49, 0x26, 0xf1, 0x3d, 0x5d, 0x0c, 0xd5, 0x6b, 0x5e, + 0xff, 0x86, 0x9c, 0xa8, 0xea, 0xe2, 0xad, 0xed, 0x27, 0x01, 0xd8, 0x18, 0xdd, 0x82, 0xcf, 0xf4, + 0x3a, 0x25, 0xbe, 0x7c, 0x43, 0xc8, 0x8c, 0x28, 0xe5, 0x2c, 0x69, 0x13, 0xcc, 0x9e, 0x05, 0xef, + 0x82, 0x32, 0x15, 0xff, 0x00, 0xf8, 0x79, 0xb1, 0x24, 0xba, 0xee, 0xac, 0x2e, 0xb2, 0x64, 0x77, + 0xa1, 0xc5, 0x9d, 0x8a, 0xf0, 0xac, 0x1d, 0x55, 0xca, 0x36, 0xc4, 0x9e, 0x91, 0x17, 0x5d, 0xa0, + 0x9e, 0xdb, 0x4f, 0x77, 0xf7, 0x9c, 0xa9, 0x2c, 0x4f, 0xc5, 0x85, 0x1c, 0x33, 0x90, 0x33, 0x4b, + 0x35, 0x12, 0x84, 0x15, 0x40, 0xd2, 0xed, 0x07, 0x72, 0xa5, 0x1f, 0x1d, 0xda, 0x41, 0x45, 0x94, + 0x13, 0xc1, 0x8a, 0x60, 0x8a, 0xd3, 0xd5, 0x69, 0x6c, 0x7a, 0x4b, 0x76, 0x3e, 0x4c, 0x37, 0xdf, + 0xf8, 0x84, 0xca, 0x39, 0x30, 0x6c, 0x0b, 0x31, 0x11, 0xe5, 0x39, 0x2b, 0xd3, 0xa0, 0x3c, 0x2b, + 0xb4, 0x53, 0x29, 0x55, 0x3c, 0xd9, 0x81, 0xd7, 0x2f, 0xc5, 0xe9, 0x2b, 0x71, 0xb6, 0x6a, 0x4e, + 0x69, 0x1b, 0x2a, 0xd2, 0x16, 0xb1, 0xbe, 0x0a, 0xbb, 0xbc, 0x05, 0xc3, 0x0e, 0x98, 0xa3, 0x11, + 0x12, 0xb2, 0xc6, 0x7a, 0x15, 0xf7, 0x44, 0xa1, 0x58, 0xd1, 0x45, 0x68, 0x2b, 0xde, 0x21, 0x0e, + 0xe9, 0x5c, 0xca, 0xb5, 0xc5, 0x6e, 0x6c, 0x84, 0x0e, 0xbd, 0x7c, 0x67, 0xa3, 0x0e, 0x21, 0x6c, + 0x2c, 0xc8, 0x69, 0x65, 0x19, 0xc1, 0x81, 0x4a, 0x90, 0x38, 0x43, 0x15, 0xc9, 0xaf, 0x8a, 0x7f, + 0x6b, 0x9c, 0xf2, 0x1b, 0x92, 0xc5, 0xf6, 0x6b, 0x56, 0x64, 0x13, 0x8e, 0x3c, 0xf4, 0x45, 0xa4, + 0xce, 0x82, 0x33, 0x49, 0xd8, 0x70, 0xa0, 0x3d, 0x52, 0xfc, 0x49, 0x2d, 0xd2, 0x76, 0x7d, 0x91, + 0xe5, 0xaf, 0x5a, 0x9a, 0x70, 0x95, 0x1e, 0x47, 0x92, 0x76, 0x0a, 0xa9, 0x54, 0x79, 0x87, 0xd2, + 0xfa, 0x61, 0x44, 0x36, 0xcb, 0xd5, 0x5a, 0x07, 0xc7, 0x40, 0x1f, 0x45, 0x8d, 0xf0, 0x38, 0xda, + 0x08, 0x66, 0x46, 0x37, 0x23, 0x22, 0x65, 0x72, 0x86, 0xcf, 0x32, 0x12, 0xd9, 0xec, 0xd4, 0x49, + 0x29, 0xe7, 0xf2, 0x3f, 0xa0, 0xf3, 0x61, 0xd2, 0x5e, 0x3b, 0xab, 0x37, 0x15, 0xbf, 0x9c, 0xa4, + 0xbf, 0xa4, 0xa8, 0xff, 0x6a, 0xca, 0x1e, 0xd5, 0xa5, 0xb1, 0xdb, 0x22, 0x5b, 0x39, 0x05, 0x95, + 0x68, 0xea, 0xcc, 0x4e, 0xe9, 0x13, 0x42, 0x10, 0x38, 0x93, 0xdf, 0xe6, 0x65, 0x99, 0x09, 0xcc, + 0x07, 0x64, 0xda, 0x05, 0x3a, 0x84, 0x48, 0xb3, 0xb6, 0x11, 0x52, 0x97, 0xfd, 0x18, 0xd4, 0x1a, + 0xd8, 0xf9, 0xb2, 0x94, 0xc4, 0x37, 0xad, 0x3b, 0xa5, 0x6e, 0x8a, 0xe0, 0xf4, 0x6f, 0xff, 0x04, + 0xb4, 0x8f, 0xf2, 0x27, 0xf1, 0x03, 0x00, 0x00 }; diff --git a/wled00/html_settings.h b/wled00/html_settings.h index 1b338ad54b..90f3689770 100644 --- a/wled00/html_settings.h +++ b/wled00/html_settings.h @@ -1607,168 +1607,168 @@ const uint8_t PAGE_settings_time[] PROGMEM = { // Autogenerated from wled00/data/settings_sec.htm, do not edit!! -const uint16_t PAGE_settings_sec_length = 2548; +const uint16_t PAGE_settings_sec_length = 2551; const uint8_t PAGE_settings_sec[] PROGMEM = { 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0x9d, 0x58, 0x6d, 0x53, 0xdb, 0x48, 0x12, 0xfe, 0xee, 0x5f, 0x31, 0x9e, 0xad, 0xca, 0x4a, 0x17, 0x21, 0x03, 0x49, 0x6d, 0x25, 0x60, 0x99, 0x83, 0x40, 0x36, 0x5c, 0x41, 0xa0, 0xb0, 0xd9, 0xdc, 0x55, 0x2e, 0x95, 0x92, 0xa5, 0xb1, 0x35, 0xb1, 0xac, 0xd1, 0xce, 0x8c, 0x70, 0x7c, 0xd9, 0xfc, 0xf7, 0x7b, 0x7a, 0x24, 0xf9, 0x85, - 0x40, 0x72, 0xb9, 0x0f, 0x60, 0x69, 0x5e, 0x7a, 0xba, 0x9f, 0xee, 0x7e, 0xba, 0x47, 0xfd, 0xee, - 0xe9, 0xd5, 0xab, 0xd1, 0xbf, 0xae, 0xcf, 0x58, 0x66, 0xe7, 0xf9, 0xa0, 0x4f, 0xff, 0x59, 0x1e, - 0x17, 0xd3, 0x88, 0x8b, 0x82, 0xe3, 0x5d, 0xc4, 0xe9, 0xa0, 0x3f, 0x17, 0x36, 0x66, 0x9d, 0x44, - 0x15, 0x56, 0x14, 0x36, 0xe2, 0x0b, 0x99, 0xda, 0x2c, 0x4a, 0xc5, 0x9d, 0x4c, 0xc4, 0x8e, 0x7b, - 0x09, 0x64, 0x21, 0xad, 0x8c, 0xf3, 0x1d, 0x93, 0xc4, 0xb9, 0x88, 0xf6, 0x82, 0x79, 0xfc, 0x59, - 0xce, 0xab, 0xf9, 0xea, 0xbd, 0x32, 0x42, 0xbb, 0x97, 0x78, 0x8c, 0xf7, 0x42, 0x71, 0xd6, 0x29, - 0xe2, 0xb9, 0x88, 0xf8, 0x9d, 0x14, 0x8b, 0x52, 0x69, 0xcb, 0x9b, 0x53, 0x92, 0x2c, 0xd6, 0x46, - 0xe0, 0x90, 0xca, 0x4e, 0x76, 0x5e, 0x60, 0xd4, 0x4a, 0x9b, 0x8b, 0xc1, 0xa5, 0x34, 0x09, 0x1b, - 0x0a, 0x6b, 0x65, 0x31, 0x35, 0xfd, 0x5e, 0x3d, 0xd8, 0x37, 0x89, 0x96, 0xa5, 0x1d, 0x74, 0xee, - 0x62, 0xcd, 0x72, 0x95, 0xc8, 0x32, 0xb0, 0x72, 0x2e, 0x54, 0x65, 0x83, 0x34, 0x4a, 0x55, 0x52, - 0xcd, 0xa1, 0x6e, 0x80, 0x89, 0xa8, 0xbb, 0x47, 0x3f, 0xa5, 0x56, 0x56, 0x45, 0x3c, 0xb3, 0xb6, - 0x3c, 0xe0, 0x87, 0x93, 0xaa, 0x48, 0xac, 0x54, 0x05, 0x7b, 0xe3, 0xf9, 0x5f, 0x16, 0xb2, 0x48, - 0xd5, 0x22, 0x54, 0xa5, 0x28, 0x3c, 0xb7, 0xc0, 0x1c, 0xf4, 0x7a, 0xb3, 0x42, 0x85, 0x8b, 0x5c, - 0xa4, 0xe1, 0x54, 0xf4, 0x26, 0x22, 0xb6, 0x95, 0x16, 0xa6, 0x67, 0x1a, 0x25, 0x7a, 0xbf, 0x18, - 0x91, 0x54, 0x5a, 0xda, 0xe5, 0x4e, 0x3b, 0xc4, 0xfd, 0xaf, 0x2b, 0xa1, 0x27, 0xf7, 0x84, 0x4e, - 0x85, 0xbd, 0xbd, 0xb9, 0xf0, 0x78, 0x6f, 0xbd, 0x38, 0xe0, 0x1f, 0x8d, 0xc8, 0x27, 0x9b, 0xbb, - 0x6e, 0x1f, 0xdb, 0x55, 0x95, 0x69, 0x6c, 0xc5, 0x83, 0x7b, 0xa6, 0xe7, 0xa9, 0x67, 0xfd, 0x2f, - 0x5a, 0x40, 0xbf, 0x82, 0x91, 0xb2, 0xf6, 0x2c, 0x17, 0x64, 0xfa, 0xc9, 0xd2, 0x4d, 0xad, 0x97, - 0x4a, 0x73, 0x35, 0xfe, 0xb4, 0xb1, 0xd8, 0x3e, 0x79, 0xc2, 0xd5, 0xf8, 0x93, 0x48, 0x2c, 0x8f, - 0x22, 0xbb, 0x2c, 0x85, 0x9a, 0xd0, 0x58, 0xf7, 0x58, 0xeb, 0x78, 0x19, 0x4a, 0xe3, 0x7e, 0xb7, - 0x24, 0xe4, 0x2a, 0x4e, 0xff, 0x31, 0xf4, 0x6c, 0x20, 0xa2, 0xee, 0xae, 0xff, 0x25, 0x17, 0x96, - 0xa9, 0x28, 0x0d, 0x13, 0x0d, 0x78, 0x44, 0x73, 0xac, 0xc7, 0x6b, 0xbf, 0x70, 0xff, 0x50, 0x85, - 0x30, 0xf7, 0xd8, 0x5a, 0x2d, 0xc7, 0x95, 0x15, 0x98, 0xd0, 0x09, 0x0f, 0xac, 0x1f, 0xdc, 0x1f, - 0xa7, 0xb3, 0x79, 0xc0, 0xad, 0xf8, 0x6c, 0x7b, 0x9f, 0xe2, 0xbb, 0xb8, 0x15, 0xf0, 0xcd, 0xc2, - 0xd8, 0x2c, 0x0b, 0x88, 0x10, 0x7e, 0x90, 0x86, 0x63, 0x95, 0x2e, 0xc3, 0xb8, 0x04, 0x4e, 0xe9, - 0xab, 0x4c, 0xe6, 0xa9, 0xa7, 0x68, 0x7d, 0x9c, 0xa6, 0x67, 0x77, 0xd0, 0xe2, 0x42, 0x1a, 0x44, - 0xab, 0xd0, 0x1e, 0x27, 0x9d, 0x79, 0xe0, 0xf9, 0xd1, 0xe0, 0xcb, 0xef, 0xc2, 0xfe, 0xe1, 0xf9, - 0x01, 0x64, 0x9e, 0x24, 0xb3, 0xd7, 0x32, 0x17, 0x14, 0x84, 0x1e, 0x21, 0xc8, 0xc7, 0xc9, 0x2c, - 0x99, 0x4c, 0xb9, 0xff, 0xe8, 0x6c, 0x09, 0xef, 0x0b, 0x0b, 0xbf, 0xf9, 0x5f, 0x1f, 0x3e, 0x47, - 0x68, 0xad, 0x34, 0xcc, 0xc3, 0x39, 0x48, 0x15, 0xa3, 0x72, 0x11, 0xe6, 0x6a, 0xea, 0xf1, 0x33, - 0x1a, 0x67, 0x0d, 0x78, 0x70, 0x3d, 0x9b, 0x40, 0xb4, 0x83, 0x01, 0xb9, 0xa1, 0x01, 0xd7, 0x45, - 0x33, 0x0e, 0xf4, 0xb1, 0x71, 0x22, 0xa7, 0x95, 0x8e, 0x1d, 0xda, 0x35, 0x0c, 0x6c, 0x12, 0x4b, - 0x8a, 0xc2, 0x7f, 0x17, 0xe7, 0x45, 0xa2, 0xe6, 0x25, 0x40, 0x17, 0xac, 0x8c, 0xa7, 0x82, 0x21, - 0x26, 0xe2, 0x2e, 0x62, 0x61, 0xc3, 0x41, 0x26, 0x53, 0x8b, 0x91, 0x8a, 0x8d, 0xad, 0x7d, 0xb4, - 0xe7, 0x7f, 0xa1, 0xe4, 0x50, 0x91, 0xb3, 0xc2, 0xd2, 0x84, 0x73, 0x8b, 0x2c, 0xa0, 0xf2, 0x9b, - 0xd1, 0xe5, 0x45, 0x64, 0x61, 0x4b, 0x92, 0xc7, 0xc6, 0x90, 0x21, 0x64, 0x95, 0x27, 0x8e, 0x1a, - 0x53, 0x0e, 0x38, 0x49, 0x83, 0x17, 0x92, 0x5c, 0xc4, 0x7a, 0x54, 0xa7, 0x96, 0xd7, 0xa4, 0x98, - 0xf3, 0x8d, 0x5d, 0xc2, 0xc8, 0xb8, 0x90, 0x73, 0xa7, 0x6f, 0xc4, 0x0b, 0x55, 0x90, 0x65, 0xf5, - 0x8a, 0x08, 0x70, 0xb5, 0x9b, 0xbc, 0x56, 0x41, 0x04, 0xf8, 0xe6, 0x79, 0x5a, 0xcc, 0xd5, 0x1d, - 0x05, 0x86, 0x3b, 0x08, 0xc0, 0xee, 0xbf, 0xdc, 0xdd, 0xdd, 0x30, 0xa7, 0x2a, 0x09, 0x34, 0xf2, - 0x05, 0xd9, 0xd3, 0x1a, 0x53, 0x88, 0x05, 0xfb, 0xe7, 0xe5, 0xc5, 0x1b, 0xe4, 0xe9, 0x8d, 0xf8, - 0xb3, 0x12, 0xc6, 0x1e, 0x7e, 0xc7, 0xf1, 0x1b, 0x47, 0x6f, 0xa0, 0x93, 0x49, 0x83, 0xd3, 0x4d, - 0x09, 0x4f, 0x89, 0x11, 0xe2, 0x2e, 0x70, 0x23, 0xc6, 0x22, 0xcd, 0xcd, 0x20, 0x7a, 0x4e, 0x5a, - 0xf8, 0xdf, 0xf5, 0xf3, 0x5a, 0xae, 0xdd, 0x12, 0x4c, 0x32, 0x92, 0x59, 0xd0, 0x6d, 0x05, 0xd4, - 0x9c, 0x72, 0x7d, 0x35, 0x1c, 0xf1, 0x60, 0x23, 0x9f, 0x9d, 0x72, 0xbe, 0x7f, 0x48, 0x16, 0x15, - 0xce, 0xa2, 0xd7, 0x4a, 0xcf, 0x4f, 0xe1, 0xd1, 0xc3, 0x26, 0x3b, 0x8b, 0x26, 0xb8, 0x3d, 0x4e, - 0x7e, 0x06, 0xac, 0x21, 0x05, 0x8e, 0x79, 0xbf, 0xfb, 0x81, 0xe2, 0x9f, 0x32, 0x03, 0x73, 0x85, - 0x8f, 0xf1, 0xbb, 0x38, 0xaf, 0xc0, 0xa5, 0x3c, 0xe8, 0xee, 0xad, 0xa1, 0x4b, 0x32, 0x91, 0xcc, - 0xde, 0x56, 0xf3, 0x75, 0xbe, 0x77, 0xbd, 0xae, 0x20, 0x53, 0xc2, 0x99, 0x58, 0x86, 0x70, 0x59, - 0x92, 0x79, 0xbd, 0xf7, 0xbb, 0x3b, 0x2f, 0x3f, 0xf4, 0x7c, 0x24, 0xfd, 0x7b, 0x7e, 0x02, 0xbd, - 0x4d, 0x19, 0x27, 0x94, 0x8a, 0xa3, 0x78, 0x8c, 0xff, 0x67, 0x60, 0x7c, 0x98, 0xca, 0x87, 0x99, - 0x9c, 0x58, 0xfc, 0xbe, 0x42, 0x09, 0xd0, 0x2a, 0xc7, 0xd3, 0x71, 0x4e, 0xef, 0xd7, 0x31, 0x88, - 0x9d, 0xc6, 0xe3, 0xd2, 0x5c, 0xa8, 0x64, 0x46, 0x5b, 0xc0, 0xf2, 0x2e, 0x99, 0x87, 0x8d, 0xa4, - 0x6b, 0x44, 0xea, 0x6d, 0xd9, 0x3c, 0x9c, 0xaa, 0x45, 0xe1, 0xe4, 0xc2, 0x31, 0xfc, 0x8d, 0x9a, - 0xd3, 0x02, 0xb0, 0x8c, 0x5a, 0x5c, 0x08, 0x77, 0x80, 0x7b, 0x76, 0xab, 0xdd, 0xd3, 0x8d, 0x9c, - 0x66, 0xab, 0xe1, 0x66, 0xef, 0x39, 0x1c, 0xa6, 0x69, 0xf0, 0x54, 0x50, 0x26, 0xf0, 0x0f, 0x08, - 0xe6, 0x24, 0xaf, 0x52, 0x61, 0xbc, 0x95, 0x75, 0xbe, 0xff, 0xd7, 0x5f, 0xcd, 0x1b, 0xd2, 0x96, - 0x7e, 0x4f, 0xc5, 0x24, 0xae, 0x72, 0x8b, 0xe4, 0x47, 0x4e, 0x6c, 0xa4, 0xcb, 0x76, 0xae, 0x03, - 0x2a, 0x7b, 0x8f, 0x71, 0xc0, 0xc5, 0x45, 0x1d, 0x48, 0x9c, 0x6a, 0xc1, 0x47, 0xfe, 0xd4, 0x12, - 0xc5, 0x3e, 0xb4, 0xc2, 0x7f, 0xea, 0xf1, 0x77, 0x17, 0x67, 0xa7, 0x20, 0x53, 0x93, 0x1e, 0x71, - 0xe4, 0x0f, 0x56, 0x9b, 0xd4, 0xdf, 0x38, 0x6f, 0xe8, 0xd5, 0xa4, 0x69, 0xa3, 0x86, 0xe6, 0x51, - 0x96, 0x5c, 0xee, 0x1c, 0xca, 0x89, 0xc7, 0xc9, 0xbf, 0x07, 0x44, 0xc5, 0xa1, 0x2b, 0x55, 0x89, - 0xca, 0x7d, 0x57, 0xbd, 0x76, 0x03, 0xcf, 0x95, 0xb7, 0x88, 0x56, 0xe7, 0x43, 0xab, 0x34, 0xa0, - 0x24, 0x2d, 0xce, 0xad, 0x98, 0x53, 0x9c, 0x27, 0xe7, 0x25, 0x77, 0x36, 0xd7, 0xcb, 0xb0, 0x7b, - 0x5e, 0x82, 0x58, 0xc8, 0x2e, 0x76, 0xa9, 0x52, 0x11, 0xb2, 0x6b, 0xa4, 0xb0, 0x11, 0x4c, 0x90, - 0x43, 0x19, 0x29, 0xc9, 0xce, 0xaf, 0x41, 0x1d, 0xc1, 0x96, 0x44, 0xb3, 0x2d, 0x31, 0x70, 0xd2, - 0x10, 0xa3, 0x22, 0x37, 0xc2, 0xa9, 0x2d, 0x48, 0xb5, 0xd8, 0x66, 0x04, 0x56, 0xa0, 0x22, 0xec, - 0xc8, 0xd1, 0x03, 0x78, 0x7b, 0x81, 0x08, 0x11, 0x8c, 0xe6, 0x9d, 0xb4, 0x19, 0x82, 0x9b, 0xfb, - 0x47, 0x3b, 0x7b, 0x07, 0x77, 0x4a, 0xa6, 0x6c, 0xd7, 0x0f, 0x4d, 0x99, 0x4b, 0xeb, 0x46, 0x91, - 0xa4, 0xc0, 0x79, 0x6a, 0xb3, 0xc1, 0xfe, 0x93, 0x27, 0xde, 0xaa, 0x20, 0xaf, 0xad, 0x0d, 0x1a, - 0x6b, 0x6b, 0x2b, 0x6c, 0x98, 0x29, 0x63, 0xe9, 0xa8, 0xa7, 0xc8, 0x2a, 0x6a, 0x12, 0x8e, 0x00, - 0xe9, 0xd3, 0xfa, 0xf1, 0x80, 0x03, 0x6e, 0x08, 0x7d, 0xaa, 0x90, 0x0f, 0xfe, 0x57, 0xec, 0x80, - 0xc8, 0x2d, 0x22, 0xbf, 0xe7, 0xc7, 0x4c, 0x8b, 0xc9, 0x2a, 0x01, 0xb7, 0x17, 0xb6, 0x16, 0x21, - 0x5d, 0xbf, 0x21, 0xfb, 0xff, 0x45, 0xca, 0x7a, 0xf1, 0x5a, 0x12, 0x21, 0xeb, 0x4a, 0xe5, 0x37, - 0x85, 0xbf, 0x67, 0xc2, 0x4f, 0xe6, 0xa8, 0x8c, 0x7e, 0xe3, 0x2e, 0x16, 0x83, 0x5a, 0xf5, 0x34, - 0x1c, 0x4e, 0xc2, 0xd8, 0x05, 0x49, 0xf4, 0xc0, 0x16, 0x91, 0xf0, 0xcd, 0x30, 0x6a, 0x56, 0xac, - 0x32, 0x9b, 0xc0, 0x3c, 0x6a, 0x01, 0x05, 0x2c, 0xc0, 0xc5, 0x61, 0xe8, 0x50, 0xb2, 0x5f, 0x3b, - 0xfd, 0x5e, 0xd3, 0x2a, 0xf5, 0x1d, 0x65, 0x0f, 0xfe, 0x2e, 0xe7, 0x04, 0x22, 0xab, 0x74, 0x0e, - 0xee, 0x75, 0x2c, 0x9e, 0x18, 0x18, 0x70, 0x88, 0x85, 0x6e, 0x41, 0xbf, 0x57, 0x77, 0x7e, 0x54, - 0x63, 0x51, 0xba, 0xc8, 0x96, 0x88, 0x23, 0x78, 0xd1, 0x90, 0x4d, 0x40, 0x53, 0x1d, 0x26, 0xf1, - 0x4e, 0x4f, 0x1f, 0x0d, 0x67, 0x75, 0x27, 0x37, 0x9c, 0x70, 0x86, 0x16, 0x2e, 0x53, 0x98, 0x29, - 0xe1, 0x38, 0x2c, 0x4d, 0xe5, 0x1d, 0x73, 0x5c, 0x1f, 0xa1, 0xf4, 0x40, 0xb7, 0xc5, 0xf6, 0x58, - 0x26, 0xf2, 0xf2, 0x84, 0x0f, 0x3a, 0x7d, 0x60, 0x6b, 0x61, 0x15, 0x75, 0x01, 0x11, 0xaf, 0x5f, - 0x38, 0x4e, 0x4d, 0x10, 0x5c, 0xb3, 0x88, 0xbf, 0xa1, 0x63, 0x8f, 0xfa, 0xbd, 0x7a, 0x02, 0xaa, - 0x41, 0xc4, 0xe0, 0xe1, 0x3d, 0x9d, 0xd5, 0xa6, 0x13, 0xda, 0x44, 0x84, 0xb6, 0xde, 0xb7, 0xb5, - 0xc3, 0x54, 0xe3, 0xb9, 0x84, 0x8e, 0xc3, 0xf8, 0x4e, 0xac, 0x97, 0x64, 0xba, 0x15, 0x9f, 0xed, - 0x0f, 0x3a, 0xc3, 0xa6, 0xc1, 0x63, 0x4f, 0xd8, 0xad, 0xeb, 0xbf, 0x88, 0x2e, 0xaa, 0x12, 0xd8, - 0xec, 0x0f, 0xda, 0x5e, 0x94, 0x5d, 0x9f, 0xbf, 0x3d, 0x60, 0x7d, 0x59, 0x94, 0x95, 0x6d, 0x44, - 0x97, 0x30, 0x6e, 0xa1, 0x74, 0xca, 0x1d, 0x48, 0x98, 0x5f, 0x35, 0xbb, 0xee, 0xd9, 0xc8, 0xff, - 0xe0, 0xf1, 0x39, 0xc0, 0x8a, 0x3f, 0xd7, 0xe9, 0x50, 0xbf, 0xc9, 0x62, 0xe3, 0x4d, 0x15, 0x60, - 0x31, 0x22, 0x96, 0x88, 0xaf, 0x79, 0x1c, 0x05, 0xca, 0x87, 0x2c, 0x04, 0x19, 0x92, 0x18, 0x33, - 0x8e, 0xbb, 0xff, 0x86, 0x63, 0xe8, 0xf0, 0x39, 0xd2, 0x1c, 0x05, 0x18, 0x3d, 0xaf, 0x96, 0x09, - 0x67, 0xae, 0x43, 0xc6, 0x89, 0x9b, 0x69, 0x1f, 0xb3, 0xe7, 0x2c, 0x95, 0x53, 0x69, 0x19, 0x96, - 0x8d, 0x41, 0xec, 0xc0, 0x44, 0x03, 0xfe, 0x0d, 0x97, 0x2c, 0x62, 0x8d, 0xb6, 0xbf, 0xf3, 0xe4, - 0x97, 0x97, 0x2f, 0x5e, 0xbc, 0x38, 0x64, 0xb7, 0x85, 0x28, 0x12, 0xbd, 0x2c, 0xad, 0x48, 0x99, - 0xd5, 0x71, 0x61, 0xe6, 0xd2, 0x18, 0x04, 0x60, 0xc8, 0x4e, 0xd0, 0x82, 0x68, 0x90, 0x6e, 0x61, - 0xd9, 0x22, 0x13, 0x44, 0xa4, 0x39, 0xda, 0x48, 0xea, 0x62, 0x60, 0x64, 0xc0, 0x52, 0xc5, 0xde, - 0x5e, 0x8d, 0x18, 0xaa, 0x03, 0x5b, 0xaa, 0x4a, 0xb3, 0x71, 0x5c, 0xcc, 0x30, 0x49, 0x13, 0x4a, - 0x07, 0x6c, 0x78, 0x7e, 0x19, 0x30, 0x61, 0x93, 0x90, 0x95, 0xb2, 0xe8, 0x76, 0x5a, 0x97, 0xea, - 0x01, 0x15, 0x11, 0xb6, 0x90, 0x1a, 0xd2, 0x8c, 0x61, 0xde, 0xd5, 0xe8, 0xd8, 0x67, 0x46, 0x4d, - 0x2c, 0xf4, 0x12, 0xac, 0x6e, 0x82, 0xef, 0xa1, 0xed, 0xe0, 0x19, 0xab, 0xcf, 0x6d, 0x18, 0xbe, - 0xbd, 0x72, 0x11, 0xa5, 0x07, 0xd7, 0x30, 0xa8, 0xcc, 0x34, 0xcc, 0x7f, 0xd4, 0x3f, 0xf5, 0x8e, - 0xab, 0xeb, 0x2d, 0x5f, 0x3c, 0xdb, 0x6f, 0x70, 0x19, 0x29, 0xe0, 0x46, 0xf7, 0x15, 0x06, 0x35, - 0x02, 0x86, 0x68, 0x67, 0x6d, 0xcb, 0xcf, 0xd0, 0xef, 0x1a, 0x74, 0x0e, 0x64, 0x1c, 0x2b, 0x04, - 0xa1, 0xa3, 0x58, 0x9c, 0x1b, 0xd5, 0x20, 0x6d, 0x33, 0x81, 0x56, 0x4e, 0x6b, 0x40, 0xc2, 0xda, - 0xe3, 0xba, 0x4e, 0xab, 0x51, 0x26, 0x56, 0x23, 0xd4, 0xac, 0x55, 0x79, 0xca, 0xc6, 0x82, 0xae, - 0x3d, 0xc5, 0x14, 0x62, 0x1c, 0x96, 0x38, 0x0e, 0xad, 0x7a, 0x73, 0x78, 0x1a, 0xd2, 0xb6, 0xfe, - 0x78, 0xd0, 0x39, 0x95, 0xa6, 0xd5, 0xa6, 0x5e, 0x57, 0x28, 0x0b, 0xdf, 0x13, 0xc8, 0x01, 0x53, - 0x38, 0x52, 0x2f, 0x24, 0xf0, 0x8e, 0x0b, 0x86, 0x00, 0x41, 0xe4, 0x43, 0x8f, 0x04, 0x2f, 0x60, - 0x2c, 0xf8, 0x36, 0x63, 0xf5, 0x7d, 0x6d, 0x85, 0x26, 0xa1, 0x3e, 0x76, 0x86, 0xf6, 0xe5, 0x3a, - 0x9a, 0x29, 0x3f, 0x10, 0x66, 0x75, 0x7b, 0x49, 0x98, 0x23, 0xf7, 0x97, 0xb5, 0x76, 0xee, 0x6c, - 0x39, 0x71, 0xc7, 0xe7, 0xe4, 0x26, 0x2c, 0x4b, 0x6b, 0x95, 0xd2, 0x6e, 0xbf, 0x27, 0x6b, 0xd4, - 0x4f, 0x45, 0xb1, 0x64, 0x71, 0x92, 0x90, 0xfb, 0x80, 0xc9, 0x3b, 0xf9, 0x5a, 0xb2, 0x96, 0xc6, - 0x68, 0x37, 0xed, 0x14, 0xe9, 0x0f, 0x7c, 0x78, 0xf5, 0xae, 0xf1, 0x21, 0xfd, 0xbd, 0x06, 0x2b, - 0x2a, 0x4d, 0x90, 0x43, 0xce, 0x0f, 0x36, 0xde, 0x0c, 0x1b, 0xdf, 0x1d, 0xe7, 0xf9, 0xfa, 0xd8, - 0xb8, 0x48, 0x59, 0xc3, 0xd1, 0x88, 0x2d, 0xcc, 0x00, 0x70, 0x41, 0x81, 0xd1, 0x62, 0xab, 0x07, - 0xff, 0x57, 0x0e, 0x1c, 0x6f, 0x20, 0xed, 0x80, 0x03, 0xba, 0x50, 0x03, 0x01, 0x61, 0xe1, 0xde, - 0x99, 0x43, 0x5f, 0x52, 0x3c, 0x24, 0x82, 0xba, 0x78, 0xb0, 0x65, 0xdd, 0xb1, 0xb7, 0xf1, 0x4e, - 0x6c, 0x93, 0x3d, 0x1b, 0x0c, 0xdb, 0xf8, 0xae, 0x49, 0x06, 0xf4, 0xf2, 0x6c, 0xf0, 0x03, 0x4a, - 0xbc, 0x25, 0x76, 0xeb, 0x5c, 0xc6, 0x45, 0x15, 0xe7, 0xce, 0x21, 0xed, 0xd6, 0x15, 0xd7, 0xe9, - 0xc1, 0x59, 0x1d, 0xbb, 0xc7, 0x3a, 0xad, 0x64, 0xa1, 0xb0, 0xe8, 0x51, 0xec, 0x1a, 0x76, 0x3a, - 0xbe, 0xe2, 0x2b, 0x9d, 0x88, 0x39, 0xab, 0x12, 0xc4, 0x77, 0x83, 0xe6, 0x5a, 0xe9, 0x46, 0xa9, - 0xb8, 0x85, 0x68, 0x6c, 0x71, 0x9b, 0x29, 0x66, 0x35, 0xc3, 0x35, 0x75, 0x94, 0x75, 0xa8, 0x38, - 0x46, 0xbc, 0xd7, 0x40, 0x8d, 0x2a, 0x47, 0x3a, 0xb7, 0xdd, 0x11, 0xf2, 0xae, 0x29, 0x93, 0xad, - 0xf0, 0xe6, 0xbd, 0xdf, 0x8b, 0x57, 0x2e, 0x18, 0x74, 0x9a, 0xf3, 0x56, 0x93, 0x2e, 0x3e, 0x37, - 0xb4, 0x76, 0x77, 0xa7, 0xc6, 0xdb, 0xae, 0x2d, 0x76, 0xc1, 0x56, 0xda, 0x88, 0xd7, 0xe7, 0x0d, - 0x58, 0x0b, 0x5d, 0xe7, 0x61, 0xec, 0x7e, 0xdd, 0xb8, 0x52, 0xb8, 0xa2, 0x4b, 0x52, 0x82, 0x7b, - 0x5a, 0xfb, 0xbf, 0x0e, 0x6e, 0xdd, 0xb2, 0x15, 0xa2, 0x75, 0x38, 0xae, 0x78, 0xea, 0x71, 0x28, - 0x5a, 0x2b, 0x59, 0x83, 0x06, 0xa0, 0x69, 0x90, 0xe8, 0xac, 0xa1, 0x20, 0xbc, 0x5a, 0x18, 0xb6, - 0xae, 0x7c, 0x5b, 0x60, 0xb4, 0x58, 0x6c, 0xaf, 0x58, 0x23, 0xd2, 0x79, 0x18, 0x92, 0xfd, 0xc7, - 0x31, 0x79, 0xa4, 0x5a, 0x3e, 0x88, 0xc9, 0x7e, 0xb0, 0xa1, 0xfc, 0xb7, 0x80, 0x6c, 0xe0, 0x41, - 0xb9, 0xd3, 0x79, 0x38, 0x79, 0x6a, 0x13, 0xa8, 0x2c, 0x34, 0xb8, 0xf4, 0xb6, 0x6f, 0xb8, 0x2e, - 0x1d, 0xaf, 0xfe, 0x38, 0xbb, 0x79, 0x77, 0x73, 0x3e, 0x3a, 0xab, 0x6b, 0x05, 0x28, 0x56, 0x53, - 0x5d, 0x79, 0x70, 0x47, 0xe8, 0x1c, 0xd1, 0xa1, 0x9b, 0x70, 0x4d, 0xaf, 0xdb, 0xf2, 0xe6, 0x31, - 0x11, 0xc5, 0x9f, 0x15, 0x2a, 0x08, 0xca, 0xdd, 0x64, 0x93, 0x3a, 0x18, 0xf8, 0x5b, 0x8b, 0x1d, - 0x47, 0x86, 0xcd, 0x6d, 0xdb, 0x1d, 0x77, 0x36, 0xbc, 0x0e, 0x9b, 0x8c, 0x7c, 0xfd, 0x00, 0xc5, - 0x07, 0x2b, 0xba, 0x36, 0x8e, 0x10, 0x89, 0x74, 0xc7, 0x94, 0xf3, 0x29, 0xea, 0x51, 0xd8, 0xe6, - 0xcb, 0xf1, 0x18, 0xb7, 0xdc, 0x36, 0x49, 0x9a, 0x44, 0x68, 0x3f, 0x23, 0xa1, 0xe0, 0x66, 0xd5, - 0x38, 0xc4, 0xd5, 0xbd, 0x77, 0x2c, 0x75, 0xa2, 0x94, 0x9a, 0x49, 0xd1, 0xa3, 0x1e, 0xbc, 0x87, - 0x3a, 0x1d, 0xeb, 0x29, 0x7d, 0xee, 0xfa, 0x38, 0xce, 0x51, 0x22, 0xf9, 0x80, 0x86, 0x29, 0x08, - 0x3a, 0xec, 0x4e, 0x68, 0xa2, 0x19, 0xb6, 0x1b, 0xee, 0x3d, 0x0f, 0xf7, 0x56, 0x44, 0xf5, 0x33, - 0xe2, 0x17, 0x72, 0x26, 0x7b, 0xee, 0xce, 0x46, 0xed, 0xab, 0xd2, 0x66, 0x07, 0x54, 0xb8, 0x93, - 0x68, 0x91, 0x4a, 0x8a, 0xd0, 0xce, 0xfd, 0xc3, 0x37, 0x97, 0xa2, 0x54, 0x0b, 0xba, 0x7d, 0x82, - 0xfc, 0xa4, 0xa8, 0x39, 0xd4, 0x94, 0x22, 0x91, 0x20, 0x1c, 0x8b, 0x72, 0x30, 0x5b, 0xe5, 0x6d, - 0xe7, 0x98, 0x65, 0x15, 0xaa, 0x85, 0x1b, 0x75, 0x05, 0x11, 0xbc, 0x8f, 0x3b, 0x97, 0x5e, 0xaa, - 0x42, 0xa0, 0x50, 0x29, 0x46, 0x7d, 0x1e, 0xe0, 0x02, 0x33, 0xd6, 0xdf, 0x89, 0xdc, 0xfd, 0xa3, - 0xdb, 0x5a, 0xd4, 0xf1, 0x12, 0x9f, 0xed, 0xef, 0xee, 0xfd, 0xb6, 0xb3, 0xbf, 0xbb, 0xff, 0x8c, - 0xbd, 0xca, 0x34, 0x6e, 0xda, 0x12, 0xd4, 0x39, 0x4c, 0xb2, 0x05, 0x7d, 0xa7, 0x68, 0x6a, 0xd4, - 0x05, 0xaa, 0x17, 0xae, 0x7e, 0x80, 0x1d, 0x4a, 0xd5, 0x25, 0xf6, 0xa7, 0xc0, 0x18, 0xe7, 0x6a, - 0xdc, 0x9b, 0xe3, 0x8a, 0x2e, 0x74, 0xef, 0xe2, 0xfc, 0xd5, 0xd9, 0xdb, 0xe1, 0xd9, 0xb7, 0xf0, - 0x77, 0x2e, 0xcf, 0x47, 0x2c, 0xaf, 0x4f, 0x72, 0x06, 0xa2, 0xae, 0xb5, 0x8a, 0x0e, 0x85, 0x86, - 0x55, 0x30, 0xc3, 0x18, 0x54, 0x47, 0xb0, 0x29, 0xee, 0xca, 0x45, 0x4b, 0x03, 0x46, 0x96, 0x9c, - 0x12, 0xd6, 0x7d, 0x4f, 0x60, 0xee, 0x13, 0x01, 0xf1, 0x3c, 0x2d, 0xa9, 0x49, 0x95, 0x92, 0x84, - 0x28, 0xa2, 0xfe, 0x06, 0xf3, 0xdd, 0x2e, 0xf6, 0xdb, 0x26, 0xb6, 0xf3, 0x53, 0x5d, 0x6c, 0x8f, - 0x4a, 0x0d, 0x7e, 0xa8, 0x79, 0xa7, 0x4e, 0x9e, 0xbe, 0xec, 0xfe, 0x17, 0xfc, 0x07, 0x8d, 0xa9, - 0xe9, 0x15, 0x00, 0x00 + 0x40, 0x72, 0xb9, 0x0f, 0x60, 0x6b, 0x34, 0xd3, 0x2f, 0x4f, 0x77, 0x3f, 0xdd, 0xe3, 0x7e, 0xf7, + 0xf4, 0xea, 0xd5, 0xe8, 0x5f, 0xd7, 0x67, 0x2c, 0xb3, 0xf3, 0x7c, 0xd0, 0xa7, 0xff, 0x2c, 0x8f, + 0x8b, 0x69, 0xc4, 0x45, 0xc1, 0xf1, 0x2c, 0xe2, 0x74, 0xd0, 0x9f, 0x0b, 0x1b, 0xb3, 0x4e, 0xa2, + 0x0a, 0x2b, 0x0a, 0x1b, 0xf1, 0x85, 0x4c, 0x6d, 0x16, 0xa5, 0xe2, 0x4e, 0x26, 0x62, 0xc7, 0x3d, + 0x04, 0xb2, 0x90, 0x56, 0xc6, 0xf9, 0x8e, 0x49, 0xe2, 0x5c, 0x44, 0x7b, 0xc1, 0x3c, 0xfe, 0x2c, + 0xe7, 0xd5, 0x7c, 0xf5, 0x5c, 0x19, 0xa1, 0xdd, 0x43, 0x3c, 0xc6, 0x73, 0xa1, 0x38, 0xeb, 0x14, + 0xf1, 0x5c, 0x44, 0xfc, 0x4e, 0x8a, 0x45, 0xa9, 0xb4, 0xe5, 0x8d, 0x96, 0x24, 0x8b, 0xb5, 0x11, + 0x50, 0x52, 0xd9, 0xc9, 0xce, 0x0b, 0xac, 0x5a, 0x69, 0x73, 0x31, 0xb8, 0x94, 0x26, 0x61, 0x43, + 0x61, 0xad, 0x2c, 0xa6, 0xa6, 0xdf, 0xab, 0x17, 0xfb, 0x26, 0xd1, 0xb2, 0xb4, 0x83, 0xce, 0x5d, + 0xac, 0x59, 0xae, 0x12, 0x59, 0x06, 0x56, 0xce, 0x85, 0xaa, 0x6c, 0x90, 0x46, 0xa9, 0x4a, 0xaa, + 0x39, 0xcc, 0x0d, 0xf0, 0x22, 0xea, 0xee, 0xd1, 0x47, 0xa9, 0x95, 0x55, 0x11, 0xcf, 0xac, 0x2d, + 0x0f, 0xf8, 0xe1, 0xa4, 0x2a, 0x12, 0x2b, 0x55, 0xc1, 0xde, 0x78, 0xfe, 0x97, 0x85, 0x2c, 0x52, + 0xb5, 0x08, 0x55, 0x29, 0x0a, 0xcf, 0x6d, 0x30, 0x07, 0xbd, 0xde, 0xac, 0x50, 0xe1, 0x22, 0x17, + 0x69, 0x38, 0x15, 0xbd, 0x89, 0x88, 0x6d, 0xa5, 0x85, 0xe9, 0x99, 0xc6, 0x88, 0xde, 0x2f, 0x46, + 0x24, 0x95, 0x96, 0x76, 0xb9, 0xd3, 0x2e, 0x71, 0xff, 0xeb, 0x4a, 0xe8, 0xc9, 0x3d, 0xa1, 0x53, + 0x61, 0x6f, 0x6f, 0x2e, 0x3c, 0xde, 0x5b, 0x6f, 0x0e, 0xf8, 0x47, 0x23, 0xf2, 0xc9, 0xe6, 0xa9, + 0xdb, 0xc7, 0x4e, 0x55, 0x65, 0x1a, 0x5b, 0xf1, 0xe0, 0x99, 0xe9, 0x79, 0xea, 0x59, 0xff, 0x8b, + 0x16, 0xb0, 0xaf, 0x60, 0x64, 0xac, 0x3d, 0xcb, 0x05, 0xb9, 0x7e, 0xb2, 0x74, 0xaf, 0xd6, 0x5b, + 0xa5, 0xb9, 0x1a, 0x7f, 0xda, 0xd8, 0x6c, 0x9f, 0x3c, 0xe1, 0x6a, 0xfc, 0x49, 0x24, 0x96, 0x47, + 0x91, 0x5d, 0x96, 0x42, 0x4d, 0x68, 0xad, 0x7b, 0xac, 0x75, 0xbc, 0x0c, 0xa5, 0x71, 0x9f, 0x5b, + 0x12, 0x72, 0x15, 0xa7, 0xff, 0x18, 0x7a, 0x36, 0x10, 0x51, 0x77, 0xd7, 0xff, 0x92, 0x0b, 0xcb, + 0x54, 0x94, 0x86, 0x89, 0x06, 0x3c, 0xa2, 0x51, 0xeb, 0xf1, 0x3a, 0x2e, 0xdc, 0x3f, 0x54, 0x21, + 0xdc, 0x3d, 0xb6, 0x56, 0xcb, 0x71, 0x65, 0x05, 0x5e, 0xe8, 0x84, 0x07, 0xd6, 0x0f, 0xee, 0xaf, + 0x93, 0x6e, 0x1e, 0x70, 0x2b, 0x3e, 0xdb, 0xde, 0xa7, 0xf8, 0x2e, 0x6e, 0x05, 0x7c, 0xb3, 0x31, + 0x36, 0xcb, 0x02, 0x22, 0x84, 0x1f, 0xa4, 0xe1, 0x58, 0xa5, 0xcb, 0x30, 0x2e, 0x81, 0x53, 0xfa, + 0x2a, 0x93, 0x79, 0xea, 0x29, 0xda, 0x1f, 0xa7, 0xe9, 0xd9, 0x1d, 0xac, 0xb8, 0x90, 0x06, 0xd9, + 0x2a, 0xb4, 0xc7, 0xc9, 0x66, 0x1e, 0x78, 0x7e, 0x34, 0xf8, 0xf2, 0xbb, 0xb0, 0x7f, 0x78, 0x7e, + 0x00, 0x99, 0x27, 0xc9, 0xec, 0xb5, 0xcc, 0x05, 0x25, 0xa1, 0x47, 0x08, 0xf2, 0x71, 0x32, 0x4b, + 0x26, 0x53, 0xee, 0x3f, 0xfa, 0xb6, 0x44, 0xf4, 0x85, 0x45, 0xdc, 0xfc, 0xaf, 0x0f, 0xeb, 0x11, + 0x5a, 0x2b, 0x0d, 0xf7, 0xa0, 0x07, 0xa5, 0x62, 0x54, 0x2e, 0xc2, 0x5c, 0x4d, 0x3d, 0x7e, 0x46, + 0xeb, 0xac, 0x01, 0x0f, 0xa1, 0x67, 0x13, 0x88, 0x76, 0x30, 0xa0, 0x36, 0x34, 0xe0, 0xba, 0x68, + 0xd6, 0x81, 0x3e, 0x0e, 0x4e, 0xe4, 0xb4, 0xd2, 0xb1, 0x43, 0xbb, 0x86, 0x81, 0x4d, 0x62, 0x49, + 0x59, 0xf8, 0xef, 0xe2, 0xbc, 0x48, 0xd4, 0xbc, 0x04, 0xe8, 0x82, 0x95, 0xf1, 0x54, 0x30, 0xe4, + 0x44, 0xdc, 0x45, 0x2e, 0x6c, 0x04, 0xc8, 0x64, 0x6a, 0x31, 0x52, 0xb1, 0xb1, 0x75, 0x8c, 0xf6, + 0xfc, 0x2f, 0x54, 0x1c, 0x2a, 0x72, 0x5e, 0x58, 0x7a, 0xe1, 0xc2, 0x22, 0x0b, 0x98, 0xfc, 0x66, + 0x74, 0x79, 0x11, 0x59, 0xf8, 0x92, 0xe4, 0xb1, 0x31, 0xe4, 0x08, 0x79, 0xe5, 0x89, 0xa3, 0xc6, + 0x95, 0x03, 0x4e, 0xd2, 0x10, 0x85, 0x24, 0x17, 0xb1, 0x1e, 0xd5, 0xa5, 0xe5, 0x35, 0x25, 0xe6, + 0x62, 0x63, 0x97, 0x70, 0x32, 0x2e, 0xe4, 0xdc, 0xd9, 0x1b, 0xf1, 0x42, 0x15, 0xe4, 0x59, 0xbd, + 0x23, 0x02, 0x5c, 0xed, 0x21, 0xaf, 0x35, 0x10, 0x09, 0xbe, 0xa9, 0x4f, 0x8b, 0xb9, 0xba, 0xa3, + 0xc4, 0x70, 0x8a, 0x00, 0xec, 0xfe, 0xcb, 0xdd, 0xdd, 0x0d, 0x77, 0xaa, 0x92, 0x40, 0xa3, 0x58, + 0x90, 0x3f, 0xad, 0x33, 0x85, 0x58, 0xb0, 0x7f, 0x5e, 0x5e, 0xbc, 0x41, 0x9d, 0xde, 0x88, 0x3f, + 0x2b, 0x61, 0xec, 0xe1, 0x77, 0x02, 0xbf, 0xa1, 0x7a, 0x03, 0x9d, 0x4c, 0x1a, 0x68, 0x37, 0x25, + 0x22, 0x25, 0x46, 0xc8, 0xbb, 0xc0, 0xad, 0x18, 0x8b, 0x32, 0x37, 0x83, 0xe8, 0x39, 0x59, 0xe1, + 0x7f, 0x37, 0xce, 0x6b, 0xb9, 0x76, 0x4b, 0x30, 0xc9, 0x48, 0x66, 0x41, 0xb7, 0x15, 0x50, 0x73, + 0xca, 0xf5, 0xd5, 0x70, 0xc4, 0x83, 0x8d, 0x7a, 0x76, 0xc6, 0xf9, 0xfe, 0x21, 0x79, 0x54, 0x38, + 0x8f, 0x5e, 0x2b, 0x3d, 0x3f, 0x45, 0x44, 0x0f, 0x9b, 0xea, 0x2c, 0x9a, 0xe4, 0xf6, 0x38, 0xc5, + 0x19, 0xb0, 0x86, 0x94, 0x38, 0xe6, 0xfd, 0xee, 0x07, 0xca, 0x7f, 0xaa, 0x0c, 0xbc, 0x2b, 0x7c, + 0xac, 0xdf, 0xc5, 0x79, 0x05, 0x2e, 0xe5, 0x41, 0x77, 0x6f, 0x0d, 0x5d, 0x92, 0x89, 0x64, 0xf6, + 0xb6, 0x9a, 0xaf, 0xeb, 0xbd, 0xeb, 0x75, 0x05, 0xb9, 0x12, 0xce, 0xc4, 0x32, 0x44, 0xc8, 0x92, + 0xcc, 0xeb, 0xbd, 0xdf, 0xdd, 0x79, 0xf9, 0xa1, 0xe7, 0xa3, 0xe8, 0xdf, 0xf3, 0x13, 0xd8, 0x6d, + 0xca, 0x38, 0xa1, 0x52, 0x1c, 0xc5, 0x63, 0xfc, 0x3f, 0x03, 0xe3, 0xc3, 0x55, 0x3e, 0xcc, 0xe4, + 0xc4, 0xe2, 0xf3, 0x15, 0x5a, 0x80, 0x56, 0x39, 0xbe, 0x1d, 0xe7, 0xf4, 0x7c, 0x1d, 0x83, 0xd8, + 0x69, 0x3d, 0x2e, 0xcd, 0x85, 0x4a, 0x66, 0x74, 0x04, 0x2c, 0xef, 0x8a, 0x79, 0xd8, 0x48, 0xba, + 0x46, 0xa6, 0xde, 0x96, 0xcd, 0x97, 0x53, 0xb5, 0x28, 0x9c, 0x5c, 0x04, 0x86, 0xbf, 0x51, 0x73, + 0xda, 0x00, 0x96, 0x51, 0x8b, 0x0b, 0xe1, 0x14, 0xb8, 0xef, 0x6e, 0xb7, 0xfb, 0x76, 0x23, 0xa7, + 0xd9, 0x6a, 0xb9, 0x39, 0x7b, 0x8e, 0x80, 0x69, 0x5a, 0x3c, 0x15, 0x54, 0x09, 0xfc, 0x03, 0x92, + 0x39, 0xc9, 0xab, 0x54, 0x18, 0x6f, 0xe5, 0x9d, 0xef, 0xff, 0xf5, 0x57, 0xf3, 0x84, 0xb2, 0xa5, + 0xcf, 0x53, 0x31, 0x89, 0xab, 0xdc, 0xa2, 0xf8, 0x51, 0x13, 0x1b, 0xe5, 0xb2, 0x5d, 0xeb, 0x80, + 0xca, 0xde, 0x63, 0x1c, 0x70, 0x71, 0x51, 0x27, 0x12, 0xa7, 0x5e, 0xf0, 0x91, 0x3f, 0xb5, 0x44, + 0xb1, 0x0f, 0xed, 0xf0, 0x9f, 0x7a, 0xfc, 0xdd, 0xc5, 0xd9, 0x29, 0xc8, 0xd4, 0xa4, 0x47, 0x1c, + 0xf5, 0x83, 0xdd, 0x26, 0xf5, 0x37, 0xf4, 0x0d, 0xbd, 0x9a, 0x34, 0x6d, 0xd4, 0xd0, 0x3c, 0xda, + 0x92, 0xab, 0x9d, 0x43, 0x39, 0xf1, 0x38, 0xc5, 0xf7, 0x80, 0xa8, 0x38, 0x74, 0xad, 0x2a, 0x51, + 0xb9, 0xef, 0xba, 0xd7, 0x6e, 0xe0, 0xb9, 0xf6, 0x16, 0xd1, 0xee, 0x7c, 0x68, 0x95, 0x06, 0x94, + 0x64, 0xc5, 0xb9, 0x15, 0x73, 0xca, 0xf3, 0xe4, 0xbc, 0xe4, 0xce, 0xe7, 0x7a, 0x1b, 0x4e, 0xcf, + 0x4b, 0x10, 0x0b, 0xf9, 0xc5, 0x2e, 0x55, 0x2a, 0x42, 0x76, 0x8d, 0x12, 0x36, 0x82, 0x09, 0x0a, + 0x28, 0x23, 0x23, 0xd9, 0xf9, 0x35, 0xa8, 0x23, 0xd8, 0x92, 0x68, 0xb6, 0x25, 0x06, 0x4e, 0x1a, + 0x72, 0x54, 0xe4, 0x46, 0x38, 0xb3, 0x05, 0x99, 0x16, 0xdb, 0x8c, 0xc0, 0x0a, 0x54, 0x84, 0x13, + 0x39, 0x66, 0x00, 0x6f, 0x2f, 0x10, 0x21, 0x92, 0xd1, 0xbc, 0x93, 0x36, 0x43, 0x72, 0x73, 0xff, + 0x68, 0x67, 0xef, 0xe0, 0x4e, 0xc9, 0x94, 0xed, 0xfa, 0xa1, 0x29, 0x73, 0x69, 0xdd, 0x2a, 0x8a, + 0x14, 0x38, 0x4f, 0x6d, 0x36, 0xd8, 0x7f, 0xf2, 0xc4, 0x5b, 0x35, 0xe4, 0xb5, 0xb7, 0x41, 0xe3, + 0x6d, 0xed, 0x85, 0x0d, 0x33, 0x65, 0x2c, 0xa9, 0x7a, 0x8a, 0xaa, 0xa2, 0x21, 0xe1, 0x08, 0x90, + 0x3e, 0xad, 0xbf, 0x1e, 0x70, 0xc0, 0x0d, 0xa1, 0x4f, 0x15, 0xea, 0xc1, 0xff, 0x8a, 0x13, 0x10, + 0xb9, 0x45, 0xe4, 0xf7, 0xe2, 0x98, 0x69, 0x31, 0x59, 0x15, 0xe0, 0xf6, 0xc6, 0xd6, 0x23, 0x94, + 0xeb, 0x37, 0x64, 0xff, 0xbf, 0x48, 0x59, 0x6f, 0x5e, 0x4b, 0x22, 0x64, 0x5d, 0xab, 0xfc, 0xa6, + 0xf1, 0xf7, 0x4c, 0xf8, 0xc9, 0x1c, 0x95, 0xd1, 0x6f, 0xdc, 0xe5, 0x62, 0x50, 0x9b, 0x9e, 0x86, + 0xc3, 0x49, 0x18, 0xbb, 0x24, 0x89, 0x1e, 0x38, 0x22, 0x12, 0xbe, 0x99, 0x46, 0xcd, 0x8e, 0x55, + 0x65, 0x13, 0x98, 0x47, 0x2d, 0xa0, 0x80, 0x05, 0xb8, 0x38, 0x0c, 0x1d, 0x4a, 0xf6, 0x6b, 0xa7, + 0xdf, 0x6b, 0x46, 0xa5, 0xbe, 0xa3, 0xec, 0xc1, 0xdf, 0xe5, 0x9c, 0x40, 0x64, 0x95, 0xce, 0xc1, + 0xbd, 0x8e, 0xc5, 0x13, 0x03, 0x07, 0x0e, 0xb1, 0xd1, 0x6d, 0xe8, 0xf7, 0xea, 0xc9, 0x8f, 0x7a, + 0x2c, 0x5a, 0x17, 0xf9, 0x12, 0x71, 0x24, 0x2f, 0x06, 0xb2, 0x09, 0x68, 0xaa, 0xc3, 0x24, 0x9e, + 0xe9, 0xdb, 0x47, 0xc3, 0x59, 0x3d, 0xc9, 0x0d, 0x27, 0x9c, 0x61, 0x84, 0xcb, 0x14, 0xde, 0x94, + 0x08, 0x1c, 0xb6, 0xa6, 0xf2, 0x8e, 0x39, 0xae, 0x8f, 0xd0, 0x7a, 0x60, 0xdb, 0x62, 0x7b, 0x2d, + 0x13, 0x79, 0x79, 0xc2, 0x07, 0x9d, 0x3e, 0xb0, 0xb5, 0xf0, 0x8a, 0xa6, 0x80, 0x88, 0xd7, 0x0f, + 0x1c, 0x5a, 0x13, 0x24, 0xd7, 0x2c, 0xe2, 0x6f, 0x48, 0xed, 0x51, 0xbf, 0x57, 0xbf, 0x80, 0x69, + 0x10, 0x31, 0x78, 0xf8, 0x4c, 0x67, 0x75, 0xe8, 0x84, 0x0e, 0x11, 0xa1, 0xad, 0xcf, 0x6d, 0x9d, + 0x30, 0xd5, 0x78, 0x2e, 0x61, 0xe3, 0x30, 0xbe, 0x13, 0xeb, 0x2d, 0x99, 0x6e, 0xc5, 0x67, 0xfb, + 0x83, 0xce, 0xb0, 0x19, 0xf0, 0xd8, 0x13, 0x76, 0xeb, 0xe6, 0x2f, 0xa2, 0x8b, 0xaa, 0x04, 0x36, + 0xfb, 0x83, 0x76, 0x16, 0x65, 0xd7, 0xe7, 0x6f, 0x0f, 0x58, 0x5f, 0x16, 0x65, 0x65, 0x1b, 0xd1, + 0x25, 0x9c, 0x5b, 0x28, 0x9d, 0x72, 0x07, 0x12, 0xde, 0xaf, 0x86, 0x5d, 0xf7, 0xdd, 0xc8, 0xff, + 0xe0, 0xeb, 0x73, 0x80, 0x15, 0x7f, 0xae, 0xcb, 0xa1, 0x7e, 0x92, 0xc5, 0xc6, 0x93, 0x2a, 0xc0, + 0x62, 0x44, 0x2c, 0x11, 0x5f, 0xf3, 0x38, 0x1a, 0x94, 0x0f, 0x59, 0x48, 0x32, 0x14, 0x31, 0xde, + 0x38, 0xee, 0xfe, 0x1b, 0xd4, 0x90, 0xf2, 0x39, 0xca, 0x1c, 0x0d, 0x18, 0x33, 0xaf, 0x96, 0x09, + 0x67, 0x6e, 0x42, 0x86, 0xc6, 0xcd, 0xb2, 0x8f, 0xd9, 0x73, 0x96, 0xca, 0xa9, 0xb4, 0x0c, 0xdb, + 0xc6, 0x20, 0x76, 0x60, 0xa2, 0x01, 0xff, 0x46, 0x48, 0x16, 0xb1, 0xc6, 0xd8, 0xdf, 0x79, 0xf2, + 0xcb, 0xcb, 0x17, 0x2f, 0x5e, 0x1c, 0xb2, 0xdb, 0x42, 0x14, 0x89, 0x5e, 0x96, 0x56, 0xa4, 0xcc, + 0xea, 0xb8, 0x30, 0x73, 0x69, 0x0c, 0x12, 0x30, 0x64, 0x27, 0x18, 0x41, 0x34, 0x48, 0xb7, 0xb0, + 0x6c, 0x91, 0x09, 0x22, 0xd2, 0x1c, 0x63, 0x24, 0x4d, 0x31, 0x70, 0x32, 0x60, 0xa9, 0x62, 0x6f, + 0xaf, 0x46, 0x0c, 0xdd, 0x81, 0x2d, 0x55, 0xa5, 0xd9, 0x38, 0x2e, 0x66, 0x78, 0x49, 0x2f, 0x94, + 0x0e, 0xd8, 0xf0, 0xfc, 0x32, 0x60, 0xc2, 0x26, 0x21, 0x2b, 0x65, 0xd1, 0xed, 0xb4, 0x21, 0xd5, + 0x03, 0x6a, 0x22, 0x6c, 0x21, 0x35, 0xa4, 0x19, 0xc3, 0xbc, 0xab, 0xd1, 0xb1, 0xcf, 0x8c, 0x9a, + 0x58, 0xd8, 0x25, 0x58, 0x3d, 0x04, 0xdf, 0x43, 0xdb, 0xc1, 0x33, 0x56, 0x9f, 0xdb, 0x34, 0x7c, + 0x7b, 0xe5, 0x32, 0x4a, 0x0f, 0xae, 0xe1, 0x50, 0x99, 0x69, 0xb8, 0xff, 0x68, 0x7c, 0xea, 0x13, + 0x57, 0xd7, 0x5b, 0xb1, 0x78, 0xb6, 0xdf, 0xe0, 0x32, 0x52, 0xc0, 0x8d, 0xee, 0x2b, 0x0c, 0x66, + 0x04, 0x0c, 0xd9, 0xce, 0xda, 0x91, 0x9f, 0x61, 0xde, 0x35, 0x98, 0x1c, 0xc8, 0x39, 0x56, 0x08, + 0x42, 0x47, 0xb1, 0x38, 0x37, 0xaa, 0x41, 0xda, 0x66, 0x02, 0xa3, 0x9c, 0xd6, 0x80, 0x84, 0xb5, + 0xea, 0xba, 0xce, 0xaa, 0x51, 0x26, 0x56, 0x2b, 0x34, 0xac, 0x55, 0x79, 0xca, 0xc6, 0x82, 0xae, + 0x3d, 0xc5, 0x14, 0x62, 0x1c, 0x96, 0x50, 0x87, 0x51, 0xbd, 0x51, 0x9e, 0x86, 0x74, 0xac, 0x3f, + 0x1e, 0x74, 0x4e, 0xa5, 0x69, 0xad, 0xa9, 0xf7, 0x15, 0xca, 0x22, 0xf6, 0x04, 0x72, 0xc0, 0x14, + 0x54, 0xea, 0x85, 0x04, 0xde, 0x71, 0xc1, 0x90, 0x20, 0xc8, 0x7c, 0xd8, 0x91, 0xe0, 0x01, 0x8c, + 0x85, 0xd8, 0x66, 0xac, 0xbe, 0xaf, 0xad, 0xd0, 0x24, 0xd4, 0xc7, 0xce, 0xd1, 0xbe, 0x5c, 0x67, + 0x33, 0xd5, 0x07, 0xd2, 0xac, 0x1e, 0x2f, 0x09, 0x73, 0xd4, 0xfe, 0xb2, 0xb6, 0xce, 0xe9, 0x96, + 0x13, 0xa7, 0x3e, 0xa7, 0x30, 0x61, 0x5b, 0x5a, 0x9b, 0x94, 0x76, 0xfb, 0x3d, 0x59, 0xa3, 0x7e, + 0x2a, 0x8a, 0x25, 0x8b, 0x93, 0x84, 0xc2, 0x07, 0x4c, 0xde, 0xc9, 0xd7, 0x92, 0xb5, 0x34, 0x46, + 0xa7, 0xe9, 0xa4, 0x48, 0x7f, 0x10, 0xc3, 0xab, 0x77, 0x4d, 0x0c, 0xe9, 0xef, 0x35, 0x58, 0x51, + 0x69, 0x82, 0x1c, 0x72, 0x7e, 0x70, 0xf0, 0x66, 0xd8, 0xc4, 0xee, 0x38, 0xcf, 0xd7, 0x6a, 0xe3, + 0x22, 0x65, 0x0d, 0x47, 0x23, 0xb7, 0xf0, 0x06, 0x80, 0x0b, 0x4a, 0x8c, 0x16, 0x5b, 0x3d, 0xf8, + 0xbf, 0x6a, 0xe0, 0x78, 0x03, 0x69, 0x07, 0x1c, 0xd0, 0x85, 0x19, 0x48, 0x08, 0x8b, 0xf0, 0xce, + 0x1c, 0xfa, 0x92, 0xf2, 0x21, 0x11, 0x34, 0xc5, 0x83, 0x2d, 0xeb, 0x89, 0xbd, 0xcd, 0x77, 0x62, + 0x9b, 0xec, 0xd9, 0x60, 0xd8, 0xe6, 0x77, 0x4d, 0x32, 0xa0, 0x97, 0x67, 0x83, 0x1f, 0x50, 0xe2, + 0x2d, 0xb1, 0x5b, 0xe7, 0x32, 0x2e, 0xaa, 0x38, 0x77, 0x01, 0x69, 0x8f, 0xae, 0xb8, 0x4e, 0x0f, + 0xce, 0xea, 0xdc, 0x3d, 0xd6, 0x69, 0x25, 0x0b, 0x85, 0x4d, 0x8f, 0x62, 0xd7, 0xb0, 0xd3, 0xf1, + 0x15, 0x5f, 0xd9, 0x44, 0xcc, 0x59, 0x95, 0x20, 0xbe, 0x1b, 0x0c, 0xd7, 0x4a, 0x37, 0x46, 0xc5, + 0x2d, 0x44, 0x63, 0x8b, 0xdb, 0x4c, 0x31, 0xab, 0x19, 0xae, 0xe9, 0xa3, 0xac, 0x43, 0xcd, 0x31, + 0xe2, 0xbd, 0x06, 0x6a, 0x74, 0x39, 0xb2, 0xb9, 0x9d, 0x8e, 0x50, 0x77, 0x4d, 0x9b, 0x6c, 0x85, + 0x37, 0xcf, 0xfd, 0x5e, 0xbc, 0x0a, 0xc1, 0xa0, 0xd3, 0xe8, 0x5b, 0xbd, 0x74, 0xf9, 0xb9, 0x61, + 0xb5, 0xbb, 0x3b, 0x35, 0xd1, 0x76, 0x63, 0xb1, 0x4b, 0xb6, 0xd2, 0x46, 0xbc, 0xd6, 0x37, 0x60, + 0x2d, 0x74, 0x9d, 0x87, 0xb1, 0xfb, 0x75, 0xe3, 0x4a, 0xe1, 0x9a, 0x2e, 0x49, 0x09, 0xee, 0x59, + 0xed, 0xff, 0x3a, 0xb8, 0x75, 0xdb, 0x56, 0x88, 0xd6, 0xe9, 0xb8, 0xe2, 0xa9, 0xc7, 0xa1, 0x68, + 0xbd, 0x64, 0x0d, 0x1a, 0x80, 0xa6, 0x41, 0xa2, 0xb3, 0x86, 0x82, 0xf0, 0x6a, 0x61, 0xd8, 0xba, + 0xf2, 0x6d, 0x81, 0xd1, 0x62, 0xb1, 0xbd, 0x63, 0x8d, 0x48, 0xe7, 0x61, 0x48, 0xf6, 0x1f, 0xc7, + 0xe4, 0x91, 0x6e, 0xf9, 0x20, 0x26, 0xfb, 0xc1, 0x86, 0xf1, 0xdf, 0x02, 0xb2, 0x81, 0x07, 0xd5, + 0x4e, 0xe7, 0xe1, 0xe2, 0xa9, 0x5d, 0xa0, 0xb6, 0xd0, 0xe0, 0xd2, 0xdb, 0xbe, 0xe1, 0xba, 0x72, + 0xbc, 0xfa, 0xe3, 0xec, 0xe6, 0xdd, 0xcd, 0xf9, 0xe8, 0xac, 0xee, 0x15, 0xa0, 0x58, 0x4d, 0x7d, + 0xe5, 0xc1, 0x13, 0xa1, 0x0b, 0x44, 0x87, 0x6e, 0xc2, 0x35, 0xbd, 0x6e, 0xcb, 0x9b, 0xc7, 0x44, + 0x14, 0x7f, 0x56, 0xe8, 0x20, 0x68, 0x77, 0x93, 0x4d, 0xea, 0x60, 0xe0, 0x6f, 0x2d, 0x76, 0x1c, + 0x19, 0x36, 0xb7, 0x6d, 0xa7, 0xee, 0x6c, 0x78, 0x1d, 0x36, 0x15, 0xf9, 0xfa, 0x01, 0x8a, 0x0f, + 0x56, 0x74, 0x6d, 0x1c, 0x21, 0x12, 0xe9, 0x8e, 0xa9, 0xe6, 0x53, 0xf4, 0xa3, 0xb0, 0xad, 0x97, + 0xe3, 0x31, 0x6e, 0xb9, 0x6d, 0x91, 0x34, 0x85, 0xd0, 0xfe, 0x8c, 0x84, 0x86, 0x9b, 0x55, 0xe3, + 0x10, 0x57, 0xf7, 0xde, 0xb1, 0xd4, 0x89, 0x52, 0x6a, 0x26, 0x45, 0x8f, 0x66, 0xf0, 0x1e, 0xfa, + 0x74, 0xac, 0xa7, 0xf4, 0x73, 0xd7, 0xc7, 0x71, 0x8e, 0x16, 0xc9, 0x07, 0xb4, 0x4c, 0x49, 0xd0, + 0x61, 0x77, 0x42, 0x13, 0xcd, 0xb0, 0xdd, 0x70, 0xef, 0x79, 0xb8, 0xbf, 0x33, 0xde, 0x5b, 0x71, + 0xd5, 0xcf, 0x68, 0x58, 0xc8, 0x99, 0xec, 0xb9, 0x6b, 0x1b, 0x4d, 0xb0, 0x4a, 0x9b, 0x1d, 0xb0, + 0xe1, 0x4e, 0xa2, 0x45, 0x2a, 0x29, 0x49, 0x3b, 0xf7, 0xf5, 0x6f, 0x6e, 0x45, 0xb7, 0x16, 0x74, + 0x01, 0x05, 0xff, 0x49, 0x51, 0xd3, 0xa8, 0x29, 0x45, 0x22, 0xc1, 0x39, 0x16, 0x1d, 0x61, 0xb6, + 0x2a, 0xdd, 0xce, 0x31, 0xcb, 0x2a, 0x34, 0x0c, 0xb7, 0xea, 0x7a, 0x22, 0xa8, 0x1f, 0xd7, 0x2e, + 0xbd, 0x54, 0x85, 0x40, 0xaf, 0x52, 0x8c, 0x46, 0x3d, 0x20, 0x06, 0x72, 0xac, 0x7f, 0x2a, 0x72, + 0x57, 0x90, 0x6e, 0xeb, 0x51, 0xc7, 0x4b, 0x7c, 0xb6, 0xbf, 0xbb, 0xf7, 0xdb, 0xce, 0xfe, 0xee, + 0xfe, 0x33, 0xf6, 0x2a, 0xd3, 0xb8, 0x6c, 0x4b, 0xb0, 0xe7, 0x30, 0xc9, 0x16, 0xf4, 0x53, 0x45, + 0xd3, 0xa6, 0x2e, 0xd0, 0xc0, 0x70, 0xfb, 0x03, 0xf2, 0x30, 0xaa, 0xee, 0xb2, 0x3f, 0x05, 0xc6, + 0x38, 0x57, 0xe3, 0xde, 0x1c, 0xb7, 0x74, 0xa1, 0x7b, 0x17, 0xe7, 0xaf, 0xce, 0xde, 0x0e, 0xcf, + 0xbe, 0x8d, 0x40, 0xe7, 0xf2, 0x7c, 0xc4, 0xf2, 0x5a, 0x93, 0x73, 0x10, 0xad, 0xad, 0x35, 0x74, + 0x28, 0x34, 0xbc, 0x82, 0x1b, 0xc6, 0xa0, 0x41, 0x82, 0x50, 0x71, 0x5d, 0x2e, 0x5a, 0x26, 0x30, + 0xb2, 0xe4, 0x54, 0xb3, 0xee, 0x27, 0x05, 0xe6, 0x7e, 0x25, 0x20, 0xaa, 0xa7, 0x2d, 0x35, 0xaf, + 0x52, 0x9d, 0x10, 0x4b, 0xd4, 0x3f, 0xc3, 0x7c, 0x77, 0x90, 0xfd, 0x76, 0x8e, 0xed, 0xfc, 0xd4, + 0x20, 0xdb, 0xa3, 0x6e, 0x83, 0x0f, 0x9a, 0xdf, 0x69, 0x98, 0xa7, 0x1f, 0x77, 0xff, 0x0b, 0x01, + 0x7a, 0xb0, 0xe0, 0xec, 0x15, 0x00, 0x00 }; diff --git a/wled00/wled.h b/wled00/wled.h index 5f050dc745..47c8f2ae02 100644 --- a/wled00/wled.h +++ b/wled00/wled.h @@ -3,7 +3,7 @@ /* Main sketch, global variable declarations @title WLED project sketch - @version 0.14.1 + @version 0.14.2-b1 @author Christian Schwinne */ From a4733b4d911011e6ed3547649134a1e340521c64 Mon Sep 17 00:00:00 2001 From: Blaz Kristan Date: Sun, 18 Feb 2024 14:09:38 +0100 Subject: [PATCH 14/35] Move strings into flash --- wled00/json.cpp | 8 ++-- wled00/wled_server.cpp | 84 +++++++++++++++++++++--------------------- 2 files changed, 46 insertions(+), 46 deletions(-) diff --git a/wled00/json.cpp b/wled00/json.cpp index dcd6f1e591..e63a09ee98 100644 --- a/wled00/json.cpp +++ b/wled00/json.cpp @@ -1051,10 +1051,10 @@ void serveJson(AsyncWebServerRequest* request) } #endif else if (url.indexOf("pal") > 0) { - request->send_P(200, "application/json", JSON_palette_names); + request->send_P(200, F("application/json"), JSON_palette_names); return; } - else if (url.indexOf("cfg") > 0 && handleFileRead(request, "/cfg.json")) { + else if (url.indexOf("cfg") > 0 && handleFileRead(request, F("/cfg.json"))) { return; } else if (url.length() > 6) { //not just /json @@ -1081,7 +1081,7 @@ void serveJson(AsyncWebServerRequest* request) case JSON_PATH_NODES: serializeNodes(lDoc); break; case JSON_PATH_PALETTES: - serializePalettes(lDoc, request->hasParam("page") ? request->getParam("page")->value().toInt() : 0); break; + serializePalettes(lDoc, request->hasParam(F("page")) ? request->getParam(F("page"))->value().toInt() : 0); break; case JSON_PATH_EFFECTS: serializeModeNames(lDoc); break; case JSON_PATH_FXDATA: @@ -1150,7 +1150,7 @@ bool serveLiveLeds(AsyncWebServerRequest* request, uint32_t wsClient) oappendi(n); oappend("}"); if (request) { - request->send(200, "application/json", buffer); + request->send(200, F("application/json"), buffer); } #ifdef WLED_ENABLE_WEBSOCKETS else { diff --git a/wled00/wled_server.cpp b/wled00/wled_server.cpp index eb42840975..385f87feef 100644 --- a/wled00/wled_server.cpp +++ b/wled00/wled_server.cpp @@ -80,13 +80,13 @@ void createEditHandler(bool enable) { editHandler = &server.addHandler(new SPIFFSEditor("","",WLED_FS));//http_username,http_password)); #endif #else - editHandler = &server.on("/edit", HTTP_GET, [](AsyncWebServerRequest *request){ + editHandler = &server.on(SET_F("/edit"), HTTP_GET, [](AsyncWebServerRequest *request){ serveMessage(request, 501, "Not implemented", F("The FS editor is disabled in this build."), 254); }); #endif } else { - editHandler = &server.on("/edit", HTTP_ANY, [](AsyncWebServerRequest *request){ - serveMessage(request, 401, "Access Denied", FPSTR(s_unlock_cfg), 254); + editHandler = &server.on(SET_F("/edit"), HTTP_ANY, [](AsyncWebServerRequest *request){ + serveMessage(request, 401, F("Access Denied"), FPSTR(s_unlock_cfg), 254); }); } } @@ -95,11 +95,11 @@ bool captivePortal(AsyncWebServerRequest *request) { if (ON_STA_FILTER(request)) return false; //only serve captive in AP mode String hostH; - if (!request->hasHeader("Host")) return false; - hostH = request->getHeader("Host")->value(); + if (!request->hasHeader(F("Host"))) return false; + hostH = request->getHeader(F("Host"))->value(); - if (!isIp(hostH) && hostH.indexOf("wled.me") < 0 && hostH.indexOf(cmDNS) < 0) { - DEBUG_PRINTLN("Captive portal"); + if (!isIp(hostH) && hostH.indexOf(F("wled.me")) < 0 && hostH.indexOf(cmDNS) < 0) { + DEBUG_PRINTLN(F("Captive portal")); AsyncWebServerResponse *response = request->beginResponse(302); response->addHeader(F("Location"), F("http://4.3.2.1")); request->send(response); @@ -117,7 +117,7 @@ void initServer() #ifdef WLED_ENABLE_WEBSOCKETS #ifndef WLED_DISABLE_2D - server.on("/liveview2D", HTTP_GET, [](AsyncWebServerRequest *request){ + server.on(SET_F("/liveview2D"), HTTP_GET, [](AsyncWebServerRequest *request){ if (handleIfNoneMatchCacheHeader(request)) return; AsyncWebServerResponse *response = request->beginResponse_P(200, "text/html", PAGE_liveviewws2D, PAGE_liveviewws2D_length); response->addHeader(FPSTR(s_content_enc),"gzip"); @@ -126,7 +126,7 @@ void initServer() }); #endif #endif - server.on("/liveview", HTTP_GET, [](AsyncWebServerRequest *request){ + server.on(SET_F("/liveview"), HTTP_GET, [](AsyncWebServerRequest *request){ if (handleIfNoneMatchCacheHeader(request)) return; AsyncWebServerResponse *response = request->beginResponse_P(200, "text/html", PAGE_liveview, PAGE_liveview_length); response->addHeader(FPSTR(s_content_enc),"gzip"); @@ -135,13 +135,13 @@ void initServer() }); //settings page - server.on("/settings", HTTP_GET, [](AsyncWebServerRequest *request){ + server.on(SET_F("/settings"), HTTP_GET, [](AsyncWebServerRequest *request){ serveSettings(request); }); // "/settings/settings.js&p=x" request also handled by serveSettings() - server.on("/style.css", HTTP_GET, [](AsyncWebServerRequest *request){ + server.on(SET_F("/style.css"), HTTP_GET, [](AsyncWebServerRequest *request){ if (handleIfNoneMatchCacheHeader(request)) return; AsyncWebServerResponse *response = request->beginResponse_P(200, "text/css", PAGE_settingsCss, PAGE_settingsCss_length); response->addHeader(FPSTR(s_content_enc),"gzip"); @@ -149,31 +149,31 @@ void initServer() request->send(response); }); - server.on("/favicon.ico", HTTP_GET, [](AsyncWebServerRequest *request){ + server.on(SET_F("/favicon.ico"), HTTP_GET, [](AsyncWebServerRequest *request){ if(!handleFileRead(request, "/favicon.ico")) { request->send_P(200, "image/x-icon", favicon, 156); } }); - server.on("/welcome", HTTP_GET, [](AsyncWebServerRequest *request){ + server.on(SET_F("/welcome"), HTTP_GET, [](AsyncWebServerRequest *request){ serveSettings(request); }); - server.on("/reset", HTTP_GET, [](AsyncWebServerRequest *request){ + server.on(SET_F("/reset"), HTTP_GET, [](AsyncWebServerRequest *request){ serveMessage(request, 200,F("Rebooting now..."),F("Please wait ~10 seconds..."),129); doReboot = true; }); - server.on("/settings", HTTP_POST, [](AsyncWebServerRequest *request){ + server.on(SET_F("/settings"), HTTP_POST, [](AsyncWebServerRequest *request){ serveSettings(request, true); }); - server.on("/json", HTTP_GET, [](AsyncWebServerRequest *request){ + server.on(SET_F("/json"), HTTP_GET, [](AsyncWebServerRequest *request){ serveJson(request); }); - AsyncCallbackJsonWebHandler* handler = new AsyncCallbackJsonWebHandler("/json", [](AsyncWebServerRequest *request) { + AsyncCallbackJsonWebHandler* handler = new AsyncCallbackJsonWebHandler(F("/json"), [](AsyncWebServerRequest *request) { bool verboseResponse = false; bool isConfig = false; @@ -222,15 +222,15 @@ void initServer() }, JSON_BUFFER_SIZE); server.addHandler(handler); - server.on("/version", HTTP_GET, [](AsyncWebServerRequest *request){ + server.on(SET_F("/version"), HTTP_GET, [](AsyncWebServerRequest *request){ request->send(200, "text/plain", (String)VERSION); }); - server.on("/uptime", HTTP_GET, [](AsyncWebServerRequest *request){ + server.on(SET_F("/uptime"), HTTP_GET, [](AsyncWebServerRequest *request){ request->send(200, "text/plain", (String)millis()); }); - server.on("/freeheap", HTTP_GET, [](AsyncWebServerRequest *request){ + server.on(SET_F("/freeheap"), HTTP_GET, [](AsyncWebServerRequest *request){ request->send(200, "text/plain", (String)ESP.getFreeHeap()); }); @@ -244,17 +244,17 @@ void initServer() }); #endif - server.on("/teapot", HTTP_GET, [](AsyncWebServerRequest *request){ + server.on(SET_F("/teapot"), HTTP_GET, [](AsyncWebServerRequest *request){ serveMessage(request, 418, F("418. I'm a teapot."), F("(Tangible Embedded Advanced Project Of Twinkling)"), 254); }); - server.on("/upload", HTTP_POST, [](AsyncWebServerRequest *request) {}, + server.on(SET_F("/upload"), HTTP_POST, [](AsyncWebServerRequest *request) {}, [](AsyncWebServerRequest *request, const String& filename, size_t index, uint8_t *data, size_t len, bool final) {handleUpload(request, filename, index, data, len, final);} ); #ifdef WLED_ENABLE_SIMPLE_UI - server.on("/simple.htm", HTTP_GET, [](AsyncWebServerRequest *request){ + server.on(SET_F("/simple.htm"), HTTP_GET, [](AsyncWebServerRequest *request){ if (handleFileRead(request, "/simple.htm")) return; if (handleIfNoneMatchCacheHeader(request)) return; AsyncWebServerResponse *response = request->beginResponse_P(200, "text/html", PAGE_simple, PAGE_simple_L); @@ -264,14 +264,14 @@ void initServer() }); #endif - server.on("/iro.js", HTTP_GET, [](AsyncWebServerRequest *request){ + server.on(SET_F("/iro.js"), HTTP_GET, [](AsyncWebServerRequest *request){ AsyncWebServerResponse *response = request->beginResponse_P(200, "application/javascript", iroJs, iroJs_length); response->addHeader(FPSTR(s_content_enc),"gzip"); setStaticContentCacheHeaders(response); request->send(response); }); - server.on("/rangetouch.js", HTTP_GET, [](AsyncWebServerRequest *request){ + server.on(SET_F("/rangetouch.js"), HTTP_GET, [](AsyncWebServerRequest *request){ AsyncWebServerResponse *response = request->beginResponse_P(200, "application/javascript", rangetouchJs, rangetouchJs_length); response->addHeader(FPSTR(s_content_enc),"gzip"); setStaticContentCacheHeaders(response); @@ -282,20 +282,20 @@ void initServer() #ifndef WLED_DISABLE_OTA //init ota page - server.on("/update", HTTP_GET, [](AsyncWebServerRequest *request){ + server.on(SET_F("/update"), HTTP_GET, [](AsyncWebServerRequest *request){ if (otaLock) { - serveMessage(request, 401, "Access Denied", FPSTR(s_unlock_ota), 254); + serveMessage(request, 401, F("Access Denied"), FPSTR(s_unlock_ota), 254); } else serveSettings(request); // checks for "upd" in URL and handles PIN }); - server.on("/update", HTTP_POST, [](AsyncWebServerRequest *request){ + server.on(SET_F("/update"), HTTP_POST, [](AsyncWebServerRequest *request){ if (!correctPIN) { serveSettings(request, true); // handle PIN page POST request return; } if (otaLock) { - serveMessage(request, 401, "Access Denied", FPSTR(s_unlock_ota), 254); + serveMessage(request, 401, F("Access Denied"), FPSTR(s_unlock_ota), 254); return; } if (Update.hasError()) { @@ -328,19 +328,19 @@ void initServer() } }); #else - server.on("/update", HTTP_GET, [](AsyncWebServerRequest *request){ - serveMessage(request, 501, "Not implemented", F("OTA updating is disabled in this build."), 254); + server.on(SET_F("/update"), HTTP_GET, [](AsyncWebServerRequest *request){ + serveMessage(request, 501, F("Not implemented"), F("OTA updating is disabled in this build."), 254); }); #endif #ifdef WLED_ENABLE_DMX - server.on("/dmxmap", HTTP_GET, [](AsyncWebServerRequest *request){ + server.on(SET_F("/dmxmap"), HTTP_GET, [](AsyncWebServerRequest *request){ request->send_P(200, "text/html", PAGE_dmxmap , dmxProcessor); }); #else - server.on("/dmxmap", HTTP_GET, [](AsyncWebServerRequest *request){ - serveMessage(request, 501, "Not implemented", F("DMX support is not enabled in this build."), 254); + server.on(SET_F("/dmxmap"), HTTP_GET, [](AsyncWebServerRequest *request){ + serveMessage(request, 501, F("Not implemented"), F("DMX support is not enabled in this build."), 254); }); #endif @@ -354,8 +354,8 @@ void initServer() }); #ifdef WLED_ENABLE_PIXART - server.on("/pixart.htm", HTTP_GET, [](AsyncWebServerRequest *request){ - if (handleFileRead(request, "/pixart.htm")) return; + server.on(SET_F("/pixart.htm"), HTTP_GET, [](AsyncWebServerRequest *request){ + if (handleFileRead(request, F("/pixart.htm"))) return; if (handleIfNoneMatchCacheHeader(request)) return; AsyncWebServerResponse *response = request->beginResponse_P(200, "text/html", PAGE_pixart, PAGE_pixart_L); response->addHeader(FPSTR(s_content_enc),"gzip"); @@ -365,8 +365,8 @@ void initServer() #endif #ifndef WLED_DISABLE_PXMAGIC - server.on("/pxmagic.htm", HTTP_GET, [](AsyncWebServerRequest *request){ - if (handleFileRead(request, "/pxmagic.htm")) return; + server.on(SET_F("/pxmagic.htm"), HTTP_GET, [](AsyncWebServerRequest *request){ + if (handleFileRead(request, F("/pxmagic.htm"))) return; if (handleIfNoneMatchCacheHeader(request)) return; AsyncWebServerResponse *response = request->beginResponse_P(200, "text/html", PAGE_pxmagic, PAGE_pxmagic_L); response->addHeader(FPSTR(s_content_enc),"gzip"); @@ -375,8 +375,8 @@ void initServer() }); #endif - server.on("/cpal.htm", HTTP_GET, [](AsyncWebServerRequest *request){ - if (handleFileRead(request, "/cpal.htm")) return; + server.on(SET_F("/cpal.htm"), HTTP_GET, [](AsyncWebServerRequest *request){ + if (handleFileRead(request, F("/cpal.htm"))) return; if (handleIfNoneMatchCacheHeader(request)) return; AsyncWebServerResponse *response = request->beginResponse_P(200, "text/html", PAGE_cpal, PAGE_cpal_L); response->addHeader(FPSTR(s_content_enc),"gzip"); @@ -442,7 +442,7 @@ void setStaticContentCacheHeaders(AsyncWebServerResponse *response) void serveIndex(AsyncWebServerRequest* request) { - if (handleFileRead(request, "/index.htm")) return; + if (handleFileRead(request, F("/index.htm"))) return; if (handleIfNoneMatchCacheHeader(request)) return; @@ -586,7 +586,7 @@ void serveSettings(AsyncWebServerRequest* request, bool post) // if OTA locked or too frequent PIN entry requests fail hard if ((subPage == SUBPAGE_WIFI && wifiLock && otaLock) || (post && !correctPIN && millis()-lastEditTime < PIN_RETRY_COOLDOWN)) { - serveMessage(request, 401, "Access Denied", FPSTR(s_unlock_ota), 254); return; + serveMessage(request, 401, F("Access Denied"), FPSTR(s_unlock_ota), 254); return; } if (post) { //settings/set POST request, saving From 59886a1528a8286539688fae3a3c06a7f9dae845 Mon Sep 17 00:00:00 2001 From: Will Miles Date: Sat, 17 Feb 2024 03:08:38 -0500 Subject: [PATCH 15/35] Move timezone table to PROGMEM --- wled00/ntp.cpp | 219 +++++++++++++++++++++++-------------------------- 1 file changed, 104 insertions(+), 115 deletions(-) diff --git a/wled00/ntp.cpp b/wled00/ntp.cpp index 2e95eae23c..0eb5122f8b 100644 --- a/wled00/ntp.cpp +++ b/wled00/ntp.cpp @@ -48,129 +48,118 @@ Timezone* tz; #define TZ_ANCHORAGE 20 #define TZ_MX_CENTRAL 21 #define TZ_PAKISTAN 22 + +#define TZ_COUNT 23 #define TZ_INIT 255 byte tzCurrent = TZ_INIT; //uninitialized +/* C++11 form -- static std::array, TZ_COUNT> TZ_TABLE PROGMEM = {{ */ +static std::pair TZ_TABLE[] PROGMEM = { + /* TZ_UTC */ { + {Last, Sun, Mar, 1, 0}, // UTC + {Last, Sun, Mar, 1, 0} // Same + }, + /* TZ_UK */ { + {Last, Sun, Mar, 1, 60}, //British Summer Time + {Last, Sun, Oct, 2, 0} //Standard Time + }, + /* TZ_EUROPE_CENTRAL */ { + {Last, Sun, Mar, 2, 120}, //Central European Summer Time + {Last, Sun, Oct, 3, 60} //Central European Standard Time + }, + /* TZ_EUROPE_EASTERN */ { + {Last, Sun, Mar, 3, 180}, //East European Summer Time + {Last, Sun, Oct, 4, 120} //East European Standard Time + }, + /* TZ_US_EASTERN */ { + {Second, Sun, Mar, 2, -240}, //EDT = UTC - 4 hours + {First, Sun, Nov, 2, -300} //EST = UTC - 5 hours + }, + /* TZ_US_CENTRAL */ { + {Second, Sun, Mar, 2, -300}, //CDT = UTC - 5 hours + {First, Sun, Nov, 2, -360} //CST = UTC - 6 hours + }, + /* TZ_US_MOUNTAIN */ { + {Second, Sun, Mar, 2, -360}, //MDT = UTC - 6 hours + {First, Sun, Nov, 2, -420} //MST = UTC - 7 hours + }, + /* TZ_US_ARIZONA */ { + {First, Sun, Nov, 2, -420}, //MST = UTC - 7 hours + {First, Sun, Nov, 2, -420} //MST = UTC - 7 hours + }, + /* TZ_US_PACIFIC */ { + {Second, Sun, Mar, 2, -420}, //PDT = UTC - 7 hours + {First, Sun, Nov, 2, -480} //PST = UTC - 8 hours + }, + /* TZ_CHINA */ { + {Last, Sun, Mar, 1, 480}, //CST = UTC + 8 hours + {Last, Sun, Mar, 1, 480} + }, + /* TZ_JAPAN */ { + {Last, Sun, Mar, 1, 540}, //JST = UTC + 9 hours + {Last, Sun, Mar, 1, 540} + }, + /* TZ_AUSTRALIA_EASTERN */ { + {First, Sun, Oct, 2, 660}, //AEDT = UTC + 11 hours + {First, Sun, Apr, 3, 600} //AEST = UTC + 10 hours + }, + /* TZ_NEW_ZEALAND */ { + {Last, Sun, Sep, 2, 780}, //NZDT = UTC + 13 hours + {First, Sun, Apr, 3, 720} //NZST = UTC + 12 hours + }, + /* TZ_NORTH_KOREA */ { + {Last, Sun, Mar, 1, 510}, //Pyongyang Time = UTC + 8.5 hours + {Last, Sun, Mar, 1, 510} + }, + /* TZ_INDIA */ { + {Last, Sun, Mar, 1, 330}, //India Standard Time = UTC + 5.5 hours + {Last, Sun, Mar, 1, 330} + }, + /* TZ_SASKACHEWAN */ { + {First, Sun, Nov, 2, -360}, //CST = UTC - 6 hours + {First, Sun, Nov, 2, -360} + }, + /* TZ_AUSTRALIA_NORTHERN */ { + {First, Sun, Apr, 3, 570}, //ACST = UTC + 9.5 hours + {First, Sun, Apr, 3, 570} + }, + /* TZ_AUSTRALIA_SOUTHERN */ { + {First, Sun, Oct, 2, 630}, //ACDT = UTC + 10.5 hours + {First, Sun, Apr, 3, 570} //ACST = UTC + 9.5 hours + }, + /* TZ_HAWAII */ { + {Last, Sun, Mar, 1, -600}, //HST = UTC - 10 hours + {Last, Sun, Mar, 1, -600} + }, + /* TZ_NOVOSIBIRSK */ { + {Last, Sun, Mar, 1, 420}, //CST = UTC + 7 hours + {Last, Sun, Mar, 1, 420} + }, + /* TZ_ANCHORAGE */ { + {Second, Sun, Mar, 2, -480}, //AKDT = UTC - 8 hours + {First, Sun, Nov, 2, -540} //AKST = UTC - 9 hours + }, + /* TZ_MX_CENTRAL */ { + {First, Sun, Apr, 2, -360}, //CST = UTC - 6 hours + {First, Sun, Apr, 2, -360} + }, + /* TZ_PAKISTAN */ { + {Last, Sun, Mar, 1, 300}, //Pakistan Standard Time = UTC + 5 hours + {Last, Sun, Mar, 1, 300} + } +}; + void updateTimezone() { delete tz; - TimeChangeRule tcrDaylight = {Last, Sun, Mar, 1, 0}; //UTC - TimeChangeRule tcrStandard = tcrDaylight; //UTC - - switch (currentTimezone) { - case TZ_UK : { - tcrDaylight = {Last, Sun, Mar, 1, 60}; //British Summer Time - tcrStandard = {Last, Sun, Oct, 2, 0}; //Standard Time - break; - } - case TZ_EUROPE_CENTRAL : { - tcrDaylight = {Last, Sun, Mar, 2, 120}; //Central European Summer Time - tcrStandard = {Last, Sun, Oct, 3, 60}; //Central European Standard Time - break; - } - case TZ_EUROPE_EASTERN : { - tcrDaylight = {Last, Sun, Mar, 3, 180}; //East European Summer Time - tcrStandard = {Last, Sun, Oct, 4, 120}; //East European Standard Time - break; - } - case TZ_US_EASTERN : { - tcrDaylight = {Second, Sun, Mar, 2, -240}; //EDT = UTC - 4 hours - tcrStandard = {First, Sun, Nov, 2, -300}; //EST = UTC - 5 hours - break; - } - case TZ_US_CENTRAL : { - tcrDaylight = {Second, Sun, Mar, 2, -300}; //CDT = UTC - 5 hours - tcrStandard = {First, Sun, Nov, 2, -360}; //CST = UTC - 6 hours - break; - } - case TZ_US_MOUNTAIN : { - tcrDaylight = {Second, Sun, Mar, 2, -360}; //MDT = UTC - 6 hours - tcrStandard = {First, Sun, Nov, 2, -420}; //MST = UTC - 7 hours - break; - } - case TZ_US_ARIZONA : { - tcrDaylight = {First, Sun, Nov, 2, -420}; //MST = UTC - 7 hours - tcrStandard = {First, Sun, Nov, 2, -420}; //MST = UTC - 7 hours - break; - } - case TZ_US_PACIFIC : { - tcrDaylight = {Second, Sun, Mar, 2, -420}; //PDT = UTC - 7 hours - tcrStandard = {First, Sun, Nov, 2, -480}; //PST = UTC - 8 hours - break; - } - case TZ_CHINA : { - tcrDaylight = {Last, Sun, Mar, 1, 480}; //CST = UTC + 8 hours - tcrStandard = tcrDaylight; - break; - } - case TZ_JAPAN : { - tcrDaylight = {Last, Sun, Mar, 1, 540}; //JST = UTC + 9 hours - tcrStandard = tcrDaylight; - break; - } - case TZ_AUSTRALIA_EASTERN : { - tcrDaylight = {First, Sun, Oct, 2, 660}; //AEDT = UTC + 11 hours - tcrStandard = {First, Sun, Apr, 3, 600}; //AEST = UTC + 10 hours - break; - } - case TZ_NEW_ZEALAND : { - tcrDaylight = {Last, Sun, Sep, 2, 780}; //NZDT = UTC + 13 hours - tcrStandard = {First, Sun, Apr, 3, 720}; //NZST = UTC + 12 hours - break; - } - case TZ_NORTH_KOREA : { - tcrDaylight = {Last, Sun, Mar, 1, 510}; //Pyongyang Time = UTC + 8.5 hours - tcrStandard = tcrDaylight; - break; - } - case TZ_INDIA : { - tcrDaylight = {Last, Sun, Mar, 1, 330}; //India Standard Time = UTC + 5.5 hours - tcrStandard = tcrDaylight; - break; - } - case TZ_SASKACHEWAN : { - tcrDaylight = {First, Sun, Nov, 2, -360}; //CST = UTC - 6 hours - tcrStandard = tcrDaylight; - break; - } - case TZ_AUSTRALIA_NORTHERN : { - tcrDaylight = {First, Sun, Apr, 3, 570}; //ACST = UTC + 9.5 hours - tcrStandard = tcrDaylight; - break; - } - case TZ_AUSTRALIA_SOUTHERN : { - tcrDaylight = {First, Sun, Oct, 2, 630}; //ACDT = UTC + 10.5 hours - tcrStandard = {First, Sun, Apr, 3, 570}; //ACST = UTC + 9.5 hours - break; - } - case TZ_HAWAII : { - tcrDaylight = {Last, Sun, Mar, 1, -600}; //HST = UTC - 10 hours - tcrStandard = tcrDaylight; - break; - } - case TZ_NOVOSIBIRSK : { - tcrDaylight = {Last, Sun, Mar, 1, 420}; //CST = UTC + 7 hours - tcrStandard = tcrDaylight; - break; - } - case TZ_ANCHORAGE : { - tcrDaylight = {Second, Sun, Mar, 2, -480}; //AKDT = UTC - 8 hours - tcrStandard = {First, Sun, Nov, 2, -540}; //AKST = UTC - 9 hours - break; - } - case TZ_MX_CENTRAL : { - tcrDaylight = {First, Sun, Apr, 2, -360}; //CST = UTC - 6 hours - tcrStandard = tcrDaylight; - break; - } - case TZ_PAKISTAN : { - tcrDaylight = {Last, Sun, Mar, 1, 300}; //Pakistan Standard Time = UTC + 5 hours - tcrStandard = tcrDaylight; - break; - } + TimeChangeRule tcrDaylight, tcrStandard; + auto tz_table_entry = currentTimezone; + if (tz_table_entry >= TZ_COUNT) { + tz_table_entry = 0; } - tzCurrent = currentTimezone; + memcpy_P(&tcrDaylight, &TZ_TABLE[tz_table_entry].first, sizeof(tcrDaylight)); + memcpy_P(&tcrStandard, &TZ_TABLE[tz_table_entry].second, sizeof(tcrStandard)); tz = new Timezone(tcrDaylight, tcrStandard); } From c8c394b4e923d98d37b95e6007509b40b624a8a3 Mon Sep 17 00:00:00 2001 From: Will Miles Date: Mon, 19 Feb 2024 09:48:34 -0500 Subject: [PATCH 16/35] TZ_TABLE: Add missing const --- wled00/ntp.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wled00/ntp.cpp b/wled00/ntp.cpp index 0eb5122f8b..494e7e3b1d 100644 --- a/wled00/ntp.cpp +++ b/wled00/ntp.cpp @@ -55,7 +55,7 @@ Timezone* tz; byte tzCurrent = TZ_INIT; //uninitialized /* C++11 form -- static std::array, TZ_COUNT> TZ_TABLE PROGMEM = {{ */ -static std::pair TZ_TABLE[] PROGMEM = { +static const std::pair TZ_TABLE[] PROGMEM = { /* TZ_UTC */ { {Last, Sun, Mar, 1, 0}, // UTC {Last, Sun, Mar, 1, 0} // Same From 1fc0680c71114d4cd2ddb57ae402118847f6edde Mon Sep 17 00:00:00 2001 From: Blaz Kristan Date: Sat, 2 Mar 2024 14:12:57 +0100 Subject: [PATCH 17/35] 160MHz clock & alternate AWS --- package-lock.json | 1587 +++++++++++++++++++++++++--------------- package.json | 2 +- platformio.ini | 6 +- wled00/html_other.h | 74 +- wled00/html_settings.h | 6 +- wled00/improv.cpp | 2 +- wled00/wled.h | 2 +- 7 files changed, 1065 insertions(+), 614 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1b07a547a8..7653dea534 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,277 +1,362 @@ { "name": "wled", - "version": "0.14.2-b1", - "lockfileVersion": 1, + "version": "0.14.2-b2", + "lockfileVersion": 3, "requires": true, - "dependencies": { - "abbrev": { + "packages": { + "": { + "name": "wled", + "version": "0.14.2-b2", + "license": "ISC", + "dependencies": { + "clean-css": "^4.2.3", + "html-minifier-terser": "^5.1.1", + "inliner": "^1.13.1", + "nodemon": "^2.0.20", + "zlib": "^1.0.5" + } + }, + "node_modules/abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, - "ajv": { + "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "requires": { + "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "align-text": { + "node_modules/align-text": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "requires": { + "dependencies": { "kind-of": "^3.0.2", "longest": "^1.0.1", "repeat-string": "^1.5.2" + }, + "engines": { + "node": ">=0.10.0" } }, - "ansi-escapes": { + "node_modules/ansi-escapes": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=" + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "engines": { + "node": ">=0.10.0" + } }, - "ansi-regex": { + "node_modules/ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "engines": { + "node": ">=0.10.0" + } }, - "ansi-styles": { + "node_modules/ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "engines": { + "node": ">=0.10.0" + } }, - "anymatch": { + "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "requires": { + "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" } }, - "argparse": { + "node_modules/argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { + "dependencies": { "sprintf-js": "~1.0.2" } }, - "asap": { + "node_modules/asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" }, - "asn1": { + "node_modules/asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "requires": { + "dependencies": { "safer-buffer": "~2.1.0" } }, - "assert-plus": { + "node_modules/assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "engines": { + "node": ">=0.8" + } }, - "asynckit": { + "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, - "aws-sign2": { + "node_modules/aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "engines": { + "node": "*" + } }, - "aws4": { + "node_modules/aws4": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==" }, - "balanced-match": { + "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, - "bcrypt-pbkdf": { + "node_modules/bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "requires": { + "dependencies": { "tweetnacl": "^0.14.3" } }, - "binary-extensions": { + "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } }, - "boolbase": { + "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" }, - "brace-expansion": { + "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { + "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "braces": { + "node_modules/braces": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "requires": { + "dependencies": { "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" } }, - "buffer-from": { + "node_modules/buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" }, - "camelcase": { + "node_modules/camelcase": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "engines": { + "node": ">=0.10.0" + } }, - "caseless": { + "node_modules/caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, - "center-align": { + "node_modules/center-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "requires": { + "dependencies": { "align-text": "^0.1.3", "lazy-cache": "^1.0.3" + }, + "engines": { + "node": ">=0.10.0" } }, - "chalk": { + "node_modules/chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { + "dependencies": { "ansi-styles": "^2.2.1", "escape-string-regexp": "^1.0.2", "has-ansi": "^2.0.0", "strip-ansi": "^3.0.0", "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "charset": { + "node_modules/charset": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/charset/-/charset-1.0.1.tgz", - "integrity": "sha512-6dVyOOYjpfFcL1Y4qChrAoQLRHvj2ziyhcm0QJlhOcAhykL/k1kTUPbeo+87MNRTRdk2OIIsIXbuF3x2wi5EXg==" + "integrity": "sha512-6dVyOOYjpfFcL1Y4qChrAoQLRHvj2ziyhcm0QJlhOcAhykL/k1kTUPbeo+87MNRTRdk2OIIsIXbuF3x2wi5EXg==", + "engines": { + "node": ">=4.0.0" + } }, - "cheerio": { + "node_modules/cheerio": { "version": "0.19.0", "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.19.0.tgz", "integrity": "sha1-dy5wFfLuKZZQltcepBdbdas1SSU=", - "requires": { + "dependencies": { "css-select": "~1.0.0", "dom-serializer": "~0.1.0", "entities": "~1.1.1", "htmlparser2": "~3.8.1", "lodash": "^3.2.0" + }, + "engines": { + "node": ">= 0.6" } }, - "chokidar": { + "node_modules/chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "requires": { + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", - "fsevents": "~2.3.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "clap": { + "node_modules/clap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", - "requires": { + "dependencies": { "chalk": "^1.1.3" + }, + "engines": { + "node": ">=0.10.0" } }, - "clean-css": { + "node_modules/clean-css": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", - "requires": { + "dependencies": { "source-map": "~0.6.0" }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } + "engines": { + "node": ">= 4.0" } }, - "cliui": { + "node_modules/clean-css/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cliui": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "requires": { + "dependencies": { "center-align": "^0.1.1", "right-align": "^0.1.1", "wordwrap": "0.0.2" } }, - "coa": { + "node_modules/coa": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", - "requires": { + "dependencies": { "q": "^1.1.2" + }, + "engines": { + "node": ">= 0.8.0" } }, - "colors": { + "node_modules/colors": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=" + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "engines": { + "node": ">=0.1.90" + } }, - "combined-stream": { + "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { + "dependencies": { "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" } }, - "commander": { + "node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, - "concat-map": { + "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, - "configstore": { + "node_modules/configstore": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/configstore/-/configstore-1.4.0.tgz", "integrity": "sha1-w1eB0FAdJowlxUuLF/YkDopPsCE=", - "requires": { + "dependencies": { "graceful-fs": "^4.1.2", "mkdirp": "^0.5.0", "object-assign": "^4.0.1", @@ -281,285 +366,336 @@ "write-file-atomic": "^1.1.2", "xdg-basedir": "^2.0.0" }, - "dependencies": { - "uuid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", - "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=" - } + "engines": { + "node": ">=0.10.0" } }, - "core-util-is": { + "node_modules/configstore/node_modules/uuid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details." + }, + "node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, - "css-select": { + "node_modules/css-select": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.0.0.tgz", "integrity": "sha1-sRIcpRhI3SZOIkTQWM7iVN7rRLA=", - "requires": { + "dependencies": { "boolbase": "~1.0.0", "css-what": "1.0", "domutils": "1.4", "nth-check": "~1.0.0" } }, - "css-what": { + "node_modules/css-what": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/css-what/-/css-what-1.0.0.tgz", - "integrity": "sha1-18wt9FGAZm+Z0rFEYmOUaeAPc2w=" + "integrity": "sha1-18wt9FGAZm+Z0rFEYmOUaeAPc2w=", + "engines": { + "node": "*" + } }, - "csso": { + "node_modules/csso": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/csso/-/csso-2.0.0.tgz", "integrity": "sha1-F4tDpEYhIhwndWCG9THgL0KQDug=", - "requires": { + "dependencies": { "clap": "^1.0.9", "source-map": "^0.5.3" + }, + "bin": { + "csso": "bin/csso" + }, + "engines": { + "node": ">=0.10.0" } }, - "dashdash": { + "node_modules/dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "requires": { + "dependencies": { "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" } }, - "debug": { + "node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { + "dependencies": { "ms": "2.0.0" } }, - "decamelize": { + "node_modules/decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "engines": { + "node": ">=0.10.0" + } }, - "deep-extend": { + "node_modules/deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "engines": { + "node": ">=4.0.0" + } }, - "delayed-stream": { + "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "engines": { + "node": ">=0.4.0" + } }, - "dom-serializer": { + "node_modules/dom-serializer": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", - "requires": { + "dependencies": { "domelementtype": "^1.3.0", "entities": "^1.1.1" } }, - "domelementtype": { + "node_modules/domelementtype": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" }, - "domhandler": { + "node_modules/domhandler": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=", - "requires": { + "dependencies": { "domelementtype": "1" } }, - "domutils": { + "node_modules/domutils": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.4.3.tgz", "integrity": "sha1-CGVRN5bGswYDGFDhdVFrr4C3Km8=", - "requires": { + "dependencies": { "domelementtype": "1" } }, - "dot-case": { + "node_modules/dot-case": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.3.tgz", "integrity": "sha512-7hwEmg6RiSQfm/GwPL4AAWXKy3YNNZA3oFv2Pdiey0mwkRCPZ9x6SZbkLcn8Ma5PYeVokzoD4Twv2n7LKp5WeA==", - "requires": { + "dependencies": { "no-case": "^3.0.3", "tslib": "^1.10.0" - }, + } + }, + "node_modules/dot-case/node_modules/lower-case": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.1.tgz", + "integrity": "sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ==", "dependencies": { - "lower-case": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.1.tgz", - "integrity": "sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ==", - "requires": { - "tslib": "^1.10.0" - } - }, - "no-case": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.3.tgz", - "integrity": "sha512-ehY/mVQCf9BL0gKfsJBvFJen+1V//U+0HQMPrWct40ixE4jnv0bfvxDbWtAHL9EcaPEOJHVVYKoQn1TlZUB8Tw==", - "requires": { - "lower-case": "^2.0.1", - "tslib": "^1.10.0" - } - } + "tslib": "^1.10.0" + } + }, + "node_modules/dot-case/node_modules/no-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.3.tgz", + "integrity": "sha512-ehY/mVQCf9BL0gKfsJBvFJen+1V//U+0HQMPrWct40ixE4jnv0bfvxDbWtAHL9EcaPEOJHVVYKoQn1TlZUB8Tw==", + "dependencies": { + "lower-case": "^2.0.1", + "tslib": "^1.10.0" } }, - "duplexify": { + "node_modules/duplexify": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "requires": { + "dependencies": { "end-of-stream": "^1.0.0", "inherits": "^2.0.1", "readable-stream": "^2.0.0", "stream-shift": "^1.0.0" - }, + } + }, + "node_modules/duplexify/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "node_modules/duplexify/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/duplexify/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/duplexify/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" } }, - "ecc-jsbn": { + "node_modules/ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "requires": { + "dependencies": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" } }, - "end-of-stream": { + "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "requires": { + "dependencies": { "once": "^1.4.0" } }, - "entities": { + "node_modules/entities": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" }, - "es6-promise": { + "node_modules/es6-promise": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-2.3.0.tgz", "integrity": "sha1-lu258v2wGZWCKyY92KratnSBgbw=" }, - "escape-string-regexp": { + "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "engines": { + "node": ">=0.8.0" + } }, - "esprima": { + "node_modules/esprima": { "version": "2.7.3", "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=" + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=0.10.0" + } }, - "extend": { + "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, - "extsprintf": { + "node_modules/extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "engines": [ + "node >=0.6.0" + ] }, - "fast-deep-equal": { + "node_modules/fast-deep-equal": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==" }, - "fast-json-stable-stringify": { + "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, - "fill-range": { + "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "requires": { + "dependencies": { "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "forever-agent": { + "node_modules/forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "engines": { + "node": "*" + } }, - "form-data": { + "node_modules/form-data": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "requires": { + "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" } }, - "fsevents": { + "node_modules/fsevents": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "optional": true + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } }, - "getpass": { + "node_modules/getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "requires": { + "dependencies": { "assert-plus": "^1.0.0" } }, - "glob-parent": { + "node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "requires": { + "dependencies": { "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" } }, - "got": { + "node_modules/got": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/got/-/got-3.3.1.tgz", "integrity": "sha1-5dDtSvVfw+701WAHdp2YGSvLLso=", - "requires": { + "dependencies": { "duplexify": "^3.2.0", "infinity-agent": "^2.0.0", "is-redirect": "^1.0.0", @@ -571,56 +707,76 @@ "read-all-stream": "^3.0.0", "timed-out": "^2.0.0" }, - "dependencies": { - "object-assign": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", - "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=" - } + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/got/node_modules/object-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", + "engines": { + "node": ">=0.10.0" } }, - "graceful-fs": { + "node_modules/graceful-fs": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" }, - "har-schema": { + "node_modules/har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "engines": { + "node": ">=4" + } }, - "har-validator": { + "node_modules/har-validator": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", - "requires": { + "deprecated": "this library is no longer supported", + "dependencies": { "ajv": "^6.5.5", "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" } }, - "has-ansi": { + "node_modules/has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "requires": { + "dependencies": { "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "has-flag": { + "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } }, - "he": { + "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "bin": { + "he": "bin/he" + } }, - "html-minifier-terser": { + "node_modules/html-minifier-terser": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", - "requires": { + "dependencies": { "camel-case": "^4.1.1", "clean-css": "^4.2.3", "commander": "^4.1.1", @@ -629,108 +785,123 @@ "relateurl": "^0.2.7", "terser": "^4.6.3" }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/html-minifier-terser/node_modules/camel-case": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.1.tgz", + "integrity": "sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q==", "dependencies": { - "camel-case": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.1.tgz", - "integrity": "sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q==", - "requires": { - "pascal-case": "^3.1.1", - "tslib": "^1.10.0" - } - }, - "commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" - }, - "param-case": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.3.tgz", - "integrity": "sha512-VWBVyimc1+QrzappRs7waeN2YmoZFCGXWASRYX1/rGHtXqEcrGEIDm+jqIwFa2fRXNgQEwrxaYuIrX0WcAguTA==", - "requires": { - "dot-case": "^3.0.3", - "tslib": "^1.10.0" - } - } + "pascal-case": "^3.1.1", + "tslib": "^1.10.0" } }, - "htmlparser2": { + "node_modules/html-minifier-terser/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/html-minifier-terser/node_modules/param-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.3.tgz", + "integrity": "sha512-VWBVyimc1+QrzappRs7waeN2YmoZFCGXWASRYX1/rGHtXqEcrGEIDm+jqIwFa2fRXNgQEwrxaYuIrX0WcAguTA==", + "dependencies": { + "dot-case": "^3.0.3", + "tslib": "^1.10.0" + } + }, + "node_modules/htmlparser2": { "version": "3.8.3", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=", - "requires": { + "dependencies": { "domelementtype": "1", "domhandler": "2.3", "domutils": "1.5", "entities": "1.0", "readable-stream": "1.1" - }, + } + }, + "node_modules/htmlparser2/node_modules/domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", "dependencies": { - "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "entities": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", - "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=" - } + "dom-serializer": "0", + "domelementtype": "1" } }, - "http-signature": { + "node_modules/htmlparser2/node_modules/entities": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", + "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=" + }, + "node_modules/http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "requires": { + "dependencies": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" } }, - "iconv-lite": { + "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { + "dependencies": { "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" } }, - "ignore-by-default": { + "node_modules/ignore-by-default": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==" }, - "imurmurhash": { + "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "engines": { + "node": ">=0.8.19" + } }, - "infinity-agent": { + "node_modules/infinity-agent": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/infinity-agent/-/infinity-agent-2.0.3.tgz", "integrity": "sha1-ReDi/3qesDCyfWK3SzdEt6esQhY=" }, - "inherits": { + "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, - "ini": { + "node_modules/ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, - "inliner": { + "node_modules/inliner": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/inliner/-/inliner-1.13.1.tgz", "integrity": "sha1-5QApgev1Dp2fMTcRSBz/Ei1PP8s=", - "requires": { + "dependencies": { "ansi-escapes": "^1.4.0", "ansi-styles": "^2.2.1", "chalk": "^1.1.3", @@ -750,319 +921,394 @@ "then-fs": "^2.0.0", "uglify-js": "^2.8.0", "update-notifier": "^0.5.0" + }, + "bin": { + "inliner": "cli/index.js" } }, - "is-binary-path": { + "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "requires": { + "dependencies": { "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, - "is-buffer": { + "node_modules/is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, - "is-extglob": { + "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } }, - "is-finite": { + "node_modules/is-finite": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", - "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==" + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "is-glob": { + "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "requires": { + "dependencies": { "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "is-npm": { + "node_modules/is-npm": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", - "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=" + "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", + "engines": { + "node": ">=0.10.0" + } }, - "is-number": { + "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } }, - "is-redirect": { + "node_modules/is-redirect": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", - "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=" + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", + "engines": { + "node": ">=0.10.0" + } }, - "is-stream": { + "node_modules/is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "engines": { + "node": ">=0.10.0" + } }, - "is-typedarray": { + "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, - "isarray": { + "node_modules/isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" }, - "isstream": { + "node_modules/isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, - "js-yaml": { + "node_modules/js-yaml": { "version": "3.6.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.6.1.tgz", "integrity": "sha1-bl/mfYsgXOTSL60Ft3geja3MSzA=", - "requires": { + "dependencies": { "argparse": "^1.0.7", "esprima": "^2.6.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "jsbn": { + "node_modules/jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" }, - "jschardet": { + "node_modules/jschardet": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/jschardet/-/jschardet-1.6.0.tgz", - "integrity": "sha512-xYuhvQ7I9PDJIGBWev9xm0+SMSed3ZDBAmvVjbFR1ZRLAF+vlXcQu6cRI9uAlj81rzikElRVteehwV7DuX2ZmQ==" + "integrity": "sha512-xYuhvQ7I9PDJIGBWev9xm0+SMSed3ZDBAmvVjbFR1ZRLAF+vlXcQu6cRI9uAlj81rzikElRVteehwV7DuX2ZmQ==", + "engines": { + "node": ">=0.1.90" + } }, - "json-schema": { + "node_modules/json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" }, - "json-schema-traverse": { + "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, - "json-stringify-safe": { + "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, - "jsprim": { + "node_modules/jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "requires": { + "engines": [ + "node >=0.6.0" + ], + "dependencies": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", "json-schema": "0.2.3", "verror": "1.10.0" } }, - "kind-of": { + "node_modules/kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { + "dependencies": { "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" } }, - "latest-version": { + "node_modules/latest-version": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-1.0.1.tgz", "integrity": "sha1-cs/Ebj6NG+ZR4eu1Tqn26pbzdLs=", - "requires": { + "dependencies": { "package-json": "^1.0.0" + }, + "bin": { + "latest-version": "cli.js" + }, + "engines": { + "node": ">=0.10.0" } }, - "lazy-cache": { + "node_modules/lazy-cache": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "engines": { + "node": ">=0.10.0" + } }, - "lodash": { + "node_modules/lodash": { "version": "3.10.1", "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=" }, - "lodash._arrayeach": { + "node_modules/lodash._arrayeach": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lodash._arrayeach/-/lodash._arrayeach-3.0.0.tgz", "integrity": "sha1-urFWsqkNPxu9XGU0AzSeXlkz754=" }, - "lodash._baseassign": { + "node_modules/lodash._baseassign": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", - "requires": { + "dependencies": { "lodash._basecopy": "^3.0.0", "lodash.keys": "^3.0.0" } }, - "lodash._basecopy": { + "node_modules/lodash._basecopy": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=" }, - "lodash._baseeach": { + "node_modules/lodash._baseeach": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/lodash._baseeach/-/lodash._baseeach-3.0.4.tgz", "integrity": "sha1-z4cGVyyhROjZ11InyZDamC+TKvM=", - "requires": { + "dependencies": { "lodash.keys": "^3.0.0" } }, - "lodash._bindcallback": { + "node_modules/lodash._bindcallback": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=" }, - "lodash._createassigner": { + "node_modules/lodash._createassigner": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz", "integrity": "sha1-g4pbri/aymOsIt7o4Z+k5taXCxE=", - "requires": { + "dependencies": { "lodash._bindcallback": "^3.0.0", "lodash._isiterateecall": "^3.0.0", "lodash.restparam": "^3.0.0" } }, - "lodash._getnative": { + "node_modules/lodash._getnative": { "version": "3.9.1", "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=" }, - "lodash._isiterateecall": { + "node_modules/lodash._isiterateecall": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=" }, - "lodash.assign": { + "node_modules/lodash.assign": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-3.2.0.tgz", "integrity": "sha1-POnwI0tLIiPilrj6CsH+6OvKZPo=", - "requires": { + "dependencies": { "lodash._baseassign": "^3.0.0", "lodash._createassigner": "^3.0.0", "lodash.keys": "^3.0.0" } }, - "lodash.defaults": { + "node_modules/lodash.defaults": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-3.1.2.tgz", "integrity": "sha1-xzCLGNv4vJNy1wGnNJPGEZK9Liw=", - "requires": { + "dependencies": { "lodash.assign": "^3.0.0", "lodash.restparam": "^3.0.0" } }, - "lodash.foreach": { + "node_modules/lodash.foreach": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-3.0.3.tgz", "integrity": "sha1-b9fvt5aRrs1n/erCdhyY5wHWw5o=", - "requires": { + "dependencies": { "lodash._arrayeach": "^3.0.0", "lodash._baseeach": "^3.0.0", "lodash._bindcallback": "^3.0.0", "lodash.isarray": "^3.0.0" } }, - "lodash.isarguments": { + "node_modules/lodash.isarguments": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=" }, - "lodash.isarray": { + "node_modules/lodash.isarray": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=" }, - "lodash.keys": { + "node_modules/lodash.keys": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", - "requires": { + "dependencies": { "lodash._getnative": "^3.0.0", "lodash.isarguments": "^3.0.0", "lodash.isarray": "^3.0.0" } }, - "lodash.restparam": { + "node_modules/lodash.restparam": { "version": "3.6.1", "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=" }, - "longest": { + "node_modules/longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "engines": { + "node": ">=0.10.0" + } }, - "lowercase-keys": { + "node_modules/lowercase-keys": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "engines": { + "node": ">=0.10.0" + } }, - "mime": { + "node_modules/mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } }, - "mime-db": { + "node_modules/mime-db": { "version": "1.44.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", + "engines": { + "node": ">= 0.6" + } }, - "mime-types": { + "node_modules/mime-types": { "version": "2.1.27", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", - "requires": { + "dependencies": { "mime-db": "1.44.0" + }, + "engines": { + "node": ">= 0.6" } }, - "minimatch": { + "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "requires": { + "dependencies": { "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, - "minimist": { + "node_modules/minimist": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" }, - "mkdirp": { + "node_modules/mkdirp": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "requires": { + "dependencies": { "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" } }, - "ms": { + "node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, - "nested-error-stacks": { + "node_modules/nested-error-stacks": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-1.0.2.tgz", "integrity": "sha1-GfYZWRUZ8JZ2mlupqG5u7sgjw88=", - "requires": { + "dependencies": { "inherits": "~2.0.1" } }, - "nodemon": { + "node_modules/nodemon": { "version": "2.0.20", "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.20.tgz", "integrity": "sha512-Km2mWHKKY5GzRg6i1j5OxOHQtuvVsgskLfigG25yTtbyfRGn/GNvIbRyOf1PSCKJ2aT/58TiuUsuOU5UToVViw==", - "requires": { + "dependencies": { "chokidar": "^3.5.2", "debug": "^3.2.7", "ignore-by-default": "^1.0.1", @@ -1074,295 +1320,376 @@ "touch": "^3.1.0", "undefsafe": "^2.0.5" }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/nodemon/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } + "ms": "^2.1.1" + } + }, + "node_modules/nodemon/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/nodemon/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "nopt": { + "node_modules/nopt": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", - "requires": { + "dependencies": { "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "*" } }, - "normalize-path": { + "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } }, - "nth-check": { + "node_modules/nth-check": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "requires": { + "dependencies": { "boolbase": "~1.0.0" } }, - "oauth-sign": { + "node_modules/oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "engines": { + "node": "*" + } }, - "object-assign": { + "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "engines": { + "node": ">=0.10.0" + } }, - "once": { + "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { + "dependencies": { "wrappy": "1" } }, - "os-homedir": { + "node_modules/os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "engines": { + "node": ">=0.10.0" + } }, - "os-tmpdir": { + "node_modules/os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "engines": { + "node": ">=0.10.0" + } }, - "osenv": { + "node_modules/osenv": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "requires": { + "dependencies": { "os-homedir": "^1.0.0", "os-tmpdir": "^1.0.0" } }, - "package-json": { + "node_modules/package-json": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/package-json/-/package-json-1.2.0.tgz", "integrity": "sha1-yOysCUInzfdqMWh07QXifMk5oOA=", - "requires": { + "dependencies": { "got": "^3.2.0", "registry-url": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "pascal-case": { + "node_modules/pascal-case": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.1.tgz", "integrity": "sha512-XIeHKqIrsquVTQL2crjq3NfJUxmdLasn3TYOU0VBM+UX2a6ztAWBlJQBePLGY7VHW8+2dRadeIPK5+KImwTxQA==", - "requires": { + "dependencies": { "no-case": "^3.0.3", "tslib": "^1.10.0" - }, + } + }, + "node_modules/pascal-case/node_modules/lower-case": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.1.tgz", + "integrity": "sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ==", "dependencies": { - "lower-case": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.1.tgz", - "integrity": "sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ==", - "requires": { - "tslib": "^1.10.0" - } - }, - "no-case": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.3.tgz", - "integrity": "sha512-ehY/mVQCf9BL0gKfsJBvFJen+1V//U+0HQMPrWct40ixE4jnv0bfvxDbWtAHL9EcaPEOJHVVYKoQn1TlZUB8Tw==", - "requires": { - "lower-case": "^2.0.1", - "tslib": "^1.10.0" - } - } + "tslib": "^1.10.0" + } + }, + "node_modules/pascal-case/node_modules/no-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.3.tgz", + "integrity": "sha512-ehY/mVQCf9BL0gKfsJBvFJen+1V//U+0HQMPrWct40ixE4jnv0bfvxDbWtAHL9EcaPEOJHVVYKoQn1TlZUB8Tw==", + "dependencies": { + "lower-case": "^2.0.1", + "tslib": "^1.10.0" } }, - "performance-now": { + "node_modules/performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, - "picomatch": { + "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } }, - "pinkie": { + "node_modules/pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "engines": { + "node": ">=0.10.0" + } }, - "pinkie-promise": { + "node_modules/pinkie-promise": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "requires": { + "dependencies": { "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "prepend-http": { + "node_modules/prepend-http": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "engines": { + "node": ">=0.10.0" + } }, - "process-nextick-args": { + "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, - "promise": { + "node_modules/promise": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "requires": { + "dependencies": { "asap": "~2.0.3" } }, - "psl": { + "node_modules/psl": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" }, - "pstree.remy": { + "node_modules/pstree.remy": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" }, - "punycode": { + "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "engines": { + "node": ">=6" + } }, - "q": { + "node_modules/q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } }, - "qs": { + "node_modules/qs": { "version": "6.5.3", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "engines": { + "node": ">=0.6" + } }, - "rc": { + "node_modules/rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "requires": { + "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" } }, - "read-all-stream": { + "node_modules/read-all-stream": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz", "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=", - "requires": { + "dependencies": { "pinkie-promise": "^2.0.0", "readable-stream": "^2.0.0" }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-all-stream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "node_modules/read-all-stream/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "readable-stream": { + "node_modules/read-all-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/read-all-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/readable-stream": { "version": "1.1.14", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "requires": { + "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.1", "isarray": "0.0.1", "string_decoder": "~0.10.x" } }, - "readdirp": { + "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "requires": { + "dependencies": { "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" } }, - "registry-url": { + "node_modules/registry-url": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", - "requires": { + "dependencies": { "rc": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "relateurl": { + "node_modules/relateurl": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=" + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "engines": { + "node": ">= 0.10" + } }, - "repeat-string": { + "node_modules/repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "engines": { + "node": ">=0.10" + } }, - "repeating": { + "node_modules/repeating": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/repeating/-/repeating-1.1.3.tgz", "integrity": "sha1-PUEUIYh3U3SU+X93+Xhfq4EPpKw=", - "requires": { + "dependencies": { "is-finite": "^1.0.0" + }, + "bin": { + "repeating": "cli.js" + }, + "engines": { + "node": ">=0.10.0" } }, - "request": { + "node_modules/request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "requires": { + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "dependencies": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", "caseless": "~0.12.0", @@ -1383,95 +1710,132 @@ "tough-cookie": "~2.5.0", "tunnel-agent": "^0.6.0", "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" } }, - "right-align": { + "node_modules/right-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "requires": { + "dependencies": { "align-text": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "safe-buffer": { + "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "safer-buffer": { + "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "sax": { + "node_modules/sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, - "semver": { + "node_modules/semver": { "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "bin": { + "semver": "bin/semver" + } }, - "semver-diff": { + "node_modules/semver-diff": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", - "requires": { + "dependencies": { "semver": "^5.0.3" + }, + "engines": { + "node": ">=0.10.0" } }, - "simple-update-notifier": { + "node_modules/simple-update-notifier": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", - "requires": { + "dependencies": { "semver": "~7.0.0" }, - "dependencies": { - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" - } + "engines": { + "node": ">=8.10.0" } }, - "slide": { + "node_modules/simple-update-notifier/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/slide": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", - "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=" + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "engines": { + "node": "*" + } }, - "source-map": { + "node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "engines": { + "node": ">=0.10.0" + } }, - "source-map-support": { + "node_modules/source-map-support": { "version": "0.5.19", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", - "requires": { + "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } } }, - "sprintf-js": { + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, - "sshpk": { + "node_modules/sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "requires": { + "dependencies": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", "bcrypt-pbkdf": "^1.0.0", @@ -1481,49 +1845,70 @@ "jsbn": "~0.1.0", "safer-buffer": "^2.0.2", "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" } }, - "stream-shift": { + "node_modules/stream-shift": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" }, - "string-length": { + "node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, + "node_modules/string-length": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz", "integrity": "sha1-VpcPscOFWOnnC3KL894mmsRa36w=", - "requires": { + "dependencies": { "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - }, - "strip-ansi": { + "node_modules/strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { + "dependencies": { "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "strip-json-comments": { + "node_modules/strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "engines": { + "node": ">=0.10.0" + } }, - "supports-color": { + "node_modules/supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "engines": { + "node": ">=0.8.0" + } }, - "svgo": { + "node_modules/svgo": { "version": "0.6.6", "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.6.6.tgz", "integrity": "sha1-s0CIkDbyD5tEdUMHfQ9Vc+0ETAg=", - "requires": { + "deprecated": "This SVGO version is no longer supported. Upgrade to v2.x.x.", + "dependencies": { "coa": "~1.0.1", "colors": "~1.1.2", "csso": "~2.0.0", @@ -1531,107 +1916,143 @@ "mkdirp": "~0.5.1", "sax": "~1.2.1", "whet.extend": "~0.9.9" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=0.10.0" } }, - "terser": { + "node_modules/terser": { "version": "4.8.1", "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", - "requires": { + "dependencies": { "commander": "^2.20.0", "source-map": "~0.6.1", "source-map-support": "~0.5.12" }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" } }, - "then-fs": { + "node_modules/then-fs": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/then-fs/-/then-fs-2.0.0.tgz", "integrity": "sha1-cveS3Z0xcFqRrhnr/Piz+WjIHaI=", - "requires": { + "dependencies": { "promise": ">=3.2 <8" } }, - "timed-out": { + "node_modules/timed-out": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-2.0.0.tgz", - "integrity": "sha1-84sK6B03R9YoAB9B2vxlKs5nHAo=" + "integrity": "sha1-84sK6B03R9YoAB9B2vxlKs5nHAo=", + "engines": { + "node": ">=0.10.0" + } }, - "to-regex-range": { + "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "requires": { + "dependencies": { "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" } }, - "touch": { + "node_modules/touch": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", - "requires": { + "dependencies": { "nopt": "~1.0.10" + }, + "bin": { + "nodetouch": "bin/nodetouch.js" } }, - "tough-cookie": { + "node_modules/tough-cookie": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "requires": { + "dependencies": { "psl": "^1.1.28", "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" } }, - "tslib": { + "node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, - "tunnel-agent": { + "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "requires": { + "dependencies": { "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" } }, - "tweetnacl": { + "node_modules/tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" }, - "uglify-js": { + "node_modules/uglify-js": { "version": "2.8.29", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "requires": { + "dependencies": { "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", "yargs": "~3.10.0" + }, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + }, + "optionalDependencies": { + "uglify-to-browserify": "~1.0.0" } }, - "uglify-to-browserify": { + "node_modules/uglify-to-browserify": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", "optional": true }, - "undefsafe": { + "node_modules/undefsafe": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" }, - "update-notifier": { + "node_modules/update-notifier": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-0.5.0.tgz", "integrity": "sha1-B7XcIGazYnqztPUwEw9+3doHpMw=", - "requires": { + "dependencies": { "chalk": "^1.0.0", "configstore": "^1.0.0", "is-npm": "^1.0.0", @@ -1639,89 +2060,115 @@ "repeating": "^1.1.2", "semver-diff": "^2.0.0", "string-length": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "uri-js": { + "node_modules/uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "requires": { + "dependencies": { "punycode": "^2.1.0" } }, - "util-deprecate": { + "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, - "uuid": { + "node_modules/uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } }, - "verror": { + "node_modules/verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "requires": { + "engines": [ + "node >=0.6.0" + ], + "dependencies": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", "extsprintf": "^1.2.0" } }, - "whet.extend": { + "node_modules/whet.extend": { "version": "0.9.9", "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", - "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=" + "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=", + "engines": { + "node": ">=0.6.0" + } }, - "window-size": { + "node_modules/window-size": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "engines": { + "node": ">= 0.8.0" + } }, - "wordwrap": { + "node_modules/wordwrap": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "engines": { + "node": ">=0.4.0" + } }, - "wrappy": { + "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, - "write-file-atomic": { + "node_modules/write-file-atomic": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", - "requires": { + "dependencies": { "graceful-fs": "^4.1.11", "imurmurhash": "^0.1.4", "slide": "^1.1.5" } }, - "xdg-basedir": { + "node_modules/xdg-basedir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-2.0.0.tgz", "integrity": "sha1-7byQPMOF/ARSPZZqM1UEtVBNG9I=", - "requires": { + "dependencies": { "os-homedir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "yargs": { + "node_modules/yargs": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "requires": { + "dependencies": { "camelcase": "^1.0.2", "cliui": "^2.1.0", "decamelize": "^1.0.0", "window-size": "0.1.0" } }, - "zlib": { + "node_modules/zlib": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/zlib/-/zlib-1.0.5.tgz", - "integrity": "sha1-bnyXL8NxxkWmr7A6sUdp3vEU/MA=" + "integrity": "sha1-bnyXL8NxxkWmr7A6sUdp3vEU/MA=", + "hasInstallScript": true, + "engines": { + "node": ">=0.2.0" + } } } } diff --git a/package.json b/package.json index aa4cfe8791..2da6f7a8e8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "wled", - "version": "0.14.2-b1", + "version": "0.14.2-b2", "description": "Tools for WLED project", "main": "tools/cdata.js", "directories": { diff --git a/platformio.ini b/platformio.ini index d7ed06eda4..9ca9e37c82 100644 --- a/platformio.ini +++ b/platformio.ini @@ -181,7 +181,8 @@ lib_deps = fastled/FastLED @ 3.6.0 IRremoteESP8266 @ 2.8.2 makuna/NeoPixelBus @ 2.7.5 - https://github.com/Aircoookie/ESPAsyncWebServer.git @ ~2.0.7 + ; https://github.com/Aircoookie/ESPAsyncWebServer.git @ ~2.0.7 + https://github.com/willmmiles/ESPAsyncWebServer.git @ 2.1.0 #For use of the TTGO T-Display ESP32 Module with integrated TFT display uncomment the following line #TFT_eSPI #For compatible OLED display uncomment following @@ -332,6 +333,7 @@ board = nodemcuv2 platform = ${common.platform_wled_default} platform_packages = ${common.platform_packages} board_build.ldscript = ${common.ldscript_4m1m} +board_build.f_cpu = 160000000L build_unflags = ${common.build_unflags} build_flags = ${common.build_flags_esp8266} -D WLED_RELEASE_NAME=ESP8266 #-DWLED_DISABLE_2D lib_deps = ${esp8266.lib_deps} @@ -342,6 +344,7 @@ board = esp_wroom_02 platform = ${common.platform_wled_default} platform_packages = ${common.platform_packages} board_build.ldscript = ${common.ldscript_2m512k} +board_build.f_cpu = 160000000L build_unflags = ${common.build_unflags} build_flags = ${common.build_flags_esp8266} -D WLED_RELEASE_NAME=ESP02 lib_deps = ${esp8266.lib_deps} @@ -351,6 +354,7 @@ board = esp01_1m platform = ${common.platform_wled_default} platform_packages = ${common.platform_packages} board_build.ldscript = ${common.ldscript_1m128k} +board_build.f_cpu = 160000000L build_unflags = ${common.build_unflags} build_flags = ${common.build_flags_esp8266} -D WLED_RELEASE_NAME=ESP01 -D WLED_DISABLE_OTA ; -D WLED_USE_UNREAL_MATH ;; may cause wrong sunset/sunrise times, but saves 7064 bytes FLASH and 975 bytes RAM diff --git a/wled00/html_other.h b/wled00/html_other.h index 5588cd1007..c7a895916c 100644 --- a/wled00/html_other.h +++ b/wled00/html_other.h @@ -44,44 +44,44 @@ const char PAGE_dmxmap[] PROGMEM = R"=====()====="; const uint16_t PAGE_update_length = 616; const uint8_t PAGE_update[] PROGMEM = { 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0x75, 0x53, 0x5d, 0x6f, 0xd4, 0x30, - 0x10, 0x7c, 0xcf, 0xaf, 0x70, 0xfd, 0x74, 0x27, 0x71, 0x36, 0xad, 0x78, 0xa1, 0x24, 0x29, 0x94, - 0x56, 0xa8, 0x12, 0x12, 0x95, 0xda, 0x82, 0x78, 0x42, 0x8e, 0xbd, 0xb9, 0x98, 0x73, 0xec, 0xd4, + 0x10, 0x7c, 0xcf, 0xaf, 0x70, 0xfd, 0x74, 0x27, 0x71, 0x36, 0x54, 0xbc, 0x50, 0x92, 0x14, 0x4a, + 0x2b, 0x54, 0x09, 0xa9, 0x95, 0xda, 0x82, 0x78, 0x42, 0x8e, 0xbd, 0xb9, 0x98, 0x73, 0xec, 0xd4, 0xde, 0xdc, 0xe9, 0x84, 0xfa, 0xdf, 0xd9, 0x38, 0x77, 0x05, 0xf1, 0xf1, 0x12, 0xc5, 0xd9, 0xd9, - 0xf1, 0xee, 0xcc, 0xa4, 0x3c, 0xb9, 0xfa, 0xf4, 0xfe, 0xfe, 0xeb, 0xed, 0x35, 0xeb, 0xb0, 0x77, - 0x75, 0x79, 0x78, 0x82, 0x32, 0x75, 0xd9, 0x03, 0x2a, 0xa6, 0x83, 0x47, 0xf0, 0x58, 0xf1, 0x9d, - 0x35, 0xd8, 0x55, 0x06, 0xb6, 0x56, 0xc3, 0x2a, 0x1f, 0x38, 0xf3, 0xaa, 0x87, 0x8a, 0x6f, 0x2d, - 0xec, 0x86, 0x10, 0x91, 0xd7, 0x45, 0x89, 0x16, 0x1d, 0xd4, 0x5f, 0x3e, 0x5e, 0x5f, 0xb1, 0x87, - 0xc1, 0x28, 0x84, 0x52, 0xce, 0x9f, 0xca, 0xa4, 0xa3, 0x1d, 0xb0, 0x2e, 0xda, 0xd1, 0x6b, 0xb4, - 0xc1, 0xb3, 0xcb, 0xc5, 0xf2, 0xc7, 0xce, 0x7a, 0x13, 0x76, 0xa2, 0xb3, 0x09, 0x43, 0xdc, 0x8b, - 0x46, 0xe9, 0xcd, 0x62, 0xf9, 0xf4, 0x0c, 0x79, 0x20, 0x88, 0x09, 0x7a, 0xec, 0x69, 0x02, 0xb1, - 0x06, 0xbc, 0x76, 0x30, 0xbd, 0x5e, 0xee, 0x6f, 0xcc, 0x82, 0x8f, 0x2d, 0x5f, 0x8a, 0x84, 0x7b, - 0x07, 0xc2, 0xd8, 0x34, 0x38, 0xb5, 0xaf, 0xb8, 0x0f, 0x1e, 0xf8, 0x8b, 0xff, 0xb6, 0xf4, 0x69, - 0xfd, 0x77, 0x4f, 0xe3, 0x82, 0xde, 0xf0, 0xa7, 0xa2, 0x94, 0x87, 0x11, 0x0f, 0xa3, 0xb2, 0x14, - 0x75, 0xc5, 0x65, 0x02, 0x44, 0xeb, 0xd7, 0x49, 0x26, 0xf1, 0x3d, 0x5d, 0x0c, 0xd5, 0x6b, 0x5e, - 0xff, 0x86, 0x9c, 0xa8, 0xea, 0xe2, 0xad, 0xed, 0x27, 0x01, 0xd8, 0x18, 0xdd, 0x82, 0xcf, 0xf4, - 0x3a, 0x25, 0xbe, 0x7c, 0x43, 0xc8, 0x8c, 0x28, 0xe5, 0x2c, 0x69, 0x13, 0xcc, 0x9e, 0x05, 0xef, - 0x82, 0x32, 0x15, 0xff, 0x00, 0xf8, 0x79, 0xb1, 0x24, 0xba, 0xee, 0xac, 0x2e, 0xb2, 0x64, 0x77, - 0xa1, 0xc5, 0x9d, 0x8a, 0xf0, 0xac, 0x1d, 0x55, 0xca, 0x36, 0xc4, 0x9e, 0x91, 0x17, 0x5d, 0xa0, - 0x9e, 0xdb, 0x4f, 0x77, 0xf7, 0x9c, 0xa9, 0x2c, 0x4f, 0xc5, 0x85, 0x1c, 0x33, 0x90, 0x33, 0x4b, - 0x35, 0x12, 0x84, 0x15, 0x40, 0xd2, 0xed, 0x07, 0x72, 0xa5, 0x1f, 0x1d, 0xda, 0x41, 0x45, 0x94, - 0x13, 0xc1, 0x8a, 0x60, 0x8a, 0xd3, 0xd5, 0x69, 0x6c, 0x7a, 0x4b, 0x76, 0x3e, 0x4c, 0x37, 0xdf, - 0xf8, 0x84, 0xca, 0x39, 0x30, 0x6c, 0x0b, 0x31, 0x11, 0xe5, 0x39, 0x2b, 0xd3, 0xa0, 0x3c, 0x2b, - 0xb4, 0x53, 0x29, 0x55, 0x3c, 0xd9, 0x81, 0xd7, 0x2f, 0xc5, 0xe9, 0x2b, 0x71, 0xb6, 0x6a, 0x4e, - 0x69, 0x1b, 0x2a, 0xd2, 0x16, 0xb1, 0xbe, 0x0a, 0xbb, 0xbc, 0x05, 0xc3, 0x0e, 0x98, 0xa3, 0x11, - 0x12, 0xb2, 0xc6, 0x7a, 0x15, 0xf7, 0x44, 0xa1, 0x58, 0xd1, 0x45, 0x68, 0x2b, 0xde, 0x21, 0x0e, - 0xe9, 0x5c, 0xca, 0xb5, 0xc5, 0x6e, 0x6c, 0x84, 0x0e, 0xbd, 0x7c, 0x67, 0xa3, 0x0e, 0x21, 0x6c, - 0x2c, 0xc8, 0x69, 0x65, 0x19, 0xc1, 0x81, 0x4a, 0x90, 0x38, 0x43, 0x15, 0xc9, 0xaf, 0x8a, 0x7f, - 0x6b, 0x9c, 0xf2, 0x1b, 0x92, 0xc5, 0xf6, 0x6b, 0x56, 0x64, 0x13, 0x8e, 0x3c, 0xf4, 0x45, 0xa4, - 0xce, 0x82, 0x33, 0x49, 0xd8, 0x70, 0xa0, 0x3d, 0x52, 0xfc, 0x49, 0x2d, 0xd2, 0x76, 0x7d, 0x91, - 0xe5, 0xaf, 0x5a, 0x9a, 0x70, 0x95, 0x1e, 0x47, 0x92, 0x76, 0x0a, 0xa9, 0x54, 0x79, 0x87, 0xd2, - 0xfa, 0x61, 0x44, 0x36, 0xcb, 0xd5, 0x5a, 0x07, 0xc7, 0x40, 0x1f, 0x45, 0x8d, 0xf0, 0x38, 0xda, - 0x08, 0x66, 0x46, 0x37, 0x23, 0x22, 0x65, 0x72, 0x86, 0xcf, 0x32, 0x12, 0xd9, 0xec, 0xd4, 0x49, - 0x29, 0xe7, 0xf2, 0x3f, 0xa0, 0xf3, 0x61, 0xd2, 0x5e, 0x3b, 0xab, 0x37, 0x15, 0xbf, 0x9c, 0xa4, - 0xbf, 0xa4, 0xa8, 0xff, 0x6a, 0xca, 0x1e, 0xd5, 0xa5, 0xb1, 0xdb, 0x22, 0x5b, 0x39, 0x05, 0x95, - 0x68, 0xea, 0xcc, 0x4e, 0xe9, 0x13, 0x42, 0x10, 0x38, 0x93, 0xdf, 0xe6, 0x65, 0x99, 0x09, 0xcc, - 0x07, 0x64, 0xda, 0x05, 0x3a, 0x84, 0x48, 0xb3, 0xb6, 0x11, 0x52, 0x97, 0xfd, 0x18, 0xd4, 0x1a, - 0xd8, 0xf9, 0xb2, 0x94, 0xc4, 0x37, 0xad, 0x3b, 0xa5, 0x6e, 0x8a, 0xe0, 0xf4, 0x6f, 0xff, 0x04, - 0xb4, 0x8f, 0xf2, 0x27, 0xf1, 0x03, 0x00, 0x00 + 0xf1, 0xee, 0xcc, 0xa4, 0x3c, 0xb9, 0xbc, 0xf9, 0x70, 0xff, 0xf5, 0xf6, 0x8a, 0x75, 0xd8, 0xbb, + 0xba, 0x3c, 0x3c, 0x41, 0x99, 0xba, 0xec, 0x01, 0x15, 0xd3, 0xc1, 0x23, 0x78, 0xac, 0xf8, 0xce, + 0x1a, 0xec, 0x2a, 0x03, 0x5b, 0xab, 0x61, 0x95, 0x0f, 0x9c, 0x79, 0xd5, 0x43, 0xc5, 0xb7, 0x16, + 0x76, 0x43, 0x88, 0xc8, 0xeb, 0xa2, 0x44, 0x8b, 0x0e, 0xea, 0x2f, 0x9f, 0xae, 0x2e, 0xd9, 0xc3, + 0x60, 0x14, 0x42, 0x29, 0xe7, 0x4f, 0x65, 0xd2, 0xd1, 0x0e, 0x58, 0x17, 0xed, 0xe8, 0x35, 0xda, + 0xe0, 0xd9, 0xc5, 0x62, 0xf9, 0x63, 0x67, 0xbd, 0x09, 0x3b, 0xd1, 0xd9, 0x84, 0x21, 0xee, 0x45, + 0xa3, 0xf4, 0x66, 0xb1, 0x7c, 0x7a, 0x86, 0x3c, 0x10, 0xc4, 0x04, 0x3d, 0xf6, 0x34, 0x81, 0x58, + 0x03, 0x5e, 0x39, 0x98, 0x5e, 0x2f, 0xf6, 0xd7, 0x66, 0xc1, 0xc7, 0x96, 0x2f, 0x45, 0xc2, 0xbd, + 0x03, 0x61, 0x6c, 0x1a, 0x9c, 0xda, 0x57, 0xdc, 0x07, 0x0f, 0xfc, 0xc5, 0x7f, 0x5b, 0xfa, 0xb4, + 0xfe, 0xbb, 0xa7, 0x71, 0x41, 0x6f, 0xf8, 0x53, 0x51, 0xca, 0xc3, 0x88, 0x87, 0x51, 0x59, 0x8a, + 0xba, 0xe2, 0x32, 0x01, 0xa2, 0xf5, 0xeb, 0x24, 0x93, 0xf8, 0x9e, 0xce, 0x87, 0xea, 0x0d, 0xaf, + 0x7f, 0x43, 0x4e, 0x54, 0x75, 0xf1, 0xce, 0xf6, 0x93, 0x00, 0x6c, 0x8c, 0x6e, 0xc1, 0x67, 0x7a, + 0x9d, 0x12, 0x5f, 0xbe, 0x25, 0x64, 0x46, 0x94, 0x72, 0x96, 0xb4, 0x09, 0x66, 0xcf, 0x82, 0x77, + 0x41, 0x99, 0x8a, 0x7f, 0x04, 0xfc, 0xbc, 0x58, 0x12, 0x5d, 0x77, 0x5a, 0x17, 0x59, 0xb2, 0xbb, + 0xd0, 0xe2, 0x4e, 0x45, 0x78, 0xd6, 0x8e, 0x2a, 0x65, 0x1b, 0x62, 0xcf, 0xc8, 0x8b, 0x2e, 0x50, + 0xcf, 0xed, 0xcd, 0xdd, 0x3d, 0x67, 0x2a, 0xcb, 0x53, 0x71, 0x21, 0xc7, 0x0c, 0xe4, 0xcc, 0x52, + 0x8d, 0x04, 0x61, 0x05, 0x90, 0x74, 0xfb, 0x81, 0x5c, 0xe9, 0x47, 0x87, 0x76, 0x50, 0x11, 0xe5, + 0x44, 0xb0, 0x22, 0x98, 0xe2, 0x74, 0x75, 0x1a, 0x9b, 0xde, 0x92, 0x9d, 0x0f, 0xd3, 0xcd, 0xd7, + 0x3e, 0xa1, 0x72, 0x0e, 0x0c, 0xdb, 0x42, 0x4c, 0x44, 0x79, 0xc6, 0xca, 0x34, 0x28, 0xcf, 0x0a, + 0xed, 0x54, 0x4a, 0x15, 0x4f, 0x76, 0xe0, 0xf5, 0x4b, 0xf1, 0xea, 0xb5, 0x38, 0x5d, 0x35, 0xa7, + 0xb4, 0x0d, 0x15, 0x69, 0x8b, 0x58, 0x5f, 0x86, 0x5d, 0xde, 0x82, 0x61, 0x07, 0xcc, 0xd1, 0x08, + 0x09, 0x59, 0x63, 0xbd, 0x8a, 0x7b, 0xa2, 0x50, 0xac, 0xe8, 0x22, 0xb4, 0x15, 0xef, 0x10, 0x87, + 0x74, 0x26, 0xe5, 0xda, 0x62, 0x37, 0x36, 0x42, 0x87, 0x5e, 0xbe, 0xb7, 0x51, 0x87, 0x10, 0x36, + 0x16, 0xe4, 0xb4, 0xb2, 0x8c, 0xe0, 0x40, 0x25, 0x48, 0x9c, 0xa1, 0x8a, 0xe4, 0x57, 0xc5, 0xbf, + 0x35, 0x4e, 0xf9, 0x0d, 0xc9, 0x62, 0xfb, 0x35, 0x2b, 0xb2, 0x09, 0x47, 0x1e, 0xfa, 0x22, 0x52, + 0x67, 0xc1, 0x99, 0x24, 0x6c, 0x38, 0xd0, 0x1e, 0x29, 0xfe, 0xa4, 0x16, 0x69, 0xbb, 0x3e, 0xcf, + 0xf2, 0x57, 0x2d, 0x4d, 0xb8, 0x4a, 0x8f, 0x23, 0x49, 0x3b, 0x85, 0x54, 0xaa, 0xbc, 0x43, 0x69, + 0xfd, 0x30, 0x22, 0x9b, 0xe5, 0x6a, 0xad, 0x83, 0x63, 0xa0, 0x8f, 0xa2, 0x46, 0x78, 0x1c, 0x6d, + 0x04, 0x33, 0xa3, 0x9b, 0x11, 0x91, 0x32, 0x39, 0xc3, 0x67, 0x19, 0x89, 0x6c, 0x76, 0xea, 0xa4, + 0x94, 0x73, 0xf9, 0x1f, 0xd0, 0xf9, 0x30, 0x69, 0xaf, 0x9d, 0xd5, 0x9b, 0x8a, 0x5f, 0x4c, 0xd2, + 0x5f, 0x50, 0xd4, 0x7f, 0x35, 0x65, 0x8f, 0xea, 0xd2, 0xd8, 0x6d, 0x91, 0xad, 0x9c, 0x82, 0x4a, + 0x34, 0x75, 0x66, 0xa7, 0xf4, 0x09, 0x21, 0x08, 0x9c, 0xc9, 0x6f, 0xf3, 0xb2, 0xcc, 0x04, 0xe6, + 0x03, 0x32, 0xed, 0x02, 0x1d, 0x42, 0xa4, 0x59, 0xdb, 0x08, 0xa9, 0xcb, 0x7e, 0x0c, 0x6a, 0x0d, + 0xec, 0x6c, 0x59, 0x4a, 0xe2, 0x9b, 0xd6, 0x9d, 0x52, 0x37, 0x45, 0x70, 0xfa, 0xb7, 0x7f, 0x02, + 0x70, 0xe8, 0x3d, 0x35, 0xf1, 0x03, 0x00, 0x00 }; diff --git a/wled00/html_settings.h b/wled00/html_settings.h index 90f3689770..e13d71a8e9 100644 --- a/wled00/html_settings.h +++ b/wled00/html_settings.h @@ -1753,7 +1753,7 @@ const uint8_t PAGE_settings_sec[] PROGMEM = { 0xe3, 0x31, 0x6e, 0xb9, 0x6d, 0x91, 0x34, 0x85, 0xd0, 0xfe, 0x8c, 0x84, 0x86, 0x9b, 0x55, 0xe3, 0x10, 0x57, 0xf7, 0xde, 0xb1, 0xd4, 0x89, 0x52, 0x6a, 0x26, 0x45, 0x8f, 0x66, 0xf0, 0x1e, 0xfa, 0x74, 0xac, 0xa7, 0xf4, 0x73, 0xd7, 0xc7, 0x71, 0x8e, 0x16, 0xc9, 0x07, 0xb4, 0x4c, 0x49, 0xd0, - 0x61, 0x77, 0x42, 0x13, 0xcd, 0xb0, 0xdd, 0x70, 0xef, 0x79, 0xb8, 0xbf, 0x33, 0xde, 0x5b, 0x71, + 0x61, 0x77, 0x42, 0x13, 0xcd, 0xb0, 0xdd, 0x70, 0xef, 0x79, 0xb8, 0xbf, 0x33, 0xde, 0x5f, 0x71, 0xd5, 0xcf, 0x68, 0x58, 0xc8, 0x99, 0xec, 0xb9, 0x6b, 0x1b, 0x4d, 0xb0, 0x4a, 0x9b, 0x1d, 0xb0, 0xe1, 0x4e, 0xa2, 0x45, 0x2a, 0x29, 0x49, 0x3b, 0xf7, 0xf5, 0x6f, 0x6e, 0x45, 0xb7, 0x16, 0x74, 0x01, 0x05, 0xff, 0x49, 0x51, 0xd3, 0xa8, 0x29, 0x45, 0x22, 0xc1, 0x39, 0x16, 0x1d, 0x61, 0xb6, @@ -1767,8 +1767,8 @@ const uint8_t PAGE_settings_sec[] PROGMEM = { 0x28, 0x34, 0xbc, 0x82, 0x1b, 0xc6, 0xa0, 0x41, 0x82, 0x50, 0x71, 0x5d, 0x2e, 0x5a, 0x26, 0x30, 0xb2, 0xe4, 0x54, 0xb3, 0xee, 0x27, 0x05, 0xe6, 0x7e, 0x25, 0x20, 0xaa, 0xa7, 0x2d, 0x35, 0xaf, 0x52, 0x9d, 0x10, 0x4b, 0xd4, 0x3f, 0xc3, 0x7c, 0x77, 0x90, 0xfd, 0x76, 0x8e, 0xed, 0xfc, 0xd4, - 0x20, 0xdb, 0xa3, 0x6e, 0x83, 0x0f, 0x9a, 0xdf, 0x69, 0x98, 0xa7, 0x1f, 0x77, 0xff, 0x0b, 0x01, - 0x7a, 0xb0, 0xe0, 0xec, 0x15, 0x00, 0x00 + 0x20, 0xdb, 0xa3, 0x6e, 0x83, 0x0f, 0x9a, 0xdf, 0x69, 0x98, 0xa7, 0x1f, 0x77, 0xff, 0x0b, 0xaf, + 0x1a, 0xd5, 0x6f, 0xec, 0x15, 0x00, 0x00 }; diff --git a/wled00/improv.cpp b/wled00/improv.cpp index db1b7115c4..64b76418b9 100644 --- a/wled00/improv.cpp +++ b/wled00/improv.cpp @@ -210,7 +210,7 @@ void sendImprovInfoResponse() { //Use serverDescription if it has been changed from the default "WLED", else mDNS name bool useMdnsName = (strcmp(serverDescription, "WLED") == 0 && strlen(cmDNS) > 0); char vString[20]; - sprintf_P(vString, PSTR("0.14.2-b1/%i"), VERSION); + sprintf_P(vString, PSTR("0.14.2-b2/%i"), VERSION); const char *str[4] = {"WLED", vString, bString, useMdnsName ? cmDNS : serverDescription}; sendImprovRPCResult(ImprovRPCType::Request_Info, 4, str); diff --git a/wled00/wled.h b/wled00/wled.h index 47c8f2ae02..152f42fd37 100644 --- a/wled00/wled.h +++ b/wled00/wled.h @@ -8,7 +8,7 @@ */ // version code in format yymmddb (b = daily build) -#define VERSION 2402120 +#define VERSION 2403020 //uncomment this if you have a "my_config.h" file you'd like to use //#define WLED_USE_MY_CONFIG From d9b0df94e2a344b05bac88270a162b8e25f86ec5 Mon Sep 17 00:00:00 2001 From: Will Miles Date: Mon, 12 Feb 2024 08:59:50 -0500 Subject: [PATCH 18/35] LockedJsonResponse: Release early if possible Release the json buffer lock as soon as we've finished serializing. This should slightly reduce the number of lock collisions as the response class isn't destructed until after the last packet is ack'd. --- wled00/json.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/wled00/json.cpp b/wled00/json.cpp index e63a09ee98..af8ed89ef6 100644 --- a/wled00/json.cpp +++ b/wled00/json.cpp @@ -1022,14 +1022,26 @@ void serializeModeNames(JsonArray arr) // Global buffer locking response helper class (to make sure lock is released when AsyncJsonResponse is destroyed) class LockedJsonResponse: public AsyncJsonResponse { + bool _holding_lock; public: // WARNING: constructor assumes requestJSONBufferLock() was successfully acquired externally/prior to constructing the instance // Not a good practice with C++. Unfortunately AsyncJsonResponse only has 2 constructors - for dynamic buffer or existing buffer, // with existing buffer it clears its content during construction // if the lock was not acquired (using JSONBufferGuard class) previous implementation still cleared existing buffer - inline LockedJsonResponse(JsonDocument *doc, bool isArray) : AsyncJsonResponse(doc, isArray) {}; + inline LockedJsonResponse(JsonDocument* doc, bool isArray) : AsyncJsonResponse(doc, isArray), _holding_lock(true) {}; + + virtual size_t _fillBuffer(uint8_t *buf, size_t maxLen) { + size_t result = AsyncJsonResponse::_fillBuffer(buf, maxLen); + // Release lock as soon as we're done filling content + if (((result + _sentLength) >= (_contentLength)) && _holding_lock) { + releaseJSONBufferLock(); + _holding_lock = false; + } + return result; + } + // destructor will remove JSON buffer lock when response is destroyed in AsyncWebServer - virtual ~LockedJsonResponse() { releaseJSONBufferLock(); }; + virtual ~LockedJsonResponse() { if (_holding_lock) releaseJSONBufferLock(); }; }; void serveJson(AsyncWebServerRequest* request) From 91c11a18e0fd9d447a62f5798e408bb649342edc Mon Sep 17 00:00:00 2001 From: Christian Schwinne Date: Sat, 9 Mar 2024 21:31:53 +0100 Subject: [PATCH 19/35] Update CONTRIBUTING.md --- CONTRIBUTING.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 560a709731..ddf61ec809 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,6 +2,10 @@ Here are a few suggestions to make it easier for you to contribute! +### Target branch for pull requests + +Please make all PRs against the `0_15` branch. + ### Code style When in doubt, it is easiest to replicate the code style you find in the files you want to edit :) @@ -73,6 +77,6 @@ Good: ``` -There is no set character limit for a comment within a line, -though as a rule of thumb you should wrap your comment if it exceeds the width of your editor window. +There is no hard character limit for a comment within a line, +though as a rule of thumb consider wrapping after 120 characters. Inline comments are OK if they describe that line only and are not exceedingly wide. \ No newline at end of file From 21d0f10dd7194675d28e7f4a9b588a3883e960d4 Mon Sep 17 00:00:00 2001 From: Christian Schwinne Date: Sat, 9 Mar 2024 21:59:45 +0100 Subject: [PATCH 20/35] Fix AR compilation --- platformio.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platformio.ini b/platformio.ini index d7ed06eda4..156d2782de 100644 --- a/platformio.ini +++ b/platformio.ini @@ -245,7 +245,7 @@ lib_deps = ${env.lib_deps} # additional build flags for audioreactive AR_build_flags = -D USERMOD_AUDIOREACTIVE -D UM_AUDIOREACTIVE_USE_NEW_FFT -AR_lib_deps = https://github.com/kosme/arduinoFFT#develop @ ^1.9.2 +AR_lib_deps = AR_lib_deps = https://github.com/kosme/arduinoFFT#419d7b0 [esp32_idf_V4] ;; experimental build environment for ESP32 using ESP-IDF 4.4.x / arduino-esp32 v2.0.5 From 6322ab9f07c4a171ad25526f1d55fdcbbafc1fb0 Mon Sep 17 00:00:00 2001 From: Christian Schwinne Date: Sat, 9 Mar 2024 22:00:18 +0100 Subject: [PATCH 21/35] . --- platformio.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platformio.ini b/platformio.ini index 156d2782de..78ecc8fca4 100644 --- a/platformio.ini +++ b/platformio.ini @@ -245,7 +245,7 @@ lib_deps = ${env.lib_deps} # additional build flags for audioreactive AR_build_flags = -D USERMOD_AUDIOREACTIVE -D UM_AUDIOREACTIVE_USE_NEW_FFT -AR_lib_deps = AR_lib_deps = https://github.com/kosme/arduinoFFT#419d7b0 +AR_lib_deps = https://github.com/kosme/arduinoFFT#419d7b0 [esp32_idf_V4] ;; experimental build environment for ESP32 using ESP-IDF 4.4.x / arduino-esp32 v2.0.5 From f55465f8b8ce1f2daecb8ee0bd489f957cda1ed2 Mon Sep 17 00:00:00 2001 From: Blaz Kristan Date: Mon, 11 Mar 2024 18:02:03 +0100 Subject: [PATCH 22/35] Fix AsyncWebServer library --- platformio.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platformio.ini b/platformio.ini index 78ecc8fca4..edcd321ddf 100644 --- a/platformio.ini +++ b/platformio.ini @@ -181,7 +181,7 @@ lib_deps = fastled/FastLED @ 3.6.0 IRremoteESP8266 @ 2.8.2 makuna/NeoPixelBus @ 2.7.5 - https://github.com/Aircoookie/ESPAsyncWebServer.git @ ~2.0.7 + https://github.com/Aircoookie/ESPAsyncWebServer.git @ ^2.1.0 #For use of the TTGO T-Display ESP32 Module with integrated TFT display uncomment the following line #TFT_eSPI #For compatible OLED display uncomment following From 7f8ec59939965a83834f3e5e219e0218570d2d71 Mon Sep 17 00:00:00 2001 From: Blaz Kristan Date: Mon, 11 Mar 2024 23:08:50 +0100 Subject: [PATCH 23/35] Changelog update --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8b22c64ac2..8da317b8b9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ ## WLED changelog +#### Build 2403110 +- Beta WLED 0.14.2-b2 +- New AsyncWebServer (improved performance and reduced memory use) +- New builds for ESP8266 with 160MHz CPU clock +- Fixing stairway usermod and adding buildflags (#3758 by @lost-hope) +- Fixing a potential array bounds violation in ESPDMX +- Reduced RAM usage (moved strings and TZ data (by @willmmiles) to PROGMEM) +- LockedJsonResponse: Release early if possible (by @willmmiles) + #### Build 2402120 - Beta WLED 0.14.2-b1 - Possible fix for #3589 & partial fix for #3605 From 9d70ec56f28b78b438514b17618801046dc47157 Mon Sep 17 00:00:00 2001 From: Blaz Kristan Date: Mon, 11 Mar 2024 23:22:14 +0100 Subject: [PATCH 24/35] Distinguish 160MHz binaries --- platformio.ini | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/platformio.ini b/platformio.ini index c749a62169..914ed05b35 100644 --- a/platformio.ini +++ b/platformio.ini @@ -340,6 +340,7 @@ monitor_filters = esp8266_exception_decoder [env:nodemcuv2_160] extends = env:nodemcuv2 board_build.f_cpu = 160000000L +build_flags = ${common.build_flags_esp8266} -D WLED_RELEASE_NAME=ESP8266_160 #-DWLED_DISABLE_2D [env:esp8266_2m] board = esp_wroom_02 @@ -353,6 +354,7 @@ lib_deps = ${esp8266.lib_deps} [env:esp8266_2m_160] extends = env:esp8266_2m board_build.f_cpu = 160000000L +build_flags = ${common.build_flags_esp8266} -D WLED_RELEASE_NAME=ESP02_160 [env:esp01_1m_full] board = esp01_1m @@ -367,6 +369,8 @@ lib_deps = ${esp8266.lib_deps} [env:esp01_1m_full_160] extends = env:esp01_1m_full board_build.f_cpu = 160000000L +build_flags = ${common.build_flags_esp8266} -D WLED_RELEASE_NAME=ESP01_160 -D WLED_DISABLE_OTA + ; -D WLED_USE_UNREAL_MATH ;; may cause wrong sunset/sunrise times, but saves 7064 bytes FLASH and 975 bytes RAM [env:esp07] board = esp07 From a42f78b08bd78f93509f9e0fed388f98a680fedc Mon Sep 17 00:00:00 2001 From: Frank <91616163+softhack007@users.noreply.github.com> Date: Thu, 14 Mar 2024 20:27:03 +0100 Subject: [PATCH 25/35] Update CONTRIBUTING.md Trying to explain why any PR should have a`description` --- CONTRIBUTING.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ddf61ec809..168131160f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,6 +2,16 @@ Here are a few suggestions to make it easier for you to contribute! +### Describe your PR + +Please add a description of your proposed code changes. It does not need to be an exhaustive essay, however a PR with no description or just a few words might not get accepted, simply because very basic information is missing. + +A good description helps us to review and understand your proposed changes. For example, you could say a few words about +* what you try to achieve (new feature, fixing a bug, refactoring, security enhancements, etc.) +* how your code works (short technical summary - focus on important aspects that might not be obvious when reading the code) +* testing you performed, known limitations, open ends you possibly could not solve. +* any areas where you like to get help from an experienced maintainer (yes WLED has become big 😉) + ### Target branch for pull requests Please make all PRs against the `0_15` branch. @@ -79,4 +89,4 @@ Good: There is no hard character limit for a comment within a line, though as a rule of thumb consider wrapping after 120 characters. -Inline comments are OK if they describe that line only and are not exceedingly wide. \ No newline at end of file +Inline comments are OK if they describe that line only and are not exceedingly wide. From acf6736afdc579e0bb498b9111e2b8ff7cbaab63 Mon Sep 17 00:00:00 2001 From: Blaz Kristan Date: Sun, 17 Mar 2024 11:52:09 +0100 Subject: [PATCH 26/35] WLED 0.14.2 release --- CHANGELOG.md | 3 + package-lock.json | 4 +- package.json | 2 +- wled00/html_other.h | 68 ++++----- wled00/html_settings.h | 314 ++++++++++++++++++++--------------------- wled00/improv.cpp | 2 +- wled00/wled.h | 4 +- 7 files changed, 200 insertions(+), 197 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8da317b8b9..8095a15d24 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ ## WLED changelog +#### Build 2403170 +- WLED 0.14.2 release + #### Build 2403110 - Beta WLED 0.14.2-b2 - New AsyncWebServer (improved performance and reduced memory use) diff --git a/package-lock.json b/package-lock.json index 7653dea534..9bf4449ebc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "wled", - "version": "0.14.2-b2", + "version": "0.14.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "wled", - "version": "0.14.2-b2", + "version": "0.14.2", "license": "ISC", "dependencies": { "clean-css": "^4.2.3", diff --git a/package.json b/package.json index 2da6f7a8e8..8781cd6c82 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "wled", - "version": "0.14.2-b2", + "version": "0.14.2", "description": "Tools for WLED project", "main": "tools/cdata.js", "directories": { diff --git a/wled00/html_other.h b/wled00/html_other.h index c7a895916c..2799fcdf30 100644 --- a/wled00/html_other.h +++ b/wled00/html_other.h @@ -41,47 +41,47 @@ const char PAGE_dmxmap[] PROGMEM = R"=====()====="; #endif // Autogenerated from wled00/data/update.htm, do not edit!! -const uint16_t PAGE_update_length = 616; +const uint16_t PAGE_update_length = 613; const uint8_t PAGE_update[] PROGMEM = { 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0x75, 0x53, 0x5d, 0x6f, 0xd4, 0x30, - 0x10, 0x7c, 0xcf, 0xaf, 0x70, 0xfd, 0x74, 0x27, 0x71, 0x36, 0x54, 0xbc, 0x50, 0x92, 0x14, 0x4a, + 0x10, 0x7c, 0xcf, 0xaf, 0x70, 0xfd, 0x74, 0x27, 0x51, 0x1b, 0x2a, 0x5e, 0x28, 0x49, 0x0a, 0x47, 0x2b, 0x54, 0x09, 0xa9, 0x95, 0xda, 0x82, 0x78, 0x42, 0x8e, 0xbd, 0xb9, 0x98, 0x73, 0xec, 0xd4, 0xde, 0xdc, 0xe9, 0x84, 0xfa, 0xdf, 0xd9, 0x38, 0x77, 0x05, 0xf1, 0xf1, 0x12, 0xc5, 0xd9, 0xd9, 0xf1, 0xee, 0xcc, 0xa4, 0x3c, 0xb9, 0xbc, 0xf9, 0x70, 0xff, 0xf5, 0xf6, 0x8a, 0x75, 0xd8, 0xbb, 0xba, 0x3c, 0x3c, 0x41, 0x99, 0xba, 0xec, 0x01, 0x15, 0xd3, 0xc1, 0x23, 0x78, 0xac, 0xf8, 0xce, - 0x1a, 0xec, 0x2a, 0x03, 0x5b, 0xab, 0x61, 0x95, 0x0f, 0x9c, 0x79, 0xd5, 0x43, 0xc5, 0xb7, 0x16, - 0x76, 0x43, 0x88, 0xc8, 0xeb, 0xa2, 0x44, 0x8b, 0x0e, 0xea, 0x2f, 0x9f, 0xae, 0x2e, 0xd9, 0xc3, - 0x60, 0x14, 0x42, 0x29, 0xe7, 0x4f, 0x65, 0xd2, 0xd1, 0x0e, 0x58, 0x17, 0xed, 0xe8, 0x35, 0xda, - 0xe0, 0xd9, 0xc5, 0x62, 0xf9, 0x63, 0x67, 0xbd, 0x09, 0x3b, 0xd1, 0xd9, 0x84, 0x21, 0xee, 0x45, + 0x1a, 0xec, 0x2a, 0x03, 0x5b, 0xab, 0xe1, 0x34, 0x1f, 0x38, 0xf3, 0xaa, 0x87, 0x8a, 0x6f, 0x2d, + 0xec, 0x86, 0x10, 0x91, 0xd7, 0x45, 0x89, 0x16, 0x1d, 0xd4, 0x5f, 0x3e, 0x5d, 0x5d, 0xb2, 0x87, + 0xc1, 0x28, 0x84, 0x52, 0xce, 0x9f, 0xca, 0xa4, 0xa3, 0x1d, 0xb0, 0x2e, 0xda, 0xd1, 0x6b, 0xb4, + 0xc1, 0xb3, 0xd5, 0x62, 0xf9, 0x63, 0x67, 0xbd, 0x09, 0x3b, 0xd1, 0xd9, 0x84, 0x21, 0xee, 0x45, 0xa3, 0xf4, 0x66, 0xb1, 0x7c, 0x7a, 0x86, 0x3c, 0x10, 0xc4, 0x04, 0x3d, 0xf6, 0x34, 0x81, 0x58, - 0x03, 0x5e, 0x39, 0x98, 0x5e, 0x2f, 0xf6, 0xd7, 0x66, 0xc1, 0xc7, 0x96, 0x2f, 0x45, 0xc2, 0xbd, - 0x03, 0x61, 0x6c, 0x1a, 0x9c, 0xda, 0x57, 0xdc, 0x07, 0x0f, 0xfc, 0xc5, 0x7f, 0x5b, 0xfa, 0xb4, - 0xfe, 0xbb, 0xa7, 0x71, 0x41, 0x6f, 0xf8, 0x53, 0x51, 0xca, 0xc3, 0x88, 0x87, 0x51, 0x59, 0x8a, - 0xba, 0xe2, 0x32, 0x01, 0xa2, 0xf5, 0xeb, 0x24, 0x93, 0xf8, 0x9e, 0xce, 0x87, 0xea, 0x0d, 0xaf, - 0x7f, 0x43, 0x4e, 0x54, 0x75, 0xf1, 0xce, 0xf6, 0x93, 0x00, 0x6c, 0x8c, 0x6e, 0xc1, 0x67, 0x7a, - 0x9d, 0x12, 0x5f, 0xbe, 0x25, 0x64, 0x46, 0x94, 0x72, 0x96, 0xb4, 0x09, 0x66, 0xcf, 0x82, 0x77, - 0x41, 0x99, 0x8a, 0x7f, 0x04, 0xfc, 0xbc, 0x58, 0x12, 0x5d, 0x77, 0x5a, 0x17, 0x59, 0xb2, 0xbb, - 0xd0, 0xe2, 0x4e, 0x45, 0x78, 0xd6, 0x8e, 0x2a, 0x65, 0x1b, 0x62, 0xcf, 0xc8, 0x8b, 0x2e, 0x50, - 0xcf, 0xed, 0xcd, 0xdd, 0x3d, 0x67, 0x2a, 0xcb, 0x53, 0x71, 0x21, 0xc7, 0x0c, 0xe4, 0xcc, 0x52, - 0x8d, 0x04, 0x61, 0x05, 0x90, 0x74, 0xfb, 0x81, 0x5c, 0xe9, 0x47, 0x87, 0x76, 0x50, 0x11, 0xe5, - 0x44, 0xb0, 0x22, 0x98, 0xe2, 0x74, 0x75, 0x1a, 0x9b, 0xde, 0x92, 0x9d, 0x0f, 0xd3, 0xcd, 0xd7, - 0x3e, 0xa1, 0x72, 0x0e, 0x0c, 0xdb, 0x42, 0x4c, 0x44, 0x79, 0xc6, 0xca, 0x34, 0x28, 0xcf, 0x0a, - 0xed, 0x54, 0x4a, 0x15, 0x4f, 0x76, 0xe0, 0xf5, 0x4b, 0xf1, 0xea, 0xb5, 0x38, 0x5d, 0x35, 0xa7, - 0xb4, 0x0d, 0x15, 0x69, 0x8b, 0x58, 0x5f, 0x86, 0x5d, 0xde, 0x82, 0x61, 0x07, 0xcc, 0xd1, 0x08, - 0x09, 0x59, 0x63, 0xbd, 0x8a, 0x7b, 0xa2, 0x50, 0xac, 0xe8, 0x22, 0xb4, 0x15, 0xef, 0x10, 0x87, - 0x74, 0x26, 0xe5, 0xda, 0x62, 0x37, 0x36, 0x42, 0x87, 0x5e, 0xbe, 0xb7, 0x51, 0x87, 0x10, 0x36, - 0x16, 0xe4, 0xb4, 0xb2, 0x8c, 0xe0, 0x40, 0x25, 0x48, 0x9c, 0xa1, 0x8a, 0xe4, 0x57, 0xc5, 0xbf, - 0x35, 0x4e, 0xf9, 0x0d, 0xc9, 0x62, 0xfb, 0x35, 0x2b, 0xb2, 0x09, 0x47, 0x1e, 0xfa, 0x22, 0x52, - 0x67, 0xc1, 0x99, 0x24, 0x6c, 0x38, 0xd0, 0x1e, 0x29, 0xfe, 0xa4, 0x16, 0x69, 0xbb, 0x3e, 0xcf, - 0xf2, 0x57, 0x2d, 0x4d, 0xb8, 0x4a, 0x8f, 0x23, 0x49, 0x3b, 0x85, 0x54, 0xaa, 0xbc, 0x43, 0x69, - 0xfd, 0x30, 0x22, 0x9b, 0xe5, 0x6a, 0xad, 0x83, 0x63, 0xa0, 0x8f, 0xa2, 0x46, 0x78, 0x1c, 0x6d, - 0x04, 0x33, 0xa3, 0x9b, 0x11, 0x91, 0x32, 0x39, 0xc3, 0x67, 0x19, 0x89, 0x6c, 0x76, 0xea, 0xa4, - 0x94, 0x73, 0xf9, 0x1f, 0xd0, 0xf9, 0x30, 0x69, 0xaf, 0x9d, 0xd5, 0x9b, 0x8a, 0x5f, 0x4c, 0xd2, - 0x5f, 0x50, 0xd4, 0x7f, 0x35, 0x65, 0x8f, 0xea, 0xd2, 0xd8, 0x6d, 0x91, 0xad, 0x9c, 0x82, 0x4a, - 0x34, 0x75, 0x66, 0xa7, 0xf4, 0x09, 0x21, 0x08, 0x9c, 0xc9, 0x6f, 0xf3, 0xb2, 0xcc, 0x04, 0xe6, - 0x03, 0x32, 0xed, 0x02, 0x1d, 0x42, 0xa4, 0x59, 0xdb, 0x08, 0xa9, 0xcb, 0x7e, 0x0c, 0x6a, 0x0d, - 0xec, 0x6c, 0x59, 0x4a, 0xe2, 0x9b, 0xd6, 0x9d, 0x52, 0x37, 0x45, 0x70, 0xfa, 0xb7, 0x7f, 0x02, - 0x70, 0xe8, 0x3d, 0x35, 0xf1, 0x03, 0x00, 0x00 + 0x03, 0x5e, 0x39, 0x98, 0x5e, 0x57, 0xfb, 0x6b, 0xb3, 0xe0, 0x63, 0xcb, 0x97, 0x22, 0xe1, 0xde, + 0x81, 0x30, 0x36, 0x0d, 0x4e, 0xed, 0x2b, 0xee, 0x83, 0x07, 0xfe, 0xe2, 0xbf, 0x2d, 0x7d, 0x5a, + 0xff, 0xdd, 0xd3, 0xb8, 0xa0, 0x37, 0xfc, 0xa9, 0x28, 0xe5, 0x61, 0xc4, 0xc3, 0xa8, 0x2c, 0x45, + 0x5d, 0x71, 0x99, 0x00, 0xd1, 0xfa, 0x75, 0x92, 0x49, 0x7c, 0x4f, 0x17, 0x43, 0xf5, 0x86, 0xd7, + 0xbf, 0x21, 0x27, 0xaa, 0xba, 0x78, 0x67, 0xfb, 0x49, 0x00, 0x36, 0x46, 0xb7, 0xe0, 0x33, 0xbd, + 0x4e, 0x89, 0x2f, 0xdf, 0x12, 0x32, 0x23, 0x4a, 0x39, 0x4b, 0xda, 0x04, 0xb3, 0x67, 0xc1, 0xbb, + 0xa0, 0x4c, 0xc5, 0x3f, 0x02, 0x7e, 0x5e, 0x2c, 0x89, 0xae, 0x3b, 0xab, 0x8b, 0x2c, 0xd9, 0x5d, + 0x68, 0x71, 0xa7, 0x22, 0x3c, 0x6b, 0x47, 0x95, 0xb2, 0x0d, 0xb1, 0x67, 0xe4, 0x45, 0x17, 0xa8, + 0xe7, 0xf6, 0xe6, 0xee, 0x9e, 0x33, 0x95, 0xe5, 0xa9, 0xb8, 0x90, 0x63, 0x06, 0x72, 0x66, 0xa9, + 0x46, 0x82, 0xb0, 0x02, 0x48, 0xba, 0xfd, 0x40, 0xae, 0xf4, 0xa3, 0x43, 0x3b, 0xa8, 0x88, 0x72, + 0x22, 0x38, 0x25, 0x98, 0xe2, 0x74, 0x75, 0x1a, 0x9b, 0xde, 0x92, 0x9d, 0x0f, 0xd3, 0xcd, 0xd7, + 0x3e, 0xa1, 0x72, 0x0e, 0x0c, 0xdb, 0x42, 0x4c, 0x44, 0x79, 0xce, 0xca, 0x34, 0x28, 0xcf, 0x0a, + 0xed, 0x54, 0x4a, 0x15, 0x4f, 0x76, 0xe0, 0xf5, 0x4b, 0xf1, 0xea, 0xb5, 0x38, 0xa3, 0x55, 0xa8, + 0x42, 0x2b, 0xc4, 0xfa, 0x32, 0xec, 0xf2, 0x0a, 0x0c, 0x3b, 0x60, 0x8e, 0xee, 0x4f, 0xc8, 0x1a, + 0xeb, 0x55, 0xdc, 0x53, 0xbf, 0x62, 0x45, 0x17, 0xa1, 0xad, 0x78, 0x87, 0x38, 0xa4, 0x73, 0x29, + 0xd7, 0x16, 0xbb, 0xb1, 0x11, 0x3a, 0xf4, 0xf2, 0xbd, 0x8d, 0x3a, 0x84, 0xb0, 0xb1, 0x20, 0xa7, + 0x7d, 0x65, 0x04, 0x07, 0x2a, 0x41, 0xe2, 0x0c, 0x55, 0x24, 0xb3, 0x2a, 0xfe, 0xad, 0x71, 0xca, + 0x6f, 0x48, 0x13, 0xdb, 0xaf, 0x59, 0x91, 0x1d, 0x38, 0xf2, 0xd0, 0x17, 0x91, 0x3a, 0x0b, 0xce, + 0x24, 0x61, 0xc3, 0x81, 0xf6, 0x48, 0xf1, 0x27, 0xb5, 0x48, 0xdb, 0xf5, 0x45, 0xd6, 0xbe, 0x6a, + 0x69, 0xc2, 0xd3, 0xf4, 0x38, 0x92, 0xae, 0x53, 0x42, 0xa5, 0xca, 0x3b, 0x94, 0xd6, 0x0f, 0x23, + 0xb2, 0x59, 0xab, 0xd6, 0x3a, 0x38, 0xa6, 0xf9, 0xa8, 0x68, 0x84, 0xc7, 0xd1, 0x46, 0x30, 0x33, + 0xba, 0x19, 0x11, 0x29, 0x90, 0x33, 0x7c, 0xd6, 0x90, 0xc8, 0x66, 0x9b, 0x4e, 0x4a, 0x39, 0x97, + 0xff, 0x01, 0x9d, 0x0f, 0x93, 0xf0, 0xda, 0x59, 0xbd, 0xa9, 0xf8, 0x6a, 0xd2, 0x7d, 0x45, 0x39, + 0xff, 0xd5, 0x94, 0x0d, 0xaa, 0x4b, 0x63, 0xb7, 0x45, 0xf6, 0x71, 0x4a, 0x29, 0xd1, 0xd4, 0x99, + 0x9d, 0xa2, 0x27, 0x84, 0x20, 0x70, 0x26, 0xbf, 0xcd, 0xcb, 0x32, 0x13, 0x98, 0x0f, 0xc8, 0xb4, + 0x0b, 0x74, 0x08, 0x91, 0x66, 0x6d, 0x23, 0xa4, 0x2e, 0xfb, 0x31, 0xa8, 0x35, 0xb0, 0xf3, 0x65, + 0x29, 0x89, 0x6f, 0x5a, 0x77, 0x8a, 0xdc, 0x94, 0xbf, 0xe9, 0xc7, 0xfe, 0x09, 0x3d, 0x8c, 0x87, + 0xc8, 0xee, 0x03, 0x00, 0x00 }; diff --git a/wled00/html_settings.h b/wled00/html_settings.h index e13d71a8e9..62d3404dca 100644 --- a/wled00/html_settings.h +++ b/wled00/html_settings.h @@ -1607,168 +1607,168 @@ const uint8_t PAGE_settings_time[] PROGMEM = { // Autogenerated from wled00/data/settings_sec.htm, do not edit!! -const uint16_t PAGE_settings_sec_length = 2551; +const uint16_t PAGE_settings_sec_length = 2548; const uint8_t PAGE_settings_sec[] PROGMEM = { 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0x9d, 0x58, 0x6d, 0x53, 0xdb, 0x48, 0x12, 0xfe, 0xee, 0x5f, 0x31, 0x9e, 0xad, 0xca, 0x4a, 0x17, 0x21, 0x03, 0x49, 0x6d, 0x25, 0x60, 0x99, 0x83, 0x40, 0x36, 0x5c, 0x41, 0xa0, 0xb0, 0xd9, 0xdc, 0x55, 0x2e, 0x95, 0x92, 0xa5, 0xb1, 0x35, 0xb1, 0xac, 0xd1, 0xce, 0x8c, 0x70, 0x7c, 0xd9, 0xfc, 0xf7, 0x7b, 0x7a, 0x24, 0xf9, 0x85, - 0x40, 0x72, 0xb9, 0x0f, 0x60, 0x6b, 0x34, 0xd3, 0x2f, 0x4f, 0x77, 0x3f, 0xdd, 0xe3, 0x7e, 0xf7, - 0xf4, 0xea, 0xd5, 0xe8, 0x5f, 0xd7, 0x67, 0x2c, 0xb3, 0xf3, 0x7c, 0xd0, 0xa7, 0xff, 0x2c, 0x8f, - 0x8b, 0x69, 0xc4, 0x45, 0xc1, 0xf1, 0x2c, 0xe2, 0x74, 0xd0, 0x9f, 0x0b, 0x1b, 0xb3, 0x4e, 0xa2, - 0x0a, 0x2b, 0x0a, 0x1b, 0xf1, 0x85, 0x4c, 0x6d, 0x16, 0xa5, 0xe2, 0x4e, 0x26, 0x62, 0xc7, 0x3d, - 0x04, 0xb2, 0x90, 0x56, 0xc6, 0xf9, 0x8e, 0x49, 0xe2, 0x5c, 0x44, 0x7b, 0xc1, 0x3c, 0xfe, 0x2c, - 0xe7, 0xd5, 0x7c, 0xf5, 0x5c, 0x19, 0xa1, 0xdd, 0x43, 0x3c, 0xc6, 0x73, 0xa1, 0x38, 0xeb, 0x14, - 0xf1, 0x5c, 0x44, 0xfc, 0x4e, 0x8a, 0x45, 0xa9, 0xb4, 0xe5, 0x8d, 0x96, 0x24, 0x8b, 0xb5, 0x11, - 0x50, 0x52, 0xd9, 0xc9, 0xce, 0x0b, 0xac, 0x5a, 0x69, 0x73, 0x31, 0xb8, 0x94, 0x26, 0x61, 0x43, - 0x61, 0xad, 0x2c, 0xa6, 0xa6, 0xdf, 0xab, 0x17, 0xfb, 0x26, 0xd1, 0xb2, 0xb4, 0x83, 0xce, 0x5d, - 0xac, 0x59, 0xae, 0x12, 0x59, 0x06, 0x56, 0xce, 0x85, 0xaa, 0x6c, 0x90, 0x46, 0xa9, 0x4a, 0xaa, - 0x39, 0xcc, 0x0d, 0xf0, 0x22, 0xea, 0xee, 0xd1, 0x47, 0xa9, 0x95, 0x55, 0x11, 0xcf, 0xac, 0x2d, - 0x0f, 0xf8, 0xe1, 0xa4, 0x2a, 0x12, 0x2b, 0x55, 0xc1, 0xde, 0x78, 0xfe, 0x97, 0x85, 0x2c, 0x52, - 0xb5, 0x08, 0x55, 0x29, 0x0a, 0xcf, 0x6d, 0x30, 0x07, 0xbd, 0xde, 0xac, 0x50, 0xe1, 0x22, 0x17, - 0x69, 0x38, 0x15, 0xbd, 0x89, 0x88, 0x6d, 0xa5, 0x85, 0xe9, 0x99, 0xc6, 0x88, 0xde, 0x2f, 0x46, - 0x24, 0x95, 0x96, 0x76, 0xb9, 0xd3, 0x2e, 0x71, 0xff, 0xeb, 0x4a, 0xe8, 0xc9, 0x3d, 0xa1, 0x53, - 0x61, 0x6f, 0x6f, 0x2e, 0x3c, 0xde, 0x5b, 0x6f, 0x0e, 0xf8, 0x47, 0x23, 0xf2, 0xc9, 0xe6, 0xa9, - 0xdb, 0xc7, 0x4e, 0x55, 0x65, 0x1a, 0x5b, 0xf1, 0xe0, 0x99, 0xe9, 0x79, 0xea, 0x59, 0xff, 0x8b, - 0x16, 0xb0, 0xaf, 0x60, 0x64, 0xac, 0x3d, 0xcb, 0x05, 0xb9, 0x7e, 0xb2, 0x74, 0xaf, 0xd6, 0x5b, - 0xa5, 0xb9, 0x1a, 0x7f, 0xda, 0xd8, 0x6c, 0x9f, 0x3c, 0xe1, 0x6a, 0xfc, 0x49, 0x24, 0x96, 0x47, - 0x91, 0x5d, 0x96, 0x42, 0x4d, 0x68, 0xad, 0x7b, 0xac, 0x75, 0xbc, 0x0c, 0xa5, 0x71, 0x9f, 0x5b, - 0x12, 0x72, 0x15, 0xa7, 0xff, 0x18, 0x7a, 0x36, 0x10, 0x51, 0x77, 0xd7, 0xff, 0x92, 0x0b, 0xcb, - 0x54, 0x94, 0x86, 0x89, 0x06, 0x3c, 0xa2, 0x51, 0xeb, 0xf1, 0x3a, 0x2e, 0xdc, 0x3f, 0x54, 0x21, - 0xdc, 0x3d, 0xb6, 0x56, 0xcb, 0x71, 0x65, 0x05, 0x5e, 0xe8, 0x84, 0x07, 0xd6, 0x0f, 0xee, 0xaf, - 0x93, 0x6e, 0x1e, 0x70, 0x2b, 0x3e, 0xdb, 0xde, 0xa7, 0xf8, 0x2e, 0x6e, 0x05, 0x7c, 0xb3, 0x31, - 0x36, 0xcb, 0x02, 0x22, 0x84, 0x1f, 0xa4, 0xe1, 0x58, 0xa5, 0xcb, 0x30, 0x2e, 0x81, 0x53, 0xfa, - 0x2a, 0x93, 0x79, 0xea, 0x29, 0xda, 0x1f, 0xa7, 0xe9, 0xd9, 0x1d, 0xac, 0xb8, 0x90, 0x06, 0xd9, - 0x2a, 0xb4, 0xc7, 0xc9, 0x66, 0x1e, 0x78, 0x7e, 0x34, 0xf8, 0xf2, 0xbb, 0xb0, 0x7f, 0x78, 0x7e, - 0x00, 0x99, 0x27, 0xc9, 0xec, 0xb5, 0xcc, 0x05, 0x25, 0xa1, 0x47, 0x08, 0xf2, 0x71, 0x32, 0x4b, - 0x26, 0x53, 0xee, 0x3f, 0xfa, 0xb6, 0x44, 0xf4, 0x85, 0x45, 0xdc, 0xfc, 0xaf, 0x0f, 0xeb, 0x11, - 0x5a, 0x2b, 0x0d, 0xf7, 0xa0, 0x07, 0xa5, 0x62, 0x54, 0x2e, 0xc2, 0x5c, 0x4d, 0x3d, 0x7e, 0x46, - 0xeb, 0xac, 0x01, 0x0f, 0xa1, 0x67, 0x13, 0x88, 0x76, 0x30, 0xa0, 0x36, 0x34, 0xe0, 0xba, 0x68, - 0xd6, 0x81, 0x3e, 0x0e, 0x4e, 0xe4, 0xb4, 0xd2, 0xb1, 0x43, 0xbb, 0x86, 0x81, 0x4d, 0x62, 0x49, - 0x59, 0xf8, 0xef, 0xe2, 0xbc, 0x48, 0xd4, 0xbc, 0x04, 0xe8, 0x82, 0x95, 0xf1, 0x54, 0x30, 0xe4, - 0x44, 0xdc, 0x45, 0x2e, 0x6c, 0x04, 0xc8, 0x64, 0x6a, 0x31, 0x52, 0xb1, 0xb1, 0x75, 0x8c, 0xf6, - 0xfc, 0x2f, 0x54, 0x1c, 0x2a, 0x72, 0x5e, 0x58, 0x7a, 0xe1, 0xc2, 0x22, 0x0b, 0x98, 0xfc, 0x66, - 0x74, 0x79, 0x11, 0x59, 0xf8, 0x92, 0xe4, 0xb1, 0x31, 0xe4, 0x08, 0x79, 0xe5, 0x89, 0xa3, 0xc6, - 0x95, 0x03, 0x4e, 0xd2, 0x10, 0x85, 0x24, 0x17, 0xb1, 0x1e, 0xd5, 0xa5, 0xe5, 0x35, 0x25, 0xe6, - 0x62, 0x63, 0x97, 0x70, 0x32, 0x2e, 0xe4, 0xdc, 0xd9, 0x1b, 0xf1, 0x42, 0x15, 0xe4, 0x59, 0xbd, - 0x23, 0x02, 0x5c, 0xed, 0x21, 0xaf, 0x35, 0x10, 0x09, 0xbe, 0xa9, 0x4f, 0x8b, 0xb9, 0xba, 0xa3, - 0xc4, 0x70, 0x8a, 0x00, 0xec, 0xfe, 0xcb, 0xdd, 0xdd, 0x0d, 0x77, 0xaa, 0x92, 0x40, 0xa3, 0x58, - 0x90, 0x3f, 0xad, 0x33, 0x85, 0x58, 0xb0, 0x7f, 0x5e, 0x5e, 0xbc, 0x41, 0x9d, 0xde, 0x88, 0x3f, - 0x2b, 0x61, 0xec, 0xe1, 0x77, 0x02, 0xbf, 0xa1, 0x7a, 0x03, 0x9d, 0x4c, 0x1a, 0x68, 0x37, 0x25, - 0x22, 0x25, 0x46, 0xc8, 0xbb, 0xc0, 0xad, 0x18, 0x8b, 0x32, 0x37, 0x83, 0xe8, 0x39, 0x59, 0xe1, - 0x7f, 0x37, 0xce, 0x6b, 0xb9, 0x76, 0x4b, 0x30, 0xc9, 0x48, 0x66, 0x41, 0xb7, 0x15, 0x50, 0x73, - 0xca, 0xf5, 0xd5, 0x70, 0xc4, 0x83, 0x8d, 0x7a, 0x76, 0xc6, 0xf9, 0xfe, 0x21, 0x79, 0x54, 0x38, - 0x8f, 0x5e, 0x2b, 0x3d, 0x3f, 0x45, 0x44, 0x0f, 0x9b, 0xea, 0x2c, 0x9a, 0xe4, 0xf6, 0x38, 0xc5, - 0x19, 0xb0, 0x86, 0x94, 0x38, 0xe6, 0xfd, 0xee, 0x07, 0xca, 0x7f, 0xaa, 0x0c, 0xbc, 0x2b, 0x7c, - 0xac, 0xdf, 0xc5, 0x79, 0x05, 0x2e, 0xe5, 0x41, 0x77, 0x6f, 0x0d, 0x5d, 0x92, 0x89, 0x64, 0xf6, - 0xb6, 0x9a, 0xaf, 0xeb, 0xbd, 0xeb, 0x75, 0x05, 0xb9, 0x12, 0xce, 0xc4, 0x32, 0x44, 0xc8, 0x92, - 0xcc, 0xeb, 0xbd, 0xdf, 0xdd, 0x79, 0xf9, 0xa1, 0xe7, 0xa3, 0xe8, 0xdf, 0xf3, 0x13, 0xd8, 0x6d, - 0xca, 0x38, 0xa1, 0x52, 0x1c, 0xc5, 0x63, 0xfc, 0x3f, 0x03, 0xe3, 0xc3, 0x55, 0x3e, 0xcc, 0xe4, - 0xc4, 0xe2, 0xf3, 0x15, 0x5a, 0x80, 0x56, 0x39, 0xbe, 0x1d, 0xe7, 0xf4, 0x7c, 0x1d, 0x83, 0xd8, - 0x69, 0x3d, 0x2e, 0xcd, 0x85, 0x4a, 0x66, 0x74, 0x04, 0x2c, 0xef, 0x8a, 0x79, 0xd8, 0x48, 0xba, - 0x46, 0xa6, 0xde, 0x96, 0xcd, 0x97, 0x53, 0xb5, 0x28, 0x9c, 0x5c, 0x04, 0x86, 0xbf, 0x51, 0x73, - 0xda, 0x00, 0x96, 0x51, 0x8b, 0x0b, 0xe1, 0x14, 0xb8, 0xef, 0x6e, 0xb7, 0xfb, 0x76, 0x23, 0xa7, - 0xd9, 0x6a, 0xb9, 0x39, 0x7b, 0x8e, 0x80, 0x69, 0x5a, 0x3c, 0x15, 0x54, 0x09, 0xfc, 0x03, 0x92, - 0x39, 0xc9, 0xab, 0x54, 0x18, 0x6f, 0xe5, 0x9d, 0xef, 0xff, 0xf5, 0x57, 0xf3, 0x84, 0xb2, 0xa5, - 0xcf, 0x53, 0x31, 0x89, 0xab, 0xdc, 0xa2, 0xf8, 0x51, 0x13, 0x1b, 0xe5, 0xb2, 0x5d, 0xeb, 0x80, - 0xca, 0xde, 0x63, 0x1c, 0x70, 0x71, 0x51, 0x27, 0x12, 0xa7, 0x5e, 0xf0, 0x91, 0x3f, 0xb5, 0x44, - 0xb1, 0x0f, 0xed, 0xf0, 0x9f, 0x7a, 0xfc, 0xdd, 0xc5, 0xd9, 0x29, 0xc8, 0xd4, 0xa4, 0x47, 0x1c, - 0xf5, 0x83, 0xdd, 0x26, 0xf5, 0x37, 0xf4, 0x0d, 0xbd, 0x9a, 0x34, 0x6d, 0xd4, 0xd0, 0x3c, 0xda, - 0x92, 0xab, 0x9d, 0x43, 0x39, 0xf1, 0x38, 0xc5, 0xf7, 0x80, 0xa8, 0x38, 0x74, 0xad, 0x2a, 0x51, - 0xb9, 0xef, 0xba, 0xd7, 0x6e, 0xe0, 0xb9, 0xf6, 0x16, 0xd1, 0xee, 0x7c, 0x68, 0x95, 0x06, 0x94, - 0x64, 0xc5, 0xb9, 0x15, 0x73, 0xca, 0xf3, 0xe4, 0xbc, 0xe4, 0xce, 0xe7, 0x7a, 0x1b, 0x4e, 0xcf, - 0x4b, 0x10, 0x0b, 0xf9, 0xc5, 0x2e, 0x55, 0x2a, 0x42, 0x76, 0x8d, 0x12, 0x36, 0x82, 0x09, 0x0a, - 0x28, 0x23, 0x23, 0xd9, 0xf9, 0x35, 0xa8, 0x23, 0xd8, 0x92, 0x68, 0xb6, 0x25, 0x06, 0x4e, 0x1a, - 0x72, 0x54, 0xe4, 0x46, 0x38, 0xb3, 0x05, 0x99, 0x16, 0xdb, 0x8c, 0xc0, 0x0a, 0x54, 0x84, 0x13, - 0x39, 0x66, 0x00, 0x6f, 0x2f, 0x10, 0x21, 0x92, 0xd1, 0xbc, 0x93, 0x36, 0x43, 0x72, 0x73, 0xff, - 0x68, 0x67, 0xef, 0xe0, 0x4e, 0xc9, 0x94, 0xed, 0xfa, 0xa1, 0x29, 0x73, 0x69, 0xdd, 0x2a, 0x8a, - 0x14, 0x38, 0x4f, 0x6d, 0x36, 0xd8, 0x7f, 0xf2, 0xc4, 0x5b, 0x35, 0xe4, 0xb5, 0xb7, 0x41, 0xe3, - 0x6d, 0xed, 0x85, 0x0d, 0x33, 0x65, 0x2c, 0xa9, 0x7a, 0x8a, 0xaa, 0xa2, 0x21, 0xe1, 0x08, 0x90, - 0x3e, 0xad, 0xbf, 0x1e, 0x70, 0xc0, 0x0d, 0xa1, 0x4f, 0x15, 0xea, 0xc1, 0xff, 0x8a, 0x13, 0x10, - 0xb9, 0x45, 0xe4, 0xf7, 0xe2, 0x98, 0x69, 0x31, 0x59, 0x15, 0xe0, 0xf6, 0xc6, 0xd6, 0x23, 0x94, - 0xeb, 0x37, 0x64, 0xff, 0xbf, 0x48, 0x59, 0x6f, 0x5e, 0x4b, 0x22, 0x64, 0x5d, 0xab, 0xfc, 0xa6, - 0xf1, 0xf7, 0x4c, 0xf8, 0xc9, 0x1c, 0x95, 0xd1, 0x6f, 0xdc, 0xe5, 0x62, 0x50, 0x9b, 0x9e, 0x86, - 0xc3, 0x49, 0x18, 0xbb, 0x24, 0x89, 0x1e, 0x38, 0x22, 0x12, 0xbe, 0x99, 0x46, 0xcd, 0x8e, 0x55, - 0x65, 0x13, 0x98, 0x47, 0x2d, 0xa0, 0x80, 0x05, 0xb8, 0x38, 0x0c, 0x1d, 0x4a, 0xf6, 0x6b, 0xa7, - 0xdf, 0x6b, 0x46, 0xa5, 0xbe, 0xa3, 0xec, 0xc1, 0xdf, 0xe5, 0x9c, 0x40, 0x64, 0x95, 0xce, 0xc1, - 0xbd, 0x8e, 0xc5, 0x13, 0x03, 0x07, 0x0e, 0xb1, 0xd1, 0x6d, 0xe8, 0xf7, 0xea, 0xc9, 0x8f, 0x7a, - 0x2c, 0x5a, 0x17, 0xf9, 0x12, 0x71, 0x24, 0x2f, 0x06, 0xb2, 0x09, 0x68, 0xaa, 0xc3, 0x24, 0x9e, - 0xe9, 0xdb, 0x47, 0xc3, 0x59, 0x3d, 0xc9, 0x0d, 0x27, 0x9c, 0x61, 0x84, 0xcb, 0x14, 0xde, 0x94, - 0x08, 0x1c, 0xb6, 0xa6, 0xf2, 0x8e, 0x39, 0xae, 0x8f, 0xd0, 0x7a, 0x60, 0xdb, 0x62, 0x7b, 0x2d, - 0x13, 0x79, 0x79, 0xc2, 0x07, 0x9d, 0x3e, 0xb0, 0xb5, 0xf0, 0x8a, 0xa6, 0x80, 0x88, 0xd7, 0x0f, - 0x1c, 0x5a, 0x13, 0x24, 0xd7, 0x2c, 0xe2, 0x6f, 0x48, 0xed, 0x51, 0xbf, 0x57, 0xbf, 0x80, 0x69, - 0x10, 0x31, 0x78, 0xf8, 0x4c, 0x67, 0x75, 0xe8, 0x84, 0x0e, 0x11, 0xa1, 0xad, 0xcf, 0x6d, 0x9d, - 0x30, 0xd5, 0x78, 0x2e, 0x61, 0xe3, 0x30, 0xbe, 0x13, 0xeb, 0x2d, 0x99, 0x6e, 0xc5, 0x67, 0xfb, - 0x83, 0xce, 0xb0, 0x19, 0xf0, 0xd8, 0x13, 0x76, 0xeb, 0xe6, 0x2f, 0xa2, 0x8b, 0xaa, 0x04, 0x36, - 0xfb, 0x83, 0x76, 0x16, 0x65, 0xd7, 0xe7, 0x6f, 0x0f, 0x58, 0x5f, 0x16, 0x65, 0x65, 0x1b, 0xd1, - 0x25, 0x9c, 0x5b, 0x28, 0x9d, 0x72, 0x07, 0x12, 0xde, 0xaf, 0x86, 0x5d, 0xf7, 0xdd, 0xc8, 0xff, - 0xe0, 0xeb, 0x73, 0x80, 0x15, 0x7f, 0xae, 0xcb, 0xa1, 0x7e, 0x92, 0xc5, 0xc6, 0x93, 0x2a, 0xc0, - 0x62, 0x44, 0x2c, 0x11, 0x5f, 0xf3, 0x38, 0x1a, 0x94, 0x0f, 0x59, 0x48, 0x32, 0x14, 0x31, 0xde, - 0x38, 0xee, 0xfe, 0x1b, 0xd4, 0x90, 0xf2, 0x39, 0xca, 0x1c, 0x0d, 0x18, 0x33, 0xaf, 0x96, 0x09, - 0x67, 0x6e, 0x42, 0x86, 0xc6, 0xcd, 0xb2, 0x8f, 0xd9, 0x73, 0x96, 0xca, 0xa9, 0xb4, 0x0c, 0xdb, - 0xc6, 0x20, 0x76, 0x60, 0xa2, 0x01, 0xff, 0x46, 0x48, 0x16, 0xb1, 0xc6, 0xd8, 0xdf, 0x79, 0xf2, - 0xcb, 0xcb, 0x17, 0x2f, 0x5e, 0x1c, 0xb2, 0xdb, 0x42, 0x14, 0x89, 0x5e, 0x96, 0x56, 0xa4, 0xcc, - 0xea, 0xb8, 0x30, 0x73, 0x69, 0x0c, 0x12, 0x30, 0x64, 0x27, 0x18, 0x41, 0x34, 0x48, 0xb7, 0xb0, - 0x6c, 0x91, 0x09, 0x22, 0xd2, 0x1c, 0x63, 0x24, 0x4d, 0x31, 0x70, 0x32, 0x60, 0xa9, 0x62, 0x6f, - 0xaf, 0x46, 0x0c, 0xdd, 0x81, 0x2d, 0x55, 0xa5, 0xd9, 0x38, 0x2e, 0x66, 0x78, 0x49, 0x2f, 0x94, - 0x0e, 0xd8, 0xf0, 0xfc, 0x32, 0x60, 0xc2, 0x26, 0x21, 0x2b, 0x65, 0xd1, 0xed, 0xb4, 0x21, 0xd5, - 0x03, 0x6a, 0x22, 0x6c, 0x21, 0x35, 0xa4, 0x19, 0xc3, 0xbc, 0xab, 0xd1, 0xb1, 0xcf, 0x8c, 0x9a, - 0x58, 0xd8, 0x25, 0x58, 0x3d, 0x04, 0xdf, 0x43, 0xdb, 0xc1, 0x33, 0x56, 0x9f, 0xdb, 0x34, 0x7c, - 0x7b, 0xe5, 0x32, 0x4a, 0x0f, 0xae, 0xe1, 0x50, 0x99, 0x69, 0xb8, 0xff, 0x68, 0x7c, 0xea, 0x13, - 0x57, 0xd7, 0x5b, 0xb1, 0x78, 0xb6, 0xdf, 0xe0, 0x32, 0x52, 0xc0, 0x8d, 0xee, 0x2b, 0x0c, 0x66, - 0x04, 0x0c, 0xd9, 0xce, 0xda, 0x91, 0x9f, 0x61, 0xde, 0x35, 0x98, 0x1c, 0xc8, 0x39, 0x56, 0x08, - 0x42, 0x47, 0xb1, 0x38, 0x37, 0xaa, 0x41, 0xda, 0x66, 0x02, 0xa3, 0x9c, 0xd6, 0x80, 0x84, 0xb5, - 0xea, 0xba, 0xce, 0xaa, 0x51, 0x26, 0x56, 0x2b, 0x34, 0xac, 0x55, 0x79, 0xca, 0xc6, 0x82, 0xae, - 0x3d, 0xc5, 0x14, 0x62, 0x1c, 0x96, 0x50, 0x87, 0x51, 0xbd, 0x51, 0x9e, 0x86, 0x74, 0xac, 0x3f, - 0x1e, 0x74, 0x4e, 0xa5, 0x69, 0xad, 0xa9, 0xf7, 0x15, 0xca, 0x22, 0xf6, 0x04, 0x72, 0xc0, 0x14, - 0x54, 0xea, 0x85, 0x04, 0xde, 0x71, 0xc1, 0x90, 0x20, 0xc8, 0x7c, 0xd8, 0x91, 0xe0, 0x01, 0x8c, - 0x85, 0xd8, 0x66, 0xac, 0xbe, 0xaf, 0xad, 0xd0, 0x24, 0xd4, 0xc7, 0xce, 0xd1, 0xbe, 0x5c, 0x67, - 0x33, 0xd5, 0x07, 0xd2, 0xac, 0x1e, 0x2f, 0x09, 0x73, 0xd4, 0xfe, 0xb2, 0xb6, 0xce, 0xe9, 0x96, - 0x13, 0xa7, 0x3e, 0xa7, 0x30, 0x61, 0x5b, 0x5a, 0x9b, 0x94, 0x76, 0xfb, 0x3d, 0x59, 0xa3, 0x7e, - 0x2a, 0x8a, 0x25, 0x8b, 0x93, 0x84, 0xc2, 0x07, 0x4c, 0xde, 0xc9, 0xd7, 0x92, 0xb5, 0x34, 0x46, - 0xa7, 0xe9, 0xa4, 0x48, 0x7f, 0x10, 0xc3, 0xab, 0x77, 0x4d, 0x0c, 0xe9, 0xef, 0x35, 0x58, 0x51, - 0x69, 0x82, 0x1c, 0x72, 0x7e, 0x70, 0xf0, 0x66, 0xd8, 0xc4, 0xee, 0x38, 0xcf, 0xd7, 0x6a, 0xe3, - 0x22, 0x65, 0x0d, 0x47, 0x23, 0xb7, 0xf0, 0x06, 0x80, 0x0b, 0x4a, 0x8c, 0x16, 0x5b, 0x3d, 0xf8, - 0xbf, 0x6a, 0xe0, 0x78, 0x03, 0x69, 0x07, 0x1c, 0xd0, 0x85, 0x19, 0x48, 0x08, 0x8b, 0xf0, 0xce, - 0x1c, 0xfa, 0x92, 0xf2, 0x21, 0x11, 0x34, 0xc5, 0x83, 0x2d, 0xeb, 0x89, 0xbd, 0xcd, 0x77, 0x62, - 0x9b, 0xec, 0xd9, 0x60, 0xd8, 0xe6, 0x77, 0x4d, 0x32, 0xa0, 0x97, 0x67, 0x83, 0x1f, 0x50, 0xe2, - 0x2d, 0xb1, 0x5b, 0xe7, 0x32, 0x2e, 0xaa, 0x38, 0x77, 0x01, 0x69, 0x8f, 0xae, 0xb8, 0x4e, 0x0f, - 0xce, 0xea, 0xdc, 0x3d, 0xd6, 0x69, 0x25, 0x0b, 0x85, 0x4d, 0x8f, 0x62, 0xd7, 0xb0, 0xd3, 0xf1, - 0x15, 0x5f, 0xd9, 0x44, 0xcc, 0x59, 0x95, 0x20, 0xbe, 0x1b, 0x0c, 0xd7, 0x4a, 0x37, 0x46, 0xc5, - 0x2d, 0x44, 0x63, 0x8b, 0xdb, 0x4c, 0x31, 0xab, 0x19, 0xae, 0xe9, 0xa3, 0xac, 0x43, 0xcd, 0x31, - 0xe2, 0xbd, 0x06, 0x6a, 0x74, 0x39, 0xb2, 0xb9, 0x9d, 0x8e, 0x50, 0x77, 0x4d, 0x9b, 0x6c, 0x85, - 0x37, 0xcf, 0xfd, 0x5e, 0xbc, 0x0a, 0xc1, 0xa0, 0xd3, 0xe8, 0x5b, 0xbd, 0x74, 0xf9, 0xb9, 0x61, - 0xb5, 0xbb, 0x3b, 0x35, 0xd1, 0x76, 0x63, 0xb1, 0x4b, 0xb6, 0xd2, 0x46, 0xbc, 0xd6, 0x37, 0x60, - 0x2d, 0x74, 0x9d, 0x87, 0xb1, 0xfb, 0x75, 0xe3, 0x4a, 0xe1, 0x9a, 0x2e, 0x49, 0x09, 0xee, 0x59, - 0xed, 0xff, 0x3a, 0xb8, 0x75, 0xdb, 0x56, 0x88, 0xd6, 0xe9, 0xb8, 0xe2, 0xa9, 0xc7, 0xa1, 0x68, - 0xbd, 0x64, 0x0d, 0x1a, 0x80, 0xa6, 0x41, 0xa2, 0xb3, 0x86, 0x82, 0xf0, 0x6a, 0x61, 0xd8, 0xba, - 0xf2, 0x6d, 0x81, 0xd1, 0x62, 0xb1, 0xbd, 0x63, 0x8d, 0x48, 0xe7, 0x61, 0x48, 0xf6, 0x1f, 0xc7, - 0xe4, 0x91, 0x6e, 0xf9, 0x20, 0x26, 0xfb, 0xc1, 0x86, 0xf1, 0xdf, 0x02, 0xb2, 0x81, 0x07, 0xd5, - 0x4e, 0xe7, 0xe1, 0xe2, 0xa9, 0x5d, 0xa0, 0xb6, 0xd0, 0xe0, 0xd2, 0xdb, 0xbe, 0xe1, 0xba, 0x72, - 0xbc, 0xfa, 0xe3, 0xec, 0xe6, 0xdd, 0xcd, 0xf9, 0xe8, 0xac, 0xee, 0x15, 0xa0, 0x58, 0x4d, 0x7d, - 0xe5, 0xc1, 0x13, 0xa1, 0x0b, 0x44, 0x87, 0x6e, 0xc2, 0x35, 0xbd, 0x6e, 0xcb, 0x9b, 0xc7, 0x44, - 0x14, 0x7f, 0x56, 0xe8, 0x20, 0x68, 0x77, 0x93, 0x4d, 0xea, 0x60, 0xe0, 0x6f, 0x2d, 0x76, 0x1c, - 0x19, 0x36, 0xb7, 0x6d, 0xa7, 0xee, 0x6c, 0x78, 0x1d, 0x36, 0x15, 0xf9, 0xfa, 0x01, 0x8a, 0x0f, - 0x56, 0x74, 0x6d, 0x1c, 0x21, 0x12, 0xe9, 0x8e, 0xa9, 0xe6, 0x53, 0xf4, 0xa3, 0xb0, 0xad, 0x97, - 0xe3, 0x31, 0x6e, 0xb9, 0x6d, 0x91, 0x34, 0x85, 0xd0, 0xfe, 0x8c, 0x84, 0x86, 0x9b, 0x55, 0xe3, - 0x10, 0x57, 0xf7, 0xde, 0xb1, 0xd4, 0x89, 0x52, 0x6a, 0x26, 0x45, 0x8f, 0x66, 0xf0, 0x1e, 0xfa, - 0x74, 0xac, 0xa7, 0xf4, 0x73, 0xd7, 0xc7, 0x71, 0x8e, 0x16, 0xc9, 0x07, 0xb4, 0x4c, 0x49, 0xd0, - 0x61, 0x77, 0x42, 0x13, 0xcd, 0xb0, 0xdd, 0x70, 0xef, 0x79, 0xb8, 0xbf, 0x33, 0xde, 0x5f, 0x71, - 0xd5, 0xcf, 0x68, 0x58, 0xc8, 0x99, 0xec, 0xb9, 0x6b, 0x1b, 0x4d, 0xb0, 0x4a, 0x9b, 0x1d, 0xb0, - 0xe1, 0x4e, 0xa2, 0x45, 0x2a, 0x29, 0x49, 0x3b, 0xf7, 0xf5, 0x6f, 0x6e, 0x45, 0xb7, 0x16, 0x74, - 0x01, 0x05, 0xff, 0x49, 0x51, 0xd3, 0xa8, 0x29, 0x45, 0x22, 0xc1, 0x39, 0x16, 0x1d, 0x61, 0xb6, - 0x2a, 0xdd, 0xce, 0x31, 0xcb, 0x2a, 0x34, 0x0c, 0xb7, 0xea, 0x7a, 0x22, 0xa8, 0x1f, 0xd7, 0x2e, - 0xbd, 0x54, 0x85, 0x40, 0xaf, 0x52, 0x8c, 0x46, 0x3d, 0x20, 0x06, 0x72, 0xac, 0x7f, 0x2a, 0x72, - 0x57, 0x90, 0x6e, 0xeb, 0x51, 0xc7, 0x4b, 0x7c, 0xb6, 0xbf, 0xbb, 0xf7, 0xdb, 0xce, 0xfe, 0xee, - 0xfe, 0x33, 0xf6, 0x2a, 0xd3, 0xb8, 0x6c, 0x4b, 0xb0, 0xe7, 0x30, 0xc9, 0x16, 0xf4, 0x53, 0x45, - 0xd3, 0xa6, 0x2e, 0xd0, 0xc0, 0x70, 0xfb, 0x03, 0xf2, 0x30, 0xaa, 0xee, 0xb2, 0x3f, 0x05, 0xc6, - 0x38, 0x57, 0xe3, 0xde, 0x1c, 0xb7, 0x74, 0xa1, 0x7b, 0x17, 0xe7, 0xaf, 0xce, 0xde, 0x0e, 0xcf, - 0xbe, 0x8d, 0x40, 0xe7, 0xf2, 0x7c, 0xc4, 0xf2, 0x5a, 0x93, 0x73, 0x10, 0xad, 0xad, 0x35, 0x74, - 0x28, 0x34, 0xbc, 0x82, 0x1b, 0xc6, 0xa0, 0x41, 0x82, 0x50, 0x71, 0x5d, 0x2e, 0x5a, 0x26, 0x30, - 0xb2, 0xe4, 0x54, 0xb3, 0xee, 0x27, 0x05, 0xe6, 0x7e, 0x25, 0x20, 0xaa, 0xa7, 0x2d, 0x35, 0xaf, - 0x52, 0x9d, 0x10, 0x4b, 0xd4, 0x3f, 0xc3, 0x7c, 0x77, 0x90, 0xfd, 0x76, 0x8e, 0xed, 0xfc, 0xd4, - 0x20, 0xdb, 0xa3, 0x6e, 0x83, 0x0f, 0x9a, 0xdf, 0x69, 0x98, 0xa7, 0x1f, 0x77, 0xff, 0x0b, 0xaf, - 0x1a, 0xd5, 0x6f, 0xec, 0x15, 0x00, 0x00 + 0x40, 0x72, 0xb9, 0x0f, 0x60, 0x69, 0x5e, 0x7a, 0xba, 0x9f, 0xee, 0x7e, 0xba, 0x47, 0xfd, 0xee, + 0xe9, 0xd5, 0xab, 0xd1, 0xbf, 0xae, 0xcf, 0x58, 0x66, 0xe7, 0xf9, 0xa0, 0x4f, 0xff, 0x59, 0x1e, + 0x17, 0xd3, 0x88, 0x8b, 0x82, 0xe3, 0x5d, 0xc4, 0xe9, 0xa0, 0x3f, 0x17, 0x36, 0x66, 0x9d, 0x44, + 0x15, 0x56, 0x14, 0x36, 0xe2, 0x0b, 0x99, 0xda, 0x2c, 0x4a, 0xc5, 0x9d, 0x4c, 0xc4, 0x8e, 0x7b, + 0x09, 0x64, 0x21, 0xad, 0x8c, 0xf3, 0x1d, 0x93, 0xc4, 0xb9, 0x88, 0xf6, 0x82, 0x79, 0xfc, 0x59, + 0xce, 0xab, 0xf9, 0xea, 0xbd, 0x32, 0x42, 0xbb, 0x97, 0x78, 0x8c, 0xf7, 0x42, 0x71, 0xd6, 0x29, + 0xe2, 0xb9, 0x88, 0xf8, 0x9d, 0x14, 0x8b, 0x52, 0x69, 0xcb, 0x9b, 0x53, 0x92, 0x2c, 0xd6, 0x46, + 0xe0, 0x90, 0xca, 0x4e, 0x76, 0x5e, 0x60, 0xd4, 0x4a, 0x9b, 0x8b, 0xc1, 0xa5, 0x34, 0x09, 0x1b, + 0x0a, 0x6b, 0x65, 0x31, 0x35, 0xfd, 0x5e, 0x3d, 0xd8, 0x37, 0x89, 0x96, 0xa5, 0x1d, 0x74, 0xee, + 0x62, 0xcd, 0x72, 0x95, 0xc8, 0x32, 0xb0, 0x72, 0x2e, 0x54, 0x65, 0x83, 0x34, 0x4a, 0x55, 0x52, + 0xcd, 0xa1, 0x6e, 0x80, 0x89, 0xa8, 0xbb, 0x47, 0x3f, 0xa5, 0x56, 0x56, 0x45, 0x3c, 0xb3, 0xb6, + 0x3c, 0xe0, 0x87, 0x93, 0xaa, 0x48, 0xac, 0x54, 0x05, 0x7b, 0xe3, 0xf9, 0x5f, 0x16, 0xb2, 0x48, + 0xd5, 0x22, 0x54, 0xa5, 0x28, 0x3c, 0xb7, 0xc0, 0x1c, 0xf4, 0x7a, 0xb3, 0x42, 0x85, 0x8b, 0x5c, + 0xa4, 0xe1, 0x54, 0xf4, 0x26, 0x22, 0xb6, 0x95, 0x16, 0xa6, 0x67, 0x1a, 0x25, 0x7a, 0xbf, 0x18, + 0x91, 0x54, 0x5a, 0xda, 0xe5, 0x4e, 0x3b, 0xc4, 0xfd, 0xaf, 0x2b, 0xa1, 0x27, 0xf7, 0x84, 0x4e, + 0x85, 0xbd, 0xbd, 0xb9, 0xf0, 0x78, 0x6f, 0xbd, 0x38, 0xe0, 0x1f, 0x8d, 0xc8, 0x27, 0x9b, 0xbb, + 0x6e, 0x1f, 0xdb, 0x55, 0x95, 0x69, 0x6c, 0xc5, 0x83, 0x7b, 0xa6, 0xe7, 0xa9, 0x67, 0xfd, 0x2f, + 0x5a, 0x40, 0xbf, 0x82, 0x91, 0xb2, 0xf6, 0x2c, 0x17, 0x64, 0xfa, 0xc9, 0xd2, 0x4d, 0xad, 0x97, + 0x4a, 0x73, 0x35, 0xfe, 0xb4, 0xb1, 0xd8, 0x3e, 0x79, 0xc2, 0xd5, 0xf8, 0x93, 0x48, 0x2c, 0x8f, + 0x22, 0xbb, 0x2c, 0x85, 0x9a, 0xd0, 0x58, 0xf7, 0x58, 0xeb, 0x78, 0x19, 0x4a, 0xe3, 0x7e, 0xb7, + 0x24, 0xe4, 0x2a, 0x4e, 0xff, 0x31, 0xf4, 0x6c, 0x20, 0xa2, 0xee, 0xae, 0xff, 0x25, 0x17, 0x96, + 0xa9, 0x28, 0x0d, 0x13, 0x0d, 0x78, 0x44, 0x73, 0xac, 0xc7, 0x6b, 0xbf, 0x70, 0xff, 0x50, 0x85, + 0x30, 0xf7, 0xd8, 0x5a, 0x2d, 0xc7, 0x95, 0x15, 0x98, 0xd0, 0x09, 0x0f, 0xac, 0x1f, 0xdc, 0x1f, + 0xa7, 0xb3, 0x79, 0xc0, 0xad, 0xf8, 0x6c, 0x7b, 0x9f, 0xe2, 0xbb, 0xb8, 0x15, 0xf0, 0xcd, 0xc2, + 0xd8, 0x2c, 0x0b, 0x88, 0x10, 0x7e, 0x90, 0x86, 0x63, 0x95, 0x2e, 0xc3, 0xb8, 0x04, 0x4e, 0xe9, + 0xab, 0x4c, 0xe6, 0xa9, 0xa7, 0x68, 0x7d, 0x9c, 0xa6, 0x67, 0x77, 0xd0, 0xe2, 0x42, 0x1a, 0x44, + 0xab, 0xd0, 0x1e, 0x27, 0x9d, 0x79, 0xe0, 0xf9, 0xd1, 0xe0, 0xcb, 0xef, 0xc2, 0xfe, 0xe1, 0xf9, + 0x01, 0x64, 0x9e, 0x24, 0xb3, 0xd7, 0x32, 0x17, 0x14, 0x84, 0x1e, 0x21, 0xc8, 0xc7, 0xc9, 0x2c, + 0x99, 0x4c, 0xb9, 0xff, 0xe8, 0x6c, 0x09, 0xef, 0x0b, 0x0b, 0xbf, 0xf9, 0x5f, 0x1f, 0x3e, 0x47, + 0x68, 0xad, 0x34, 0xcc, 0xc3, 0x39, 0x48, 0x15, 0xa3, 0x72, 0x11, 0xe6, 0x6a, 0xea, 0xf1, 0x33, + 0x1a, 0x67, 0x0d, 0x78, 0x70, 0x3d, 0x9b, 0x40, 0xb4, 0x83, 0x01, 0xb9, 0xa1, 0x01, 0xd7, 0x45, + 0x33, 0x0e, 0xf4, 0xb1, 0x71, 0x22, 0xa7, 0x95, 0x8e, 0x1d, 0xda, 0x35, 0x0c, 0x6c, 0x12, 0x4b, + 0x8a, 0xc2, 0x7f, 0x17, 0xe7, 0x45, 0xa2, 0xe6, 0x25, 0x40, 0x17, 0xac, 0x8c, 0xa7, 0x82, 0x21, + 0x26, 0xe2, 0x2e, 0x62, 0x61, 0xc3, 0x41, 0x26, 0x53, 0x8b, 0x91, 0x8a, 0x8d, 0xad, 0x7d, 0xb4, + 0xe7, 0x7f, 0xa1, 0xe4, 0x50, 0x91, 0xb3, 0xc2, 0xd2, 0x84, 0x73, 0x8b, 0x2c, 0xa0, 0xf2, 0x9b, + 0xd1, 0xe5, 0x45, 0x64, 0x61, 0x4b, 0x92, 0xc7, 0xc6, 0x90, 0x21, 0x64, 0x95, 0x27, 0x8e, 0x1a, + 0x53, 0x0e, 0x38, 0x49, 0x83, 0x17, 0x92, 0x5c, 0xc4, 0x7a, 0x54, 0xa7, 0x96, 0xd7, 0xa4, 0x98, + 0xf3, 0x8d, 0x5d, 0xc2, 0xc8, 0xb8, 0x90, 0x73, 0xa7, 0x6f, 0xc4, 0x0b, 0x55, 0x90, 0x65, 0xf5, + 0x8a, 0x08, 0x70, 0xb5, 0x9b, 0xbc, 0x56, 0x41, 0x04, 0xf8, 0xe6, 0x79, 0x5a, 0xcc, 0xd5, 0x1d, + 0x05, 0x86, 0x3b, 0x08, 0xc0, 0xee, 0xbf, 0xdc, 0xdd, 0xdd, 0x30, 0xa7, 0x2a, 0x09, 0x34, 0xf2, + 0x05, 0xd9, 0xd3, 0x1a, 0x53, 0x88, 0x05, 0xfb, 0xe7, 0xe5, 0xc5, 0x1b, 0xe4, 0xe9, 0x8d, 0xf8, + 0xb3, 0x12, 0xc6, 0x1e, 0x7e, 0xc7, 0xf1, 0x1b, 0x47, 0x6f, 0xa0, 0x93, 0x49, 0x83, 0xd3, 0x4d, + 0x09, 0x4f, 0x89, 0x11, 0xe2, 0x2e, 0x70, 0x23, 0xc6, 0x22, 0xcd, 0xcd, 0x20, 0x7a, 0x4e, 0x5a, + 0xf8, 0xdf, 0xf5, 0xf3, 0x5a, 0xae, 0xdd, 0x12, 0x4c, 0x32, 0x92, 0x59, 0xd0, 0x6d, 0x05, 0xd4, + 0x9c, 0x72, 0x7d, 0x35, 0x1c, 0xf1, 0x60, 0x23, 0x9f, 0x9d, 0x72, 0xbe, 0x7f, 0x48, 0x16, 0x15, + 0xce, 0xa2, 0xd7, 0x4a, 0xcf, 0x4f, 0xe1, 0xd1, 0xc3, 0x26, 0x3b, 0x8b, 0x26, 0xb8, 0x3d, 0x4e, + 0x7e, 0x06, 0xac, 0x21, 0x05, 0x8e, 0x79, 0xbf, 0xfb, 0x81, 0xe2, 0x9f, 0x32, 0x03, 0x73, 0x85, + 0x8f, 0xf1, 0xbb, 0x38, 0xaf, 0xc0, 0xa5, 0x3c, 0xe8, 0xee, 0xad, 0xa1, 0x4b, 0x32, 0x91, 0xcc, + 0xde, 0x56, 0xf3, 0x75, 0xbe, 0x77, 0xbd, 0xae, 0x20, 0x53, 0xc2, 0x99, 0x58, 0x86, 0x70, 0x59, + 0x92, 0x79, 0xbd, 0xf7, 0xbb, 0x3b, 0x2f, 0x3f, 0xf4, 0x7c, 0x24, 0xfd, 0x7b, 0x7e, 0x02, 0xbd, + 0x4d, 0x19, 0x27, 0x94, 0x8a, 0xa3, 0x78, 0x8c, 0xff, 0x67, 0x60, 0x7c, 0x98, 0xca, 0x87, 0x99, + 0x9c, 0x58, 0xfc, 0xbe, 0x42, 0x09, 0xd0, 0x2a, 0xc7, 0xd3, 0x71, 0x4e, 0xef, 0xd7, 0x31, 0x88, + 0x9d, 0xc6, 0xe3, 0xd2, 0x5c, 0xa8, 0x64, 0x46, 0x5b, 0xc0, 0xf2, 0x2e, 0x99, 0x87, 0x8d, 0xa4, + 0x6b, 0x44, 0xea, 0x6d, 0xd9, 0x3c, 0x9c, 0xaa, 0x45, 0xe1, 0xe4, 0xc2, 0x31, 0xfc, 0x8d, 0x9a, + 0xd3, 0x02, 0xb0, 0x8c, 0x5a, 0x5c, 0x08, 0x77, 0x80, 0x7b, 0x76, 0xab, 0xdd, 0xd3, 0x8d, 0x9c, + 0x66, 0xab, 0xe1, 0x66, 0xef, 0x39, 0x1c, 0xa6, 0x69, 0xf0, 0x54, 0x50, 0x26, 0xf0, 0x0f, 0x08, + 0xe6, 0x24, 0xaf, 0x52, 0x61, 0xbc, 0x95, 0x75, 0xbe, 0xff, 0xd7, 0x5f, 0xcd, 0x1b, 0xd2, 0x96, + 0x7e, 0x4f, 0xc5, 0x24, 0xae, 0x72, 0x8b, 0xe4, 0x47, 0x4e, 0x6c, 0xa4, 0xcb, 0x76, 0xae, 0x03, + 0x2a, 0x7b, 0x8f, 0x71, 0xc0, 0xc5, 0x45, 0x1d, 0x48, 0x9c, 0x6a, 0xc1, 0x47, 0xfe, 0xd4, 0x12, + 0xc5, 0x3e, 0xb4, 0xc2, 0x7f, 0xea, 0xf1, 0x77, 0x17, 0x67, 0xa7, 0x20, 0x53, 0x93, 0x1e, 0x71, + 0xe4, 0x0f, 0x56, 0x9b, 0xd4, 0xdf, 0x38, 0x6f, 0xe8, 0xd5, 0xa4, 0x69, 0xa3, 0x86, 0xe6, 0x51, + 0x96, 0x5c, 0xee, 0x1c, 0xca, 0x89, 0xc7, 0xc9, 0xbf, 0x07, 0x44, 0xc5, 0xa1, 0x2b, 0x55, 0x89, + 0xca, 0x7d, 0x57, 0xbd, 0x76, 0x03, 0xcf, 0x95, 0xb7, 0x88, 0x56, 0xe7, 0x43, 0xab, 0x34, 0xa0, + 0x24, 0x2d, 0xce, 0xad, 0x98, 0x53, 0x9c, 0x27, 0xe7, 0x25, 0x77, 0x36, 0xd7, 0xcb, 0xb0, 0x7b, + 0x5e, 0x82, 0x58, 0xc8, 0x2e, 0x76, 0xa9, 0x52, 0x11, 0xb2, 0x6b, 0xa4, 0xb0, 0x11, 0x4c, 0x90, + 0x43, 0x19, 0x29, 0xc9, 0xce, 0xaf, 0x41, 0x1d, 0xc1, 0x96, 0x44, 0xb3, 0x2d, 0x31, 0x70, 0xd2, + 0x10, 0xa3, 0x22, 0x37, 0xc2, 0xa9, 0x2d, 0x48, 0xb5, 0xd8, 0x66, 0x04, 0x56, 0xa0, 0x22, 0xec, + 0xc8, 0xd1, 0x03, 0x78, 0x7b, 0x81, 0x08, 0x11, 0x8c, 0xe6, 0x9d, 0xb4, 0x19, 0x82, 0x9b, 0xfb, + 0x47, 0x3b, 0x7b, 0x07, 0x77, 0x4a, 0xa6, 0x6c, 0xd7, 0x0f, 0x4d, 0x99, 0x4b, 0xeb, 0x46, 0x91, + 0xa4, 0xc0, 0x79, 0x6a, 0xb3, 0xc1, 0xfe, 0x93, 0x27, 0xde, 0xaa, 0x20, 0xaf, 0xad, 0x0d, 0x1a, + 0x6b, 0x6b, 0x2b, 0x6c, 0x98, 0x29, 0x63, 0xe9, 0xa8, 0xa7, 0xc8, 0x2a, 0x6a, 0x12, 0x8e, 0x00, + 0xe9, 0xd3, 0xfa, 0xf1, 0x80, 0x03, 0x6e, 0x08, 0x7d, 0xaa, 0x90, 0x0f, 0xfe, 0x57, 0xec, 0x80, + 0xc8, 0x2d, 0x22, 0xbf, 0xe7, 0xc7, 0x4c, 0x8b, 0xc9, 0x2a, 0x01, 0xb7, 0x17, 0xb6, 0x16, 0x21, + 0x5d, 0xbf, 0x21, 0xfb, 0xff, 0x45, 0xca, 0x7a, 0xf1, 0x5a, 0x12, 0x21, 0xeb, 0x4a, 0xe5, 0x37, + 0x85, 0xbf, 0x67, 0xc2, 0x4f, 0xe6, 0xa8, 0x8c, 0x7e, 0xe3, 0x2e, 0x16, 0x83, 0x5a, 0xf5, 0x34, + 0x1c, 0x4e, 0xc2, 0xd8, 0x05, 0x49, 0xf4, 0xc0, 0x16, 0x91, 0xf0, 0xcd, 0x30, 0x6a, 0x56, 0xac, + 0x32, 0x9b, 0xc0, 0x3c, 0x6a, 0x01, 0x05, 0x2c, 0xc0, 0xc5, 0x61, 0xe8, 0x50, 0xb2, 0x5f, 0x3b, + 0xfd, 0x5e, 0xd3, 0x2a, 0xf5, 0x1d, 0x65, 0x0f, 0xfe, 0x2e, 0xe7, 0x04, 0x22, 0xab, 0x74, 0x0e, + 0xee, 0x75, 0x2c, 0x9e, 0x18, 0x18, 0x70, 0x88, 0x85, 0x6e, 0x41, 0xbf, 0x57, 0x77, 0x7e, 0x54, + 0x63, 0x51, 0xba, 0xc8, 0x96, 0x88, 0x23, 0x78, 0xd1, 0x90, 0x4d, 0x40, 0x53, 0x1d, 0x26, 0xf1, + 0x4e, 0x4f, 0x1f, 0x0d, 0x67, 0x75, 0x27, 0x37, 0x9c, 0x70, 0x86, 0x16, 0x2e, 0x53, 0x98, 0x29, + 0xe1, 0x38, 0x2c, 0x4d, 0xe5, 0x1d, 0x73, 0x5c, 0x1f, 0xa1, 0xf4, 0x40, 0xb7, 0xc5, 0xf6, 0x58, + 0x26, 0xf2, 0xf2, 0x84, 0x0f, 0x3a, 0x7d, 0x60, 0x6b, 0x61, 0x15, 0x75, 0x01, 0x11, 0xaf, 0x5f, + 0x38, 0x4e, 0x4d, 0x10, 0x5c, 0xb3, 0x88, 0xbf, 0xa1, 0x63, 0x8f, 0xfa, 0xbd, 0x7a, 0x02, 0xaa, + 0x41, 0xc4, 0xe0, 0xe1, 0x3d, 0x9d, 0xd5, 0xa6, 0x13, 0xda, 0x44, 0x84, 0xb6, 0xde, 0xb7, 0xb5, + 0xc3, 0x54, 0xe3, 0xb9, 0x84, 0x8e, 0xc3, 0xf8, 0x4e, 0xac, 0x97, 0x64, 0xba, 0x15, 0x9f, 0xed, + 0x0f, 0x3a, 0xc3, 0xa6, 0xc1, 0x63, 0x4f, 0xd8, 0xad, 0xeb, 0xbf, 0x88, 0x2e, 0xaa, 0x12, 0xd8, + 0xec, 0x0f, 0xda, 0x5e, 0x94, 0x5d, 0x9f, 0xbf, 0x3d, 0x60, 0x7d, 0x59, 0x94, 0x95, 0x6d, 0x44, + 0x97, 0x30, 0x6e, 0xa1, 0x74, 0xca, 0x1d, 0x48, 0x98, 0x5f, 0x35, 0xbb, 0xee, 0xd9, 0xc8, 0xff, + 0xe0, 0xf1, 0x39, 0xc0, 0x8a, 0x3f, 0xd7, 0xe9, 0x50, 0xbf, 0xc9, 0x62, 0xe3, 0x4d, 0x15, 0x60, + 0x31, 0x22, 0x96, 0x88, 0xaf, 0x79, 0x1c, 0x05, 0xca, 0x87, 0x2c, 0x04, 0x19, 0x92, 0x18, 0x33, + 0x8e, 0xbb, 0xff, 0x86, 0x63, 0xe8, 0xf0, 0x39, 0xd2, 0x1c, 0x05, 0x18, 0x3d, 0xaf, 0x96, 0x09, + 0x67, 0xae, 0x43, 0xc6, 0x89, 0x9b, 0x69, 0x1f, 0xb3, 0xe7, 0x2c, 0x95, 0x53, 0x69, 0x19, 0x96, + 0x8d, 0x41, 0xec, 0xc0, 0x44, 0x03, 0xfe, 0x0d, 0x97, 0x2c, 0x62, 0x8d, 0xb6, 0xbf, 0xf3, 0xe4, + 0x97, 0x97, 0x2f, 0x5e, 0xbc, 0x38, 0x64, 0xb7, 0x85, 0x28, 0x12, 0xbd, 0x2c, 0xad, 0x48, 0x99, + 0xd5, 0x71, 0x61, 0xe6, 0xd2, 0x18, 0x04, 0x60, 0xc8, 0x4e, 0xd0, 0x82, 0x68, 0x90, 0x6e, 0x61, + 0xd9, 0x22, 0x13, 0x44, 0xa4, 0x39, 0xda, 0x48, 0xea, 0x62, 0x60, 0x64, 0xc0, 0x52, 0xc5, 0xde, + 0x5e, 0x8d, 0x18, 0xaa, 0x03, 0x5b, 0xaa, 0x4a, 0xb3, 0x71, 0x5c, 0xcc, 0x30, 0x49, 0x13, 0x4a, + 0x07, 0x6c, 0x78, 0x7e, 0x19, 0x30, 0x61, 0x93, 0x90, 0x95, 0xb2, 0xe8, 0x76, 0x5a, 0x97, 0xea, + 0x01, 0x15, 0x11, 0xb6, 0x90, 0x1a, 0xd2, 0x8c, 0x61, 0xde, 0xd5, 0xe8, 0xd8, 0x67, 0x46, 0x4d, + 0x2c, 0xf4, 0x12, 0xac, 0x6e, 0x82, 0xef, 0xa1, 0xed, 0xe0, 0x19, 0xab, 0xcf, 0x6d, 0x18, 0xbe, + 0xbd, 0x72, 0x11, 0xa5, 0x07, 0xd7, 0x30, 0xa8, 0xcc, 0x34, 0xcc, 0x7f, 0xd4, 0x3f, 0xf5, 0x8e, + 0xab, 0xeb, 0x2d, 0x5f, 0x3c, 0xdb, 0x6f, 0x70, 0x19, 0x29, 0xe0, 0x46, 0xf7, 0x15, 0x06, 0x35, + 0x02, 0x86, 0x68, 0x67, 0x6d, 0xcb, 0xcf, 0xd0, 0xef, 0x1a, 0x74, 0x0e, 0x64, 0x1c, 0x2b, 0x04, + 0xa1, 0xa3, 0x58, 0x9c, 0x1b, 0xd5, 0x20, 0x6d, 0x33, 0x81, 0x56, 0x4e, 0x6b, 0x40, 0xc2, 0xda, + 0xe3, 0xba, 0x4e, 0xab, 0x51, 0x26, 0x56, 0x23, 0xd4, 0xac, 0x55, 0x79, 0xca, 0xc6, 0x82, 0xae, + 0x3d, 0xc5, 0x14, 0x62, 0x1c, 0x96, 0x38, 0x0e, 0xad, 0x7a, 0x73, 0x78, 0x1a, 0xd2, 0xb6, 0xfe, + 0x78, 0xd0, 0x39, 0x95, 0xa6, 0xd5, 0xa6, 0x5e, 0x57, 0x28, 0x0b, 0xdf, 0x13, 0xc8, 0x01, 0x53, + 0x38, 0x52, 0x2f, 0x24, 0xf0, 0x8e, 0x0b, 0x86, 0x00, 0x41, 0xe4, 0x43, 0x8f, 0x04, 0x2f, 0x60, + 0x2c, 0xf8, 0x36, 0x63, 0xf5, 0x7d, 0x6d, 0x85, 0x26, 0xa1, 0x3e, 0x76, 0x86, 0xf6, 0xe5, 0x3a, + 0x9a, 0x29, 0x3f, 0x10, 0x66, 0x75, 0x7b, 0x49, 0x98, 0x23, 0xf7, 0x97, 0xb5, 0x76, 0xee, 0x6c, + 0x39, 0x71, 0xc7, 0xe7, 0xe4, 0x26, 0x2c, 0x4b, 0x6b, 0x95, 0xd2, 0x6e, 0xbf, 0x27, 0x6b, 0xd4, + 0x4f, 0x45, 0xb1, 0x64, 0x71, 0x92, 0x90, 0xfb, 0x80, 0xc9, 0x3b, 0xf9, 0x5a, 0xb2, 0x96, 0xc6, + 0x68, 0x37, 0xed, 0x14, 0xe9, 0x0f, 0x7c, 0x78, 0xf5, 0xae, 0xf1, 0x21, 0xfd, 0xbd, 0x06, 0x2b, + 0x2a, 0x4d, 0x90, 0x43, 0xce, 0x0f, 0x36, 0xde, 0x0c, 0x1b, 0xdf, 0x1d, 0xe7, 0xf9, 0xfa, 0xd8, + 0xb8, 0x48, 0x59, 0xc3, 0xd1, 0x88, 0x2d, 0xcc, 0x00, 0x70, 0x41, 0x81, 0xd1, 0x62, 0xab, 0x07, + 0xff, 0x57, 0x0e, 0x1c, 0x6f, 0x20, 0xed, 0x80, 0x03, 0xba, 0x50, 0x03, 0x01, 0x61, 0xe1, 0xde, + 0x99, 0x43, 0x5f, 0x52, 0x3c, 0x24, 0x82, 0xba, 0x78, 0xb0, 0x65, 0xdd, 0xb1, 0xb7, 0xf1, 0x4e, + 0x6c, 0x93, 0x3d, 0x1b, 0x0c, 0xdb, 0xf8, 0xae, 0x49, 0x06, 0xf4, 0xf2, 0x6c, 0xf0, 0x03, 0x4a, + 0xbc, 0x25, 0x76, 0xeb, 0x5c, 0xc6, 0x45, 0x15, 0xe7, 0xce, 0x21, 0xed, 0xd6, 0x15, 0xd7, 0xe9, + 0xc1, 0x59, 0x1d, 0xbb, 0xc7, 0x3a, 0xad, 0x64, 0xa1, 0xb0, 0xe8, 0x51, 0xec, 0x1a, 0x76, 0x3a, + 0xbe, 0xe2, 0x2b, 0x9d, 0x88, 0x39, 0xab, 0x12, 0xc4, 0x77, 0x83, 0xe6, 0x5a, 0xe9, 0x46, 0xa9, + 0xb8, 0x85, 0x68, 0x6c, 0x71, 0x9b, 0x29, 0x66, 0x35, 0xc3, 0x35, 0x75, 0x94, 0x75, 0xa8, 0x38, + 0x46, 0xbc, 0xd7, 0x40, 0x8d, 0x2a, 0x47, 0x3a, 0xb7, 0xdd, 0x11, 0xf2, 0xae, 0x29, 0x93, 0xad, + 0xf0, 0xe6, 0xbd, 0xdf, 0x8b, 0x57, 0x2e, 0x18, 0x74, 0x9a, 0xf3, 0x56, 0x93, 0x2e, 0x3e, 0x37, + 0xb4, 0x76, 0x77, 0xa7, 0xc6, 0xdb, 0xae, 0x2d, 0x76, 0xc1, 0x56, 0xda, 0x88, 0xd7, 0xe7, 0x0d, + 0x58, 0x0b, 0x5d, 0xe7, 0x61, 0xec, 0x7e, 0xdd, 0xb8, 0x52, 0xb8, 0xa2, 0x4b, 0x52, 0x82, 0x7b, + 0x5a, 0xfb, 0xbf, 0x0e, 0x6e, 0xdd, 0xb2, 0x15, 0xa2, 0x75, 0x38, 0xae, 0x78, 0xea, 0x71, 0x28, + 0x5a, 0x2b, 0x59, 0x83, 0x06, 0xa0, 0x69, 0x90, 0xe8, 0xac, 0xa1, 0x20, 0xbc, 0x5a, 0x18, 0xb6, + 0xae, 0x7c, 0x5b, 0x60, 0xb4, 0x58, 0x6c, 0xaf, 0x58, 0x23, 0xd2, 0x79, 0x18, 0x92, 0xfd, 0xc7, + 0x31, 0x79, 0xa4, 0x5a, 0x3e, 0x88, 0xc9, 0x7e, 0xb0, 0xa1, 0xfc, 0xb7, 0x80, 0x6c, 0xe0, 0x41, + 0xb9, 0xd3, 0x79, 0x38, 0x79, 0x6a, 0x13, 0xa8, 0x2c, 0x34, 0xb8, 0xf4, 0xb6, 0x6f, 0xb8, 0x2e, + 0x1d, 0xaf, 0xfe, 0x38, 0xbb, 0x79, 0x77, 0x73, 0x3e, 0x3a, 0xab, 0x6b, 0x05, 0x28, 0x56, 0x53, + 0x5d, 0x79, 0x70, 0x47, 0xe8, 0x1c, 0xd1, 0xa1, 0x9b, 0x70, 0x4d, 0xaf, 0xdb, 0xf2, 0xe6, 0x31, + 0x11, 0xc5, 0x9f, 0x15, 0x2a, 0x08, 0xca, 0xdd, 0x64, 0x93, 0x3a, 0x18, 0xf8, 0x5b, 0x8b, 0x1d, + 0x47, 0x86, 0xcd, 0x6d, 0xdb, 0x1d, 0x77, 0x36, 0xbc, 0x0e, 0x9b, 0x8c, 0x7c, 0xfd, 0x00, 0xc5, + 0x07, 0x2b, 0xba, 0x36, 0x8e, 0x10, 0x89, 0x74, 0xc7, 0x94, 0xf3, 0x29, 0xea, 0x51, 0xd8, 0xe6, + 0xcb, 0xf1, 0x18, 0xb7, 0xdc, 0x36, 0x49, 0x9a, 0x44, 0x68, 0x3f, 0x23, 0xa1, 0xe0, 0x66, 0xd5, + 0x38, 0xc4, 0xd5, 0xbd, 0x77, 0x2c, 0x75, 0xa2, 0x94, 0x9a, 0x49, 0xd1, 0xa3, 0x1e, 0xbc, 0x87, + 0x3a, 0x1d, 0xeb, 0x29, 0x7d, 0xee, 0xfa, 0x38, 0xce, 0x51, 0x22, 0xf9, 0x80, 0x86, 0x29, 0x08, + 0x3a, 0xec, 0x4e, 0x68, 0xa2, 0x19, 0xb6, 0x1b, 0xee, 0x3d, 0x0f, 0xf7, 0x57, 0x44, 0xf5, 0x33, + 0xe2, 0x17, 0x72, 0x26, 0x7b, 0xee, 0xce, 0x46, 0xed, 0xab, 0xd2, 0x66, 0x07, 0x54, 0xb8, 0x93, + 0x68, 0x91, 0x4a, 0x8a, 0xd0, 0xce, 0xfd, 0xc3, 0x37, 0x97, 0xa2, 0x54, 0x0b, 0xba, 0x7d, 0x82, + 0xfc, 0xa4, 0xa8, 0x39, 0xd4, 0x94, 0x22, 0x91, 0x20, 0x1c, 0x8b, 0x72, 0x30, 0x5b, 0xe5, 0x6d, + 0xe7, 0x98, 0x65, 0x15, 0xaa, 0x85, 0x1b, 0x75, 0x05, 0x11, 0xbc, 0x8f, 0x3b, 0x97, 0x5e, 0xaa, + 0x42, 0xa0, 0x50, 0x29, 0x46, 0x7d, 0x1e, 0xe0, 0x02, 0x33, 0xd6, 0xdf, 0x89, 0xdc, 0xfd, 0xa3, + 0xdb, 0x5a, 0xd4, 0xf1, 0x12, 0x9f, 0xed, 0xef, 0xee, 0xfd, 0xb6, 0xb3, 0xbf, 0xbb, 0xff, 0x8c, + 0xbd, 0xca, 0x34, 0x6e, 0xda, 0x12, 0xd4, 0x39, 0x4c, 0xb2, 0x05, 0x7d, 0xa7, 0x68, 0x6a, 0xd4, + 0x05, 0xaa, 0x17, 0xae, 0x7e, 0x80, 0x1d, 0x4a, 0xd5, 0x25, 0xf6, 0xa7, 0xc0, 0x18, 0xe7, 0x6a, + 0xdc, 0x9b, 0xe3, 0x8a, 0x2e, 0x74, 0xef, 0xe2, 0xfc, 0xd5, 0xd9, 0xdb, 0xe1, 0xd9, 0xb7, 0xf0, + 0x77, 0x2e, 0xcf, 0x47, 0x2c, 0xaf, 0x4f, 0x72, 0x06, 0xa2, 0xae, 0xb5, 0x8a, 0x0e, 0x85, 0x86, + 0x55, 0x30, 0xc3, 0x18, 0x54, 0x47, 0xb0, 0x29, 0xee, 0xca, 0x45, 0x4b, 0x03, 0x46, 0x96, 0x9c, + 0x12, 0xd6, 0x7d, 0x4f, 0x60, 0xee, 0x13, 0x01, 0xf1, 0x3c, 0x2d, 0xa9, 0x49, 0x95, 0x92, 0x84, + 0x28, 0xa2, 0xfe, 0x06, 0xf3, 0xdd, 0x2e, 0xf6, 0xdb, 0x26, 0xb6, 0xf3, 0x53, 0x5d, 0x6c, 0x8f, + 0x4a, 0x0d, 0x7e, 0xa8, 0x79, 0xa7, 0x4e, 0x9e, 0xbe, 0xec, 0xfe, 0x17, 0x52, 0x67, 0xe8, 0x26, + 0xe9, 0x15, 0x00, 0x00 }; diff --git a/wled00/improv.cpp b/wled00/improv.cpp index 64b76418b9..2267c35917 100644 --- a/wled00/improv.cpp +++ b/wled00/improv.cpp @@ -210,7 +210,7 @@ void sendImprovInfoResponse() { //Use serverDescription if it has been changed from the default "WLED", else mDNS name bool useMdnsName = (strcmp(serverDescription, "WLED") == 0 && strlen(cmDNS) > 0); char vString[20]; - sprintf_P(vString, PSTR("0.14.2-b2/%i"), VERSION); + sprintf_P(vString, PSTR("0.14.2/%i"), VERSION); const char *str[4] = {"WLED", vString, bString, useMdnsName ? cmDNS : serverDescription}; sendImprovRPCResult(ImprovRPCType::Request_Info, 4, str); diff --git a/wled00/wled.h b/wled00/wled.h index 8c5576547d..9f6ba88fdf 100644 --- a/wled00/wled.h +++ b/wled00/wled.h @@ -3,12 +3,12 @@ /* Main sketch, global variable declarations @title WLED project sketch - @version 0.14.2-b1 + @version 0.14.2 @author Christian Schwinne */ // version code in format yymmddb (b = daily build) -#define VERSION 2403110 +#define VERSION 2403170 //uncomment this if you have a "my_config.h" file you'd like to use //#define WLED_USE_MY_CONFIG From 6d278994ec1a4421580883f79701e96b9e58a67f Mon Sep 17 00:00:00 2001 From: Blaz Kristan Date: Fri, 29 Mar 2024 20:05:56 +0100 Subject: [PATCH 27/35] WLED 0.14.3 release - Fix for transition 0 (#3854, #3832, #3720) - copyright year update - updated AsyncWebServer to v2.2.0 --- CHANGELOG.md | 4 +++ package-lock.json | 4 +-- package.json | 2 +- platformio.ini | 7 ++-- wled00/data/settings_sec.htm | 2 +- wled00/html_other.h | 66 ++++++++++++++++++------------------ wled00/html_settings.h | 30 ++++++++-------- wled00/improv.cpp | 2 +- wled00/led.cpp | 2 ++ wled00/wled.h | 2 +- 10 files changed, 63 insertions(+), 58 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8095a15d24..1cff856a4b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ ## WLED changelog +#### Build 2403290 +- WLED 0.14.3 release +- Fix for transition 0 (#3854, #3832, #3720) + #### Build 2403170 - WLED 0.14.2 release diff --git a/package-lock.json b/package-lock.json index 9bf4449ebc..a7330143f1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "wled", - "version": "0.14.2", + "version": "0.14.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "wled", - "version": "0.14.2", + "version": "0.14.3", "license": "ISC", "dependencies": { "clean-css": "^4.2.3", diff --git a/package.json b/package.json index 8781cd6c82..3bd73b76db 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "wled", - "version": "0.14.2", + "version": "0.14.3", "description": "Tools for WLED project", "main": "tools/cdata.js", "directories": { diff --git a/platformio.ini b/platformio.ini index 914ed05b35..0adc18cf28 100644 --- a/platformio.ini +++ b/platformio.ini @@ -63,7 +63,7 @@ arduino_core_2_7_4 = espressif8266@2.6.2 arduino_core_3_0_0 = espressif8266@3.0.0 arduino_core_3_2_0 = espressif8266@3.2.0 arduino_core_4_1_0 = espressif8266@4.1.0 -arduino_core_3_1_2 = espressif8266@4.2.0 +arduino_core_3_1_2 = espressif8266@4.2.1 # Development platforms arduino_core_develop = https://github.com/platformio/platform-espressif8266#develop @@ -73,8 +73,7 @@ arduino_core_git = https://github.com/platformio/platform-espressif8266#feature/ platform_wled_default = ${common.arduino_core_3_1_2} # We use 2.7.4.7 for all, includes PWM flicker fix and Wstring optimization #platform_packages = tasmota/framework-arduinoespressif8266 @ 3.20704.7 -platform_packages = platformio/framework-arduinoespressif8266 - platformio/toolchain-xtensa @ ~2.100300.220621 #2.40802.200502 +platform_packages = platformio/toolchain-xtensa @ ~2.100300.220621 #2.40802.200502 platformio/tool-esptool #@ ~1.413.0 platformio/tool-esptoolpy #@ ~1.30000.0 @@ -181,7 +180,7 @@ lib_deps = fastled/FastLED @ 3.6.0 IRremoteESP8266 @ 2.8.2 makuna/NeoPixelBus @ 2.7.5 - https://github.com/Aircoookie/ESPAsyncWebServer.git @ ^2.1.0 + https://github.com/Aircoookie/ESPAsyncWebServer.git @ ^2.2.0 #For use of the TTGO T-Display ESP32 Module with integrated TFT display uncomment the following line #TFT_eSPI #For compatible OLED display uncomment following diff --git a/wled00/data/settings_sec.htm b/wled00/data/settings_sec.htm index 0d9ec256a8..2cb4a264a8 100644 --- a/wled00/data/settings_sec.htm +++ b/wled00/data/settings_sec.htm @@ -134,7 +134,7 @@

About

WLED version ##VERSION##

Contributors, dependencies and special thanks
A huge thank you to everyone who helped me create WLED!

- (c) 2016-2023 Christian Schwinne
+ (c) 2016-2024 Christian Schwinne
Licensed under the MIT license

Server message: Response error!
diff --git a/wled00/html_other.h b/wled00/html_other.h index 2799fcdf30..3f94026157 100644 --- a/wled00/html_other.h +++ b/wled00/html_other.h @@ -43,45 +43,45 @@ const char PAGE_dmxmap[] PROGMEM = R"=====()====="; // Autogenerated from wled00/data/update.htm, do not edit!! const uint16_t PAGE_update_length = 613; const uint8_t PAGE_update[] PROGMEM = { - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0x75, 0x53, 0x5d, 0x6f, 0xd4, 0x30, - 0x10, 0x7c, 0xcf, 0xaf, 0x70, 0xfd, 0x74, 0x27, 0x51, 0x1b, 0x2a, 0x5e, 0x28, 0x49, 0x0a, 0x47, - 0x2b, 0x54, 0x09, 0xa9, 0x95, 0xda, 0x82, 0x78, 0x42, 0x8e, 0xbd, 0xb9, 0x98, 0x73, 0xec, 0xd4, - 0xde, 0xdc, 0xe9, 0x84, 0xfa, 0xdf, 0xd9, 0x38, 0x77, 0x05, 0xf1, 0xf1, 0x12, 0xc5, 0xd9, 0xd9, - 0xf1, 0xee, 0xcc, 0xa4, 0x3c, 0xb9, 0xbc, 0xf9, 0x70, 0xff, 0xf5, 0xf6, 0x8a, 0x75, 0xd8, 0xbb, - 0xba, 0x3c, 0x3c, 0x41, 0x99, 0xba, 0xec, 0x01, 0x15, 0xd3, 0xc1, 0x23, 0x78, 0xac, 0xf8, 0xce, - 0x1a, 0xec, 0x2a, 0x03, 0x5b, 0xab, 0xe1, 0x34, 0x1f, 0x38, 0xf3, 0xaa, 0x87, 0x8a, 0x6f, 0x2d, - 0xec, 0x86, 0x10, 0x91, 0xd7, 0x45, 0x89, 0x16, 0x1d, 0xd4, 0x5f, 0x3e, 0x5d, 0x5d, 0xb2, 0x87, - 0xc1, 0x28, 0x84, 0x52, 0xce, 0x9f, 0xca, 0xa4, 0xa3, 0x1d, 0xb0, 0x2e, 0xda, 0xd1, 0x6b, 0xb4, - 0xc1, 0xb3, 0xd5, 0x62, 0xf9, 0x63, 0x67, 0xbd, 0x09, 0x3b, 0xd1, 0xd9, 0x84, 0x21, 0xee, 0x45, - 0xa3, 0xf4, 0x66, 0xb1, 0x7c, 0x7a, 0x86, 0x3c, 0x10, 0xc4, 0x04, 0x3d, 0xf6, 0x34, 0x81, 0x58, - 0x03, 0x5e, 0x39, 0x98, 0x5e, 0x57, 0xfb, 0x6b, 0xb3, 0xe0, 0x63, 0xcb, 0x97, 0x22, 0xe1, 0xde, - 0x81, 0x30, 0x36, 0x0d, 0x4e, 0xed, 0x2b, 0xee, 0x83, 0x07, 0xfe, 0xe2, 0xbf, 0x2d, 0x7d, 0x5a, - 0xff, 0xdd, 0xd3, 0xb8, 0xa0, 0x37, 0xfc, 0xa9, 0x28, 0xe5, 0x61, 0xc4, 0xc3, 0xa8, 0x2c, 0x45, - 0x5d, 0x71, 0x99, 0x00, 0xd1, 0xfa, 0x75, 0x92, 0x49, 0x7c, 0x4f, 0x17, 0x43, 0xf5, 0x86, 0xd7, - 0xbf, 0x21, 0x27, 0xaa, 0xba, 0x78, 0x67, 0xfb, 0x49, 0x00, 0x36, 0x46, 0xb7, 0xe0, 0x33, 0xbd, - 0x4e, 0x89, 0x2f, 0xdf, 0x12, 0x32, 0x23, 0x4a, 0x39, 0x4b, 0xda, 0x04, 0xb3, 0x67, 0xc1, 0xbb, - 0xa0, 0x4c, 0xc5, 0x3f, 0x02, 0x7e, 0x5e, 0x2c, 0x89, 0xae, 0x3b, 0xab, 0x8b, 0x2c, 0xd9, 0x5d, - 0x68, 0x71, 0xa7, 0x22, 0x3c, 0x6b, 0x47, 0x95, 0xb2, 0x0d, 0xb1, 0x67, 0xe4, 0x45, 0x17, 0xa8, - 0xe7, 0xf6, 0xe6, 0xee, 0x9e, 0x33, 0x95, 0xe5, 0xa9, 0xb8, 0x90, 0x63, 0x06, 0x72, 0x66, 0xa9, - 0x46, 0x82, 0xb0, 0x02, 0x48, 0xba, 0xfd, 0x40, 0xae, 0xf4, 0xa3, 0x43, 0x3b, 0xa8, 0x88, 0x72, - 0x22, 0x38, 0x25, 0x98, 0xe2, 0x74, 0x75, 0x1a, 0x9b, 0xde, 0x92, 0x9d, 0x0f, 0xd3, 0xcd, 0xd7, - 0x3e, 0xa1, 0x72, 0x0e, 0x0c, 0xdb, 0x42, 0x4c, 0x44, 0x79, 0xce, 0xca, 0x34, 0x28, 0xcf, 0x0a, - 0xed, 0x54, 0x4a, 0x15, 0x4f, 0x76, 0xe0, 0xf5, 0x4b, 0xf1, 0xea, 0xb5, 0x38, 0xa3, 0x55, 0xa8, - 0x42, 0x2b, 0xc4, 0xfa, 0x32, 0xec, 0xf2, 0x0a, 0x0c, 0x3b, 0x60, 0x8e, 0xee, 0x4f, 0xc8, 0x1a, - 0xeb, 0x55, 0xdc, 0x53, 0xbf, 0x62, 0x45, 0x17, 0xa1, 0xad, 0x78, 0x87, 0x38, 0xa4, 0x73, 0x29, + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0x75, 0x53, 0xcb, 0x6e, 0xdb, 0x30, + 0x10, 0xbc, 0xeb, 0x2b, 0x18, 0x9e, 0x6c, 0xa0, 0x21, 0xfb, 0xba, 0x34, 0x95, 0x94, 0xd6, 0x4d, + 0x50, 0x04, 0x28, 0x90, 0x00, 0x49, 0x5a, 0xf4, 0x54, 0x50, 0xe4, 0xca, 0x62, 0x4d, 0x91, 0x0a, + 0xb9, 0xb2, 0x61, 0x14, 0xf9, 0xf7, 0xae, 0x28, 0x3b, 0x2d, 0xfa, 0xb8, 0x08, 0xa2, 0x76, 0x76, + 0xb8, 0x3b, 0x33, 0x2a, 0x4f, 0x2e, 0xae, 0x3f, 0xdc, 0x7d, 0xbd, 0xb9, 0x64, 0x1d, 0xf6, 0xae, + 0x2e, 0x0f, 0x4f, 0x50, 0xa6, 0x2e, 0x7b, 0x40, 0xc5, 0x74, 0xf0, 0x08, 0x1e, 0x2b, 0xbe, 0xb3, + 0x06, 0xbb, 0xca, 0xc0, 0xd6, 0x6a, 0x38, 0xcd, 0x07, 0xce, 0xbc, 0xea, 0xa1, 0xe2, 0x5b, 0x0b, + 0xbb, 0x21, 0x44, 0xe4, 0x75, 0x51, 0xa2, 0x45, 0x07, 0xf5, 0x97, 0x4f, 0x97, 0x17, 0xec, 0x7e, + 0x30, 0x0a, 0xa1, 0x94, 0xf3, 0xa7, 0x32, 0xe9, 0x68, 0x07, 0xac, 0x8b, 0x76, 0xf4, 0x1a, 0x6d, + 0xf0, 0x6c, 0xb5, 0x58, 0xfe, 0xd8, 0x59, 0x6f, 0xc2, 0x4e, 0x74, 0x36, 0x61, 0x88, 0x7b, 0xd1, + 0x28, 0xbd, 0x59, 0x2c, 0x1f, 0x9f, 0x20, 0xf7, 0x04, 0x31, 0x41, 0x8f, 0x3d, 0x4d, 0x20, 0xd6, + 0x80, 0x97, 0x0e, 0xa6, 0xd7, 0xd5, 0xfe, 0xca, 0x2c, 0xf8, 0xd8, 0xf2, 0xa5, 0x48, 0xb8, 0x77, + 0x20, 0x8c, 0x4d, 0x83, 0x53, 0xfb, 0x8a, 0xfb, 0xe0, 0x81, 0x3f, 0xfb, 0x6f, 0x4b, 0x9f, 0xd6, + 0x7f, 0xf7, 0x34, 0x2e, 0xe8, 0x0d, 0x7f, 0x2c, 0x4a, 0x79, 0x18, 0xf1, 0x30, 0x2a, 0x4b, 0x51, + 0x57, 0x5c, 0x26, 0x40, 0xb4, 0x7e, 0x9d, 0x64, 0x12, 0xdf, 0xd3, 0xf9, 0x50, 0xbd, 0xe1, 0xf5, + 0x6f, 0xc8, 0x89, 0xaa, 0x2e, 0xde, 0xd9, 0x7e, 0x12, 0x80, 0x8d, 0xd1, 0x2d, 0xf8, 0x4c, 0xaf, + 0x53, 0xe2, 0xcb, 0xb7, 0x84, 0xcc, 0x88, 0x52, 0xce, 0x92, 0x36, 0xc1, 0xec, 0x59, 0xf0, 0x2e, + 0x28, 0x53, 0xf1, 0x8f, 0x80, 0x9f, 0x17, 0x4b, 0xa2, 0xeb, 0x5e, 0xd6, 0x45, 0x96, 0xec, 0x36, + 0xb4, 0xb8, 0x53, 0x11, 0x9e, 0xb4, 0xa3, 0x4a, 0xd9, 0x86, 0xd8, 0x33, 0xf2, 0xa2, 0x0b, 0xd4, + 0x73, 0x73, 0x7d, 0x7b, 0xc7, 0x99, 0xca, 0xf2, 0x54, 0x5c, 0xc8, 0x31, 0x03, 0x39, 0xb3, 0x54, + 0x23, 0x41, 0x58, 0x01, 0x24, 0xdd, 0x7e, 0x20, 0x57, 0xfa, 0xd1, 0xa1, 0x1d, 0x54, 0x44, 0x39, + 0x11, 0x9c, 0x12, 0x4c, 0x71, 0xba, 0x3a, 0x8d, 0x4d, 0x6f, 0xc9, 0xce, 0xfb, 0xe9, 0xe6, 0x2b, + 0x9f, 0x50, 0x39, 0x07, 0x86, 0x6d, 0x21, 0x26, 0xa2, 0x3c, 0x63, 0x65, 0x1a, 0x94, 0x67, 0x85, + 0x76, 0x2a, 0xa5, 0x8a, 0x27, 0x3b, 0xf0, 0xfa, 0xb9, 0x78, 0xf1, 0x5a, 0xbc, 0xa2, 0x55, 0xa8, + 0x42, 0x2b, 0xc4, 0xfa, 0x22, 0xec, 0xf2, 0x0a, 0x0c, 0x3b, 0x60, 0x8e, 0xee, 0x4f, 0xc8, 0x1a, + 0xeb, 0x55, 0xdc, 0x53, 0xbf, 0x62, 0x45, 0x17, 0xa1, 0xad, 0x78, 0x87, 0x38, 0xa4, 0x33, 0x29, 0xd7, 0x16, 0xbb, 0xb1, 0x11, 0x3a, 0xf4, 0xf2, 0xbd, 0x8d, 0x3a, 0x84, 0xb0, 0xb1, 0x20, 0xa7, 0x7d, 0x65, 0x04, 0x07, 0x2a, 0x41, 0xe2, 0x0c, 0x55, 0x24, 0xb3, 0x2a, 0xfe, 0xad, 0x71, 0xca, 0x6f, 0x48, 0x13, 0xdb, 0xaf, 0x59, 0x91, 0x1d, 0x38, 0xf2, 0xd0, 0x17, 0x91, 0x3a, 0x0b, 0xce, - 0x24, 0x61, 0xc3, 0x81, 0xf6, 0x48, 0xf1, 0x27, 0xb5, 0x48, 0xdb, 0xf5, 0x45, 0xd6, 0xbe, 0x6a, - 0x69, 0xc2, 0xd3, 0xf4, 0x38, 0x92, 0xae, 0x53, 0x42, 0xa5, 0xca, 0x3b, 0x94, 0xd6, 0x0f, 0x23, - 0xb2, 0x59, 0xab, 0xd6, 0x3a, 0x38, 0xa6, 0xf9, 0xa8, 0x68, 0x84, 0xc7, 0xd1, 0x46, 0x30, 0x33, + 0x24, 0x61, 0xc3, 0x81, 0xf6, 0x48, 0xf1, 0x27, 0xb5, 0x48, 0xdb, 0xf5, 0x79, 0xd6, 0xbe, 0x6a, + 0x69, 0xc2, 0xd3, 0xf4, 0x30, 0x92, 0xae, 0x53, 0x42, 0xa5, 0xca, 0x3b, 0x94, 0xd6, 0x0f, 0x23, + 0xb2, 0x59, 0xab, 0xd6, 0x3a, 0x38, 0xa6, 0xf9, 0xa8, 0x68, 0x84, 0x87, 0xd1, 0x46, 0x30, 0x33, 0xba, 0x19, 0x11, 0x29, 0x90, 0x33, 0x7c, 0xd6, 0x90, 0xc8, 0x66, 0x9b, 0x4e, 0x4a, 0x39, 0x97, 0xff, 0x01, 0x9d, 0x0f, 0x93, 0xf0, 0xda, 0x59, 0xbd, 0xa9, 0xf8, 0x6a, 0xd2, 0x7d, 0x45, 0x39, 0xff, 0xd5, 0x94, 0x0d, 0xaa, 0x4b, 0x63, 0xb7, 0x45, 0xf6, 0x71, 0x4a, 0x29, 0xd1, 0xd4, 0x99, - 0x9d, 0xa2, 0x27, 0x84, 0x20, 0x70, 0x26, 0xbf, 0xcd, 0xcb, 0x32, 0x13, 0x98, 0x0f, 0xc8, 0xb4, - 0x0b, 0x74, 0x08, 0x91, 0x66, 0x6d, 0x23, 0xa4, 0x2e, 0xfb, 0x31, 0xa8, 0x35, 0xb0, 0xf3, 0x65, - 0x29, 0x89, 0x6f, 0x5a, 0x77, 0x8a, 0xdc, 0x94, 0xbf, 0xe9, 0xc7, 0xfe, 0x09, 0x3d, 0x8c, 0x87, - 0xc8, 0xee, 0x03, 0x00, 0x00 + 0x9d, 0xa2, 0x27, 0x84, 0x20, 0x70, 0x26, 0xbf, 0xc9, 0xcb, 0x32, 0x13, 0x98, 0x0f, 0xc8, 0xb4, + 0x0b, 0x74, 0x08, 0x91, 0x66, 0x6d, 0x23, 0xa4, 0x2e, 0xfb, 0x31, 0xa8, 0x35, 0xb0, 0xb3, 0x65, + 0x29, 0x89, 0x6f, 0x5a, 0x77, 0x8a, 0xdc, 0x94, 0xbf, 0xe9, 0xc7, 0xfe, 0x09, 0x81, 0xae, 0xc2, + 0xc6, 0xee, 0x03, 0x00, 0x00 }; diff --git a/wled00/html_settings.h b/wled00/html_settings.h index 62d3404dca..a1bd61e9ea 100644 --- a/wled00/html_settings.h +++ b/wled00/html_settings.h @@ -1753,21 +1753,21 @@ const uint8_t PAGE_settings_sec[] PROGMEM = { 0xcb, 0xf1, 0x18, 0xb7, 0xdc, 0x36, 0x49, 0x9a, 0x44, 0x68, 0x3f, 0x23, 0xa1, 0xe0, 0x66, 0xd5, 0x38, 0xc4, 0xd5, 0xbd, 0x77, 0x2c, 0x75, 0xa2, 0x94, 0x9a, 0x49, 0xd1, 0xa3, 0x1e, 0xbc, 0x87, 0x3a, 0x1d, 0xeb, 0x29, 0x7d, 0xee, 0xfa, 0x38, 0xce, 0x51, 0x22, 0xf9, 0x80, 0x86, 0x29, 0x08, - 0x3a, 0xec, 0x4e, 0x68, 0xa2, 0x19, 0xb6, 0x1b, 0xee, 0x3d, 0x0f, 0xf7, 0x57, 0x44, 0xf5, 0x33, - 0xe2, 0x17, 0x72, 0x26, 0x7b, 0xee, 0xce, 0x46, 0xed, 0xab, 0xd2, 0x66, 0x07, 0x54, 0xb8, 0x93, - 0x68, 0x91, 0x4a, 0x8a, 0xd0, 0xce, 0xfd, 0xc3, 0x37, 0x97, 0xa2, 0x54, 0x0b, 0xba, 0x7d, 0x82, - 0xfc, 0xa4, 0xa8, 0x39, 0xd4, 0x94, 0x22, 0x91, 0x20, 0x1c, 0x8b, 0x72, 0x30, 0x5b, 0xe5, 0x6d, - 0xe7, 0x98, 0x65, 0x15, 0xaa, 0x85, 0x1b, 0x75, 0x05, 0x11, 0xbc, 0x8f, 0x3b, 0x97, 0x5e, 0xaa, - 0x42, 0xa0, 0x50, 0x29, 0x46, 0x7d, 0x1e, 0xe0, 0x02, 0x33, 0xd6, 0xdf, 0x89, 0xdc, 0xfd, 0xa3, - 0xdb, 0x5a, 0xd4, 0xf1, 0x12, 0x9f, 0xed, 0xef, 0xee, 0xfd, 0xb6, 0xb3, 0xbf, 0xbb, 0xff, 0x8c, - 0xbd, 0xca, 0x34, 0x6e, 0xda, 0x12, 0xd4, 0x39, 0x4c, 0xb2, 0x05, 0x7d, 0xa7, 0x68, 0x6a, 0xd4, - 0x05, 0xaa, 0x17, 0xae, 0x7e, 0x80, 0x1d, 0x4a, 0xd5, 0x25, 0xf6, 0xa7, 0xc0, 0x18, 0xe7, 0x6a, - 0xdc, 0x9b, 0xe3, 0x8a, 0x2e, 0x74, 0xef, 0xe2, 0xfc, 0xd5, 0xd9, 0xdb, 0xe1, 0xd9, 0xb7, 0xf0, - 0x77, 0x2e, 0xcf, 0x47, 0x2c, 0xaf, 0x4f, 0x72, 0x06, 0xa2, 0xae, 0xb5, 0x8a, 0x0e, 0x85, 0x86, - 0x55, 0x30, 0xc3, 0x18, 0x54, 0x47, 0xb0, 0x29, 0xee, 0xca, 0x45, 0x4b, 0x03, 0x46, 0x96, 0x9c, - 0x12, 0xd6, 0x7d, 0x4f, 0x60, 0xee, 0x13, 0x01, 0xf1, 0x3c, 0x2d, 0xa9, 0x49, 0x95, 0x92, 0x84, - 0x28, 0xa2, 0xfe, 0x06, 0xf3, 0xdd, 0x2e, 0xf6, 0xdb, 0x26, 0xb6, 0xf3, 0x53, 0x5d, 0x6c, 0x8f, - 0x4a, 0x0d, 0x7e, 0xa8, 0x79, 0xa7, 0x4e, 0x9e, 0xbe, 0xec, 0xfe, 0x17, 0x52, 0x67, 0xe8, 0x26, + 0x3a, 0xec, 0x4e, 0x68, 0xa2, 0x19, 0xb6, 0x1b, 0xee, 0x3d, 0x0f, 0x9f, 0xad, 0x88, 0xea, 0x67, + 0xc4, 0x2f, 0xe4, 0x4c, 0xf6, 0xdc, 0x9d, 0x8d, 0xda, 0x57, 0xa5, 0xcd, 0x0e, 0xa8, 0x70, 0x27, + 0xd1, 0x22, 0x95, 0x14, 0xa1, 0x9d, 0xfb, 0x87, 0x6f, 0x2e, 0x45, 0xa9, 0x16, 0x74, 0xfb, 0x04, + 0xf9, 0x49, 0x51, 0x73, 0xa8, 0x29, 0x45, 0x22, 0x41, 0x38, 0x16, 0xe5, 0x60, 0xb6, 0xca, 0xdb, + 0xce, 0x31, 0xcb, 0x2a, 0x54, 0x0b, 0x37, 0xea, 0x0a, 0x22, 0x78, 0x1f, 0x77, 0x2e, 0xbd, 0x54, + 0x85, 0x40, 0xa1, 0x52, 0x8c, 0xfa, 0x3c, 0xc0, 0x05, 0x66, 0xac, 0xbf, 0x13, 0xb9, 0xfb, 0x47, + 0xb7, 0xb5, 0xa8, 0xe3, 0x25, 0x3e, 0xdb, 0xdf, 0xdd, 0xfb, 0x6d, 0x67, 0x7f, 0x77, 0xff, 0x39, + 0x7b, 0x95, 0x69, 0xdc, 0xb4, 0x25, 0xa8, 0x73, 0x98, 0x64, 0x0b, 0xfa, 0x4e, 0xd1, 0xd4, 0xa8, + 0x0b, 0x54, 0x2f, 0x5c, 0xfd, 0x00, 0x3b, 0x94, 0xaa, 0x4b, 0xec, 0x4f, 0x81, 0x31, 0xce, 0xd5, + 0xb8, 0x37, 0xc7, 0x15, 0x5d, 0xe8, 0xde, 0xc5, 0xf9, 0xab, 0xb3, 0xb7, 0xc3, 0xb3, 0x6f, 0xe1, + 0xef, 0x5c, 0x9e, 0x8f, 0x58, 0x5e, 0x9f, 0xe4, 0x0c, 0x44, 0x5d, 0x6b, 0x15, 0x1d, 0x0a, 0x0d, + 0xab, 0x60, 0x86, 0x31, 0xa8, 0x8e, 0x60, 0x53, 0xdc, 0x95, 0x8b, 0x96, 0x06, 0x8c, 0x2c, 0x39, + 0x25, 0xac, 0xfb, 0x9e, 0xc0, 0xdc, 0x27, 0x02, 0xe2, 0x79, 0x5a, 0x52, 0x93, 0x2a, 0x25, 0x09, + 0x51, 0x44, 0xfd, 0x0d, 0xe6, 0xbb, 0x5d, 0xec, 0xb7, 0x4d, 0x6c, 0xe7, 0xa7, 0xba, 0xd8, 0x1e, + 0x95, 0x1a, 0xfc, 0x50, 0xf3, 0x4e, 0x9d, 0x3c, 0x7d, 0xd9, 0xfd, 0x2f, 0x9b, 0x42, 0x3b, 0x5f, 0xe9, 0x15, 0x00, 0x00 }; diff --git a/wled00/improv.cpp b/wled00/improv.cpp index 2267c35917..d7d9ad05d7 100644 --- a/wled00/improv.cpp +++ b/wled00/improv.cpp @@ -210,7 +210,7 @@ void sendImprovInfoResponse() { //Use serverDescription if it has been changed from the default "WLED", else mDNS name bool useMdnsName = (strcmp(serverDescription, "WLED") == 0 && strlen(cmDNS) > 0); char vString[20]; - sprintf_P(vString, PSTR("0.14.2/%i"), VERSION); + sprintf_P(vString, PSTR("0.14.3/%i"), VERSION); const char *str[4] = {"WLED", vString, bString, useMdnsName ? cmDNS : serverDescription}; sendImprovRPCResult(ImprovRPCType::Request_Info, 4, str); diff --git a/wled00/led.cpp b/wled00/led.cpp index e668f33407..efaab27066 100644 --- a/wled00/led.cpp +++ b/wled00/led.cpp @@ -137,6 +137,8 @@ void stateUpdated(byte callMode) { if (strip.getTransition() == 0) { jsonTransitionOnce = false; transitionActive = false; + applyFinalBri(); + strip.trigger(); return; } diff --git a/wled00/wled.h b/wled00/wled.h index 9f6ba88fdf..ba38c5c796 100644 --- a/wled00/wled.h +++ b/wled00/wled.h @@ -8,7 +8,7 @@ */ // version code in format yymmddb (b = daily build) -#define VERSION 2403170 +#define VERSION 2403290 //uncomment this if you have a "my_config.h" file you'd like to use //#define WLED_USE_MY_CONFIG From 02405b4856d75a0cd29bf8ff5ba9239562ec8072 Mon Sep 17 00:00:00 2001 From: Woody Date: Wed, 3 Apr 2024 12:05:15 +0200 Subject: [PATCH 28/35] Create stale.yml --- .github/workflows/stale.yml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 .github/workflows/stale.yml diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml new file mode 100644 index 0000000000..4d531fd519 --- /dev/null +++ b/.github/workflows/stale.yml @@ -0,0 +1,27 @@ +name: 'Close stale issues and PRs' +on: + schedule: + - cron: '0 12 * * *' + workflow_dispatch: + +jobs: + stale: + runs-on: ubuntu-latest + steps: + - uses: actions/stale@v9 + with: + days-before-stale: 120 + days-before-close: 7 + exempt-issue-labels: 'pinned,keep,enhancement,confirmed' + exempt-pr-labels: 'pinned,keep,enhancement,confirmed' + stale-issue-message: > + Hey! This issue has been open for quite some time without any new comments now. + It will be closed automatically in a week if no further activity occurs. + + Thank you for using WLED! ✨ + stale-pr-message: > + Hey! This pull request has been open for quite some time without any new comments now. + It will be closed automatically in a week if no further activity occurs. + + Thank you for using WLED! ✨ + debug-only: true From bff6697690cd6a3de72f183403949e75644a3e00 Mon Sep 17 00:00:00 2001 From: Will Miles Date: Mon, 1 Apr 2024 11:25:31 -0400 Subject: [PATCH 29/35] Update to AsyncWebServer v2.2.1 --- platformio.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platformio.ini b/platformio.ini index 0adc18cf28..cbe13c0dd8 100644 --- a/platformio.ini +++ b/platformio.ini @@ -180,7 +180,7 @@ lib_deps = fastled/FastLED @ 3.6.0 IRremoteESP8266 @ 2.8.2 makuna/NeoPixelBus @ 2.7.5 - https://github.com/Aircoookie/ESPAsyncWebServer.git @ ^2.2.0 + https://github.com/Aircoookie/ESPAsyncWebServer.git @ 2.2.1 #For use of the TTGO T-Display ESP32 Module with integrated TFT display uncomment the following line #TFT_eSPI #For compatible OLED display uncomment following From 00f5471270757e435753d7bbce46870ba1144cca Mon Sep 17 00:00:00 2001 From: Blaz Kristan Date: Thu, 4 Apr 2024 21:59:41 +0200 Subject: [PATCH 30/35] Build bump, changelog udate --- CHANGELOG.md | 3 ++- wled00/wled.h | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1cff856a4b..f1fe5cbdd8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,9 @@ ## WLED changelog -#### Build 2403290 +#### Build 2404040 - WLED 0.14.3 release - Fix for transition 0 (#3854, #3832, #3720) +- Fix for #3855 via #3873 (by @willmmiles) #### Build 2403170 - WLED 0.14.2 release diff --git a/wled00/wled.h b/wled00/wled.h index ba38c5c796..5834025c69 100644 --- a/wled00/wled.h +++ b/wled00/wled.h @@ -3,12 +3,12 @@ /* Main sketch, global variable declarations @title WLED project sketch - @version 0.14.2 + @version 0.14.3 @author Christian Schwinne */ // version code in format yymmddb (b = daily build) -#define VERSION 2403290 +#define VERSION 2404040 //uncomment this if you have a "my_config.h" file you'd like to use //#define WLED_USE_MY_CONFIG From a418cd2a2a5afd4bedbafca15239d510797c46fa Mon Sep 17 00:00:00 2001 From: Woody Date: Sat, 13 Apr 2024 19:37:49 +0200 Subject: [PATCH 31/35] Activate stale (#3898) * Update stale.yml Update pr text Schedule action 3 times a day * Delete old .github/stale.yml * Set exempt-all-milestones to true in stale.yml --- .github/stale.yml | 20 -------------------- .github/workflows/stale.yml | 6 +++--- 2 files changed, 3 insertions(+), 23 deletions(-) delete mode 100644 .github/stale.yml diff --git a/.github/stale.yml b/.github/stale.yml deleted file mode 100644 index 811db619ae..0000000000 --- a/.github/stale.yml +++ /dev/null @@ -1,20 +0,0 @@ -# Number of days of inactivity before an issue becomes stale -daysUntilStale: 120 -# Number of days of inactivity before a stale issue is closed -daysUntilClose: 7 -# Issues with these labels will never be considered stale -exemptLabels: - - pinned - - keep - - enhancement - - confirmed -# Label to use when marking an issue as stale -staleLabel: stale -# Comment to post when marking an issue as stale. Set to `false` to disable -markComment: > - Hey! This issue has been open for quite some time without any new comments now. - It will be closed automatically in a week if no further activity occurs. - - Thank you for using WLED! -# Comment to post when closing a stale issue. Set to `false` to disable -closeComment: false diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 4d531fd519..aaad16a44c 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -1,7 +1,7 @@ name: 'Close stale issues and PRs' on: schedule: - - cron: '0 12 * * *' + - cron: '0 6,12,18 * * *' workflow_dispatch: jobs: @@ -14,6 +14,7 @@ jobs: days-before-close: 7 exempt-issue-labels: 'pinned,keep,enhancement,confirmed' exempt-pr-labels: 'pinned,keep,enhancement,confirmed' + exempt-all-milestones: true stale-issue-message: > Hey! This issue has been open for quite some time without any new comments now. It will be closed automatically in a week if no further activity occurs. @@ -23,5 +24,4 @@ jobs: Hey! This pull request has been open for quite some time without any new comments now. It will be closed automatically in a week if no further activity occurs. - Thank you for using WLED! ✨ - debug-only: true + Thank you for contributing to WLED! ❤️ From d2b4d2531752ea7548cc9ba1a4e35915f0213b74 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 13 Apr 2024 19:38:03 +0200 Subject: [PATCH 32/35] Bump idna from 3.4 to 3.7 (#3895) Bumps [idna](https://github.com/kjd/idna) from 3.4 to 3.7. - [Release notes](https://github.com/kjd/idna/releases) - [Changelog](https://github.com/kjd/idna/blob/master/HISTORY.rst) - [Commits](https://github.com/kjd/idna/compare/v3.4...v3.7) --- updated-dependencies: - dependency-name: idna dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 8b55606dcb..c56efad498 100644 --- a/requirements.txt +++ b/requirements.txt @@ -26,7 +26,7 @@ h11==0.14.0 # via # uvicorn # wsproto -idna==3.4 +idna==3.7 # via # anyio # requests @@ -50,6 +50,8 @@ starlette==0.23.1 # via platformio tabulate==0.9.0 # via platformio +typing-extensions==4.11.0 + # via starlette urllib3==1.26.18 # via requests uvicorn==0.20.0 From cd928bc586cedf5bc5f4ed418c2ce743efc29523 Mon Sep 17 00:00:00 2001 From: Woody Date: Sun, 14 Apr 2024 13:14:03 +0200 Subject: [PATCH 33/35] Increase operations-per-run in stale.yml Because of this we don't need to run this action 3 times a day --- .github/workflows/stale.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index aaad16a44c..58a0b18d87 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -1,7 +1,7 @@ name: 'Close stale issues and PRs' on: schedule: - - cron: '0 6,12,18 * * *' + - cron: '0 12 * * *' workflow_dispatch: jobs: @@ -15,6 +15,7 @@ jobs: exempt-issue-labels: 'pinned,keep,enhancement,confirmed' exempt-pr-labels: 'pinned,keep,enhancement,confirmed' exempt-all-milestones: true + operations-per-run: 150 stale-issue-message: > Hey! This issue has been open for quite some time without any new comments now. It will be closed automatically in a week if no further activity occurs. From b2e68db380326804d545b7bc71233edf8c041b35 Mon Sep 17 00:00:00 2001 From: Woody Date: Mon, 15 Apr 2024 22:55:38 +0200 Subject: [PATCH 34/35] Increase operations-per-run in stale.yml again --- .github/workflows/stale.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 58a0b18d87..5d62571e1e 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -15,7 +15,7 @@ jobs: exempt-issue-labels: 'pinned,keep,enhancement,confirmed' exempt-pr-labels: 'pinned,keep,enhancement,confirmed' exempt-all-milestones: true - operations-per-run: 150 + operations-per-run: 1000 stale-issue-message: > Hey! This issue has been open for quite some time without any new comments now. It will be closed automatically in a week if no further activity occurs. From 6272969983c35e824622cf7d7515165eeff2e02f Mon Sep 17 00:00:00 2001 From: Woody Date: Tue, 16 Apr 2024 15:07:12 +0200 Subject: [PATCH 35/35] Set stale-pr-label & stale-issue-label to 'stale' in stale.yml Hopefully this fixes the error messages that were thrown the last time the action was executed --- .github/workflows/stale.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 5d62571e1e..1f2557160c 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -12,6 +12,8 @@ jobs: with: days-before-stale: 120 days-before-close: 7 + stale-issue-label: 'stale' + stale-pr-label: 'stale' exempt-issue-labels: 'pinned,keep,enhancement,confirmed' exempt-pr-labels: 'pinned,keep,enhancement,confirmed' exempt-all-milestones: true