From 4289bf9c0de256be86f05a416931c9a7ce635ad1 Mon Sep 17 00:00:00 2001 From: Zip <76966589@qq.com> Date: Tue, 16 Apr 2019 14:36:51 +0800 Subject: [PATCH] =?UTF-8?q?add:=E5=A2=9E=E5=8A=A0http=20server=E8=BE=93?= =?UTF-8?q?=E5=85=A5ssid=20=E5=AF=86=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TC1/TC1.mk | 7 +- TC1/http_server/app_httpd.c | 207 +++++++++++++ TC1/http_server/app_httpd.h | 43 +++ TC1/http_server/readme.txt | 41 +++ TC1/http_server/web_data.c | 601 ++++++++++++++++++++++++++++++++++++ TC1/main.c | 6 + TC1/main.h | 1 + 7 files changed, 904 insertions(+), 2 deletions(-) create mode 100644 TC1/http_server/app_httpd.c create mode 100644 TC1/http_server/app_httpd.h create mode 100644 TC1/http_server/readme.txt create mode 100644 TC1/http_server/web_data.c diff --git a/TC1/TC1.mk b/TC1/TC1.mk index 18776ba..c9234d2 100644 --- a/TC1/TC1.mk +++ b/TC1/TC1.mk @@ -35,9 +35,12 @@ $(NAME)_SOURCES := main.c\ user_mqtt_client.c\ user_ota.c\ user_power.c\ - user_function.c + user_function.c\ + http_server/app_httpd.c \ + http_server/web_data.c $(NAME)_COMPONENTS := protocols/SNTP\ protocols/mqtt\ - utilities/url + utilities/url\ + daemons/http_server \ No newline at end of file diff --git a/TC1/http_server/app_httpd.c b/TC1/http_server/app_httpd.c new file mode 100644 index 0000000..3497988 --- /dev/null +++ b/TC1/http_server/app_httpd.c @@ -0,0 +1,207 @@ +/** + ****************************************************************************** + * @file app_https.c + * @author QQ DING + * @version V1.0.0 + * @date 1-September-2015 + * @brief The main HTTPD server initialization and wsgi handle. + ****************************************************************************** + * + * The MIT License + * Copyright (c) 2016 MXCHIP Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is furnished + * to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR + * IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + ****************************************************************************** + */ + +#include +#include +#include + +#include "mico.h" +#include "httpd_priv.h" +#include "app_httpd.h" + +#include "main.h" + +#define app_httpd_log(M, ...) custom_log("apphttpd", M, ##__VA_ARGS__) + +#define HTTPD_HDR_DEFORT (HTTPD_HDR_ADD_SERVER|HTTPD_HDR_ADD_CONN_CLOSE|HTTPD_HDR_ADD_PRAGMA_NO_CACHE) +static bool is_http_init; +static bool is_handlers_registered; +struct httpd_wsgi_call g_app_handlers[]; + +static int web_send_wifisetting_page(httpd_request_t *req) +{ + OSStatus err = kNoErr; + + err = httpd_send_all_header(req, HTTP_RES_200, sizeof(wifisetting), HTTP_CONTENT_HTML_STR); + require_noerr_action( err, exit, app_httpd_log("ERROR: Unable to send http wifisetting headers.") ); + + err = httpd_send_body(req->sock, wifisetting, sizeof(wifisetting)); + require_noerr_action( err, exit, app_httpd_log("ERROR: Unable to send http wifisetting body.") ); + +exit: + return err; +} + +static int web_send_result_page(httpd_request_t *req) +{ + OSStatus err = kNoErr; + bool para_succ = false; + int buf_size = 512; + char *buf; + char value_ssid[maxSsidLen]; + char value_pass[maxKeyLen]; + char value_user[maxNameLen]; + mico_Context_t* context = NULL; + + context = mico_system_context_get( ); + + buf = malloc(buf_size); + + err = httpd_get_data(req, buf, buf_size); + require_noerr( err, Save_Out ); + + err = httpd_get_tag_from_post_data(buf, "SSID", value_ssid, maxSsidLen); + require_noerr( err, Save_Out ); + + err = httpd_get_tag_from_post_data(buf, "USER", value_user, maxNameLen); + require_noerr( err, Save_Out ); + + if(!strncmp(value_ssid, "\0", 1)) + goto Save_Out; + if(!strncmp(value_user, "\0", 1)) + goto Save_Out; + + strncpy(context->micoSystemConfig.ssid, value_ssid, maxSsidLen); + strncpy(user_config->user, value_user, maxNameLen); + + err = httpd_get_tag_from_post_data(buf, "PASS", value_pass, maxKeyLen); + require_noerr( err, Save_Out ); + + strncpy(context->micoSystemConfig.key, value_pass, maxKeyLen); + strncpy(context->micoSystemConfig.user_key, value_pass, maxKeyLen); + context->micoSystemConfig.keyLength = strlen(context->micoSystemConfig.key); + context->micoSystemConfig.user_keyLength = strlen(context->micoSystemConfig.key); + + context->micoSystemConfig.channel = 0; + memset(context->micoSystemConfig.bssid, 0x0, 6); + context->micoSystemConfig.security = SECURITY_TYPE_AUTO; + context->micoSystemConfig.dhcpEnable = true; + + para_succ = true; + +Save_Out: + + if(para_succ == true) + { + err = httpd_send_all_header(req, HTTP_RES_200, sizeof(wifisuccess), HTTP_CONTENT_HTML_STR); + require_noerr_action( err, exit, app_httpd_log("ERROR: Unable to send http wifisuccess headers.") ); + + err = httpd_send_body(req->sock, wifisuccess, sizeof(wifisuccess)); + require_noerr_action( err, exit, app_httpd_log("ERROR: Unable to send http wifisuccess body.") ); + + context->micoSystemConfig.configured = allConfigured; + + mico_system_context_update(context); + + mico_system_power_perform( context, eState_Software_Reset ); + } + else + { + err = httpd_send_all_header(req, HTTP_RES_200, sizeof(wififail), HTTP_CONTENT_HTML_STR); + require_noerr_action( err, exit, app_httpd_log("ERROR: Unable to send http wififail headers.") ); + + err = httpd_send_body(req->sock, wififail, sizeof(wififail)); + require_noerr_action( err, exit, app_httpd_log("ERROR: Unable to send http wififail body.") ); + } + +exit: + if(buf) free(buf); + return err; +} + +struct httpd_wsgi_call g_app_handlers[] = { + {"/", HTTPD_HDR_DEFORT, 0, web_send_wifisetting_page, NULL, NULL, NULL}, + {"/result.htm", HTTPD_HDR_DEFORT, 0, NULL, web_send_result_page, NULL, NULL}, + {"/setting.htm", HTTPD_HDR_DEFORT, 0, web_send_wifisetting_page, NULL, NULL, NULL}, +}; + +static int g_app_handlers_no = sizeof(g_app_handlers)/sizeof(struct httpd_wsgi_call); + +static void app_http_register_handlers() +{ + int rc; + rc = httpd_register_wsgi_handlers(g_app_handlers, g_app_handlers_no); + if (rc) { + app_httpd_log("failed to register test web handler"); + } +} + +static int _app_httpd_start() +{ + OSStatus err = kNoErr; + app_httpd_log("initializing web-services"); + + /*Initialize HTTPD*/ + if(is_http_init == false) { + err = httpd_init(); + require_noerr_action( err, exit, app_httpd_log("failed to initialize httpd") ); + is_http_init = true; + } + + /*Start http thread*/ + err = httpd_start(); + if(err != kNoErr) { + app_httpd_log("failed to start httpd thread"); + httpd_shutdown(); + } +exit: + return err; +} + +int app_httpd_start( void ) +{ + OSStatus err = kNoErr; + + err = _app_httpd_start(); + require_noerr( err, exit ); + + if (is_handlers_registered == false) { + app_http_register_handlers(); + is_handlers_registered = true; + } + +exit: + return err; +} + +int app_httpd_stop() +{ + OSStatus err = kNoErr; + + /* HTTPD and services */ + app_httpd_log("stopping down httpd"); + err = httpd_stop(); + require_noerr_action( err, exit, app_httpd_log("failed to halt httpd") ); + +exit: + return err; +} diff --git a/TC1/http_server/app_httpd.h b/TC1/http_server/app_httpd.h new file mode 100644 index 0000000..1683283 --- /dev/null +++ b/TC1/http_server/app_httpd.h @@ -0,0 +1,43 @@ +/** + ****************************************************************************** + * @file app_httpd.h + * @author QQ DING + * @version V1.0.0 + * @date 1-September-2015 + * @brief This header contains function prototypes called by httpd protocol + * operations + ****************************************************************************** + * + * The MIT License + * Copyright (c) 2016 MXCHIP Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is furnished + * to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR + * IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + ****************************************************************************** + */ + +extern const unsigned char wififail[0xAC9]; + +extern const unsigned char wifisetting[3618]; + +extern const unsigned char wifisuccess[0x9BC]; + +int app_httpd_start( void ); + +int app_httpd_stop(); + diff --git a/TC1/http_server/readme.txt b/TC1/http_server/readme.txt new file mode 100644 index 0000000..1253fe5 --- /dev/null +++ b/TC1/http_server/readme.txt @@ -0,0 +1,41 @@ +/** + @page " http_sever " demo + + @verbatim + ******************** (C) COPYRIGHT 2016 MXCHIP MiCO SDK******************* + * @file http_sever/readme.txt + * @author MDWG (MiCO Documentation Working Group) + * @version v2.4.x + * @date 11-April-2016 + * @brief Description of the "http_sever" demo. + ****************************************************************************** + + @par Demo Description + This demo shows: how to start http sever to realize network configuration through webpage on PC or Mobile Phone. + + +@par Directory contents + - Demos/http/http_sever/http_sever.c HTTP server demo entrance + - Demos/http/http_sever/app_httpd.c HTTP server demo + - Demos/http/http_sever/web_data.c Webpage applicaiton program + - Demos/http/http_sever/mico_config.h MiCO function header file + - Demos/http/http_sever/app_httpd.h app_httpd.c header file + + +@par Hardware and Software environment + - This demo has been tested on MiCOKit-3165 board. + - This demo can be easily tailored to any other supported device and development board. + + +@par How to use it ? +In order to make the program work, you must do the following : + - Open your preferred toolchain, + - IDE: IAR 7.30.4 or Keil MDK 5.13. + - Debugging Tools: JLINK or STLINK + - Modify header file path of "mico_config.h". Please referring to "http://mico.io/wiki/doku.php?id=confighchange" + - Rebuild all files and load your image into target memory. Please referring to "http://mico.io/wiki/doku.php?id=debug" + - Run the demo. + - View operating results and system serial log (Serial port: Baud rate: 115200, data bits: 8bit, parity: No, stop bits: 1). Please referring to http://mico.io/wiki/doku.php?id=com.mxchip.basic + +**/ + diff --git a/TC1/http_server/web_data.c b/TC1/http_server/web_data.c new file mode 100644 index 0000000..7758646 --- /dev/null +++ b/TC1/http_server/web_data.c @@ -0,0 +1,601 @@ +/** + ****************************************************************************** + * @file web_data.c + * @author QQ DING + * @version V1.0.0 + * @date 1-September-2015 + * @brief This header file contains some data page + ****************************************************************************** + * + * The MIT License + * Copyright (c) 2016 MXCHIP Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is furnished + * to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR + * IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + ****************************************************************************** + */ + + +const unsigned char wififail[0xAC9] = { + 0x3C, 0x21, 0x44, 0x4F, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, 0x68, 0x74, 0x6D, 0x6C, 0x20, 0x50, + 0x55, 0x42, 0x4C, 0x49, 0x43, 0x20, 0x22, 0x2D, 0x2F, 0x2F, 0x57, 0x33, 0x43, 0x2F, 0x2F, 0x44, + 0x54, 0x44, 0x20, 0x58, 0x48, 0x54, 0x4D, 0x4C, 0x20, 0x31, 0x2E, 0x30, 0x20, 0x54, 0x72, 0x61, + 0x6E, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x2F, 0x2F, 0x45, 0x4E, 0x22, 0x20, 0x22, + 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x77, 0x77, 0x77, 0x2E, 0x77, 0x33, 0x2E, 0x6F, 0x72, + 0x67, 0x2F, 0x54, 0x52, 0x2F, 0x78, 0x68, 0x74, 0x6D, 0x6C, 0x31, 0x2F, 0x44, 0x54, 0x44, 0x2F, + 0x78, 0x68, 0x74, 0x6D, 0x6C, 0x31, 0x2D, 0x74, 0x72, 0x61, 0x6E, 0x73, 0x69, 0x74, 0x69, 0x6F, + 0x6E, 0x61, 0x6C, 0x2E, 0x64, 0x74, 0x64, 0x22, 0x3E, 0x0D, 0x0A, 0x3C, 0x68, 0x74, 0x6D, 0x6C, + 0x20, 0x78, 0x6D, 0x6C, 0x6E, 0x73, 0x3D, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x77, + 0x77, 0x77, 0x2E, 0x77, 0x33, 0x2E, 0x6F, 0x72, 0x67, 0x2F, 0x31, 0x39, 0x39, 0x39, 0x2F, 0x78, + 0x68, 0x74, 0x6D, 0x6C, 0x22, 0x3E, 0x0D, 0x0A, 0x3C, 0x68, 0x65, 0x61, 0x64, 0x3E, 0x0D, 0x0A, + 0x3C, 0x6D, 0x65, 0x74, 0x61, 0x20, 0x68, 0x74, 0x74, 0x70, 0x2D, 0x65, 0x71, 0x75, 0x69, 0x76, + 0x3D, 0x22, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x74, 0x79, 0x70, 0x65, 0x22, 0x20, + 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x3D, 0x22, 0x74, 0x65, 0x78, 0x74, 0x2F, 0x68, 0x74, + 0x6D, 0x6C, 0x22, 0x20, 0x63, 0x68, 0x61, 0x72, 0x73, 0x65, 0x74, 0x3D, 0x22, 0x75, 0x74, 0x66, + 0x2D, 0x38, 0x22, 0x3E, 0x0D, 0x0A, 0x3C, 0x6D, 0x65, 0x74, 0x61, 0x20, 0x63, 0x6F, 0x6E, 0x74, + 0x65, 0x6E, 0x74, 0x3D, 0x22, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3D, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x2D, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2C, 0x20, 0x69, 0x6E, 0x69, 0x74, 0x69, 0x61, 0x6C, + 0x2D, 0x73, 0x63, 0x61, 0x6C, 0x65, 0x3D, 0x31, 0x2E, 0x30, 0x2C, 0x20, 0x6D, 0x61, 0x78, 0x69, + 0x6D, 0x75, 0x6D, 0x2D, 0x73, 0x63, 0x61, 0x6C, 0x65, 0x3D, 0x31, 0x2E, 0x30, 0x2C, 0x20, 0x75, + 0x73, 0x65, 0x72, 0x2D, 0x73, 0x63, 0x61, 0x6C, 0x61, 0x62, 0x6C, 0x65, 0x3D, 0x30, 0x22, 0x20, + 0x6E, 0x61, 0x6D, 0x65, 0x3D, 0x22, 0x76, 0x69, 0x65, 0x77, 0x70, 0x6F, 0x72, 0x74, 0x22, 0x3E, + 0x0D, 0x0A, 0x3C, 0x74, 0x69, 0x74, 0x6C, 0x65, 0x3E, 0xE7, 0xBD, 0x91, 0xE5, 0x85, 0xB3, 0xE4, + 0xB8, 0x8A, 0xE7, 0xBD, 0x91, 0xE8, 0xAE, 0xBE, 0xE7, 0xBD, 0xAE, 0x3C, 0x2F, 0x74, 0x69, 0x74, + 0x6C, 0x65, 0x3E, 0x0D, 0x0A, 0x3C, 0x73, 0x74, 0x79, 0x6C, 0x65, 0x3E, 0x0D, 0x0A, 0x20, 0x62, + 0x6F, 0x64, 0x79, 0x2C, 0x20, 0x70, 0x2C, 0x20, 0x68, 0x31, 0x2C, 0x20, 0x68, 0x32, 0x2C, 0x20, + 0x68, 0x33, 0x2C, 0x20, 0x68, 0x34, 0x2C, 0x20, 0x68, 0x35, 0x2C, 0x20, 0x68, 0x36, 0x2C, 0x20, + 0x75, 0x6C, 0x2C, 0x20, 0x6F, 0x6C, 0x2C, 0x20, 0x6C, 0x69, 0x2C, 0x20, 0x64, 0x6C, 0x2C, 0x20, + 0x64, 0x74, 0x2C, 0x20, 0x64, 0x64, 0x2C, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2C, 0x20, 0x74, + 0x68, 0x2C, 0x20, 0x74, 0x64, 0x2C, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x2C, 0x20, 0x66, 0x69, 0x65, + 0x6C, 0x64, 0x73, 0x65, 0x74, 0x2C, 0x20, 0x6C, 0x65, 0x67, 0x65, 0x6E, 0x64, 0x2C, 0x20, 0x69, + 0x6E, 0x70, 0x75, 0x74, 0x2C, 0x20, 0x74, 0x65, 0x78, 0x74, 0x61, 0x72, 0x65, 0x61, 0x2C, 0x20, + 0x62, 0x75, 0x74, 0x74, 0x6F, 0x6E, 0x2C, 0x20, 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x2C, 0x20, + 0x69, 0x6D, 0x67, 0x2C, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x71, 0x75, 0x6F, 0x74, 0x65, 0x20, + 0x7B, 0x0D, 0x0A, 0x09, 0x6D, 0x61, 0x72, 0x67, 0x69, 0x6E, 0x3A, 0x20, 0x30, 0x3B, 0x0D, 0x0A, + 0x09, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x3A, 0x20, 0x30, 0x3B, 0x0D, 0x0A, 0x09, 0x62, + 0x6F, 0x72, 0x64, 0x65, 0x72, 0x3A, 0x20, 0x30, 0x3B, 0x0D, 0x0A, 0x09, 0x66, 0x6F, 0x6E, 0x74, + 0x2D, 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x20, 0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D, 0x0A, 0x09, 0x76, + 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6C, 0x2D, 0x61, 0x6C, 0x69, 0x67, 0x6E, 0x3A, 0x20, 0x62, + 0x61, 0x73, 0x65, 0x6C, 0x69, 0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x09, 0x66, 0x6F, 0x6E, 0x74, 0x2D, + 0x66, 0x61, 0x6D, 0x69, 0x6C, 0x79, 0x3A, 0x20, 0x22, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, + 0x66, 0x74, 0x20, 0x59, 0x61, 0x48, 0x65, 0x69, 0x22, 0x2C, 0x22, 0x69, 0x63, 0x6F, 0x6E, 0x66, + 0x6F, 0x6E, 0x74, 0x22, 0x2C, 0x22, 0x46, 0x6F, 0x6E, 0x74, 0x41, 0x77, 0x65, 0x73, 0x6F, 0x6D, + 0x65, 0x22, 0x20, 0x20, 0x21, 0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0x61, 0x6E, 0x74, 0x3B, 0x0D, + 0x0A, 0x7D, 0x0D, 0x0A, 0x68, 0x31, 0x2C, 0x20, 0x68, 0x32, 0x2C, 0x20, 0x68, 0x33, 0x2C, 0x20, + 0x68, 0x34, 0x2C, 0x20, 0x68, 0x35, 0x2C, 0x20, 0x68, 0x36, 0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x66, + 0x6F, 0x6E, 0x74, 0x2D, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x20, 0x6E, 0x6F, 0x72, 0x6D, + 0x61, 0x6C, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x62, 0x6F, 0x64, 0x79, 0x7B, 0x0D, 0x0A, 0x09, + 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x3A, 0x20, 0x23, 0x66, 0x35, 0x66, + 0x35, 0x66, 0x35, 0x0D, 0x0A, 0x09, 0x7D, 0x0D, 0x0A, 0x62, 0x6F, 0x64, 0x79, 0x2C, 0x20, 0x68, + 0x74, 0x6D, 0x6C, 0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x20, + 0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D, 0x0A, 0x09, 0x6D, 0x61, 0x78, 0x2D, 0x68, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x3A, 0x20, 0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x68, 0x74, + 0x6D, 0x6C, 0x7B, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x36, 0x32, 0x2E, + 0x35, 0x25, 0x3B, 0x7D, 0x0D, 0x0A, 0x0D, 0x0A, 0x2E, 0x6D, 0x61, 0x69, 0x6E, 0x7B, 0x0D, 0x0A, + 0x09, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D, 0x0A, 0x09, 0x6D, + 0x69, 0x6E, 0x2D, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D, + 0x0A, 0x09, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x72, 0x65, 0x6C, 0x61, 0x74, + 0x69, 0x76, 0x65, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x6F, 0x78, 0x2D, 0x73, 0x69, 0x7A, 0x69, 0x6E, + 0x67, 0x3A, 0x20, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x62, 0x6F, 0x78, 0x3B, 0x0D, 0x0A, + 0x09, 0x2D, 0x77, 0x65, 0x62, 0x6B, 0x69, 0x74, 0x2D, 0x62, 0x6F, 0x78, 0x2D, 0x73, 0x69, 0x7A, + 0x69, 0x6E, 0x67, 0x3A, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x62, 0x6F, 0x78, 0x3B, 0x0D, + 0x0A, 0x09, 0x64, 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A, 0x2D, 0x77, 0x65, 0x62, 0x6B, 0x69, + 0x74, 0x2D, 0x62, 0x6F, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x2D, 0x77, 0x65, 0x62, 0x6B, 0x69, 0x74, + 0x2D, 0x62, 0x6F, 0x78, 0x2D, 0x6F, 0x72, 0x69, 0x65, 0x6E, 0x74, 0x3A, 0x76, 0x65, 0x72, 0x74, + 0x69, 0x63, 0x61, 0x6C, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, + 0x3A, 0x20, 0x23, 0x66, 0x35, 0x36, 0x63, 0x36, 0x63, 0x3B, 0x0D, 0x0A, 0x09, 0x68, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x3A, 0x34, 0x38, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x6C, 0x69, 0x6E, 0x65, + 0x2D, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x34, 0x38, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, + 0x6F, 0x76, 0x65, 0x72, 0x66, 0x6C, 0x6F, 0x77, 0x3A, 0x20, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6E, + 0x3B, 0x0D, 0x0A, 0x09, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x31, 0x30, 0x30, 0x25, 0x3B, + 0x0D, 0x0A, 0x09, 0x62, 0x6F, 0x78, 0x2D, 0x73, 0x69, 0x7A, 0x69, 0x6E, 0x67, 0x3A, 0x20, 0x62, + 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x62, 0x6F, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x70, 0x6F, 0x73, + 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0x3B, + 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x68, 0x33, 0x20, + 0x7B, 0x0D, 0x0A, 0x09, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x20, 0x31, + 0x38, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x6C, 0x69, 0x6E, 0x65, 0x2D, 0x68, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x3A, 0x20, 0x34, 0x38, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x74, 0x65, 0x78, 0x74, + 0x2D, 0x61, 0x6C, 0x69, 0x67, 0x6E, 0x3A, 0x20, 0x63, 0x65, 0x6E, 0x74, 0x65, 0x72, 0x3B, 0x0D, + 0x0A, 0x09, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x20, 0x23, 0x66, 0x66, 0x66, 0x3B, 0x0D, 0x0A, + 0x7D, 0x0D, 0x0A, 0x2E, 0x62, 0x74, 0x6E, 0x2D, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x7B, + 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x3A, 0x20, 0x63, + 0x65, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x6E, 0x6F, 0x2D, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x3B, + 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x73, 0x69, + 0x7A, 0x65, 0x3A, 0x20, 0x31, 0x32, 0x70, 0x78, 0x20, 0x32, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, + 0x09, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x34, 0x34, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, + 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x20, 0x34, 0x38, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, + 0x64, 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A, 0x20, 0x69, 0x6E, 0x6C, 0x69, 0x6E, 0x65, 0x2D, + 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x3B, 0x0D, 0x0A, 0x09, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x73, 0x69, + 0x7A, 0x65, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x6C, 0x69, 0x6E, 0x65, 0x2D, + 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x6F, + 0x76, 0x65, 0x72, 0x66, 0x6C, 0x6F, 0x77, 0x3A, 0x20, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6E, 0x3B, + 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x2E, 0x62, 0x74, + 0x6E, 0x2D, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x70, 0x6F, 0x73, + 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x61, 0x62, 0x73, 0x6F, 0x6C, 0x75, 0x74, 0x65, 0x3B, + 0x0D, 0x0A, 0x09, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, + 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x77, + 0x69, 0x66, 0x69, 0x2D, 0x66, 0x61, 0x69, 0x6C, 0x20, 0x2E, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, + 0x74, 0x7B, 0x0D, 0x0A, 0x09, 0x2D, 0x77, 0x65, 0x62, 0x6B, 0x69, 0x74, 0x2D, 0x62, 0x6F, 0x78, + 0x2D, 0x66, 0x6C, 0x65, 0x78, 0x3A, 0x20, 0x31, 0x3B, 0x20, 0x20, 0x20, 0x20, 0x0D, 0x0A, 0x09, + 0x2D, 0x6D, 0x6F, 0x7A, 0x2D, 0x62, 0x6F, 0x78, 0x2D, 0x66, 0x6C, 0x65, 0x78, 0x3A, 0x20, 0x31, + 0x3B, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x0D, 0x0A, 0x09, 0x2D, 0x77, 0x65, 0x62, + 0x6B, 0x69, 0x74, 0x2D, 0x66, 0x6C, 0x65, 0x78, 0x3A, 0x20, 0x31, 0x3B, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x0D, 0x0A, 0x09, 0x2D, 0x6D, 0x73, 0x2D, 0x66, 0x6C, 0x65, 0x78, 0x3A, 0x20, + 0x31, 0x3B, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x0D, 0x0A, + 0x09, 0x66, 0x6C, 0x65, 0x78, 0x3A, 0x20, 0x31, 0x3B, 0x20, 0x0D, 0x0A, 0x09, 0x70, 0x61, 0x64, + 0x64, 0x69, 0x6E, 0x67, 0x3A, 0x31, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, + 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x23, 0x46, + 0x46, 0x46, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x77, 0x69, 0x66, 0x69, 0x2D, 0x66, 0x61, + 0x69, 0x6C, 0x20, 0x68, 0x32, 0x7B, 0x0D, 0x0A, 0x09, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x20, + 0x23, 0x66, 0x35, 0x36, 0x63, 0x36, 0x63, 0x3B, 0x0D, 0x0A, 0x09, 0x66, 0x6F, 0x6E, 0x74, 0x2D, + 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x33, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x74, 0x65, 0x78, + 0x74, 0x2D, 0x61, 0x6C, 0x69, 0x67, 0x6E, 0x3A, 0x63, 0x65, 0x6E, 0x74, 0x65, 0x72, 0x3B, 0x0D, + 0x0A, 0x09, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x3A, 0x33, 0x30, 0x70, 0x78, 0x20, 0x30, + 0x3B, 0x0D, 0x0A, 0x09, 0x6C, 0x69, 0x6E, 0x65, 0x2D, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, + 0x33, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x77, 0x69, 0x66, 0x69, 0x2D, + 0x66, 0x61, 0x69, 0x6C, 0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x74, 0x65, 0x78, 0x74, 0x2D, 0x69, 0x6E, + 0x64, 0x65, 0x6E, 0x74, 0x3A, 0x32, 0x72, 0x65, 0x6D, 0x3B, 0x0D, 0x0A, 0x09, 0x66, 0x6F, 0x6E, + 0x74, 0x2D, 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x31, 0x36, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x6C, + 0x69, 0x6E, 0x65, 0x2D, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x32, 0x38, 0x70, 0x78, 0x3B, + 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x62, 0x74, 0x6E, 0x7B, 0x0D, 0x0A, 0x09, 0x74, 0x65, 0x78, + 0x74, 0x2D, 0x64, 0x65, 0x63, 0x6F, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x6E, 0x6F, + 0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x09, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x34, 0x30, 0x70, + 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x6C, 0x69, 0x6E, 0x65, 0x2D, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x3A, 0x34, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x73, 0x69, + 0x7A, 0x65, 0x3A, 0x31, 0x34, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x64, 0x69, 0x73, 0x70, 0x6C, + 0x61, 0x79, 0x3A, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x6F, 0x72, 0x64, + 0x65, 0x72, 0x3A, 0x20, 0x30, 0x20, 0x6E, 0x6F, 0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x09, 0x63, 0x6F, + 0x6C, 0x6F, 0x72, 0x3A, 0x20, 0x23, 0x46, 0x46, 0x46, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x6F, 0x72, + 0x64, 0x65, 0x72, 0x2D, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x3A, 0x20, 0x35, 0x70, 0x78, 0x3B, + 0x0D, 0x0A, 0x09, 0x2D, 0x6D, 0x6F, 0x7A, 0x2D, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x72, + 0x61, 0x64, 0x69, 0x75, 0x73, 0x3A, 0x20, 0x35, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x2D, 0x77, + 0x65, 0x62, 0x6B, 0x69, 0x74, 0x2D, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x72, 0x61, 0x64, + 0x69, 0x75, 0x73, 0x3A, 0x20, 0x35, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x6F, 0x75, 0x74, 0x6C, + 0x69, 0x6E, 0x65, 0x3A, 0x20, 0x6E, 0x6F, 0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x09, 0x63, 0x75, 0x72, + 0x73, 0x6F, 0x72, 0x3A, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x3B, 0x0D, 0x0A, 0x09, + 0x74, 0x65, 0x78, 0x74, 0x2D, 0x61, 0x6C, 0x69, 0x67, 0x6E, 0x3A, 0x63, 0x65, 0x6E, 0x74, 0x65, + 0x72, 0x3B, 0x0D, 0x0A, 0x09, 0x6D, 0x69, 0x6E, 0x2D, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x37, + 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x3A, 0x30, + 0x20, 0x31, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x62, 0x74, 0x6E, 0x2D, + 0x72, 0x65, 0x64, 0x7B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, + 0x64, 0x2D, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x23, 0x66, 0x35, 0x36, 0x63, 0x36, 0x63, 0x3B, + 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x67, 0x65, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2D, 0x62, 0x74, + 0x6E, 0x20, 0x62, 0x75, 0x74, 0x74, 0x6F, 0x6E, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, + 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D, 0x0A, 0x09, 0x6D, + 0x61, 0x72, 0x67, 0x69, 0x6E, 0x3A, 0x33, 0x35, 0x70, 0x78, 0x20, 0x30, 0x3B, 0x0D, 0x0A, 0x7D, + 0x0D, 0x0A, 0x3C, 0x2F, 0x73, 0x74, 0x79, 0x6C, 0x65, 0x3E, 0x0D, 0x0A, 0x3C, 0x2F, 0x68, 0x65, + 0x61, 0x64, 0x3E, 0x0D, 0x0A, 0x0D, 0x0A, 0x3C, 0x62, 0x6F, 0x64, 0x79, 0x3E, 0x0D, 0x0A, 0x3C, + 0x64, 0x69, 0x76, 0x20, 0x63, 0x6C, 0x61, 0x73, 0x73, 0x3D, 0x22, 0x6D, 0x61, 0x69, 0x6E, 0x20, + 0x77, 0x69, 0x66, 0x69, 0x2D, 0x66, 0x61, 0x69, 0x6C, 0x22, 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x3C, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x63, 0x6C, 0x61, 0x73, 0x73, 0x3D, 0x22, 0x68, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x22, 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x3C, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3D, 0x22, 0x23, 0x22, 0x20, 0x63, 0x6C, 0x61, 0x73, + 0x73, 0x3D, 0x22, 0x62, 0x74, 0x6E, 0x2D, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x22, 0x3E, 0xE4, + 0xB8, 0x8A, 0xE4, 0xB8, 0x80, 0xE9, 0xA1, 0xB5, 0x3C, 0x2F, 0x61, 0x3E, 0x0D, 0x0A, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x68, 0x33, 0x3E, 0xE7, 0xBD, 0x91, 0xE5, 0x85, 0xB3, + 0xE4, 0xB8, 0x8A, 0xE7, 0xBD, 0x91, 0xE8, 0xAE, 0xBE, 0xE7, 0xBD, 0xAE, 0x3C, 0x2F, 0x68, 0x33, + 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x3E, + 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6C, 0x61, 0x73, 0x73, + 0x3D, 0x22, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x22, 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x3C, 0x68, 0x32, 0x3E, 0xE8, 0xAE, 0xBE, 0xE7, 0xBD, 0xAE, 0xE5, 0xA4, + 0xB1, 0xE8, 0xB4, 0xA5, 0xEF, 0xBC, 0x81, 0x3C, 0x2F, 0x68, 0x32, 0x3E, 0x0D, 0x0A, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x63, 0x6C, + 0x61, 0x73, 0x73, 0x3D, 0x22, 0x67, 0x65, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2D, 0x62, 0x74, 0x6E, + 0x22, 0x3E, 0x3C, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3D, 0x22, 0x2F, 0x73, 0x65, 0x74, 0x74, + 0x69, 0x6E, 0x67, 0x2E, 0x68, 0x74, 0x6D, 0x22, 0x20, 0x63, 0x6C, 0x61, 0x73, 0x73, 0x3D, 0x22, + 0x62, 0x74, 0x6E, 0x20, 0x62, 0x74, 0x6E, 0x2D, 0x72, 0x65, 0x64, 0x20, 0x62, 0x74, 0x6E, 0x2D, + 0x74, 0x72, 0x79, 0x22, 0x3E, 0xE5, 0x86, 0x8D, 0xE6, 0xAC, 0xA1, 0xE9, 0x87, 0x8D, 0xE8, 0xAF, + 0x95, 0x3C, 0x2F, 0x61, 0x3E, 0x3C, 0x2F, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0D, + 0x0A, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x64, 0x69, 0x76, 0x3E, 0x0D, 0x0A, 0x3C, 0x2F, 0x64, + 0x69, 0x76, 0x3E, 0x0D, 0x0A, 0x0D, 0x0A, 0x3C, 0x2F, 0x62, 0x6F, 0x64, 0x79, 0x3E, 0x0D, 0x0A, + 0x3C, 0x2F, 0x68, 0x74, 0x6D, 0x6C, 0x3E, 0x0D, 0x0A +}; + + +const unsigned char wifisetting[] = { + 0x3C, 0x21, 0x64, 0x6F, 0x63, 0x74, 0x79, 0x70, 0x65, 0x20, 0x68, 0x74, 0x6D, 0x6C, 0x3E, 0x0D, + 0x0A, 0x3C, 0x68, 0x74, 0x6D, 0x6C, 0x3E, 0x0D, 0x0A, 0x3C, 0x68, 0x65, 0x61, 0x64, 0x3E, 0x0D, + 0x0A, 0x3C, 0x6D, 0x65, 0x74, 0x61, 0x20, 0x68, 0x74, 0x74, 0x70, 0x2D, 0x65, 0x71, 0x75, 0x69, + 0x76, 0x3D, 0x22, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x74, 0x79, 0x70, 0x65, 0x22, + 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x3D, 0x22, 0x74, 0x65, 0x78, 0x74, 0x2F, 0x68, + 0x74, 0x6D, 0x6C, 0x22, 0x20, 0x63, 0x68, 0x61, 0x72, 0x73, 0x65, 0x74, 0x3D, 0x22, 0x75, 0x74, + 0x66, 0x2D, 0x38, 0x22, 0x3E, 0x0D, 0x0A, 0x3C, 0x6D, 0x65, 0x74, 0x61, 0x20, 0x63, 0x6F, 0x6E, + 0x74, 0x65, 0x6E, 0x74, 0x3D, 0x22, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3D, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x2D, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2C, 0x20, 0x69, 0x6E, 0x69, 0x74, 0x69, 0x61, + 0x6C, 0x2D, 0x73, 0x63, 0x61, 0x6C, 0x65, 0x3D, 0x31, 0x2E, 0x30, 0x2C, 0x20, 0x6D, 0x61, 0x78, + 0x69, 0x6D, 0x75, 0x6D, 0x2D, 0x73, 0x63, 0x61, 0x6C, 0x65, 0x3D, 0x31, 0x2E, 0x30, 0x2C, 0x20, + 0x75, 0x73, 0x65, 0x72, 0x2D, 0x73, 0x63, 0x61, 0x6C, 0x61, 0x62, 0x6C, 0x65, 0x3D, 0x30, 0x22, + 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x3D, 0x22, 0x76, 0x69, 0x65, 0x77, 0x70, 0x6F, 0x72, 0x74, 0x22, + 0x3E, 0x0D, 0x0A, 0x3C, 0x74, 0x69, 0x74, 0x6C, 0x65, 0x3E, 0xE7, 0xBD, 0x91, 0xE5, 0x85, 0xB3, + 0xE4, 0xB8, 0x8A, 0xE7, 0xBD, 0x91, 0xE8, 0xAE, 0xBE, 0xE7, 0xBD, 0xAE, 0x3C, 0x2F, 0x74, 0x69, + 0x74, 0x6C, 0x65, 0x3E, 0x0D, 0x0A, 0x3C, 0x73, 0x74, 0x79, 0x6C, 0x65, 0x3E, 0x0D, 0x0A, 0x20, + 0x20, 0x62, 0x6F, 0x64, 0x79, 0x2C, 0x20, 0x70, 0x2C, 0x20, 0x68, 0x31, 0x2C, 0x20, 0x68, 0x32, + 0x2C, 0x20, 0x68, 0x33, 0x2C, 0x20, 0x68, 0x34, 0x2C, 0x20, 0x68, 0x35, 0x2C, 0x20, 0x68, 0x36, + 0x2C, 0x20, 0x75, 0x6C, 0x2C, 0x20, 0x6F, 0x6C, 0x2C, 0x20, 0x6C, 0x69, 0x2C, 0x20, 0x64, 0x6C, + 0x2C, 0x20, 0x64, 0x74, 0x2C, 0x20, 0x64, 0x64, 0x2C, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2C, + 0x20, 0x74, 0x68, 0x2C, 0x20, 0x74, 0x64, 0x2C, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x2C, 0x20, 0x66, + 0x69, 0x65, 0x6C, 0x64, 0x73, 0x65, 0x74, 0x2C, 0x20, 0x6C, 0x65, 0x67, 0x65, 0x6E, 0x64, 0x2C, + 0x20, 0x69, 0x6E, 0x70, 0x75, 0x74, 0x2C, 0x20, 0x74, 0x65, 0x78, 0x74, 0x61, 0x72, 0x65, 0x61, + 0x2C, 0x20, 0x62, 0x75, 0x74, 0x74, 0x6F, 0x6E, 0x2C, 0x20, 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, + 0x2C, 0x20, 0x69, 0x6D, 0x67, 0x2C, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x71, 0x75, 0x6F, 0x74, + 0x65, 0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x6D, 0x61, 0x72, 0x67, 0x69, 0x6E, 0x3A, 0x20, 0x30, 0x3B, + 0x0D, 0x0A, 0x09, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x3A, 0x20, 0x30, 0x3B, 0x0D, 0x0A, + 0x09, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x3A, 0x20, 0x30, 0x3B, 0x0D, 0x0A, 0x09, 0x66, 0x6F, + 0x6E, 0x74, 0x2D, 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x20, 0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D, 0x0A, + 0x09, 0x76, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6C, 0x2D, 0x61, 0x6C, 0x69, 0x67, 0x6E, 0x3A, + 0x20, 0x62, 0x61, 0x73, 0x65, 0x6C, 0x69, 0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x09, 0x66, 0x6F, 0x6E, + 0x74, 0x2D, 0x66, 0x61, 0x6D, 0x69, 0x6C, 0x79, 0x3A, 0x20, 0x22, 0x4D, 0x69, 0x63, 0x72, 0x6F, + 0x73, 0x6F, 0x66, 0x74, 0x20, 0x59, 0x61, 0x48, 0x65, 0x69, 0x22, 0x2C, 0x22, 0x69, 0x63, 0x6F, + 0x6E, 0x66, 0x6F, 0x6E, 0x74, 0x22, 0x2C, 0x22, 0x46, 0x6F, 0x6E, 0x74, 0x41, 0x77, 0x65, 0x73, + 0x6F, 0x6D, 0x65, 0x22, 0x20, 0x20, 0x21, 0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0x61, 0x6E, 0x74, + 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x68, 0x31, 0x2C, 0x20, 0x68, 0x32, 0x2C, 0x20, 0x68, 0x33, + 0x2C, 0x20, 0x68, 0x34, 0x2C, 0x20, 0x68, 0x35, 0x2C, 0x20, 0x68, 0x36, 0x20, 0x7B, 0x0D, 0x0A, + 0x09, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x20, 0x6E, 0x6F, + 0x72, 0x6D, 0x61, 0x6C, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x62, 0x6F, 0x64, 0x79, 0x7B, 0x0D, + 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x3A, 0x20, 0x23, 0x66, + 0x35, 0x66, 0x35, 0x66, 0x35, 0x0D, 0x0A, 0x09, 0x7D, 0x0D, 0x0A, 0x62, 0x6F, 0x64, 0x79, 0x2C, + 0x20, 0x68, 0x74, 0x6D, 0x6C, 0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x3A, 0x20, 0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D, 0x0A, 0x09, 0x6D, 0x61, 0x78, 0x2D, 0x68, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x3A, 0x20, 0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, + 0x68, 0x74, 0x6D, 0x6C, 0x7B, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x36, + 0x32, 0x2E, 0x35, 0x25, 0x3B, 0x7D, 0x0D, 0x0A, 0x2E, 0x6D, 0x61, 0x69, 0x6E, 0x7B, 0x0D, 0x0A, + 0x09, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D, 0x0A, 0x09, 0x6D, + 0x69, 0x6E, 0x2D, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D, + 0x0A, 0x09, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x72, 0x65, 0x6C, 0x61, 0x74, + 0x69, 0x76, 0x65, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x6F, 0x78, 0x2D, 0x73, 0x69, 0x7A, 0x69, 0x6E, + 0x67, 0x3A, 0x20, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x62, 0x6F, 0x78, 0x3B, 0x0D, 0x0A, + 0x09, 0x2D, 0x77, 0x65, 0x62, 0x6B, 0x69, 0x74, 0x2D, 0x62, 0x6F, 0x78, 0x2D, 0x73, 0x69, 0x7A, + 0x69, 0x6E, 0x67, 0x3A, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x62, 0x6F, 0x78, 0x3B, 0x0D, + 0x0A, 0x09, 0x64, 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A, 0x2D, 0x77, 0x65, 0x62, 0x6B, 0x69, + 0x74, 0x2D, 0x62, 0x6F, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x2D, 0x77, 0x65, 0x62, 0x6B, 0x69, 0x74, + 0x2D, 0x62, 0x6F, 0x78, 0x2D, 0x6F, 0x72, 0x69, 0x65, 0x6E, 0x74, 0x3A, 0x76, 0x65, 0x72, 0x74, + 0x69, 0x63, 0x61, 0x6C, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, + 0x3A, 0x20, 0x23, 0x66, 0x35, 0x36, 0x63, 0x36, 0x63, 0x3B, 0x0D, 0x0A, 0x09, 0x68, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x3A, 0x34, 0x38, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x6C, 0x69, 0x6E, 0x65, + 0x2D, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x34, 0x38, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, + 0x6F, 0x76, 0x65, 0x72, 0x66, 0x6C, 0x6F, 0x77, 0x3A, 0x20, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6E, + 0x3B, 0x0D, 0x0A, 0x09, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x31, 0x30, 0x30, 0x25, 0x3B, + 0x0D, 0x0A, 0x09, 0x62, 0x6F, 0x78, 0x2D, 0x73, 0x69, 0x7A, 0x69, 0x6E, 0x67, 0x3A, 0x20, 0x62, + 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x62, 0x6F, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x70, 0x6F, 0x73, + 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0x3B, + 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x68, 0x33, 0x20, + 0x7B, 0x0D, 0x0A, 0x09, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x20, 0x31, + 0x38, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x6C, 0x69, 0x6E, 0x65, 0x2D, 0x68, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x3A, 0x20, 0x34, 0x38, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x74, 0x65, 0x78, 0x74, + 0x2D, 0x61, 0x6C, 0x69, 0x67, 0x6E, 0x3A, 0x20, 0x63, 0x65, 0x6E, 0x74, 0x65, 0x72, 0x3B, 0x0D, + 0x0A, 0x09, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x20, 0x23, 0x66, 0x66, 0x66, 0x3B, 0x0D, 0x0A, + 0x7D, 0x0D, 0x0A, 0x2E, 0x62, 0x74, 0x6E, 0x2D, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x7B, + 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x3A, 0x20, 0x75, + 0x72, 0x6C, 0x28, 0x2E, 0x2E, 0x2F, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x73, 0x2F, 0x69, 0x63, 0x6F, + 0x6E, 0x30, 0x34, 0x2E, 0x70, 0x6E, 0x67, 0x29, 0x20, 0x63, 0x65, 0x6E, 0x74, 0x65, 0x72, 0x20, + 0x6E, 0x6F, 0x2D, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, + 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x20, 0x31, 0x32, + 0x70, 0x78, 0x20, 0x32, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x77, 0x69, 0x64, 0x74, 0x68, + 0x3A, 0x20, 0x34, 0x34, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x3A, 0x20, 0x34, 0x38, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x64, 0x69, 0x73, 0x70, 0x6C, 0x61, + 0x79, 0x3A, 0x20, 0x69, 0x6E, 0x6C, 0x69, 0x6E, 0x65, 0x2D, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x3B, + 0x0D, 0x0A, 0x09, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x20, 0x30, 0x70, + 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x6C, 0x69, 0x6E, 0x65, 0x2D, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x3A, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x6F, 0x76, 0x65, 0x72, 0x66, 0x6C, 0x6F, + 0x77, 0x3A, 0x20, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6E, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x2E, 0x62, 0x74, 0x6E, 0x2D, 0x72, 0x65, 0x74, 0x75, + 0x72, 0x6E, 0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A, + 0x20, 0x61, 0x62, 0x73, 0x6F, 0x6C, 0x75, 0x74, 0x65, 0x3B, 0x0D, 0x0A, 0x09, 0x6C, 0x65, 0x66, + 0x74, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x30, + 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x77, 0x69, 0x66, 0x69, 0x2D, 0x73, 0x65, + 0x74, 0x20, 0x2E, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x7B, 0x0D, 0x0A, 0x09, 0x6D, 0x61, + 0x72, 0x67, 0x69, 0x6E, 0x3A, 0x31, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x2D, 0x77, 0x65, + 0x62, 0x6B, 0x69, 0x74, 0x2D, 0x62, 0x6F, 0x78, 0x2D, 0x66, 0x6C, 0x65, 0x78, 0x3A, 0x20, 0x31, + 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x2D, 0x6D, 0x6F, 0x7A, 0x2D, 0x62, 0x6F, 0x78, 0x2D, + 0x66, 0x6C, 0x65, 0x78, 0x3A, 0x20, 0x31, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x2D, 0x77, + 0x65, 0x62, 0x6B, 0x69, 0x74, 0x2D, 0x66, 0x6C, 0x65, 0x78, 0x3A, 0x20, 0x31, 0x3B, 0x0D, 0x0A, + 0x20, 0x20, 0x20, 0x20, 0x2D, 0x6D, 0x73, 0x2D, 0x66, 0x6C, 0x65, 0x78, 0x3A, 0x20, 0x31, 0x3B, + 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6C, 0x65, 0x78, 0x3A, 0x20, 0x31, 0x3B, 0x0D, 0x0A, + 0x7D, 0x0D, 0x0A, 0x2E, 0x67, 0x65, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2D, 0x69, 0x6E, 0x66, 0x6F, + 0x2D, 0x62, 0x6F, 0x78, 0x20, 0x2E, 0x69, 0x6E, 0x70, 0x75, 0x74, 0x2D, 0x66, 0x69, 0x65, 0x6C, + 0x64, 0x7B, 0x0D, 0x0A, 0x09, 0x6C, 0x69, 0x6E, 0x65, 0x2D, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x3A, 0x32, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x76, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, + 0x6C, 0x2D, 0x61, 0x6C, 0x69, 0x67, 0x6E, 0x3A, 0x6D, 0x69, 0x64, 0x64, 0x6C, 0x65, 0x3B, 0x0D, + 0x0A, 0x09, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x3A, 0x20, 0x31, 0x70, 0x78, 0x20, 0x73, 0x6F, + 0x6C, 0x69, 0x64, 0x20, 0x23, 0x64, 0x37, 0x64, 0x37, 0x64, 0x37, 0x3B, 0x0D, 0x0A, 0x20, 0x20, + 0x20, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x20, 0x35, 0x38, 0x70, 0x78, 0x3B, 0x0D, + 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x3A, + 0x20, 0x23, 0x66, 0x66, 0x66, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6F, 0x78, 0x2D, + 0x73, 0x69, 0x7A, 0x69, 0x6E, 0x67, 0x3A, 0x20, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x62, + 0x6F, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, + 0x6E, 0x3A, 0x20, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0x3B, 0x0D, 0x0A, 0x20, 0x20, + 0x20, 0x20, 0x6D, 0x61, 0x72, 0x67, 0x69, 0x6E, 0x2D, 0x62, 0x6F, 0x74, 0x74, 0x6F, 0x6D, 0x3A, + 0x20, 0x2D, 0x31, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x64, 0x64, + 0x69, 0x6E, 0x67, 0x3A, 0x20, 0x31, 0x39, 0x70, 0x78, 0x20, 0x31, 0x35, 0x70, 0x78, 0x20, 0x31, + 0x39, 0x70, 0x78, 0x20, 0x31, 0x38, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x69, + 0x6E, 0x70, 0x75, 0x74, 0x2D, 0x66, 0x69, 0x65, 0x6C, 0x64, 0x20, 0x69, 0x6E, 0x70, 0x75, 0x74, + 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x20, + 0x32, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x2D, + 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x20, 0x32, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, + 0x20, 0x20, 0x20, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x20, 0x31, 0x34, + 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, + 0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6F, 0x72, 0x64, 0x65, + 0x72, 0x3A, 0x20, 0x30, 0x20, 0x6E, 0x6F, 0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, + 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x3A, 0x20, 0x74, 0x72, 0x61, 0x6E, + 0x73, 0x70, 0x61, 0x72, 0x65, 0x6E, 0x74, 0x3B, 0x0D, 0x0A, 0x09, 0x6F, 0x75, 0x74, 0x6C, 0x69, + 0x6E, 0x65, 0x3A, 0x20, 0x6D, 0x65, 0x64, 0x69, 0x75, 0x6D, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, + 0x2E, 0x69, 0x6E, 0x70, 0x75, 0x74, 0x2D, 0x66, 0x69, 0x65, 0x6C, 0x64, 0x3A, 0x66, 0x69, 0x72, + 0x73, 0x74, 0x2D, 0x6F, 0x66, 0x2D, 0x74, 0x79, 0x70, 0x65, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, + 0x20, 0x20, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x74, 0x6F, 0x70, 0x2D, 0x6C, 0x65, 0x66, + 0x74, 0x2D, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x3A, 0x20, 0x35, 0x70, 0x78, 0x3B, 0x0D, 0x0A, + 0x20, 0x20, 0x20, 0x20, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x74, 0x6F, 0x70, 0x2D, 0x72, + 0x69, 0x67, 0x68, 0x74, 0x2D, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x3A, 0x20, 0x35, 0x70, 0x78, + 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x69, 0x6E, 0x70, 0x75, 0x74, 0x2D, 0x66, 0x69, 0x65, + 0x6C, 0x64, 0x3A, 0x6C, 0x61, 0x73, 0x74, 0x2D, 0x6F, 0x66, 0x2D, 0x74, 0x79, 0x70, 0x65, 0x20, + 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x62, 0x6F, + 0x74, 0x74, 0x6F, 0x6D, 0x2D, 0x6C, 0x65, 0x66, 0x74, 0x2D, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, + 0x3A, 0x20, 0x35, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6F, 0x72, 0x64, + 0x65, 0x72, 0x2D, 0x62, 0x6F, 0x74, 0x74, 0x6F, 0x6D, 0x2D, 0x72, 0x69, 0x67, 0x68, 0x74, 0x2D, + 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x3A, 0x20, 0x35, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, + 0x0A, 0x2E, 0x62, 0x74, 0x6E, 0x7B, 0x0D, 0x0A, 0x09, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, + 0x34, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x6C, 0x69, 0x6E, 0x65, 0x2D, 0x68, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x3A, 0x34, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x66, 0x6F, 0x6E, 0x74, + 0x2D, 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x31, 0x34, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x64, 0x69, + 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x3B, 0x0D, 0x0A, 0x09, 0x62, + 0x6F, 0x72, 0x64, 0x65, 0x72, 0x3A, 0x20, 0x30, 0x20, 0x6E, 0x6F, 0x6E, 0x65, 0x3B, 0x0D, 0x0A, + 0x09, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x20, 0x23, 0x46, 0x46, 0x46, 0x3B, 0x0D, 0x0A, 0x09, + 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x3A, 0x20, 0x35, + 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x2D, 0x6D, 0x6F, 0x7A, 0x2D, 0x62, 0x6F, 0x72, 0x64, 0x65, + 0x72, 0x2D, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x3A, 0x20, 0x35, 0x70, 0x78, 0x3B, 0x0D, 0x0A, + 0x09, 0x2D, 0x77, 0x65, 0x62, 0x6B, 0x69, 0x74, 0x2D, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, + 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x3A, 0x20, 0x35, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x6F, + 0x75, 0x74, 0x6C, 0x69, 0x6E, 0x65, 0x3A, 0x20, 0x6E, 0x6F, 0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x09, + 0x63, 0x75, 0x72, 0x73, 0x6F, 0x72, 0x3A, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x3B, + 0x0D, 0x0A, 0x09, 0x74, 0x65, 0x78, 0x74, 0x2D, 0x61, 0x6C, 0x69, 0x67, 0x6E, 0x3A, 0x63, 0x65, + 0x6E, 0x74, 0x65, 0x72, 0x3B, 0x0D, 0x0A, 0x09, 0x6D, 0x69, 0x6E, 0x2D, 0x77, 0x69, 0x64, 0x74, + 0x68, 0x3A, 0x37, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, + 0x67, 0x3A, 0x30, 0x20, 0x31, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x62, + 0x74, 0x6E, 0x2D, 0x72, 0x65, 0x64, 0x7B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, + 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x23, 0x66, 0x35, 0x36, 0x63, + 0x36, 0x63, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x67, 0x65, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x2D, 0x62, 0x74, 0x6E, 0x20, 0x62, 0x75, 0x74, 0x74, 0x6F, 0x6E, 0x20, 0x7B, 0x0D, 0x0A, 0x20, + 0x20, 0x20, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D, + 0x0A, 0x09, 0x6D, 0x61, 0x72, 0x67, 0x69, 0x6E, 0x3A, 0x33, 0x35, 0x70, 0x78, 0x20, 0x30, 0x3B, + 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x3C, 0x2F, 0x73, 0x74, 0x79, 0x6C, 0x65, 0x3E, 0x0D, 0x0A, 0x0D, + 0x0A, 0x3C, 0x2F, 0x68, 0x65, 0x61, 0x64, 0x3E, 0x0D, 0x0A, 0x0D, 0x0A, 0x3C, 0x62, 0x6F, 0x64, + 0x79, 0x3E, 0x0D, 0x0A, 0x3C, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6C, 0x61, 0x73, 0x73, 0x3D, 0x22, + 0x6D, 0x61, 0x69, 0x6E, 0x20, 0x77, 0x69, 0x66, 0x69, 0x2D, 0x73, 0x65, 0x74, 0x22, 0x3E, 0x0D, + 0x0A, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x20, 0x63, 0x6C, + 0x61, 0x73, 0x73, 0x3D, 0x22, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0x3E, 0x0D, 0x0A, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3D, 0x22, + 0x23, 0x22, 0x20, 0x63, 0x6C, 0x61, 0x73, 0x73, 0x3D, 0x22, 0x62, 0x74, 0x6E, 0x2D, 0x72, 0x65, + 0x74, 0x75, 0x72, 0x6E, 0x22, 0x3E, 0xE4, 0xB8, 0x8A, 0xE4, 0xB8, 0x80, 0xE9, 0xA1, 0xB5, 0x3C, + 0x2F, 0x61, 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x68, 0x33, + 0x3E, 0xE7, 0xBD, 0x91, 0xE5, 0x85, 0xB3, 0xE4, 0xB8, 0x8A, 0xE7, 0xBD, 0x91, 0xE8, 0xAE, 0xBE, + 0xE7, 0xBD, 0xAE, 0x3C, 0x2F, 0x68, 0x33, 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x2F, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x64, 0x69, + 0x76, 0x20, 0x63, 0x6C, 0x61, 0x73, 0x73, 0x3D, 0x22, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, + 0x22, 0x3E, 0x0D, 0x0A, 0x09, 0x3C, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6F, + 0x6E, 0x3D, 0x22, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x2E, 0x68, 0x74, 0x6D, 0x22, 0x20, 0x6D, + 0x65, 0x74, 0x68, 0x6F, 0x64, 0x3D, 0x22, 0x70, 0x6F, 0x73, 0x74, 0x22, 0x3E, 0x0D, 0x0A, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x63, + 0x6C, 0x61, 0x73, 0x73, 0x3D, 0x22, 0x67, 0x65, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2D, 0x69, 0x6E, + 0x66, 0x6F, 0x2D, 0x62, 0x6F, 0x78, 0x22, 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x3C, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6C, 0x61, 0x73, 0x73, 0x3D, 0x22, + 0x69, 0x6E, 0x70, 0x75, 0x74, 0x2D, 0x66, 0x69, 0x65, 0x6C, 0x64, 0x22, 0x3E, 0x0D, 0x0A, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x69, 0x6E, 0x70, + 0x75, 0x74, 0x20, 0x69, 0x64, 0x3D, 0x22, 0x73, 0x73, 0x69, 0x64, 0x22, 0x20, 0x74, 0x79, 0x70, + 0x65, 0x3D, 0x22, 0x74, 0x65, 0x78, 0x74, 0x22, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x3D, 0x22, 0x53, + 0x53, 0x49, 0x44, 0x22, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x3D, 0x22, 0x22, 0x20, 0x70, 0x6C, + 0x61, 0x63, 0x65, 0x68, 0x6F, 0x6C, 0x64, 0x65, 0x72, 0x3D, 0x22, 0x57, 0x49, 0x46, 0x49, 0xE5, + 0x90, 0x8D, 0xE7, 0xA7, 0xB0, 0x22, 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x64, 0x69, 0x76, 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6C, 0x61, 0x73, 0x73, 0x3D, + 0x22, 0x69, 0x6E, 0x70, 0x75, 0x74, 0x2D, 0x66, 0x69, 0x65, 0x6C, 0x64, 0x22, 0x3E, 0x0D, 0x0A, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x69, 0x6E, + 0x70, 0x75, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3D, 0x22, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6F, + 0x72, 0x64, 0x22, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x3D, 0x22, 0x50, 0x41, 0x53, 0x53, 0x22, 0x20, + 0x76, 0x61, 0x6C, 0x75, 0x65, 0x3D, 0x22, 0x22, 0x20, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x68, 0x6F, + 0x6C, 0x64, 0x65, 0x72, 0x3D, 0x22, 0xE8, 0xBE, 0x93, 0xE5, 0x85, 0xA5, 0xE5, 0xAF, 0x86, 0xE7, + 0xA0, 0x81, 0x22, 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x3C, 0x2F, 0x64, 0x69, 0x76, 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + + 0x20, 0x20, 0x3C, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6C, 0x61, 0x73, 0x73, 0x3D, 0x22, 0x69, 0x6E, + 0x70, 0x75, 0x74, 0x2D, 0x66, 0x69, 0x65, 0x6C, 0x64, 0x22, 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x69, 0x6E, 0x70, 0x75, 0x74, + 0x20, 0x74, 0x79, 0x70, 0x65, 0x3D, 0x22, 0x75, 0x73, 0x65, 0x72, 0x22, 0x20, 0x6E, 0x61, 0x6D, + 0x65, 0x3D, 0x22, 0x55, 0x53, 0x45, 0x52, 0x22, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x3D, 0x22, + 0x22, 0x20, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x68, 0x6F, 0x6C, 0x64, 0x65, 0x72, 0x3D, 0x22, 0xE8, + 0xBE, 0x93, 0xE5, 0x85, 0xA5, 0xE7, 0x99, 0xBB, 0xE5, 0xBD, 0x95, 0xE9, 0x82, 0xAE, 0xE7, 0xAE, + 0xB1, 0x2C, 0xE6, 0xB3, 0xA8, 0xE6, 0x84, 0x8F, 0xE7, 0x94, 0xA8, 0xE6, 0x88, 0xB7, 0xE8, 0xBE, + 0x93, 0xE5, 0x85, 0xA5, 0xE9, 0x94, 0x99, 0xE8, 0xAF, 0xAF, 0xE5, 0xB0, 0x86, 0xE5, 0xAF, 0xBC, + 0xE8, 0x87, 0xB4, 0xE6, 0x97, 0xA0, 0xE6, 0xB3, 0x95, 0xE7, 0xBB, 0x91, 0xE5, 0xAE, 0x9A, 0xE8, + 0xAE, 0xBE, 0xE5, 0xA4, 0x87, 0x21, 0x22, 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x64, 0x69, 0x76, 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, + + 0x3C, 0x2F, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x3C, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x63, 0x6C, 0x61, + 0x73, 0x73, 0x3D, 0x22, 0x67, 0x65, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2D, 0x62, 0x74, 0x6E, 0x22, + 0x3E, 0x3C, 0x62, 0x75, 0x74, 0x74, 0x6F, 0x6E, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3D, 0x22, 0x73, + 0x75, 0x62, 0x6D, 0x69, 0x74, 0x22, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x3D, 0x22, 0x6E, 0x65, 0x78, + 0x74, 0x22, 0x20, 0x63, 0x6C, 0x61, 0x73, 0x73, 0x3D, 0x22, 0x62, 0x74, 0x6E, 0x20, 0x62, 0x74, + 0x6E, 0x2D, 0x72, 0x65, 0x64, 0x20, 0x62, 0x74, 0x6E, 0x2D, 0x6E, 0x65, 0x78, 0x74, 0x22, 0x3E, + 0xE4, 0xB8, 0x8B, 0xE4, 0xB8, 0x80, 0xE6, 0xAD, 0xA5, 0x3C, 0x2F, 0x62, 0x75, 0x74, 0x74, 0x6F, + 0x6E, 0x3E, 0x3C, 0x2F, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0D, 0x0A, 0x09, 0x3C, + 0x2F, 0x66, 0x6F, 0x72, 0x6D, 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x64, 0x69, + 0x76, 0x3E, 0x0D, 0x0A, 0x3C, 0x2F, 0x64, 0x69, 0x76, 0x3E, 0x0D, 0x0A, 0x3C, 0x2F, 0x62, 0x6F, + 0x64, 0x79, 0x3E, 0x0D, 0x0A, 0x3C, 0x2F, 0x68, 0x74, 0x6D, 0x6C, 0x3E, 0x0D, 0x0A +}; + +const unsigned char wifisuccess[0x9BC] = { + 0x3C, 0x21, 0x64, 0x6F, 0x63, 0x74, 0x79, 0x70, 0x65, 0x20, 0x68, 0x74, 0x6D, 0x6C, 0x3E, 0x0D, + 0x0A, 0x3C, 0x68, 0x74, 0x6D, 0x6C, 0x3E, 0x0D, 0x0A, 0x3C, 0x68, 0x65, 0x61, 0x64, 0x3E, 0x0D, + 0x0A, 0x3C, 0x6D, 0x65, 0x74, 0x61, 0x20, 0x68, 0x74, 0x74, 0x70, 0x2D, 0x65, 0x71, 0x75, 0x69, + 0x76, 0x3D, 0x22, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x74, 0x79, 0x70, 0x65, 0x22, + 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x3D, 0x22, 0x74, 0x65, 0x78, 0x74, 0x2F, 0x68, + 0x74, 0x6D, 0x6C, 0x22, 0x20, 0x63, 0x68, 0x61, 0x72, 0x73, 0x65, 0x74, 0x3D, 0x22, 0x75, 0x74, + 0x66, 0x2D, 0x38, 0x22, 0x3E, 0x0D, 0x0A, 0x3C, 0x6D, 0x65, 0x74, 0x61, 0x20, 0x63, 0x6F, 0x6E, + 0x74, 0x65, 0x6E, 0x74, 0x3D, 0x22, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3D, 0x64, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x2D, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2C, 0x20, 0x69, 0x6E, 0x69, 0x74, 0x69, 0x61, + 0x6C, 0x2D, 0x73, 0x63, 0x61, 0x6C, 0x65, 0x3D, 0x31, 0x2E, 0x30, 0x2C, 0x20, 0x6D, 0x61, 0x78, + 0x69, 0x6D, 0x75, 0x6D, 0x2D, 0x73, 0x63, 0x61, 0x6C, 0x65, 0x3D, 0x31, 0x2E, 0x30, 0x2C, 0x20, + 0x75, 0x73, 0x65, 0x72, 0x2D, 0x73, 0x63, 0x61, 0x6C, 0x61, 0x62, 0x6C, 0x65, 0x3D, 0x30, 0x22, + 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x3D, 0x22, 0x76, 0x69, 0x65, 0x77, 0x70, 0x6F, 0x72, 0x74, 0x22, + 0x3E, 0x0D, 0x0A, 0x3C, 0x74, 0x69, 0x74, 0x6C, 0x65, 0x3E, 0xE7, 0xBD, 0x91, 0xE5, 0x85, 0xB3, + 0xE4, 0xB8, 0x8A, 0xE7, 0xBD, 0x91, 0xE8, 0xAE, 0xBE, 0xE7, 0xBD, 0xAE, 0x3C, 0x2F, 0x74, 0x69, + 0x74, 0x6C, 0x65, 0x3E, 0x0D, 0x0A, 0x3C, 0x73, 0x74, 0x79, 0x6C, 0x65, 0x3E, 0x0D, 0x0A, 0x20, + 0x62, 0x6F, 0x64, 0x79, 0x2C, 0x20, 0x70, 0x2C, 0x20, 0x68, 0x31, 0x2C, 0x20, 0x68, 0x32, 0x2C, + 0x20, 0x68, 0x33, 0x2C, 0x20, 0x68, 0x34, 0x2C, 0x20, 0x68, 0x35, 0x2C, 0x20, 0x68, 0x36, 0x2C, + 0x20, 0x75, 0x6C, 0x2C, 0x20, 0x6F, 0x6C, 0x2C, 0x20, 0x6C, 0x69, 0x2C, 0x20, 0x64, 0x6C, 0x2C, + 0x20, 0x64, 0x74, 0x2C, 0x20, 0x64, 0x64, 0x2C, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2C, 0x20, + 0x74, 0x68, 0x2C, 0x20, 0x74, 0x64, 0x2C, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x2C, 0x20, 0x66, 0x69, + 0x65, 0x6C, 0x64, 0x73, 0x65, 0x74, 0x2C, 0x20, 0x6C, 0x65, 0x67, 0x65, 0x6E, 0x64, 0x2C, 0x20, + 0x69, 0x6E, 0x70, 0x75, 0x74, 0x2C, 0x20, 0x74, 0x65, 0x78, 0x74, 0x61, 0x72, 0x65, 0x61, 0x2C, + 0x20, 0x62, 0x75, 0x74, 0x74, 0x6F, 0x6E, 0x2C, 0x20, 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x2C, + 0x20, 0x69, 0x6D, 0x67, 0x2C, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x71, 0x75, 0x6F, 0x74, 0x65, + 0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x6D, 0x61, 0x72, 0x67, 0x69, 0x6E, 0x3A, 0x20, 0x30, 0x3B, 0x0D, + 0x0A, 0x09, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x3A, 0x20, 0x30, 0x3B, 0x0D, 0x0A, 0x09, + 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x3A, 0x20, 0x30, 0x3B, 0x0D, 0x0A, 0x09, 0x66, 0x6F, 0x6E, + 0x74, 0x2D, 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x20, 0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D, 0x0A, 0x09, + 0x76, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6C, 0x2D, 0x61, 0x6C, 0x69, 0x67, 0x6E, 0x3A, 0x20, + 0x62, 0x61, 0x73, 0x65, 0x6C, 0x69, 0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x09, 0x66, 0x6F, 0x6E, 0x74, + 0x2D, 0x66, 0x61, 0x6D, 0x69, 0x6C, 0x79, 0x3A, 0x20, 0x22, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, + 0x6F, 0x66, 0x74, 0x20, 0x59, 0x61, 0x48, 0x65, 0x69, 0x22, 0x2C, 0x22, 0x69, 0x63, 0x6F, 0x6E, + 0x66, 0x6F, 0x6E, 0x74, 0x22, 0x2C, 0x22, 0x46, 0x6F, 0x6E, 0x74, 0x41, 0x77, 0x65, 0x73, 0x6F, + 0x6D, 0x65, 0x22, 0x20, 0x20, 0x21, 0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0x61, 0x6E, 0x74, 0x3B, + 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x68, 0x31, 0x2C, 0x20, 0x68, 0x32, 0x2C, 0x20, 0x68, 0x33, 0x2C, + 0x20, 0x68, 0x34, 0x2C, 0x20, 0x68, 0x35, 0x2C, 0x20, 0x68, 0x36, 0x20, 0x7B, 0x0D, 0x0A, 0x09, + 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x20, 0x6E, 0x6F, 0x72, + 0x6D, 0x61, 0x6C, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x62, 0x6F, 0x64, 0x79, 0x7B, 0x0D, 0x0A, + 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x3A, 0x20, 0x23, 0x66, 0x35, + 0x66, 0x35, 0x66, 0x35, 0x0D, 0x0A, 0x09, 0x7D, 0x0D, 0x0A, 0x62, 0x6F, 0x64, 0x79, 0x2C, 0x20, + 0x68, 0x74, 0x6D, 0x6C, 0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, + 0x20, 0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D, 0x0A, 0x09, 0x6D, 0x61, 0x78, 0x2D, 0x68, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x3A, 0x20, 0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x68, + 0x74, 0x6D, 0x6C, 0x7B, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x36, 0x32, + 0x2E, 0x35, 0x25, 0x3B, 0x7D, 0x0D, 0x0A, 0x2E, 0x6D, 0x61, 0x69, 0x6E, 0x7B, 0x0D, 0x0A, 0x09, + 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D, 0x0A, 0x09, 0x6D, 0x69, + 0x6E, 0x2D, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D, 0x0A, + 0x09, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, + 0x76, 0x65, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x6F, 0x78, 0x2D, 0x73, 0x69, 0x7A, 0x69, 0x6E, 0x67, + 0x3A, 0x20, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x62, 0x6F, 0x78, 0x3B, 0x0D, 0x0A, 0x09, + 0x2D, 0x77, 0x65, 0x62, 0x6B, 0x69, 0x74, 0x2D, 0x62, 0x6F, 0x78, 0x2D, 0x73, 0x69, 0x7A, 0x69, + 0x6E, 0x67, 0x3A, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x62, 0x6F, 0x78, 0x3B, 0x0D, 0x0A, + 0x09, 0x64, 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A, 0x2D, 0x77, 0x65, 0x62, 0x6B, 0x69, 0x74, + 0x2D, 0x62, 0x6F, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x2D, 0x77, 0x65, 0x62, 0x6B, 0x69, 0x74, 0x2D, + 0x62, 0x6F, 0x78, 0x2D, 0x6F, 0x72, 0x69, 0x65, 0x6E, 0x74, 0x3A, 0x76, 0x65, 0x72, 0x74, 0x69, + 0x63, 0x61, 0x6C, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x3A, + 0x20, 0x23, 0x66, 0x35, 0x36, 0x63, 0x36, 0x63, 0x3B, 0x0D, 0x0A, 0x09, 0x68, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x3A, 0x34, 0x38, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x6C, 0x69, 0x6E, 0x65, 0x2D, + 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x34, 0x38, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x6F, + 0x76, 0x65, 0x72, 0x66, 0x6C, 0x6F, 0x77, 0x3A, 0x20, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6E, 0x3B, + 0x0D, 0x0A, 0x09, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D, + 0x0A, 0x09, 0x62, 0x6F, 0x78, 0x2D, 0x73, 0x69, 0x7A, 0x69, 0x6E, 0x67, 0x3A, 0x20, 0x62, 0x6F, + 0x72, 0x64, 0x65, 0x72, 0x2D, 0x62, 0x6F, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x70, 0x6F, 0x73, 0x69, + 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0x3B, 0x0D, + 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x68, 0x33, 0x20, 0x7B, + 0x0D, 0x0A, 0x09, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x20, 0x31, 0x38, + 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x6C, 0x69, 0x6E, 0x65, 0x2D, 0x68, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x3A, 0x20, 0x34, 0x38, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x74, 0x65, 0x78, 0x74, 0x2D, + 0x61, 0x6C, 0x69, 0x67, 0x6E, 0x3A, 0x20, 0x63, 0x65, 0x6E, 0x74, 0x65, 0x72, 0x3B, 0x0D, 0x0A, + 0x09, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x20, 0x23, 0x66, 0x66, 0x66, 0x3B, 0x0D, 0x0A, 0x7D, + 0x0D, 0x0A, 0x2E, 0x62, 0x74, 0x6E, 0x2D, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x7B, 0x0D, + 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x3A, 0x20, 0x63, 0x65, + 0x6E, 0x74, 0x65, 0x72, 0x20, 0x6E, 0x6F, 0x2D, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x3B, 0x0D, + 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x73, 0x69, 0x7A, + 0x65, 0x3A, 0x20, 0x31, 0x32, 0x70, 0x78, 0x20, 0x32, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, + 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x34, 0x34, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x68, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x20, 0x34, 0x38, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x64, + 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A, 0x20, 0x69, 0x6E, 0x6C, 0x69, 0x6E, 0x65, 0x2D, 0x62, + 0x6C, 0x6F, 0x63, 0x6B, 0x3B, 0x0D, 0x0A, 0x09, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x73, 0x69, 0x7A, + 0x65, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x6C, 0x69, 0x6E, 0x65, 0x2D, 0x68, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x6F, 0x76, + 0x65, 0x72, 0x66, 0x6C, 0x6F, 0x77, 0x3A, 0x20, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6E, 0x3B, 0x0D, + 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x2E, 0x62, 0x74, 0x6E, + 0x2D, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x70, 0x6F, 0x73, 0x69, + 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x61, 0x62, 0x73, 0x6F, 0x6C, 0x75, 0x74, 0x65, 0x3B, 0x0D, + 0x0A, 0x09, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x74, + 0x6F, 0x70, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x77, 0x69, + 0x66, 0x69, 0x2D, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 0x2E, 0x63, 0x6F, 0x6E, 0x74, + 0x65, 0x6E, 0x74, 0x7B, 0x0D, 0x0A, 0x09, 0x2D, 0x77, 0x65, 0x62, 0x6B, 0x69, 0x74, 0x2D, 0x62, + 0x6F, 0x78, 0x2D, 0x66, 0x6C, 0x65, 0x78, 0x3A, 0x20, 0x31, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, + 0x20, 0x2D, 0x6D, 0x6F, 0x7A, 0x2D, 0x62, 0x6F, 0x78, 0x2D, 0x66, 0x6C, 0x65, 0x78, 0x3A, 0x20, + 0x31, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x2D, 0x77, 0x65, 0x62, 0x6B, 0x69, 0x74, 0x2D, + 0x66, 0x6C, 0x65, 0x78, 0x3A, 0x20, 0x31, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x2D, 0x6D, + 0x73, 0x2D, 0x66, 0x6C, 0x65, 0x78, 0x3A, 0x20, 0x31, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, + 0x66, 0x6C, 0x65, 0x78, 0x3A, 0x20, 0x31, 0x3B, 0x0D, 0x0A, 0x09, 0x70, 0x61, 0x64, 0x64, 0x69, + 0x6E, 0x67, 0x3A, 0x31, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, + 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x23, 0x46, 0x46, 0x46, + 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x77, 0x69, 0x66, 0x69, 0x2D, 0x73, 0x75, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x20, 0x68, 0x32, 0x7B, 0x0D, 0x0A, 0x09, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, + 0x20, 0x23, 0x66, 0x35, 0x36, 0x63, 0x36, 0x63, 0x3B, 0x0D, 0x0A, 0x09, 0x66, 0x6F, 0x6E, 0x74, + 0x2D, 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x33, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x74, 0x65, + 0x78, 0x74, 0x2D, 0x61, 0x6C, 0x69, 0x67, 0x6E, 0x3A, 0x63, 0x65, 0x6E, 0x74, 0x65, 0x72, 0x3B, + 0x0D, 0x0A, 0x09, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x3A, 0x33, 0x30, 0x70, 0x78, 0x20, + 0x30, 0x3B, 0x0D, 0x0A, 0x09, 0x6C, 0x69, 0x6E, 0x65, 0x2D, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x3A, 0x33, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x77, 0x69, 0x66, 0x69, + 0x2D, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 0x70, 0x7B, 0x0D, 0x0A, 0x09, 0x74, 0x65, + 0x78, 0x74, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x6E, 0x74, 0x3A, 0x32, 0x72, 0x65, 0x6D, 0x3B, 0x0D, + 0x0A, 0x09, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x31, 0x36, 0x70, 0x78, + 0x3B, 0x0D, 0x0A, 0x09, 0x6C, 0x69, 0x6E, 0x65, 0x2D, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, + 0x32, 0x38, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x62, 0x74, 0x6E, 0x7B, 0x0D, + 0x0A, 0x09, 0x74, 0x65, 0x78, 0x74, 0x2D, 0x64, 0x65, 0x63, 0x6F, 0x72, 0x61, 0x74, 0x69, 0x6F, + 0x6E, 0x3A, 0x20, 0x6E, 0x6F, 0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x09, 0x68, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x3A, 0x34, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x6C, 0x69, 0x6E, 0x65, 0x2D, 0x68, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x34, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x66, 0x6F, + 0x6E, 0x74, 0x2D, 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x31, 0x34, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, + 0x64, 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x3B, 0x0D, 0x0A, + 0x09, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x3A, 0x20, 0x30, 0x20, 0x6E, 0x6F, 0x6E, 0x65, 0x3B, + 0x0D, 0x0A, 0x09, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x20, 0x23, 0x46, 0x46, 0x46, 0x3B, 0x0D, + 0x0A, 0x09, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x3A, + 0x20, 0x35, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x2D, 0x6D, 0x6F, 0x7A, 0x2D, 0x62, 0x6F, 0x72, + 0x64, 0x65, 0x72, 0x2D, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x3A, 0x20, 0x35, 0x70, 0x78, 0x3B, + 0x0D, 0x0A, 0x09, 0x2D, 0x77, 0x65, 0x62, 0x6B, 0x69, 0x74, 0x2D, 0x62, 0x6F, 0x72, 0x64, 0x65, + 0x72, 0x2D, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x3A, 0x20, 0x35, 0x70, 0x78, 0x3B, 0x0D, 0x0A, + 0x09, 0x6F, 0x75, 0x74, 0x6C, 0x69, 0x6E, 0x65, 0x3A, 0x20, 0x6E, 0x6F, 0x6E, 0x65, 0x3B, 0x0D, + 0x0A, 0x09, 0x63, 0x75, 0x72, 0x73, 0x6F, 0x72, 0x3A, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, + 0x72, 0x3B, 0x0D, 0x0A, 0x09, 0x74, 0x65, 0x78, 0x74, 0x2D, 0x61, 0x6C, 0x69, 0x67, 0x6E, 0x3A, + 0x63, 0x65, 0x6E, 0x74, 0x65, 0x72, 0x3B, 0x0D, 0x0A, 0x09, 0x6D, 0x69, 0x6E, 0x2D, 0x77, 0x69, + 0x64, 0x74, 0x68, 0x3A, 0x37, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x70, 0x61, 0x64, 0x64, + 0x69, 0x6E, 0x67, 0x3A, 0x30, 0x20, 0x31, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, + 0x2E, 0x62, 0x74, 0x6E, 0x2D, 0x72, 0x65, 0x64, 0x7B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, + 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x23, 0x66, 0x35, + 0x36, 0x63, 0x36, 0x63, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x67, 0x65, 0x74, 0x65, 0x77, + 0x61, 0x79, 0x2D, 0x62, 0x74, 0x6E, 0x20, 0x62, 0x75, 0x74, 0x74, 0x6F, 0x6E, 0x20, 0x7B, 0x0D, + 0x0A, 0x20, 0x20, 0x20, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x31, 0x30, 0x30, 0x25, + 0x3B, 0x0D, 0x0A, 0x09, 0x6D, 0x61, 0x72, 0x67, 0x69, 0x6E, 0x3A, 0x33, 0x35, 0x70, 0x78, 0x20, + 0x30, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x3C, 0x2F, 0x73, 0x74, 0x79, 0x6C, 0x65, 0x3E, 0x0D, + 0x0A, 0x3C, 0x2F, 0x68, 0x65, 0x61, 0x64, 0x3E, 0x0D, 0x0A, 0x0D, 0x0A, 0x3C, 0x62, 0x6F, 0x64, + 0x79, 0x3E, 0x0D, 0x0A, 0x3C, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6C, 0x61, 0x73, 0x73, 0x3D, 0x22, + 0x6D, 0x61, 0x69, 0x6E, 0x20, 0x77, 0x69, 0x66, 0x69, 0x2D, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x22, 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x3C, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x63, + 0x6C, 0x61, 0x73, 0x73, 0x3D, 0x22, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0x3E, 0x0D, 0x0A, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3D, + 0x22, 0x23, 0x22, 0x20, 0x63, 0x6C, 0x61, 0x73, 0x73, 0x3D, 0x22, 0x62, 0x74, 0x6E, 0x2D, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6E, 0x22, 0x3E, 0xE4, 0xB8, 0x8A, 0xE4, 0xB8, 0x80, 0xE9, 0xA1, 0xB5, + 0x3C, 0x2F, 0x61, 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x68, + 0x33, 0x3E, 0xE7, 0xBD, 0x91, 0xE5, 0x85, 0xB3, 0xE4, 0xB8, 0x8A, 0xE7, 0xBD, 0x91, 0xE8, 0xAE, + 0xBE, 0xE7, 0xBD, 0xAE, 0x3C, 0x2F, 0x68, 0x33, 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x3C, + 0x2F, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x64, + 0x69, 0x76, 0x20, 0x63, 0x6C, 0x61, 0x73, 0x73, 0x3D, 0x22, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, + 0x74, 0x22, 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x68, 0x32, 0x3E, + 0xE8, 0xAE, 0xBE, 0xE7, 0xBD, 0xAE, 0xE6, 0x88, 0x90, 0xE5, 0x8A, 0x9F, 0xEF, 0xBC, 0x81, 0x3C, + 0x2F, 0x68, 0x32, 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x64, 0x69, 0x76, 0x3E, + 0x0D, 0x0A, 0x3C, 0x2F, 0x64, 0x69, 0x76, 0x3E, 0x0D, 0x0A, 0x3C, 0x2F, 0x62, 0x6F, 0x64, 0x79, + 0x3E, 0x0D, 0x0A, 0x3C, 0x2F, 0x68, 0x74, 0x6D, 0x6C, 0x3E, 0x0D, 0x0A +}; + diff --git a/TC1/main.c b/TC1/main.c index f55d5a5..8ebb1c9 100644 --- a/TC1/main.c +++ b/TC1/main.c @@ -7,6 +7,7 @@ #include "user_power.h" #include "user_mqtt_client.h" #include "user_function.h" +#include "http_server/app_httpd.h" #define os_log(format, ...) custom_log("TC1", format, ##__VA_ARGS__) @@ -34,6 +35,7 @@ void appRestoreDefault_callback( void * const user_config_data, uint32_t size ) user_config_t* userConfigDefault = user_config_data; + userConfigDefault->user[0] = 0; userConfigDefault->mqtt_ip[0] = 0; userConfigDefault->mqtt_port = 0; userConfigDefault->mqtt_user[0] = 0; @@ -128,6 +130,7 @@ int application_start( void ) sprintf( sys_config->micoSystemConfig.name, ZTC1_NAME, mac1, mac2 ); } + os_log( "user:%s",user_config->user ); os_log( "device name:%s",sys_config->micoSystemConfig.name ); os_log( "mqtt_ip:%s",user_config->mqtt_ip ); os_log( "mqtt_port:%d",user_config->mqtt_port ); @@ -155,6 +158,9 @@ int application_start( void ) err = user_rtc_init( ); require_noerr( err, exit ); user_power_init(); + + /* start http server thread */ +// app_httpd_start(); while ( 1 ) { // mico_thread_msleep(500); diff --git a/TC1/main.h b/TC1/main.h index fe3b56d..594c94f 100644 --- a/TC1/main.h +++ b/TC1/main.h @@ -61,6 +61,7 @@ typedef struct char version; user_plug_config_t plug[PLUG_NUM]; + char user[maxNameLen]; } user_config_t; extern char rtc_init;