Add mm.kno.wled.ge

Change https://kno.wled.ge to https://mm.kno.wled.ge
Change help to ?  button in usermods
Change WeatherUserMod to Weather
This commit is contained in:
Ewoud
2022-12-21 12:30:40 +01:00
parent f48895f61f
commit 2af9fc3755
19 changed files with 1475 additions and 1475 deletions

View File

@@ -7,5 +7,5 @@ contact_links:
url: https://wled.discourse.group/ url: https://wled.discourse.group/
about: For issues and ideas that might need longer discussion. about: For issues and ideas that might need longer discussion.
- name: kno.wled.ge base - name: kno.wled.ge base
url: https://kno.wled.ge/basics/faq/ url: https://mm.kno.wled.ge/basics/faq/
about: Take a look at the frequently asked questions and documentation, perhaps your question is already answered! about: Take a look at the frequently asked questions and documentation, perhaps your question is already answered!

View File

@@ -580,7 +580,7 @@ lib_deps = ${esp32s2.lib_deps}
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# MoonModules configs # MoonModules configs
# see https://moonmodules.github.io/WLED-Docs/moonmodules/platformio-entries/ # see https://mm.kno.wled.ge/moonmodules/platformio-entries/
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
; shared build flags and lib deps for minimum and maximum config ; shared build flags and lib deps for minimum and maximum config

View File

@@ -49,21 +49,21 @@ A fast and feature-rich implementation of an ESP8266/ESP32 webserver to control
## 📲 Quick start guide and documentation ## 📲 Quick start guide and documentation
See the [documentation on our official site](https://kno.wled.ge)! See the [documentation on our official site](https://mm.kno.wled.ge)!
[On this page](https://kno.wled.ge/basics/tutorials/) you can find excellent tutorials and tools to help you get your new project up and running! [On this page](https://mm.kno.wled.ge/basics/tutorials/) you can find excellent tutorials and tools to help you get your new project up and running!
## 🖼️ User interface ## 🖼️ User interface
<img src="/images/macbook-pro-space-gray-on-the-wooden-table.jpg" width="50%"><img src="/images/walking-with-iphone-x.jpg" width="50%"> <img src="/images/macbook-pro-space-gray-on-the-wooden-table.jpg" width="50%"><img src="/images/walking-with-iphone-x.jpg" width="50%">
## 💾 Compatible hardware ## 💾 Compatible hardware
See [here](https://kno.wled.ge/basics/compatible-hardware)! See [here](https://mm.kno.wled.ge/basics/compatible-hardware)!
## ✌️ Other ## ✌️ Other
Licensed under the MIT license Licensed under the MIT license
Credits [here](https://kno.wled.ge/about/contributors/)! Credits [here](https://mm.kno.wled.ge/about/contributors/)!
Join the Discord server to discuss everything about WLED! Join the Discord server to discuss everything about WLED!

View File

@@ -134,7 +134,7 @@ function writeHtmlGzipped(sourceFile, resultFile, page) {
* Binary array for the Web UI. * Binary array for the Web UI.
* gzip is used for smaller size and improved speeds. * gzip is used for smaller size and improved speeds.
* *
* Please see https://kno.wled.ge/advanced/custom-features/#changing-web-ui * Please see https://mm.kno.wled.ge/advanced/custom-features/#changing-web-ui
* to find out how to easily modify the web UI source! * to find out how to easily modify the web UI source!
*/ */
@@ -199,7 +199,7 @@ function writeChunks(srcDir, specs, resultFile) {
let src = `/* let src = `/*
* More web UI HTML source arrays. * More web UI HTML source arrays.
* This file is auto generated, please don't make any changes manually. * This file is auto generated, please don't make any changes manually.
* Instead, see https://kno.wled.ge/advanced/custom-features/#changing-web-ui * Instead, see https://mm.kno.wled.ge/advanced/custom-features/#changing-web-ui
* to find out how to easily modify the web UI source! * to find out how to easily modify the web UI source!
*/ */
`; `;

View File

@@ -1923,6 +1923,7 @@ class AudioReactive : public Usermod {
void appendConfigData() void appendConfigData()
{ {
oappend(SET_F("addInfo('AudioReactive:help',0,'<button onclick=\"location.href=&quot;https://mm.kno.wled.ge/soundreactive/Sound-Settings&quot;\" type=\"button\">?</button>');")); // 0 is field type, 1 is actual field
//WLEDMM: add defaults //WLEDMM: add defaults
#ifdef AUDIOPIN #ifdef AUDIOPIN
oappend(SET_F("addInfo('AudioReactive:analogmic:pin',1,'<i>&#9100; ")); oappendi(AUDIOPIN); oappend("</i>');"); // 0 is field type, 1 is actual field oappend(SET_F("addInfo('AudioReactive:analogmic:pin',1,'<i>&#9100; ")); oappendi(AUDIOPIN); oappend("</i>');"); // 0 is field type, 1 is actual field
@@ -2052,7 +2053,6 @@ class AudioReactive : public Usermod {
oappend(SET_F("addOption(dd,'Off',0);")); oappend(SET_F("addOption(dd,'Off',0);"));
oappend(SET_F("addOption(dd,'Send',1);")); oappend(SET_F("addOption(dd,'Send',1);"));
oappend(SET_F("addOption(dd,'Receive',2);")); oappend(SET_F("addOption(dd,'Receive',2);"));
oappend(SET_F("addInfo('AudioReactive:help',0,'<a href=\"https://moonmodules.github.io/WLED-Docs/soundreactive/Sound-Settings\">Help</a>');")); // 0 is field type, 1 is actual field
oappend(SET_F("addInfo('AudioReactive:digitalmic:type',1,'<i>requires reboot!</i>');")); // 0 is field type, 1 is actual field oappend(SET_F("addInfo('AudioReactive:digitalmic:type',1,'<i>requires reboot!</i>');")); // 0 is field type, 1 is actual field
#ifdef I2S_SDPIN #ifdef I2S_SDPIN
oappend(SET_F("addInfo('AudioReactive:digitalmic:pin[]',0,'<i>sd/data/dout, &#9100; ")); oappendi(I2S_SDPIN); oappend("</i>','I2S SD');"); oappend(SET_F("addInfo('AudioReactive:digitalmic:pin[]',0,'<i>sd/data/dout, &#9100; ")); oappendi(I2S_SDPIN); oappend("</i>','I2S SD');");

View File

@@ -103,7 +103,7 @@ function populateCEEditor(name, segID)
<button class="btn infobtn" onclick="downloadCEFile('wledv033.json')">Download wled json</button> <button class="btn infobtn" onclick="downloadCEFile('wledv033.json')">Download wled json</button>
<button class="btn infobtn" onclick="downloadCEFile('presets.json')">Download presets.json</button><br> <button class="btn infobtn" onclick="downloadCEFile('presets.json')">Download presets.json</button><br>
<a href="https://github.com/MoonModules/WLED-Effects/tree/master/CustomEffects/wled" target="_blank">Custom Effects Library</a><br> <a href="https://github.com/MoonModules/WLED-Effects/tree/master/CustomEffects/wled" target="_blank">Custom Effects Library</a><br>
<a href="https://moonmodules.github.io/WLED-Docs/moonmodules/custom-effects" target="_blank">Custom Effects Help</a><br> <a href="https://mm.kno.wled.ge/moonmodules/custom-effects" target="_blank">Custom Effects Help</a><br>
<br><i>Compile and Run Log</i><br> <br><i>Compile and Run Log</i><br>
<textarea class="ceTextarea" id="ceLogArea"></textarea><br> <textarea class="ceTextarea" id="ceLogArea"></textarea><br>
<i>Run log > 3 seconds is send to Serial Ouput.</i>`; <i>Run log > 3 seconds is send to Serial Ouput.</i>`;

View File

@@ -1036,7 +1036,7 @@ class FourLineDisplayUsermod : public Usermod {
//} //}
void appendConfigData() { void appendConfigData() {
oappend(SET_F("addInfo('4LineDisplay:help',0,'<a href=\"https://moonmodules.github.io/WLED-Docs/usermods/four-line-display\">Help</a>');")); // 0 is field type, 1 is actual field oappend(SET_F("addInfo('4LineDisplay:help',0,'<button onclick=\"location.href=&quot;https://mm.kno.wled.ge/usermods/four-line-display&quot;\" type=\"button\">?</button>');")); // 0 is field type, 1 is actual field
oappend(SET_F("dd=addDropdown('4LineDisplay','type');")); oappend(SET_F("dd=addDropdown('4LineDisplay','type');"));
oappend(SET_F("addOption(dd,'None',0);")); oappend(SET_F("addOption(dd,'None',0);"));
oappend(SET_F("addOption(dd,'SSD1306',1);")); oappend(SET_F("addOption(dd,'SSD1306',1);"));

View File

@@ -317,14 +317,14 @@ class WeatherUsermod : public Usermod {
void appendConfigData() void appendConfigData()
{ {
oappend(SET_F("addInfo('WeatherUserMod:help',0,'<a href=\"https://moonmodules.github.io/WLED-Docs/moonmodules/weather-usermod\">Help</a>');")); // 0 is field type, 1 is actual field oappend(SET_F("addInfo('Weather:help',0,'<button onclick=\"location.href=&quot;https://mm.kno.wled.ge/moonmodules/weather-usermod&quot;\" type=\"button\">?</button>');")); // 0 is field type, 1 is actual field
oappend(SET_F("dd=addDropdown('WeatherUserMod','units');")); oappend(SET_F("dd=addDropdown('Weather','units');"));
oappend(SET_F("addOption(dd,'Kelvin',0);")); oappend(SET_F("addOption(dd,'Kelvin',0);"));
oappend(SET_F("addOption(dd,'Celcius',1);")); oappend(SET_F("addOption(dd,'Celcius',1);"));
oappend(SET_F("addOption(dd,'Fahrenheit',2);")); oappend(SET_F("addOption(dd,'Fahrenheit',2);"));
oappend(SET_F("addInfo('WeatherUserMod:units',1,'<i>Set time and location in time settings</i>');")); oappend(SET_F("addInfo('Weather:units',1,'<i>Set time and location in time settings</i>');"));
oappend(SET_F("addInfo('WeatherUserMod:apiKey',1,'<i>Create acount on openweathermap.org and copy the key</i>');")); oappend(SET_F("addInfo('Weather:apiKey',1,'<i>Create acount on openweathermap.org and copy the key</i>');"));
oappend(SET_F("addInfo('WeatherUserMod:minTemp',1,'<i>Changing values: Reboot to (re)load forecast</i>');")); oappend(SET_F("addInfo('Weather:minTemp',1,'<i>Changing values: Reboot to (re)load forecast</i>');"));
} }
/* /*
@@ -349,7 +349,7 @@ class WeatherUsermod : public Usermod {
}; };
// strings to reduce flash memory usage (used more than twice) // strings to reduce flash memory usage (used more than twice)
const char WeatherUsermod::_name[] PROGMEM = "WeatherUserMod"; const char WeatherUsermod::_name[] PROGMEM = "Weather";
// example openweathermap data // example openweathermap data
// {"cod":"200","message":0,"cnt":40,"list":[ // {"cod":"200","message":0,"cnt":40,"list":[

View File

@@ -8,7 +8,7 @@
<script> <script>
var d=document; var d=document;
var loc = false, locip; var loc = false, locip;
function H(){window.open("https://kno.wled.ge/features/2D");} function H(){window.open("https://mm.kno.wled.ge/features/2D");}
function B(){window.open("/settings","_self");} function B(){window.open("/settings","_self");}
function gId(n){return d.getElementById(n);} function gId(n){return d.getElementById(n);}
// https://www.educative.io/edpresso/how-to-dynamically-load-a-js-file-in-javascript // https://www.educative.io/edpresso/how-to-dynamically-load-a-js-file-in-javascript

View File

@@ -9,7 +9,7 @@
var d=document,laprev=55,maxB=1,maxM=4000,maxPB=4096,maxL=1333,maxLbquot=0; //maximum bytes for LED allocation: 4kB for 8266, 32kB for 32 var d=document,laprev=55,maxB=1,maxM=4000,maxPB=4096,maxL=1333,maxLbquot=0; //maximum bytes for LED allocation: 4kB for 8266, 32kB for 32
var customStarts=false,startsDirty=[],maxCOOverrides=5; var customStarts=false,startsDirty=[],maxCOOverrides=5;
var loc = false, locip; var loc = false, locip;
function H(){window.open("https://kno.wled.ge/features/settings/#led-settings");} function H(){window.open("https://mm.kno.wled.ge/features/settings/#led-settings");}
function B(){window.open("/settings","_self");} function B(){window.open("/settings","_self");}
function gId(n){return d.getElementById(n);} function gId(n){return d.getElementById(n);}
function hideNoIR(){gId("irOnOff2").style.display="none";} function hideNoIR(){gId("irOnOff2").style.display="none";}
@@ -637,7 +637,7 @@ Length: <input type="number" name="XC${i}" id="xc${i}" class="l" min="1" max="65
</select><span style="cursor: pointer;" onclick="off('IR')">&nbsp;&#x2715;</span><br> </select><span style="cursor: pointer;" onclick="off('IR')">&nbsp;&#x2715;</span><br>
Apply IR change to main segment only: <input type="checkbox" name="MSO"><br> Apply IR change to main segment only: <input type="checkbox" name="MSO"><br>
<div id="json" style="display:none;">JSON file: <input type="file" name="data" accept=".json"><button type="button" class="sml" onclick="uploadFile('/ir.json')">Upload</button><br></div> <div id="json" style="display:none;">JSON file: <input type="file" name="data" accept=".json"><button type="button" class="sml" onclick="uploadFile('/ir.json')">Upload</button><br></div>
<a href="https://kno.wled.ge/interfaces/infrared/" target="_blank">IR info</a><br> <a href="https://mm.kno.wled.ge/interfaces/infrared/" target="_blank">IR info</a><br>
Relay GPIO: <input type="number" min="-1" max="48" name="RL" onchange="UI()" class="xs"> Invert <input type="checkbox" name="RM"><span style="cursor: pointer;" onclick="off('RL')">&nbsp;&#x2715;</span><br> Relay GPIO: <input type="number" min="-1" max="48" name="RL" onchange="UI()" class="xs"> Invert <input type="checkbox" name="RM"><span style="cursor: pointer;" onclick="off('RL')">&nbsp;&#x2715;</span><br>
<hr class="sml"> <hr class="sml">
<h3>Defaults</h3> <h3>Defaults</h3>

View File

@@ -8,7 +8,7 @@
<script> <script>
var d = document; var d = document;
var loc = false, locip; var loc = false, locip;
function H() { window.open("https://kno.wled.ge/features/settings/#security-settings"); } function H() { window.open("https://mm.kno.wled.ge/features/settings/#security-settings"); }
function B() { window.open("/settings","_self"); } function B() { window.open("/settings","_self"); }
function U() { window.open("/update","_self"); } function U() { window.open("/update","_self"); }
function gId(s) { return d.getElementById(s); } function gId(s) { return d.getElementById(s); }

View File

@@ -11,7 +11,7 @@
function toggle(el){gId(el).classList.toggle("hide"); gId('No'+el).classList.toggle("hide");} function toggle(el){gId(el).classList.toggle("hide"); gId('No'+el).classList.toggle("hide");}
function hideNoDMX(){gId("dmxOnOff2").style.display="none";} function hideNoDMX(){gId("dmxOnOff2").style.display="none";}
function hideNoLOX(){gId("loxOnOff2").style.display="none";} function hideNoLOX(){gId("loxOnOff2").style.display="none";}
function H(){window.open("https://kno.wled.ge/interfaces/udp-notifier/");} function H(){window.open("https://mm.kno.wled.ge/interfaces/udp-notifier/");}
function B(){window.open("/settings","_self");} function B(){window.open("/settings","_self");}
function adj(){if (d.Sf.DI.value == 6454) {if (d.Sf.EU.value == 1) d.Sf.EU.value = 0;} function adj(){if (d.Sf.DI.value == 6454) {if (d.Sf.EU.value == 1) d.Sf.EU.value = 0;}
else if (d.Sf.DI.value == 5568) {if (d.Sf.DA.value == 0) d.Sf.DA.value = 1; if (d.Sf.EU.value == 0) d.Sf.EU.value = 1;} } else if (d.Sf.DI.value == 5568) {if (d.Sf.DA.value == 0) d.Sf.DA.value = 1; if (d.Sf.EU.value == 0) d.Sf.EU.value = 1;} }
@@ -160,7 +160,7 @@ DMX mode:
<option value=5>Dimmer + Multi RGB</option> <option value=5>Dimmer + Multi RGB</option>
<option value=6>Multi RGBW</option> <option value=6>Multi RGBW</option>
</select><br> </select><br>
<a href="https://kno.wled.ge/interfaces/e1.31-dmx/" target="_blank">E1.31 info</a><br> <a href="https://mm.kno.wled.ge/interfaces/e1.31-dmx/" target="_blank">E1.31 info</a><br>
Timeout: <input name="ET" type="number" min="1" max="65000" required> ms<br> Timeout: <input name="ET" type="number" min="1" max="65000" required> ms<br>
Force max brightness: <input type="checkbox" name="FB"><br> Force max brightness: <input type="checkbox" name="FB"><br>
Disable realtime gamma correction: <input type="checkbox" name="RG"><br> Disable realtime gamma correction: <input type="checkbox" name="RG"><br>
@@ -193,7 +193,7 @@ For best results, only use one of these services at a time.<br>
Host: <input type="text" name="BH" maxlength="32"> Host: <input type="text" name="BH" maxlength="32">
Port: <input name="BP" type="number" min="1" max="65535" value="80" class="d5"><br> Port: <input name="BP" type="number" min="1" max="65535" value="80" class="d5"><br>
Device Auth token: <input name="BK" maxlength="33"><br> Device Auth token: <input name="BK" maxlength="33"><br>
<i>Clear the token field to disable. </i><a href="https://kno.wled.ge/interfaces/blynk/" target="_blank">Setup info</a> <i>Clear the token field to disable. </i><a href="https://mm.kno.wled.ge/interfaces/blynk/" target="_blank">Setup info</a>
</div> </div>
<h3>MQTT</h3> <h3>MQTT</h3>
<div id="NoMQTT" class="hide"> <div id="NoMQTT" class="hide">
@@ -211,7 +211,7 @@ Client ID: <input type="text" name="MQCID" maxlength="40"><br>
Device Topic: <input type="text" name="MD" maxlength="32"><br> Device Topic: <input type="text" name="MD" maxlength="32"><br>
Group Topic: <input type="text" name="MG" maxlength="32"><br> Group Topic: <input type="text" name="MG" maxlength="32"><br>
Publish on button press: <input type="checkbox" name="BM"><br> Publish on button press: <input type="checkbox" name="BM"><br>
<i>Reboot required to apply changes. </i><a href="https://kno.wled.ge/interfaces/mqtt/" target="_blank">MQTT info</a> <i>Reboot required to apply changes. </i><a href="https://mm.kno.wled.ge/interfaces/mqtt/" target="_blank">MQTT info</a>
</div> </div>
<h3>Philips Hue</h3> <h3>Philips Hue</h3>
<div id="NoHue" class="hide"> <div id="NoHue" class="hide">

View File

@@ -10,7 +10,7 @@
var loc = false, locip; var loc = false, locip;
var el=false; var el=false;
var ms=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]; var ms=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
function H() { window.open("https://kno.wled.ge/features/settings/#time-settings"); } function H() { window.open("https://mm.kno.wled.ge/features/settings/#time-settings"); }
function B() { window.open("/settings","_self"); } function B() { window.open("/settings","_self"); }
function gId(s) { return d.getElementById(s); } function gId(s) { return d.getElementById(s); }
function gN(s) { return d.getElementsByName(s)[0]; } function gN(s) { return d.getElementsByName(s)[0]; }
@@ -224,7 +224,7 @@
<tbody> <tbody>
</tbody> </tbody>
</table> </table>
<a href="https://kno.wled.ge/features/macros/#analog-button" target="_blank">Analog Button setup</a> <a href="https://mm.kno.wled.ge/features/macros/#analog-button" target="_blank">Analog Button setup</a>
<h3>Time-controlled presets</h3> <h3>Time-controlled presets</h3>
<div style="display: inline-block"> <div style="display: inline-block">
<table id="TMT" style="min-width:330px;"></table> <table id="TMT" style="min-width:330px;"></table>

View File

@@ -198,7 +198,7 @@
var url = (loc?`http://${locip}`:'') + '/settings/s.js?p=3'; var url = (loc?`http://${locip}`:'') + '/settings/s.js?p=3';
loadJS(url, false); // If we set async false, file is loaded and executed, then next statement is processed loadJS(url, false); // If we set async false, file is loaded and executed, then next statement is processed
} }
function H() { window.open("https://kno.wled.ge/features/settings/#user-interface-settings"); } function H() { window.open("https://mm.kno.wled.ge/features/settings/#user-interface-settings"); }
function B() { window.open("/settings","_self"); } function B() { window.open("/settings","_self"); }
function UI() function UI()
{ {

View File

@@ -12,7 +12,7 @@
function gId(e) { return d.getElementById(e); } function gId(e) { return d.getElementById(e); }
function cE(e) { return d.createElement(e); } function cE(e) { return d.createElement(e); }
function H(){window.open("https://kno.wled.ge/features/settings/#wifi-settings");} function H(){window.open("https://mm.kno.wled.ge/features/settings/#wifi-settings");}
function B(){window.open("/settings","_self");} function B(){window.open("/settings","_self");}
function N() { function N() {
const url = (loc?`http://${locip}`:"") + "/json/net"; const url = (loc?`http://${locip}`:"") + "/json/net";

View File

@@ -1,7 +1,7 @@
/* /*
* More web UI HTML source arrays. * More web UI HTML source arrays.
* This file is auto generated, please don't make any changes manually. * This file is auto generated, please don't make any changes manually.
* Instead, see https://kno.wled.ge/advanced/custom-features/#changing-web-ui * Instead, see https://mm.kno.wled.ge/advanced/custom-features/#changing-web-ui
* to find out how to easily modify the web UI source! * to find out how to easily modify the web UI source!
*/ */

File diff suppressed because it is too large Load Diff

View File

@@ -2,7 +2,7 @@
* Binary array for the Web UI. * Binary array for the Web UI.
* gzip is used for smaller size and improved speeds. * gzip is used for smaller size and improved speeds.
* *
* Please see https://kno.wled.ge/advanced/custom-features/#changing-web-ui * Please see https://mm.kno.wled.ge/advanced/custom-features/#changing-web-ui
* to find out how to easily modify the web UI source! * to find out how to easily modify the web UI source!
*/ */

View File

@@ -2,12 +2,12 @@
* Binary array for the Web UI. * Binary array for the Web UI.
* gzip is used for smaller size and improved speeds. * gzip is used for smaller size and improved speeds.
* *
* Please see https://kno.wled.ge/advanced/custom-features/#changing-web-ui * Please see https://mm.kno.wled.ge/advanced/custom-features/#changing-web-ui
* to find out how to easily modify the web UI source! * to find out how to easily modify the web UI source!
*/ */
// Autogenerated from wled00/data/index.htm, do not edit!! // Autogenerated from wled00/data/index.htm, do not edit!!
const uint16_t PAGE_index_L = 32035; const uint16_t PAGE_index_L = 32034;
const uint8_t PAGE_index[] PROGMEM = { const uint8_t PAGE_index[] PROGMEM = {
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xd4, 0xbd, 0x69, 0x7a, 0xe3, 0x3a, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xd4, 0xbd, 0x69, 0x7a, 0xe3, 0x3a,
0xb2, 0x28, 0xf8, 0xdf, 0xab, 0x60, 0x32, 0xab, 0x9c, 0xd2, 0x11, 0x2d, 0x91, 0x9a, 0x87, 0x94, 0xb2, 0x28, 0xf8, 0xdf, 0xab, 0x60, 0x32, 0xab, 0x9c, 0xd2, 0x11, 0x2d, 0x91, 0x9a, 0x87, 0x94,
@@ -1992,24 +1992,24 @@ const uint8_t PAGE_index[] PROGMEM = {
0xd3, 0x04, 0xb4, 0xdb, 0xab, 0x38, 0x2a, 0xe8, 0x3c, 0x7d, 0x5b, 0x8d, 0x96, 0xdd, 0x32, 0x8f, 0xd3, 0x04, 0xb4, 0xdb, 0xab, 0x38, 0x2a, 0xe8, 0x3c, 0x7d, 0x5b, 0x8d, 0x96, 0xdd, 0x32, 0x8f,
0xa2, 0xdd, 0x4b, 0x98, 0x81, 0xa2, 0x7c, 0x97, 0x07, 0x92, 0x7e, 0x43, 0x03, 0xce, 0x61, 0x0b, 0xa2, 0xdd, 0x4b, 0x98, 0x81, 0xa2, 0x7c, 0x97, 0x07, 0x92, 0x7e, 0x43, 0x03, 0xce, 0x61, 0x0b,
0x40, 0xe8, 0xfe, 0x5d, 0x31, 0x5e, 0xd5, 0x06, 0xdb, 0x9b, 0xf9, 0x24, 0x1f, 0xe7, 0x77, 0x87, 0x40, 0xe8, 0xfe, 0x5d, 0x31, 0x5e, 0xd5, 0x06, 0xdb, 0x9b, 0xf9, 0x24, 0x1f, 0xe7, 0x77, 0x87,
0xbb, 0xe3, 0x75, 0x0a, 0x04, 0xfb, 0xc8, 0xe4, 0x92, 0x4b, 0xb1, 0xa3, 0x0a, 0x37, 0x4f, 0xb9, 0xbb, 0xe3, 0x75, 0x0a, 0x74, 0x79, 0xb9, 0xf3, 0x29, 0x49, 0x49, 0x18, 0x60, 0xd2, 0xd9, 0x85,
0x3c, 0x2f, 0xd2, 0x69, 0x21, 0xdf, 0xef, 0xb2, 0x4f, 0xff, 0x76, 0xc4, 0x19, 0x3d, 0x58, 0x90, 0x6d, 0x65, 0x72, 0xa9, 0x0a, 0xc5, 0x2e, 0xfc, 0xdb, 0x11, 0xa7, 0xfb, 0x60, 0xbe, 0x3f, 0x44,
0x1f, 0xa2, 0x38, 0xeb, 0x28, 0x05, 0xc2, 0xe6, 0xcd, 0x47, 0xc8, 0xd3, 0x8c, 0xfa, 0x86, 0x92, 0x71, 0xd6, 0x91, 0x29, 0xa2, 0xe4, 0xcd, 0x47, 0x48, 0xcb, 0x8c, 0xea, 0x85, 0x12, 0x75, 0x07,
0x7d, 0x07, 0xa6, 0xae, 0xcf, 0x9e, 0x05, 0xf4, 0xf4, 0x38, 0x5a, 0x3d, 0xfa, 0xe7, 0x23, 0xcc, 0x66, 0xaa, 0xcf, 0x1e, 0xf4, 0x7a, 0x36, 0x1c, 0xad, 0x1e, 0xec, 0xf3, 0x11, 0x66, 0x84, 0xab,
0x08, 0x97, 0xdf, 0x91, 0xb3, 0xaf, 0xd7, 0x5b, 0xd0, 0x1a, 0x1d, 0x5c, 0x13, 0xd0, 0x15, 0xfe, 0xed, 0xc8, 0xd9, 0xd7, 0xcb, 0x2b, 0x28, 0x89, 0x0e, 0x2e, 0x01, 0xe8, 0xf9, 0x7e, 0x12, 0xe5,
0x24, 0xca, 0xe7, 0xe3, 0xd8, 0xf9, 0xe9, 0x2a, 0xbb, 0x2a, 0x77, 0xb0, 0x34, 0x1f, 0x87, 0x2d, 0xf3, 0x71, 0xec, 0xfc, 0x74, 0x95, 0x5d, 0x95, 0x3b, 0x58, 0x9a, 0x8f, 0xc3, 0x16, 0x56, 0x32,
0x34, 0x65, 0x42, 0x9b, 0xab, 0xec, 0x71, 0xc9, 0xda, 0xf3, 0x76, 0x7d, 0x9e, 0xc6, 0x7e, 0x35, 0xa1, 0xbc, 0x55, 0xe6, 0xb7, 0x64, 0xed, 0x69, 0xba, 0x3e, 0x2d, 0x53, 0x63, 0xeb, 0xb9, 0x59,
0x93, 0xb5, 0x5c, 0xf1, 0x6b, 0xf2, 0x68, 0x6c, 0x22, 0xa6, 0xfb, 0xf2, 0xf1, 0x8d, 0xea, 0x36, 0x2e, 0xf0, 0x35, 0xf1, 0x33, 0x26, 0x10, 0xd3, 0x5b, 0xf9, 0xf8, 0x66, 0x87, 0x45, 0x08, 0xf4,
0x50, 0xa4, 0x73, 0x65, 0xb3, 0x58, 0x2d, 0x5e, 0x9d, 0x92, 0xb5, 0xeb, 0x36, 0x54, 0xa7, 0xd2, 0xe6, 0x5c, 0x99, 0x28, 0x56, 0x4b, 0x53, 0xa7, 0x20, 0xed, 0xba, 0x0d, 0x4d, 0xa9, 0xb4, 0xb4,
0x52, 0x8f, 0x78, 0x5b, 0xe5, 0x5a, 0x63, 0xd0, 0x25, 0xd8, 0x45, 0x57, 0x8e, 0x07, 0xf6, 0x17, 0x21, 0xde, 0x45, 0xb9, 0xd6, 0x90, 0x73, 0x09, 0x65, 0xd1, 0x95, 0xe2, 0xcf, 0xee, 0xc1, 0xe4,
0x26, 0xf7, 0x04, 0xf6, 0x34, 0xe8, 0xb9, 0xd0, 0x02, 0x78, 0xff, 0xc4, 0x29, 0xae, 0x72, 0xba, 0x8d, 0xc0, 0x8e, 0x05, 0x3d, 0x17, 0x5a, 0x00, 0xaf, 0x9b, 0x38, 0xc5, 0x55, 0x4e, 0xf7, 0x0b,
0x70, 0xa0, 0xeb, 0xb5, 0x9b, 0x1a, 0xb0, 0x48, 0xba, 0x25, 0x75, 0x64, 0x8c, 0x65, 0xdd, 0x0b, 0x74, 0xbd, 0x76, 0x53, 0x83, 0x0d, 0x49, 0x97, 0xa2, 0x8e, 0x8c, 0x6d, 0xac, 0x7b, 0xdd, 0x2c,
0x69, 0xc9, 0x06, 0xd2, 0xc5, 0x83, 0x6b, 0xb1, 0xbe, 0x70, 0x6f, 0xdf, 0xca, 0xae, 0x4d, 0x5b, 0xd9, 0x1e, 0xba, 0x78, 0x70, 0xe9, 0xd5, 0xf7, 0xeb, 0xed, 0x4b, 0xd8, 0xb5, 0x59, 0x2a, 0xf2,
0x91, 0xb7, 0x76, 0x42, 0x1f, 0x77, 0xbf, 0x66, 0x69, 0xaa, 0xc9, 0xb9, 0x4e, 0x0b, 0x5f, 0x7e, 0xd6, 0x4e, 0xe8, 0xe3, 0xee, 0xd7, 0x2c, 0x4d, 0x35, 0x39, 0xd7, 0x69, 0xe1, 0xcb, 0xaf, 0x77,
0xbd, 0x8b, 0xff, 0xcf, 0xf8, 0x6b, 0x9a, 0x67, 0xf1, 0xf7, 0x82, 0xbf, 0x13, 0x60, 0x42, 0xc9, 0xf1, 0xff, 0x19, 0x7f, 0x4d, 0xd3, 0x2a, 0xfe, 0x5e, 0xf0, 0x77, 0x02, 0x3b, 0x28, 0x39, 0x8b,
0x59, 0x94, 0xbf, 0x42, 0x9a, 0xba, 0x9e, 0xc7, 0xef, 0x16, 0x5a, 0x50, 0xc9, 0x81, 0xec, 0x36, 0xf2, 0x57, 0xc8, 0x4a, 0xd7, 0xf3, 0xf8, 0xdd, 0x42, 0x0b, 0x2a, 0xf9, 0x8b, 0xdd, 0x46, 0x31,
0x8a, 0xd9, 0x81, 0x8a, 0xb8, 0x95, 0xa2, 0xdc, 0x77, 0xc8, 0x0b, 0xe3, 0x55, 0x9e, 0x5e, 0xea, 0xfb, 0x4b, 0x11, 0x95, 0x52, 0x94, 0xfb, 0x0e, 0x39, 0x5d, 0xbc, 0xca, 0xd3, 0x4b, 0x7d, 0x2d,
0x7b, 0xa2, 0xe2, 0x0d, 0x3d, 0x78, 0x2a, 0x21, 0xca, 0x70, 0xf9, 0x71, 0x29, 0x77, 0x48, 0xbb, 0x54, 0xbc, 0xa1, 0x07, 0x4f, 0x25, 0x44, 0x19, 0x2e, 0x3f, 0x2e, 0xe5, 0x86, 0x68, 0x17, 0x19,
0x48, 0xb1, 0x8a, 0x7f, 0x2f, 0xca, 0xcb, 0x78, 0xe4, 0xfc, 0x2f, 0xaf, 0xbf, 0x0d, 0x03, 0x4a, 0x55, 0xf1, 0xef, 0x45, 0x79, 0x19, 0x8f, 0x9c, 0xff, 0x05, 0xee, 0x42, 0x98, 0x01, 0x39, 0x8f,
0x8f, 0x01, 0x00 0x01, 0x00
}; };