diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9d16840a..0aedcdfb 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -26,10 +26,9 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - name: Install packages - run: sudo apt-get install libmbedtls-dev libpcap-dev - - name: examples - run: make clean examples + - run: sudo apt-get install libmbedtls-dev libpcap-dev + - run: make clean examples + - run: make clean test IPV6=0 MG_ENABLE_POLL=1 macos: runs-on: macos-latest steps: @@ -51,26 +50,21 @@ jobs: sudo curl -F "file=@sntp.cap" https://file.io/?expires=1w - name: openssl run: make test SSL=OPENSSL IPV6=0 ASAN_OPTIONS= OPENSSL=`echo /usr/local/Cellar/openssl*/*` - - name: exports - run: make mg_prefix + - run: make mg_prefix windows: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - name: vc98 - run: make vc98 - - name: vc2017 - run: make vc2017 - - name: mingw - run: make mingw - - name: mingw++ - run: make mingw++ + - run: make vc98 + - run: make vc2017 + - run: make vc22 + - run: make mingw + - run: make mingw++ arm: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - name: arm - run: make arm + - run: make arm matrix_examples: runs-on: ubuntu-latest strategy: diff --git a/Makefile b/Makefile index 08db3470..4833f74b 100644 --- a/Makefile +++ b/Makefile @@ -8,7 +8,8 @@ VALGRIND_OPTS ?= -O0 -g3 INCS ?= -Isrc -I. SSL ?= MBEDTLS CWD ?= $(realpath $(CURDIR)) -DOCKER ?= docker run --rm -e Tmp=. -e WINEDEBUG=-all -v $(CWD):$(CWD) -w $(CWD) +ENV ?= -e Tmp=. -e WINEDEBUG=-all +DOCKER ?= docker run --rm $(ENV) -v $(CWD):$(CWD) -w $(CWD) VCFLAGS = /nologo /W3 /O2 /MD /I. $(DEFS) $(TFLAGS) IPV6 ?= 1 ASAN ?= -fsanitize=address,undefined -fno-sanitize-recover=all @@ -33,7 +34,7 @@ CFLAGS += -DMG_ENABLE_OPENSSL=1 -I$(OPENSSL)/include LDFLAGS ?= -L$(OPENSSL)/lib -lssl -lcrypto endif -all: mg_prefix unamalgamated unpacked test test++ valgrind arm examples vc98 vc2017 mingw mingw++ linux linux++ fuzz +all: mg_prefix unamalgamated unpacked test test++ valgrind arm examples vc98 vc2017 vc22 mingw mingw++ linux linux++ fuzz examples: @for X in $(EXAMPLES); do test -f $$X/Makefile || continue; $(MAKE) -C $$X example || exit 1; done diff --git a/examples/device-dashboard/packed_fs.c b/examples/device-dashboard/packed_fs.c index acf6fd2a..e503fb08 100644 --- a/examples/device-dashboard/packed_fs.c +++ b/examples/device-dashboard/packed_fs.c @@ -3,2279 +3,40 @@ #include static const unsigned char v1[] = { - 39, 117, 115, 101, 32, 115, 116, 114, 105, 99, 116, 39, // 'use strict' - 59, 10, 105, 109, 112, 111, 114, 116, 32, 123, 67, 111, // ;.import {Co - 109, 112, 111, 110, 101, 110, 116, 44, 32, 104, 44, 32, // mponent, h, - 104, 116, 109, 108, 44, 32, 114, 101, 110, 100, 101, 114, // html, render - 44, 32, 117, 115, 101, 69, 102, 102, 101, 99, 116, 44, // , useEffect, - 32, 117, 115, 101, 83, 116, 97, 116, 101, 44, 32, 117, // useState, u - 115, 101, 82, 101, 102, 125, 32, 102, 114, 111, 109, 32, // seRef} from - 39, 46, 47, 112, 114, 101, 97, 99, 116, 46, 109, 105, // './preact.mi - 110, 46, 106, 115, 39, 59, 10, 10, 99, 111, 110, 115, // n.js';..cons - 116, 32, 77, 97, 120, 77, 101, 116, 114, 105, 99, 115, // t MaxMetrics - 68, 97, 116, 97, 80, 111, 105, 110, 116, 115, 32, 61, // DataPoints = - 32, 53, 48, 59, 10, 10, 47, 47, 32, 84, 104, 105, // 50;..// Thi - 115, 32, 115, 105, 109, 112, 108, 101, 32, 112, 117, 98, // s simple pub - 108, 105, 115, 104, 47, 115, 117, 98, 115, 99, 114, 105, // lish/subscri - 98, 101, 32, 105, 115, 32, 117, 115, 101, 100, 32, 116, // be is used t - 111, 32, 112, 97, 115, 115, 32, 110, 111, 116, 105, 102, // o pass notif - 105, 99, 97, 116, 105, 111, 110, 115, 32, 116, 104, 97, // ications tha - 116, 32, 119, 101, 114, 101, 10, 47, 47, 32, 114, 101, // t were.// re - 99, 101, 105, 118, 101, 100, 32, 102, 114, 111, 109, 32, // ceived from - 116, 104, 101, 32, 115, 101, 114, 118, 101, 114, 44, 32, // the server, - 116, 111, 32, 97, 108, 108, 32, 99, 104, 105, 108, 100, // to all child - 32, 99, 111, 109, 112, 111, 110, 101, 110, 116, 115, 32, // components - 111, 102, 32, 116, 104, 101, 32, 97, 112, 112, 46, 10, // of the app.. - 118, 97, 114, 32, 80, 117, 98, 83, 117, 98, 32, 61, // var PubSub = - 32, 40, 102, 117, 110, 99, 116, 105, 111, 110, 40, 41, // (function() - 32, 123, 10, 32, 32, 118, 97, 114, 32, 104, 97, 110, // {. var han - 100, 108, 101, 114, 115, 32, 61, 32, 123, 125, 44, 32, // dlers = {}, - 105, 100, 32, 61, 32, 48, 59, 10, 32, 32, 114, 101, // id = 0;. re - 116, 117, 114, 110, 32, 123, 10, 32, 32, 32, 32, 115, // turn {. s - 117, 98, 115, 99, 114, 105, 98, 101, 58, 32, 102, 117, // ubscribe: fu - 110, 99, 116, 105, 111, 110, 40, 102, 110, 41, 32, 123, // nction(fn) { - 10, 32, 32, 32, 32, 32, 32, 104, 97, 110, 100, 108, // . handl - 101, 114, 115, 91, 105, 100, 43, 43, 93, 32, 61, 32, // ers[id++] = - 102, 110, 59, 10, 32, 32, 32, 32, 125, 44, 10, 32, // fn;. },. - 32, 32, 32, 117, 110, 115, 117, 98, 115, 99, 114, 105, // unsubscri - 98, 101, 58, 32, 102, 117, 110, 99, 116, 105, 111, 110, // be: function - 40, 105, 100, 41, 32, 123, 10, 32, 32, 32, 32, 32, // (id) {. - 32, 100, 101, 108, 101, 116, 101, 32, 104, 97, 110, 100, // delete hand - 108, 101, 114, 115, 91, 105, 100, 93, 59, 10, 32, 32, // lers[id];. - 32, 32, 125, 44, 10, 32, 32, 32, 32, 112, 117, 98, // },. pub - 108, 105, 115, 104, 58, 32, 102, 117, 110, 99, 116, 105, // lish: functi - 111, 110, 40, 100, 97, 116, 97, 41, 32, 123, 10, 32, // on(data) {. - 32, 32, 32, 32, 32, 102, 111, 114, 32, 40, 118, 97, // for (va - 114, 32, 107, 32, 105, 110, 32, 104, 97, 110, 100, 108, // r k in handl - 101, 114, 115, 41, 32, 104, 97, 110, 100, 108, 101, 114, // ers) handler - 115, 91, 107, 93, 40, 100, 97, 116, 97, 41, 59, 10, // s[k](data);. - 32, 32, 32, 32, 125, 10, 32, 32, 125, 59, 10, 125, // }. };.} - 41, 40, 41, 59, 10, 10, 99, 111, 110, 115, 116, 32, // )();..const - 78, 97, 118, 32, 61, 32, 112, 114, 111, 112, 115, 32, // Nav = props - 61, 62, 32, 104, 116, 109, 108, 96, 10, 60, 100, 105, // => html`.. - 60, 100, 105, 118, 32, 99, 108, 97, 115, 115, 61, 34, //
. < - 100, 105, 118, 32, 115, 116, 121, 108, 101, 61, 34, 102, // div style="f - 108, 101, 120, 58, 32, 49, 32, 49, 32, 97, 117, 116, // lex: 1 1 aut - 111, 59, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, // o; display: - 102, 108, 101, 120, 59, 32, 97, 108, 105, 103, 110, 45, // flex; align- - 105, 116, 101, 109, 115, 58, 32, 99, 101, 110, 116, 101, // items: cente - 114, 59, 34, 62, 10, 32, 32, 32, 32, 32, 32, 60, // r;">. < - 98, 62, 89, 111, 117, 114, 32, 80, 114, 111, 100, 117, // b>Your Produ - 99, 116, 60, 47, 98, 62, 10, 32, 32, 32, 32, 60, // ct. < - 47, 100, 105, 118, 62, 10, 32, 32, 32, 32, 60, 100, // /div>. . < - 115, 112, 97, 110, 62, 76, 111, 103, 103, 101, 100, 32, // span>Logged - 105, 110, 32, 97, 115, 58, 60, 47, 115, 112, 97, 110, // in as:. . - 32, 32, 32, 32, 60, 115, 112, 97, 110, 62, 36, 123, // ${ - 112, 114, 111, 112, 115, 46, 117, 115, 101, 114, 125, 60, // props.user}< - 47, 115, 112, 97, 110, 62, 10, 32, 32, 32, 32, 32, // /span>. - 32, 60, 97, 32, 99, 108, 97, 115, 115, 61, 34, 98, // logout - 10, 32, 32, 32, 32, 60, 47, 100, 105, 118, 62, 10, // .
. - 32, 32, 60, 47, 100, 105, 118, 62, 10, 60, 47, 100, // .`;...cons - 116, 32, 72, 101, 114, 111, 32, 61, 32, 112, 114, 111, // t Hero = pro - 112, 115, 32, 61, 62, 32, 104, 116, 109, 108, 96, 10, // ps => html`. - 60, 100, 105, 118, 32, 99, 108, 97, 115, 115, 61, 34, //
. - 10, 32, 32, 60, 104, 49, 32, 115, 116, 121, 108, 101, // .

Inte - 114, 97, 99, 116, 105, 118, 101, 32, 68, 101, 118, 105, // ractive Devi - 99, 101, 32, 68, 97, 115, 104, 98, 111, 97, 114, 100, // ce Dashboard - 60, 47, 104, 49, 62, 10, 10, 32, 32, 60, 112, 62, //

..

- 10, 32, 32, 84, 104, 105, 115, 32, 100, 101, 118, 105, // . This devi - 99, 101, 32, 100, 97, 115, 104, 98, 111, 97, 114, 100, // ce dashboard - 32, 105, 115, 32, 100, 101, 118, 101, 108, 111, 112, 101, // is develope - 100, 32, 117, 115, 105, 110, 103, 32, 116, 104, 101, 32, // d using the - 109, 111, 100, 101, 114, 110, 32, 97, 110, 100, 32, 99, // modern and c - 111, 109, 112, 97, 99, 116, 32, 80, 114, 101, 97, 99, // ompact Preac - 116, 32, 102, 114, 97, 109, 101, 119, 111, 114, 107, 44, // t framework, - 10, 32, 32, 105, 110, 32, 111, 114, 100, 101, 114, 32, // . in order - 116, 111, 32, 102, 105, 116, 32, 111, 110, 32, 118, 101, // to fit on ve - 114, 121, 32, 115, 109, 97, 108, 108, 32, 100, 101, 118, // ry small dev - 105, 99, 101, 115, 46, 32, 84, 104, 105, 115, 32, 105, // ices. This i - 115, 10, 32, 32, 97, 32, 60, 97, 32, 104, 114, 101, // s. a h - 121, 98, 114, 105, 100, 32, 115, 101, 114, 118, 101, 114, // ybrid server - 60, 47, 97, 62, 32, 119, 104, 105, 99, 104, 10, 32, // which. - 32, 112, 114, 111, 118, 105, 100, 101, 115, 32, 98, 111, // provides bo - 116, 104, 32, 115, 116, 97, 116, 105, 99, 32, 97, 110, // th static an - 100, 32, 100, 121, 110, 97, 109, 105, 99, 32, 99, 111, // d dynamic co - 110, 116, 101, 110, 116, 46, 32, 32, 83, 116, 97, 116, // ntent. Stat - 105, 99, 32, 102, 105, 108, 101, 115, 44, 32, 108, 105, // ic files, li - 107, 101, 32, 67, 83, 83, 47, 74, 83, 47, 72, 84, // ke CSS/JS/HT - 77, 76, 10, 32, 32, 111, 114, 32, 105, 109, 97, 103, // ML. or imag - 101, 115, 44, 32, 97, 114, 101, 32, 99, 111, 109, 112, // es, are comp - 105, 108, 101, 100, 32, 105, 110, 116, 111, 32, 116, 104, // iled into th - 101, 32, 115, 101, 114, 118, 101, 114, 32, 98, 105, 110, // e server bin - 97, 114, 121, 46, 10, 10, 32, 32, 84, 104, 105, 115, // ary... This - 32, 85, 73, 32, 117, 115, 101, 115, 32, 116, 104, 101, // UI uses the - 32, 82, 69, 83, 84, 32, 65, 80, 73, 32, 105, 109, // REST API im - 112, 108, 101, 109, 101, 110, 116, 101, 100, 32, 98, 121, // plemented by - 32, 116, 104, 101, 32, 100, 101, 118, 105, 99, 101, 44, // the device, - 32, 119, 104, 105, 99, 104, 32, 121, 111, 117, 32, 99, // which you c - 97, 110, 32, 101, 120, 97, 109, 105, 110, 101, 10, 32, // an examine. - 32, 117, 115, 105, 110, 103, 32, 32, 60, 99, 111, 100, // using curl command-li - 110, 101, 32, 117, 116, 105, 108, 105, 116, 121, 58, 10, // ne utility:. - 32, 32, 60, 47, 112, 62, 10, 10, 32, 32, 60, 100, //

.. cur - 108, 32, 45, 117, 32, 97, 100, 109, 105, 110, 58, 112, // l -u admin:p - 97, 115, 115, 48, 32, 108, 111, 99, 97, 108, 104, 111, // ass0 localho - 115, 116, 58, 56, 48, 48, 48, 47, 97, 112, 105, 47, // st:8000/api/ - 99, 111, 110, 102, 105, 103, 47, 103, 101, 116, 60, 47, // config/get
- 10, 32, 32, 60, 100, 105, 118, 62, 60, 99, 111, 100, // .
curl -u ad - 109, 105, 110, 58, 112, 97, 115, 115, 48, 32, 108, 111, // min:pass0 lo - 99, 97, 108, 104, 111, 115, 116, 58, 56, 48, 48, 48, // calhost:8000 - 47, 97, 112, 105, 47, 99, 111, 110, 102, 105, 103, 47, // /api/config/ - 115, 101, 116, 32, 45, 100, 32, 39, 112, 117, 98, 61, // set -d 'pub= - 109, 103, 47, 116, 111, 112, 105, 99, 39, 60, 47, 99, // mg/topic'
. - 32, 32, 60, 100, 105, 118, 62, 60, 99, 111, 100, 101, //
curl -u adm - 105, 110, 58, 112, 97, 115, 115, 48, 32, 108, 111, 99, // in:pass0 loc - 97, 108, 104, 111, 115, 116, 58, 56, 48, 48, 48, 47, // alhost:8000/ - 97, 112, 105, 47, 109, 101, 115, 115, 97, 103, 101, 47, // api/message/ - 115, 101, 110, 100, 32, 45, 100, 32, 39, 109, 101, 115, // send -d 'mes - 115, 97, 103, 101, 61, 104, 101, 108, 108, 111, 39, 60, // sage=hello'< - 47, 99, 111, 100, 101, 62, 32, 60, 47, 100, 105, 118, // /code>
..

. T - 104, 101, 32, 100, 101, 118, 105, 99, 101, 32, 99, 97, // he device ca - 110, 32, 115, 101, 110, 100, 32, 110, 111, 116, 105, 102, // n send notif - 105, 99, 97, 116, 105, 111, 110, 115, 32, 116, 111, 32, // ications to - 116, 104, 105, 115, 32, 100, 97, 115, 104, 98, 111, 97, // this dashboa - 114, 100, 32, 97, 116, 32, 97, 110, 121, 116, 105, 109, // rd at anytim - 101, 46, 32, 78, 111, 116, 105, 102, 105, 99, 97, 116, // e. Notificat - 105, 111, 110, 115, 10, 32, 32, 97, 114, 101, 32, 115, // ions. are s - 101, 110, 116, 32, 111, 118, 101, 114, 32, 87, 101, 98, // ent over Web - 83, 111, 99, 107, 101, 116, 32, 97, 116, 32, 85, 82, // Socket at UR - 73, 32, 60, 99, 111, 100, 101, 62, 47, 97, 112, 105, // I /api - 47, 119, 97, 116, 99, 104, 60, 47, 99, 111, 100, 101, // /watch as JSON st - 114, 105, 110, 103, 115, 58, 32, 60, 99, 111, 100, 101, // rings: {"name": ". - 46, 34, 44, 32, 34, 100, 97, 116, 97, 34, 58, 32, // .", "data": - 46, 46, 46, 125, 60, 47, 99, 111, 100, 101, 62, 10, // ...}. - 32, 32, 60, 100, 105, 118, 62, 84, 114, 121, 32, 60, //

Try < - 99, 111, 100, 101, 62, 119, 115, 99, 97, 116, 32, 45, // code>wscat - - 45, 97, 117, 116, 104, 32, 117, 115, 101, 114, 49, 58, // -auth user1: - 112, 97, 115, 115, 49, 32, 45, 45, 99, 111, 110, 110, // pass1 --conn - 101, 99, 116, 32, 119, 115, 58, 47, 47, 108, 111, 99, // ect ws://loc - 97, 108, 104, 111, 115, 116, 58, 56, 48, 48, 48, 47, // alhost:8000/ - 97, 112, 105, 47, 119, 97, 116, 99, 104, 60, 47, 99, // api/watch
. - 32, 60, 47, 112, 62, 10, 60, 47, 100, 105, 118, 62, //

. - 10, 60, 47, 100, 105, 118, 62, 96, 59, 10, 10, 99, // .`;..c - 111, 110, 115, 116, 32, 76, 111, 103, 105, 110, 32, 61, // onst Login = - 32, 102, 117, 110, 99, 116, 105, 111, 110, 40, 112, 114, // function(pr - 111, 112, 115, 41, 32, 123, 10, 32, 32, 99, 111, 110, // ops) {. con - 115, 116, 32, 91, 117, 115, 101, 114, 44, 32, 115, 101, // st [user, se - 116, 85, 115, 101, 114, 93, 32, 61, 32, 117, 115, 101, // tUser] = use - 83, 116, 97, 116, 101, 40, 39, 39, 41, 59, 10, 32, // State('');. - 32, 99, 111, 110, 115, 116, 32, 91, 112, 97, 115, 115, // const [pass - 44, 32, 115, 101, 116, 80, 97, 115, 115, 93, 32, 61, // , setPass] = - 32, 117, 115, 101, 83, 116, 97, 116, 101, 40, 39, 39, // useState('' - 41, 59, 10, 32, 32, 99, 111, 110, 115, 116, 32, 108, // );. const l - 111, 103, 105, 110, 32, 61, 32, 101, 118, 32, 61, 62, // ogin = ev => - 10, 32, 32, 32, 32, 32, 32, 102, 101, 116, 99, 104, // . fetch - 40, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // (. - 39, 47, 97, 112, 105, 47, 108, 111, 103, 105, 110, 39, // '/api/login' - 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // ,. - 123, 104, 101, 97, 100, 101, 114, 115, 58, 32, 123, 65, // {headers: {A - 117, 116, 104, 111, 114, 105, 122, 97, 116, 105, 111, 110, // uthorization - 58, 32, 39, 66, 97, 115, 105, 99, 32, 39, 32, 43, // : 'Basic ' + - 32, 98, 116, 111, 97, 40, 117, 115, 101, 114, 32, 43, // btoa(user + - 32, 39, 58, 39, 32, 43, 32, 112, 97, 115, 115, 41, // ':' + pass) - 125, 125, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, // }}). - 32, 32, 46, 116, 104, 101, 110, 40, 114, 32, 61, 62, // .then(r => - 32, 114, 46, 106, 115, 111, 110, 40, 41, 41, 10, 32, // r.json()). - 32, 32, 32, 32, 32, 32, 32, 32, 32, 46, 116, 104, // .th - 101, 110, 40, 114, 32, 61, 62, 32, 114, 32, 38, 38, // en(r => r && - 32, 112, 114, 111, 112, 115, 46, 108, 111, 103, 105, 110, // props.login - 40, 114, 41, 41, 10, 32, 32, 32, 32, 32, 32, 32, // (r)). - 32, 32, 32, 46, 99, 97, 116, 99, 104, 40, 101, 114, // .catch(er - 114, 32, 61, 62, 32, 101, 114, 114, 41, 59, 10, 32, // r => err);. - 32, 114, 101, 116, 117, 114, 110, 32, 104, 116, 109, 108, // return html - 96, 10, 60, 100, 105, 118, 32, 99, 108, 97, 115, 115, // `.
- 10, 32, 32, 60, 100, 105, 118, 32, 115, 116, 121, 108, // .
. - 60, 104, 49, 32, 115, 116, 121, 108, 101, 61, 34, 99, //

Device Dash - 98, 111, 97, 114, 100, 32, 76, 111, 103, 105, 110, 32, // board Login - 60, 47, 104, 49, 62, 10, 32, 32, 32, 32, 60, 100, //

. . < - 105, 110, 112, 117, 116, 32, 116, 121, 112, 101, 61, 39, // input type=' - 116, 101, 120, 116, 39, 32, 112, 108, 97, 99, 101, 104, // text' placeh - 111, 108, 100, 101, 114, 61, 39, 78, 97, 109, 101, 39, // older='Name' - 32, 115, 116, 121, 108, 101, 61, 34, 119, 105, 100, 116, // style="widt - 104, 58, 32, 49, 48, 48, 37, 59, 34, 10, 32, 32, // h: 100%;". - 32, 32, 32, 32, 32, 32, 111, 110, 105, 110, 112, 117, // oninpu - 116, 61, 36, 123, 101, 118, 32, 61, 62, 32, 115, 101, // t=${ev => se - 116, 85, 115, 101, 114, 40, 101, 118, 46, 116, 97, 114, // tUser(ev.tar - 103, 101, 116, 46, 118, 97, 108, 117, 101, 41, 125, 32, // get.value)} - 118, 97, 108, 117, 101, 61, 36, 123, 117, 115, 101, 114, // value=${user - 125, 32, 47, 62, 10, 32, 32, 32, 32, 60, 47, 100, // } />. .
. setPass( - 101, 118, 46, 116, 97, 114, 103, 101, 116, 46, 118, 97, // ev.target.va - 108, 117, 101, 41, 125, 32, 118, 97, 108, 117, 101, 61, // lue)} value= - 36, 123, 112, 97, 115, 115, 125, 10, 32, 32, 32, 32, // ${pass}. - 32, 32, 32, 32, 111, 110, 99, 104, 97, 110, 103, 101, // onchange - 61, 36, 123, 108, 111, 103, 105, 110, 125, 32, 47, 62, // =${login} /> - 10, 32, 32, 32, 32, 60, 47, 100, 105, 118, 62, 10, // .
. - 32, 32, 32, 32, 60, 100, 105, 118, 32, 115, 116, 121, //
. - 32, 32, 32, 60, 98, 117, 116, 116, 111, 110, 32, 99, // . - 32, 32, 32, 60, 47, 100, 105, 118, 62, 10, 32, 32, //
. - 32, 32, 60, 100, 105, 118, 32, 115, 116, 121, 108, 101, //
. - 32, 32, 32, 32, 86, 97, 108, 105, 100, 32, 108, 111, // Valid lo - 103, 105, 110, 115, 58, 32, 97, 100, 109, 105, 110, 58, // gins: admin: - 112, 97, 115, 115, 48, 44, 32, 117, 115, 101, 114, 49, // pass0, user1 - 58, 112, 97, 115, 115, 49, 44, 32, 117, 115, 101, 114, // :pass1, user - 50, 58, 112, 97, 115, 115, 50, 10, 32, 32, 32, 32, // 2:pass2. - 60, 47, 100, 105, 118, 62, 10, 32, 32, 60, 47, 100, //
. .
`; - 10, 125, 59, 10, 10, 10, 99, 111, 110, 115, 116, 32, // .};...const - 67, 111, 110, 102, 105, 103, 117, 114, 97, 116, 105, 111, // Configuratio - 110, 32, 61, 32, 102, 117, 110, 99, 116, 105, 111, 110, // n = function - 40, 112, 114, 111, 112, 115, 41, 32, 123, 10, 32, 32, // (props) {. - 99, 111, 110, 115, 116, 32, 91, 117, 114, 108, 44, 32, // const [url, - 115, 101, 116, 85, 114, 108, 93, 32, 61, 32, 117, 115, // setUrl] = us - 101, 83, 116, 97, 116, 101, 40, 112, 114, 111, 112, 115, // eState(props - 46, 99, 111, 110, 102, 105, 103, 46, 117, 114, 108, 32, // .config.url - 124, 124, 32, 39, 39, 41, 59, 10, 32, 32, 99, 111, // || '');. co - 110, 115, 116, 32, 91, 112, 117, 98, 44, 32, 115, 101, // nst [pub, se - 116, 80, 117, 98, 93, 32, 61, 32, 117, 115, 101, 83, // tPub] = useS - 116, 97, 116, 101, 40, 112, 114, 111, 112, 115, 46, 99, // tate(props.c - 111, 110, 102, 105, 103, 46, 112, 117, 98, 32, 124, 124, // onfig.pub || - 32, 39, 39, 41, 59, 10, 32, 32, 99, 111, 110, 115, // '');. cons - 116, 32, 91, 115, 117, 98, 44, 32, 115, 101, 116, 83, // t [sub, setS - 117, 98, 93, 32, 61, 32, 117, 115, 101, 83, 116, 97, // ub] = useSta - 116, 101, 40, 112, 114, 111, 112, 115, 46, 99, 111, 110, // te(props.con - 102, 105, 103, 46, 115, 117, 98, 32, 124, 124, 32, 39, // fig.sub || ' - 39, 41, 59, 10, 10, 32, 32, 117, 115, 101, 69, 102, // ');.. useEf - 102, 101, 99, 116, 40, 40, 41, 32, 61, 62, 32, 123, // fect(() => { - 10, 32, 32, 32, 32, 115, 101, 116, 85, 114, 108, 40, // . setUrl( - 112, 114, 111, 112, 115, 46, 99, 111, 110, 102, 105, 103, // props.config - 46, 117, 114, 108, 41, 59, 10, 32, 32, 32, 32, 115, // .url);. s - 101, 116, 80, 117, 98, 40, 112, 114, 111, 112, 115, 46, // etPub(props. - 99, 111, 110, 102, 105, 103, 46, 112, 117, 98, 41, 59, // config.pub); - 10, 32, 32, 32, 32, 115, 101, 116, 83, 117, 98, 40, // . setSub( - 112, 114, 111, 112, 115, 46, 99, 111, 110, 102, 105, 103, // props.config - 46, 115, 117, 98, 41, 59, 10, 32, 32, 125, 44, 32, // .sub);. }, - 91, 112, 114, 111, 112, 115, 46, 99, 111, 110, 102, 105, // [props.confi - 103, 93, 41, 59, 10, 10, 32, 32, 99, 111, 110, 115, // g]);.. cons - 116, 32, 117, 112, 100, 97, 116, 101, 32, 61, 32, 40, // t update = ( - 110, 97, 109, 101, 44, 32, 118, 97, 108, 41, 32, 61, // name, val) = - 62, 32, 102, 101, 116, 99, 104, 40, 39, 47, 97, 112, // > fetch('/ap - 105, 47, 99, 111, 110, 102, 105, 103, 47, 115, 101, 116, // i/config/set - 39, 44, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, // ', {. - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // - 32, 32, 32, 109, 101, 116, 104, 111, 100, 58, 32, 39, // method: ' - 112, 111, 115, 116, 39, 44, 10, 32, 32, 32, 32, 32, // post',. - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // - 32, 32, 32, 32, 32, 98, 111, 100, 121, 58, 32, 96, // body: ` - 36, 123, 110, 97, 109, 101, 125, 61, 36, 123, 101, 110, // ${name}=${en - 99, 111, 100, 101, 85, 82, 73, 67, 111, 109, 112, 111, // codeURICompo - 110, 101, 110, 116, 40, 118, 97, 108, 41, 125, 96, 10, // nent(val)}`. - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // - 32, 32, 32, 32, 32, 32, 32, 32, 125, 41, 46, 99, // }).c - 97, 116, 99, 104, 40, 101, 114, 114, 32, 61, 62, 32, // atch(err => - 101, 114, 114, 41, 59, 10, 32, 32, 99, 111, 110, 115, // err);. cons - 116, 32, 117, 112, 100, 97, 116, 101, 117, 114, 108, 32, // t updateurl - 61, 32, 101, 118, 32, 61, 62, 32, 117, 112, 100, 97, // = ev => upda - 116, 101, 40, 39, 117, 114, 108, 39, 44, 32, 117, 114, // te('url', ur - 108, 41, 59, 10, 32, 32, 99, 111, 110, 115, 116, 32, // l);. const - 117, 112, 100, 97, 116, 101, 112, 117, 98, 32, 61, 32, // updatepub = - 101, 118, 32, 61, 62, 32, 117, 112, 100, 97, 116, 101, // ev => update - 40, 39, 112, 117, 98, 39, 44, 32, 112, 117, 98, 41, // ('pub', pub) - 59, 10, 32, 32, 99, 111, 110, 115, 116, 32, 117, 112, // ;. const up - 100, 97, 116, 101, 115, 117, 98, 32, 61, 32, 101, 118, // datesub = ev - 32, 61, 62, 32, 117, 112, 100, 97, 116, 101, 40, 39, // => update(' - 115, 117, 98, 39, 44, 32, 115, 117, 98, 41, 59, 10, // sub', sub);. - 10, 32, 32, 99, 111, 110, 115, 111, 108, 101, 46, 108, // . console.l - 111, 103, 40, 112, 114, 111, 112, 115, 44, 32, 91, 117, // og(props, [u - 114, 108, 44, 32, 112, 117, 98, 44, 32, 115, 117, 98, // rl, pub, sub - 93, 41, 59, 10, 32, 32, 114, 101, 116, 117, 114, 110, // ]);. return - 32, 104, 116, 109, 108, 96, 10, 60, 100, 105, 118, 32, // html`.
.

. - 32, 32, 68, 101, 118, 105, 99, 101, 32, 67, 111, 110, // Device Con - 102, 105, 103, 117, 114, 97, 116, 105, 111, 110, 60, 47, // figuration.
. M - 81, 84, 84, 32, 115, 101, 114, 118, 101, 114, 58, 60, // QTT server:< - 47, 115, 112, 97, 110, 62, 10, 32, 32, 32, 32, 60, // /span>. < - 105, 110, 112, 117, 116, 32, 116, 121, 112, 101, 61, 34, // input type=" - 116, 101, 120, 116, 34, 32, 115, 116, 121, 108, 101, 61, // text" style= - 34, 102, 108, 101, 120, 58, 32, 49, 32, 49, 48, 48, // "flex: 1 100 - 37, 59, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, // %;". - 32, 32, 118, 97, 108, 117, 101, 61, 36, 123, 117, 114, // value=${ur - 108, 125, 32, 111, 110, 99, 104, 97, 110, 103, 101, 61, // l} onchange= - 36, 123, 117, 112, 100, 97, 116, 101, 117, 114, 108, 125, // ${updateurl} - 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 111, // . o - 110, 105, 110, 112, 117, 116, 61, 36, 123, 101, 118, 32, // ninput=${ev - 61, 62, 32, 115, 101, 116, 85, 114, 108, 40, 101, 118, // => setUrl(ev - 46, 116, 97, 114, 103, 101, 116, 46, 118, 97, 108, 117, // .target.valu - 101, 41, 125, 32, 47, 62, 10, 32, 32, 32, 32, 60, // e)} />. < - 98, 117, 116, 116, 111, 110, 32, 99, 108, 97, 115, 115, // button class - 61, 34, 98, 116, 110, 34, 32, 100, 105, 115, 97, 98, // ="btn" disab - 108, 101, 100, 61, 36, 123, 33, 117, 114, 108, 125, 32, // led=${!url} - 111, 110, 99, 108, 105, 99, 107, 61, 36, 123, 117, 112, // onclick=${up - 100, 97, 116, 101, 117, 114, 108, 125, 10, 32, 32, 32, // dateurl}. - 32, 32, 32, 115, 116, 121, 108, 101, 61, 34, 109, 97, // style="ma - 114, 103, 105, 110, 45, 108, 101, 102, 116, 58, 32, 49, // rgin-left: 1 - 101, 109, 59, 32, 98, 97, 99, 107, 103, 114, 111, 117, // em; backgrou - 110, 100, 58, 32, 35, 56, 97, 97, 59, 34, 62, 85, // nd: #8aa;">U - 112, 100, 97, 116, 101, 60, 47, 98, 117, 116, 116, 111, // pdate.
. - 32, 32, 60, 100, 105, 118, 32, 115, 116, 121, 108, 101, //
- 10, 32, 32, 32, 32, 60, 115, 112, 97, 110, 32, 99, // . Subs - 99, 114, 105, 98, 101, 32, 116, 111, 112, 105, 99, 58, // cribe topic: - 60, 47, 115, 112, 97, 110, 62, 10, 32, 32, 32, 32, // . - 60, 105, 110, 112, 117, 116, 32, 116, 121, 112, 101, 61, // - 115, 101, 116, 83, 117, 98, 40, 101, 118, 46, 116, 97, // setSub(ev.ta - 114, 103, 101, 116, 46, 118, 97, 108, 117, 101, 41, 125, // rget.value)} - 32, 47, 62, 10, 32, 32, 32, 32, 60, 98, 117, 116, // />. Upda - 116, 101, 60, 47, 98, 117, 116, 116, 111, 110, 62, 10, // te. - 32, 32, 60, 47, 100, 105, 118, 62, 10, 32, 32, 60, //
. < - 100, 105, 118, 32, 115, 116, 121, 108, 101, 61, 34, 109, // div style="m - 97, 114, 103, 105, 110, 58, 32, 48, 46, 53, 101, 109, // argin: 0.5em - 32, 48, 59, 32, 100, 105, 115, 112, 108, 97, 121, 58, // 0; display: - 32, 102, 108, 101, 120, 59, 34, 62, 10, 32, 32, 32, // flex;">. - 32, 60, 115, 112, 97, 110, 32, 99, 108, 97, 115, 115, // Publish - 116, 111, 112, 105, 99, 58, 60, 47, 115, 112, 97, 110, // topic:. se - 116, 80, 117, 98, 40, 101, 118, 46, 116, 97, 114, 103, // tPub(ev.targ - 101, 116, 46, 118, 97, 108, 117, 101, 41, 125, 32, 47, // et.value)} / - 62, 10, 32, 32, 32, 32, 60, 98, 117, 116, 116, 111, // >. Update - 60, 47, 98, 117, 116, 116, 111, 110, 62, 10, 32, 32, // . - 60, 47, 100, 105, 118, 62, 10, 32, 32, 60, 100, 105, //

. . You c - 97, 110, 32, 117, 115, 101, 32, 60, 97, 32, 104, 114, // an use . Hive - 77, 81, 32, 87, 101, 98, 115, 111, 99, 107, 101, 116, // MQ Websocket - 32, 119, 101, 98, 32, 99, 108, 105, 101, 110, 116, 60, // web client< - 47, 97, 62, 32, 116, 111, 32, 115, 101, 110, 100, 32, // /a> to send - 109, 101, 115, 115, 97, 103, 101, 115, 32, 116, 111, 32, // messages to - 116, 104, 105, 115, 32, 99, 111, 110, 115, 111, 108, 101, // this console - 46, 10, 32, 32, 60, 47, 100, 105, 118, 62, 10, 32, // ..
. - 32, 60, 100, 105, 118, 32, 99, 108, 97, 115, 115, 61, //
. T - 104, 101, 32, 100, 101, 118, 105, 99, 101, 32, 107, 101, // he device ke - 101, 112, 115, 32, 97, 32, 112, 101, 114, 115, 105, 115, // eps a persis - 116, 101, 110, 116, 32, 99, 111, 110, 110, 101, 99, 116, // tent connect - 105, 111, 110, 32, 116, 111, 32, 116, 104, 101, 32, 99, // ion to the c - 111, 110, 102, 105, 103, 117, 114, 101, 100, 32, 77, 81, // onfigured MQ - 84, 84, 32, 115, 101, 114, 118, 101, 114, 46, 10, 32, // TT server.. - 32, 32, 32, 67, 104, 97, 110, 103, 101, 115, 32, 116, // Changes t - 111, 32, 116, 104, 105, 115, 32, 99, 111, 110, 102, 105, // o this confi - 103, 117, 114, 97, 116, 105, 111, 110, 32, 97, 114, 101, // guration are - 32, 112, 114, 111, 112, 97, 103, 97, 116, 101, 100, 32, // propagated - 116, 111, 32, 97, 108, 108, 32, 100, 97, 115, 104, 98, // to all dashb - 111, 97, 114, 100, 115, 58, 32, 116, 114, 121, 10, 32, // oards: try. - 32, 32, 32, 99, 104, 97, 110, 103, 105, 110, 103, 32, // changing - 116, 104, 101, 109, 32, 105, 110, 32, 116, 104, 105, 115, // them in this - 32, 100, 97, 115, 104, 98, 111, 97, 114, 100, 32, 97, // dashboard a - 110, 100, 32, 111, 98, 115, 101, 114, 118, 101, 32, 99, // nd observe c - 104, 97, 110, 103, 101, 115, 32, 105, 110, 32, 111, 116, // hanges in ot - 104, 101, 114, 32, 111, 112, 101, 110, 101, 100, 10, 32, // her opened. - 32, 32, 32, 100, 97, 115, 104, 98, 111, 97, 114, 100, // dashboard - 115, 46, 10, 32, 32, 60, 47, 100, 105, 118, 62, 60, // s..
< - 100, 105, 118, 32, 99, 108, 97, 115, 115, 61, 34, 109, // div class="m - 115, 103, 34, 62, 10, 32, 32, 32, 32, 78, 111, 116, // sg">. Not - 101, 58, 32, 97, 100, 109, 105, 110, 105, 115, 116, 114, // e: administr - 97, 116, 111, 114, 115, 32, 99, 97, 110, 32, 115, 101, // ators can se - 101, 32, 116, 104, 105, 115, 32, 115, 101, 99, 116, 105, // e this secti - 111, 110, 32, 97, 110, 100, 32, 99, 97, 110, 32, 99, // on and can c - 104, 97, 110, 103, 101, 32, 100, 101, 118, 105, 99, 101, // hange device - 10, 32, 32, 32, 32, 99, 111, 110, 102, 105, 103, 117, // . configu - 114, 97, 116, 105, 111, 110, 44, 32, 119, 104, 105, 108, // ration, whil - 115, 116, 32, 117, 115, 101, 114, 115, 32, 99, 97, 110, // st users can - 110, 111, 116, 46, 10, 32, 32, 60, 47, 100, 105, 118, // not.. .`;.} - 59, 10, 10, 10, 99, 111, 110, 115, 116, 32, 77, 101, // ;...const Me - 115, 115, 97, 103, 101, 32, 61, 32, 109, 32, 61, 62, // ssage = m => - 32, 104, 116, 109, 108, 96, 60, 100, 105, 118, 32, 115, // html`
- 10, 32, 32, 60, 115, 112, 97, 110, 32, 99, 108, 97, // . qos - 58, 32, 36, 123, 109, 46, 109, 101, 115, 115, 97, 103, // : ${m.messag - 101, 46, 113, 111, 115, 125, 32, 60, 47, 115, 112, 97, // e.qos} . topic: ${m. - 109, 101, 115, 115, 97, 103, 101, 46, 116, 111, 112, 105, // message.topi - 99, 125, 32, 60, 47, 115, 112, 97, 110, 62, 10, 32, // c} . - 32, 60, 115, 112, 97, 110, 32, 99, 108, 97, 115, 115, // data - 58, 32, 36, 123, 109, 46, 109, 101, 115, 115, 97, 103, // : ${m.messag - 101, 46, 100, 97, 116, 97, 125, 60, 47, 115, 112, 97, // e.data}.
`;. - 10, 99, 111, 110, 115, 116, 32, 77, 101, 115, 115, 97, // .const Messa - 103, 101, 115, 32, 61, 32, 102, 117, 110, 99, 116, 105, // ges = functi - 111, 110, 40, 112, 114, 111, 112, 115, 41, 32, 123, 10, // on(props) {. - 32, 32, 99, 111, 110, 115, 116, 32, 91, 109, 101, 115, // const [mes - 115, 97, 103, 101, 115, 44, 32, 115, 101, 116, 77, 101, // sages, setMe - 115, 115, 97, 103, 101, 115, 93, 32, 61, 32, 117, 115, // ssages] = us - 101, 83, 116, 97, 116, 101, 40, 91, 93, 41, 59, 10, // eState([]);. - 32, 32, 99, 111, 110, 115, 116, 32, 91, 116, 120, 116, // const [txt - 44, 32, 115, 101, 116, 84, 120, 116, 93, 32, 61, 32, // , setTxt] = - 117, 115, 101, 83, 116, 97, 116, 101, 40, 39, 39, 41, // useState('') - 59, 10, 10, 32, 32, 117, 115, 101, 69, 102, 102, 101, // ;.. useEffe - 99, 116, 40, 40, 41, 32, 61, 62, 32, 123, 10, 32, // ct(() => {. - 32, 32, 32, 99, 111, 110, 115, 116, 32, 105, 100, 32, // const id - 61, 32, 80, 117, 98, 83, 117, 98, 46, 115, 117, 98, // = PubSub.sub - 115, 99, 114, 105, 98, 101, 40, 102, 117, 110, 99, 116, // scribe(funct - 105, 111, 110, 40, 109, 115, 103, 41, 32, 123, 10, 32, // ion(msg) {. - 32, 32, 32, 32, 32, 105, 102, 32, 40, 109, 115, 103, // if (msg - 46, 110, 97, 109, 101, 32, 61, 61, 32, 39, 109, 101, // .name == 'me - 115, 115, 97, 103, 101, 39, 41, 32, 115, 101, 116, 77, // ssage') setM - 101, 115, 115, 97, 103, 101, 115, 40, 120, 32, 61, 62, // essages(x => - 32, 120, 46, 99, 111, 110, 99, 97, 116, 40, 91, 109, // x.concat([m - 115, 103, 46, 100, 97, 116, 97, 93, 41, 41, 59, 10, // sg.data]));. - 32, 32, 32, 32, 125, 41, 59, 10, 32, 32, 32, 32, // });. - 114, 101, 116, 117, 114, 110, 32, 80, 117, 98, 83, 117, // return PubSu - 98, 46, 117, 110, 115, 117, 98, 115, 99, 114, 105, 98, // b.unsubscrib - 101, 40, 105, 100, 41, 59, 10, 32, 32, 125, 44, 32, // e(id);. }, - 91, 93, 41, 59, 10, 10, 32, 32, 99, 111, 110, 115, // []);.. cons - 116, 32, 115, 101, 110, 100, 109, 101, 115, 115, 97, 103, // t sendmessag - 101, 32, 61, 32, 101, 118, 32, 61, 62, 32, 102, 101, // e = ev => fe - 116, 99, 104, 40, 39, 47, 97, 112, 105, 47, 109, 101, // tch('/api/me - 115, 115, 97, 103, 101, 47, 115, 101, 110, 100, 39, 44, // ssage/send', - 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, // {. - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // - 32, 32, 32, 32, 32, 32, 32, 32, 32, 109, 101, 116, // met - 104, 111, 100, 58, 32, 39, 112, 111, 115, 116, 39, 44, // hod: 'post', - 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // . - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // - 32, 32, 32, 32, 32, 32, 32, 98, 111, 100, 121, 58, // body: - 32, 96, 109, 101, 115, 115, 97, 103, 101, 61, 36, 123, // `message=${ - 101, 110, 99, 111, 100, 101, 85, 82, 73, 67, 111, 109, // encodeURICom - 112, 111, 110, 101, 110, 116, 40, 116, 120, 116, 41, 125, // ponent(txt)} - 96, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // `. - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // - 32, 32, 32, 32, 32, 32, 125, 41, 46, 116, 104, 101, // }).the - 110, 40, 114, 32, 61, 62, 32, 115, 101, 116, 84, 120, // n(r => setTx - 116, 40, 39, 39, 41, 41, 59, 10, 32, 32, 99, 111, // t(''));. co - 110, 115, 116, 32, 99, 111, 110, 110, 115, 116, 97, 116, // nst connstat - 117, 115, 32, 61, 32, 112, 114, 111, 112, 115, 46, 99, // us = props.c - 111, 110, 102, 105, 103, 46, 99, 111, 110, 110, 101, 99, // onfig.connec - 116, 101, 100, 32, 63, 32, 39, 99, 111, 110, 110, 101, // ted ? 'conne - 99, 116, 101, 100, 39, 32, 58, 32, 39, 100, 105, 115, // cted' : 'dis - 99, 111, 110, 110, 101, 99, 116, 101, 100, 39, 59, 10, // connected';. - 32, 32, 114, 101, 116, 117, 114, 110, 32, 104, 116, 109, // return htm - 108, 96, 10, 60, 100, 105, 118, 32, 99, 108, 97, 115, // l`.
- 10, 32, 32, 60, 104, 51, 32, 115, 116, 121, 108, 101, // .

MQTT me - 115, 115, 97, 103, 101, 115, 60, 47, 104, 51, 62, 10, // ssages

. - 32, 32, 60, 100, 105, 118, 62, 10, 32, 32, 32, 32, //
. - 77, 81, 84, 84, 32, 115, 101, 114, 118, 101, 114, 32, // MQTT server - 115, 116, 97, 116, 117, 115, 58, 32, 60, 98, 62, 36, // status: $ - 123, 99, 111, 110, 110, 115, 116, 97, 116, 117, 115, 125, // {connstatus} - 60, 47, 98, 62, 10, 32, 32, 60, 47, 100, 105, 118, // .
.
. - 36, 123, 109, 101, 115, 115, 97, 103, 101, 115, 46, 109, // ${messages.m - 97, 112, 40, 109, 101, 115, 115, 97, 103, 101, 32, 61, // ap(message = - 62, 32, 104, 40, 77, 101, 115, 115, 97, 103, 101, 44, // > h(Message, - 32, 123, 109, 101, 115, 115, 97, 103, 101, 125, 41, 41, // {message})) - 125, 10, 32, 32, 60, 47, 100, 105, 118, 62, 10, 32, // }.
. - 32, 60, 100, 105, 118, 32, 115, 116, 121, 108, 101, 61, //
. - 32, 32, 60, 115, 112, 97, 110, 32, 99, 108, 97, 115, // Publish - 32, 109, 101, 115, 115, 97, 103, 101, 58, 60, 47, 115, // message:. set - 84, 120, 116, 40, 101, 118, 46, 116, 97, 114, 103, 101, // Txt(ev.targe - 116, 46, 118, 97, 108, 117, 101, 41, 125, 32, 47, 62, // t.value)} /> - 10, 32, 32, 60, 47, 100, 105, 118, 62, 10, 32, 32, // .
. - 60, 100, 105, 118, 32, 99, 108, 97, 115, 115, 61, 34, //
. Th - 101, 32, 109, 101, 115, 115, 97, 103, 101, 32, 103, 101, // e message ge - 116, 115, 32, 112, 97, 115, 115, 101, 100, 32, 116, 111, // ts passed to - 32, 116, 104, 101, 32, 100, 101, 118, 105, 99, 101, 32, // the device - 118, 105, 97, 32, 82, 69, 83, 84, 46, 32, 84, 104, // via REST. Th - 101, 110, 32, 116, 104, 101, 32, 100, 101, 118, 105, 99, // en the devic - 101, 32, 115, 101, 110, 100, 115, 32, 105, 116, 32, 116, // e sends it t - 111, 10, 32, 32, 32, 32, 116, 104, 101, 32, 77, 81, // o. the MQ - 84, 84, 32, 115, 101, 114, 118, 101, 114, 32, 111, 118, // TT server ov - 101, 114, 32, 77, 81, 84, 84, 46, 32, 65, 108, 108, // er MQTT. All - 32, 77, 81, 84, 84, 32, 109, 101, 115, 115, 97, 103, // MQTT messag - 101, 115, 32, 111, 110, 32, 97, 32, 115, 117, 98, 115, // es on a subs - 99, 114, 105, 98, 101, 100, 32, 116, 111, 112, 105, 99, // cribed topic - 10, 32, 32, 32, 32, 114, 101, 99, 101, 105, 118, 101, // . receive - 100, 32, 98, 121, 32, 116, 104, 101, 32, 100, 101, 118, // d by the dev - 105, 99, 101, 44, 32, 97, 114, 101, 32, 112, 114, 111, // ice, are pro - 112, 97, 103, 97, 116, 101, 100, 32, 116, 111, 32, 116, // pagated to t - 104, 105, 115, 32, 100, 97, 115, 104, 98, 111, 97, 114, // his dashboar - 100, 32, 118, 105, 97, 32, 47, 97, 112, 105, 47, 119, // d via /api/w - 97, 116, 99, 104, 46, 10, 32, 32, 60, 47, 100, 105, // atch.. .
`;. - 125, 59, 10, 10, 47, 47, 32, 69, 120, 112, 101, 99, // };..// Expec - 116, 101, 100, 32, 97, 114, 103, 117, 109, 101, 110, 116, // ted argument - 115, 58, 10, 47, 47, 32, 100, 97, 116, 97, 58, 32, // s:.// data: - 116, 105, 109, 101, 115, 101, 114, 105, 101, 115, 44, 32, // timeseries, - 101, 46, 103, 46, 32, 91, 32, 91, 49, 54, 53, 52, // e.g. [ [1654 - 51, 54, 49, 51, 53, 50, 44, 32, 49, 57, 93, 44, // 361352, 19], - 32, 91, 49, 54, 53, 52, 51, 54, 49, 51, 53, 51, // [1654361353 - 44, 32, 49, 56, 93, 44, 32, 46, 46, 46, 32, 93, // , 18], ... ] - 10, 47, 47, 32, 119, 105, 100, 116, 104, 44, 32, 104, // .// width, h - 101, 105, 103, 104, 116, 44, 32, 121, 116, 105, 99, 107, // eight, ytick - 115, 44, 32, 120, 116, 105, 99, 107, 115, 44, 32, 121, // s, xticks, y - 109, 105, 110, 44, 32, 121, 109, 97, 120, 44, 32, 120, // min, ymax, x - 109, 105, 110, 44, 32, 120, 109, 97, 120, 10, 99, 111, // min, xmax.co - 110, 115, 116, 32, 83, 86, 71, 32, 61, 32, 102, 117, // nst SVG = fu - 110, 99, 116, 105, 111, 110, 40, 112, 114, 111, 112, 115, // nction(props - 41, 32, 123, 10, 32, 32, 47, 47, 32, 32, 32, 32, // ) {. // - 32, 32, 32, 32, 32, 32, 32, 32, 119, 10, 32, 32, // w. - 47, 47, 32, 32, 32, 43, 45, 45, 45, 45, 45, 45, // // +------ - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, // ------------ - 45, 45, 45, 43, 10, 32, 32, 47, 47, 32, 32, 32, // ---+. // - 124, 32, 32, 32, 32, 32, 32, 32, 32, 104, 49, 32, // | h1 - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 124, 10, // |. - 32, 32, 47, 47, 32, 32, 32, 124, 32, 32, 32, 32, // // | - 43, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, // +----------- - 43, 32, 32, 32, 32, 124, 10, 32, 32, 47, 47, 32, // + |. // - 32, 32, 124, 32, 32, 32, 32, 124, 32, 32, 32, 32, // | | - 32, 32, 32, 32, 32, 32, 32, 124, 32, 32, 32, 32, // | - 124, 32, 32, 104, 10, 32, 32, 47, 47, 32, 32, 32, // | h. // - 124, 32, 119, 49, 32, 124, 32, 32, 32, 32, 32, 32, // | w1 | - 32, 32, 32, 32, 32, 124, 32, 119, 50, 32, 124, 10, // | w2 |. - 32, 32, 47, 47, 32, 32, 32, 124, 32, 32, 32, 32, // // | - 43, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, // +----------- - 43, 32, 32, 32, 32, 124, 10, 32, 32, 47, 47, 32, // + |. // - 32, 32, 124, 32, 32, 32, 32, 32, 32, 32, 32, 32, // | - 104, 50, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // h2 - 124, 10, 32, 32, 47, 47, 32, 32, 32, 43, 45, 45, // |. // +-- - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, // ------------ - 45, 45, 45, 45, 45, 45, 45, 43, 10, 32, 32, 47, // -------+. / - 47, 10, 32, 32, 108, 101, 116, 32, 119, 32, 61, 32, // /. let w = - 112, 114, 111, 112, 115, 46, 119, 105, 100, 116, 104, 44, // props.width, - 32, 104, 32, 61, 32, 112, 114, 111, 112, 115, 46, 104, // h = props.h - 101, 105, 103, 104, 116, 44, 32, 119, 49, 32, 61, 32, // eight, w1 = - 51, 48, 44, 32, 119, 50, 32, 61, 32, 48, 44, 32, // 30, w2 = 0, - 104, 49, 32, 61, 32, 56, 44, 32, 104, 50, 32, 61, // h1 = 8, h2 = - 32, 49, 56, 59, 10, 32, 32, 108, 101, 116, 32, 121, // 18;. let y - 116, 105, 99, 107, 115, 32, 61, 32, 112, 114, 111, 112, // ticks = prop - 115, 46, 121, 116, 105, 99, 107, 115, 32, 124, 124, 32, // s.yticks || - 52, 44, 32, 120, 116, 105, 99, 107, 115, 32, 61, 32, // 4, xticks = - 112, 114, 111, 112, 115, 46, 120, 116, 105, 99, 107, 115, // props.xticks - 32, 124, 124, 32, 53, 59, 10, 32, 32, 108, 101, 116, // || 5;. let - 32, 100, 97, 116, 97, 32, 61, 32, 112, 114, 111, 112, // data = prop - 115, 46, 100, 97, 116, 97, 32, 124, 124, 32, 91, 93, // s.data || [] - 59, 10, 32, 32, 108, 101, 116, 32, 121, 109, 105, 110, // ;. let ymin - 32, 61, 32, 112, 114, 111, 112, 115, 46, 121, 109, 105, // = props.ymi - 110, 32, 124, 124, 32, 48, 59, 10, 32, 32, 108, 101, // n || 0;. le - 116, 32, 121, 109, 97, 120, 32, 61, 32, 112, 114, 111, // t ymax = pro - 112, 115, 46, 121, 109, 97, 120, 32, 124, 124, 32, 77, // ps.ymax || M - 97, 116, 104, 46, 109, 97, 120, 46, 97, 112, 112, 108, // ath.max.appl - 121, 40, 110, 117, 108, 108, 44, 32, 100, 97, 116, 97, // y(null, data - 46, 109, 97, 112, 40, 112, 32, 61, 62, 32, 112, 91, // .map(p => p[ - 49, 93, 41, 41, 59, 10, 32, 32, 108, 101, 116, 32, // 1]));. let - 120, 109, 105, 110, 32, 61, 32, 112, 114, 111, 112, 115, // xmin = props - 46, 120, 109, 105, 110, 32, 124, 124, 32, 77, 97, 116, // .xmin || Mat - 104, 46, 109, 105, 110, 46, 97, 112, 112, 108, 121, 40, // h.min.apply( - 110, 117, 108, 108, 44, 32, 100, 97, 116, 97, 46, 109, // null, data.m - 97, 112, 40, 112, 32, 61, 62, 32, 112, 91, 48, 93, // ap(p => p[0] - 41, 41, 59, 10, 32, 32, 108, 101, 116, 32, 120, 109, // ));. let xm - 97, 120, 32, 61, 32, 112, 114, 111, 112, 115, 46, 120, // ax = props.x - 109, 97, 120, 32, 124, 124, 32, 77, 97, 116, 104, 46, // max || Math. - 109, 97, 120, 46, 97, 112, 112, 108, 121, 40, 110, 117, // max.apply(nu - 108, 108, 44, 32, 100, 97, 116, 97, 46, 109, 97, 112, // ll, data.map - 40, 112, 32, 61, 62, 32, 112, 91, 48, 93, 41, 41, // (p => p[0])) - 59, 10, 10, 32, 32, 47, 47, 32, 89, 45, 97, 120, // ;.. // Y-ax - 105, 115, 32, 116, 105, 99, 107, 32, 108, 105, 110, 101, // is tick line - 115, 32, 97, 110, 100, 32, 108, 97, 98, 101, 108, 115, // s and labels - 10, 32, 32, 108, 101, 116, 32, 121, 116, 97, 32, 61, // . let yta = - 32, 40, 110, 101, 119, 32, 65, 114, 114, 97, 121, 40, // (new Array( - 121, 116, 105, 99, 107, 115, 32, 43, 32, 49, 41, 41, // yticks + 1)) - 46, 102, 105, 108, 108, 40, 48, 41, 46, 109, 97, 112, // .fill(0).map - 40, 40, 95, 44, 32, 105, 41, 32, 61, 62, 32, 105, // ((_, i) => i - 41, 59, 32, 32, 47, 47, 32, 105, 110, 100, 105, 99, // ); // indic - 101, 115, 10, 32, 32, 108, 101, 116, 32, 121, 116, 105, // es. let yti - 32, 61, 32, 105, 32, 61, 62, 32, 104, 32, 45, 32, // = i => h - - 104, 50, 32, 45, 32, 40, 104, 32, 45, 32, 104, 49, // h2 - (h - h1 - 32, 45, 32, 104, 50, 41, 32, 42, 32, 105, 32, 47, // - h2) * i / - 32, 121, 116, 105, 99, 107, 115, 59, 32, 32, 32, 32, // yticks; - 32, 32, 32, 32, 32, 32, 47, 47, 32, 105, 110, 100, // // ind - 101, 120, 39, 115, 32, 89, 10, 32, 32, 108, 101, 116, // ex's Y. let - 32, 121, 116, 118, 32, 61, 32, 105, 32, 61, 62, 32, // ytv = i => - 40, 121, 109, 97, 120, 32, 45, 32, 121, 109, 105, 110, // (ymax - ymin - 41, 32, 42, 32, 105, 32, 47, 32, 121, 116, 105, 99, // ) * i / ytic - 107, 115, 59, 10, 32, 32, 108, 101, 116, 32, 121, 116, // ks;. let yt - 108, 32, 61, 32, 121, 32, 61, 62, 32, 104, 116, 109, // l = y => htm - 108, 96, 60, 108, 105, 110, 101, 32, 120, 49, 61, 36, // l``;. - 108, 101, 116, 32, 121, 116, 116, 32, 61, 32, 40, 121, // let ytt = (y - 44, 32, 118, 41, 32, 61, 62, 32, 104, 116, 109, 108, // , v) => html - 96, 60, 116, 101, 120, 116, 32, 120, 61, 48, 32, 121, // ` - 36, 123, 118, 125, 60, 47, 116, 101, 120, 116, 62, 96, // ${v}` - 59, 10, 10, 32, 32, 47, 47, 32, 88, 45, 97, 120, // ;.. // X-ax - 105, 115, 32, 116, 105, 99, 107, 32, 108, 105, 110, 101, // is tick line - 115, 32, 97, 110, 100, 32, 108, 97, 98, 101, 108, 115, // s and labels - 10, 32, 32, 108, 101, 116, 32, 100, 97, 116, 101, 102, // . let datef - 109, 116, 32, 61, 32, 117, 110, 105, 120, 32, 61, 62, // mt = unix => - 32, 40, 110, 101, 119, 32, 68, 97, 116, 101, 40, 117, // (new Date(u - 110, 105, 120, 32, 42, 32, 49, 48, 48, 48, 41, 41, // nix * 1000)) - 46, 116, 111, 73, 83, 79, 83, 116, 114, 105, 110, 103, // .toISOString - 40, 41, 46, 115, 117, 98, 115, 116, 114, 40, 49, 52, // ().substr(14 - 44, 32, 53, 41, 59, 10, 32, 32, 108, 101, 116, 32, // , 5);. let - 120, 116, 97, 32, 61, 32, 40, 110, 101, 119, 32, 65, // xta = (new A - 114, 114, 97, 121, 40, 120, 116, 105, 99, 107, 115, 32, // rray(xticks - 43, 32, 49, 41, 41, 46, 102, 105, 108, 108, 40, 48, // + 1)).fill(0 - 41, 46, 109, 97, 112, 40, 40, 95, 44, 32, 105, 41, // ).map((_, i) - 32, 61, 62, 32, 105, 41, 59, 32, 32, 47, 47, 32, // => i); // - 105, 110, 100, 105, 99, 101, 115, 10, 32, 32, 108, 101, // indices. le - 116, 32, 120, 116, 105, 32, 61, 32, 105, 32, 61, 62, // t xti = i => - 32, 119, 49, 32, 43, 32, 40, 119, 32, 45, 32, 119, // w1 + (w - w - 49, 32, 45, 32, 119, 50, 41, 32, 42, 32, 105, 32, // 1 - w2) * i - 47, 32, 120, 116, 105, 99, 107, 115, 59, 32, 32, 32, // / xticks; - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 47, // / - 47, 32, 105, 110, 100, 101, 120, 39, 115, 32, 88, 10, // / index's X. - 32, 32, 108, 101, 116, 32, 120, 116, 118, 32, 61, 32, // let xtv = - 105, 32, 61, 62, 32, 100, 97, 116, 101, 102, 109, 116, // i => datefmt - 40, 120, 109, 105, 110, 32, 43, 32, 40, 120, 109, 97, // (xmin + (xma - 120, 32, 45, 32, 120, 109, 105, 110, 41, 32, 42, 32, // x - xmin) * - 105, 32, 47, 32, 120, 116, 105, 99, 107, 115, 41, 59, // i / xticks); - 10, 32, 32, 108, 101, 116, 32, 120, 116, 108, 32, 61, // . let xtl = - 32, 120, 32, 61, 62, 32, 104, 116, 109, 108, 96, 60, // x => html`< - 112, 97, 116, 104, 32, 100, 61, 34, 77, 32, 36, 123, // path d="M ${ - 120, 125, 44, 36, 123, 104, 49, 125, 32, 76, 32, 36, // x},${h1} L $ - 123, 120, 125, 44, 36, 123, 104, 32, 45, 32, 104, 50, // {x},${h - h2 - 125, 34, 32, 99, 108, 97, 115, 115, 61, 34, 116, 105, // }" class="ti - 99, 107, 34, 47, 62, 96, 59, 10, 32, 32, 108, 101, // ck"/>`;. le - 116, 32, 120, 116, 116, 32, 61, 32, 40, 120, 44, 32, // t xtt = (x, - 118, 41, 32, 61, 62, 10, 32, 32, 32, 32, 32, 32, // v) =>. - 104, 116, 109, 108, 96, 60, 116, 101, 120, 116, 32, 120, // html` - 36, 123, 118, 125, 60, 47, 116, 101, 120, 116, 62, 96, // ${v}` - 59, 10, 10, 32, 32, 47, 47, 32, 84, 114, 97, 110, // ;.. // Tran - 115, 102, 111, 114, 109, 32, 100, 97, 116, 97, 32, 112, // sform data p - 111, 105, 110, 116, 115, 32, 97, 114, 114, 97, 121, 32, // oints array - 105, 110, 116, 111, 32, 99, 111, 111, 114, 100, 105, 110, // into coordin - 97, 116, 101, 10, 32, 32, 108, 101, 116, 32, 100, 120, // ate. let dx - 32, 61, 32, 118, 32, 61, 62, 32, 119, 49, 32, 43, // = v => w1 + - 32, 40, 118, 32, 45, 32, 120, 109, 105, 110, 41, 32, // (v - xmin) - 47, 32, 40, 40, 120, 109, 97, 120, 32, 45, 32, 120, // / ((xmax - x - 109, 105, 110, 41, 32, 124, 124, 32, 49, 41, 32, 42, // min) || 1) * - 32, 40, 119, 32, 45, 32, 119, 49, 32, 45, 32, 119, // (w - w1 - w - 50, 41, 59, 10, 32, 32, 108, 101, 116, 32, 100, 121, // 2);. let dy - 32, 61, 32, 118, 32, 61, 62, 32, 104, 32, 45, 32, // = v => h - - 104, 50, 32, 45, 32, 40, 118, 32, 45, 32, 121, 109, // h2 - (v - ym - 105, 110, 41, 32, 47, 32, 40, 40, 121, 109, 97, 120, // in) / ((ymax - 32, 45, 32, 121, 109, 105, 110, 41, 32, 124, 124, 32, // - ymin) || - 49, 41, 32, 42, 32, 40, 104, 32, 45, 32, 104, 49, // 1) * (h - h1 - 32, 45, 32, 104, 50, 41, 59, 10, 32, 32, 108, 101, // - h2);. le - 116, 32, 100, 100, 32, 61, 32, 100, 97, 116, 97, 46, // t dd = data. - 109, 97, 112, 40, 112, 32, 61, 62, 32, 91, 77, 97, // map(p => [Ma - 116, 104, 46, 114, 111, 117, 110, 100, 40, 100, 120, 40, // th.round(dx( - 112, 91, 48, 93, 41, 41, 44, 32, 77, 97, 116, 104, // p[0])), Math - 46, 114, 111, 117, 110, 100, 40, 100, 121, 40, 112, 91, // .round(dy(p[ - 49, 93, 41, 41, 93, 41, 59, 10, 32, 32, 108, 101, // 1]))]);. le - 116, 32, 100, 100, 108, 32, 61, 32, 100, 100, 46, 108, // t ddl = dd.l - 101, 110, 103, 116, 104, 59, 10, 32, 32, 47, 47, 32, // ength;. // - 65, 110, 100, 32, 112, 108, 111, 116, 32, 116, 104, 101, // And plot the - 32, 100, 97, 116, 97, 32, 97, 115, 32, 60, 112, 97, // data as element. - 32, 32, 108, 101, 116, 32, 98, 101, 103, 105, 110, 48, // let begin0 - 32, 61, 32, 100, 100, 108, 32, 63, 32, 96, 77, 32, // = ddl ? `M - 36, 123, 100, 100, 91, 48, 93, 91, 48, 93, 125, 44, // ${dd[0][0]}, - 36, 123, 100, 100, 91, 48, 93, 91, 49, 93, 125, 96, // ${dd[0][1]}` - 32, 58, 32, 96, 77, 32, 48, 44, 48, 96, 59, 10, // : `M 0,0`;. - 32, 32, 108, 101, 116, 32, 98, 101, 103, 105, 110, 32, // let begin - 61, 32, 96, 77, 32, 36, 123, 119, 49, 125, 44, 36, // = `M ${w1},$ - 123, 104, 32, 45, 32, 104, 50, 125, 96, 59, 32, 32, // {h - h2}`; - 47, 47, 32, 73, 110, 105, 116, 105, 97, 108, 32, 112, // // Initial p - 111, 105, 110, 116, 10, 32, 32, 108, 101, 116, 32, 101, // oint. let e - 110, 100, 32, 61, 32, 100, 100, 108, 32, 63, 32, 96, // nd = ddl ? ` - 76, 32, 36, 123, 100, 100, 91, 100, 100, 108, 32, 45, // L ${dd[ddl - - 32, 49, 93, 91, 48, 93, 125, 44, 36, 123, 104, 32, // 1][0]},${h - 45, 32, 104, 50, 125, 96, 32, 58, 32, 96, 76, 32, // - h2}` : `L - 36, 123, 119, 49, 125, 44, 36, 123, 104, 32, 45, 32, // ${w1},${h - - 104, 50, 125, 96, 59, 10, 32, 32, 108, 101, 116, 32, // h2}`;. let - 115, 101, 114, 105, 101, 115, 32, 61, 32, 100, 100, 108, // series = ddl - 32, 63, 32, 100, 100, 46, 109, 97, 112, 40, 112, 32, // ? dd.map(p - 61, 62, 32, 96, 76, 32, 36, 123, 112, 91, 48, 93, // => `L ${p[0] - 125, 32, 36, 123, 112, 91, 49, 93, 125, 96, 41, 32, // } ${p[1]}`) - 58, 32, 91, 93, 59, 10, 10, 32, 32, 114, 101, 116, // : [];.. ret - 117, 114, 110, 32, 104, 116, 109, 108, 96, 10, 60, 115, // urn html`.. . - 32, 36, 123, 121, 116, 97, 46, 109, 97, 112, 40, 105, // ${yta.map(i - 32, 61, 62, 32, 121, 116, 108, 40, 121, 116, 105, 40, // => ytl(yti( - 105, 41, 41, 41, 125, 10, 32, 32, 36, 123, 121, 116, // i)))}. ${yt - 97, 46, 109, 97, 112, 40, 105, 32, 61, 62, 32, 121, // a.map(i => y - 116, 116, 40, 121, 116, 105, 40, 105, 41, 44, 32, 121, // tt(yti(i), y - 116, 118, 40, 105, 41, 41, 41, 125, 10, 32, 32, 36, // tv(i)))}. $ - 123, 120, 116, 97, 46, 109, 97, 112, 40, 105, 32, 61, // {xta.map(i = - 62, 32, 120, 116, 108, 40, 120, 116, 105, 40, 105, 41, // > xtl(xti(i) - 41, 41, 125, 10, 32, 32, 36, 123, 100, 97, 116, 97, // ))}. ${data - 46, 108, 101, 110, 103, 116, 104, 32, 63, 32, 120, 116, // .length ? xt - 97, 46, 109, 97, 112, 40, 105, 32, 61, 62, 32, 120, // a.map(i => x - 116, 116, 40, 120, 116, 105, 40, 105, 41, 44, 32, 120, // tt(xti(i), x - 116, 118, 40, 105, 41, 41, 41, 32, 58, 32, 39, 39, // tv(i))) : '' - 125, 10, 32, 32, 60, 112, 97, 116, 104, 32, 100, 61, // }. . - 60, 112, 97, 116, 104, 32, 100, 61, 34, 36, 123, 98, // .`;.};... - 99, 111, 110, 115, 116, 32, 67, 104, 97, 114, 116, 32, // const Chart - 61, 32, 102, 117, 110, 99, 116, 105, 111, 110, 40, 112, // = function(p - 114, 111, 112, 115, 41, 32, 123, 10, 32, 32, 99, 111, // rops) {. co - 110, 115, 116, 32, 91, 100, 97, 116, 97, 44, 32, 115, // nst [data, s - 101, 116, 68, 97, 116, 97, 93, 32, 61, 32, 117, 115, // etData] = us - 101, 83, 116, 97, 116, 101, 40, 91, 93, 41, 59, 10, // eState([]);. - 32, 32, 117, 115, 101, 69, 102, 102, 101, 99, 116, 40, // useEffect( - 40, 41, 32, 61, 62, 32, 123, 10, 32, 32, 32, 32, // () => {. - 99, 111, 110, 115, 116, 32, 105, 100, 32, 61, 32, 80, // const id = P - 117, 98, 83, 117, 98, 46, 115, 117, 98, 115, 99, 114, // ubSub.subscr - 105, 98, 101, 40, 102, 117, 110, 99, 116, 105, 111, 110, // ibe(function - 40, 109, 115, 103, 41, 32, 123, 10, 32, 32, 32, 32, // (msg) {. - 32, 32, 105, 102, 32, 40, 109, 115, 103, 46, 110, 97, // if (msg.na - 109, 101, 32, 33, 61, 32, 39, 109, 101, 116, 114, 105, // me != 'metri - 99, 115, 39, 41, 32, 114, 101, 116, 117, 114, 110, 59, // cs') return; - 10, 32, 32, 32, 32, 32, 32, 115, 101, 116, 68, 97, // . setDa - 116, 97, 40, 120, 32, 61, 62, 32, 120, 46, 99, 111, // ta(x => x.co - 110, 99, 97, 116, 40, 91, 109, 115, 103, 46, 100, 97, // ncat([msg.da - 116, 97, 93, 41, 46, 115, 112, 108, 105, 99, 101, 40, // ta]).splice( - 45, 77, 97, 120, 77, 101, 116, 114, 105, 99, 115, 68, // -MaxMetricsD - 97, 116, 97, 80, 111, 105, 110, 116, 115, 41, 41, 59, // ataPoints)); - 10, 32, 32, 32, 32, 125, 41, 59, 10, 32, 32, 32, // . });. - 32, 114, 101, 116, 117, 114, 110, 32, 80, 117, 98, 83, // return PubS - 117, 98, 46, 117, 110, 115, 117, 98, 115, 99, 114, 105, // ub.unsubscri - 98, 101, 40, 105, 100, 41, 59, 10, 32, 32, 125, 44, // be(id);. }, - 32, 91, 93, 41, 59, 10, 10, 32, 32, 108, 101, 116, // []);.. let - 32, 120, 109, 97, 120, 32, 61, 32, 48, 44, 32, 109, // xmax = 0, m - 105, 115, 115, 105, 110, 103, 32, 61, 32, 77, 97, 120, // issing = Max - 77, 101, 116, 114, 105, 99, 115, 68, 97, 116, 97, 80, // MetricsDataP - 111, 105, 110, 116, 115, 32, 45, 32, 100, 97, 116, 97, // oints - data - 46, 108, 101, 110, 103, 116, 104, 59, 10, 32, 32, 105, // .length;. i - 102, 32, 40, 109, 105, 115, 115, 105, 110, 103, 32, 62, // f (missing > - 32, 48, 41, 32, 120, 109, 97, 120, 32, 61, 32, 77, // 0) xmax = M - 97, 116, 104, 46, 114, 111, 117, 110, 100, 40, 68, 97, // ath.round(Da - 116, 101, 46, 110, 111, 119, 40, 41, 32, 47, 32, 49, // te.now() / 1 - 48, 48, 48, 41, 32, 43, 32, 109, 105, 115, 115, 105, // 000) + missi - 110, 103, 59, 10, 32, 32, 114, 101, 116, 117, 114, 110, // ng;. return - 32, 104, 116, 109, 108, 96, 10, 60, 100, 105, 118, 32, // html`.
.

Data C - 104, 97, 114, 116, 60, 47, 104, 51, 62, 10, 32, 32, // hart

. - 60, 100, 105, 118, 32, 115, 116, 121, 108, 101, 61, 34, //
. < - 36, 123, 83, 86, 71, 125, 32, 104, 101, 105, 103, 104, // ${SVG} heigh - 116, 61, 50, 52, 48, 32, 119, 105, 100, 116, 104, 61, // t=240 width= - 54, 48, 48, 32, 121, 109, 105, 110, 61, 48, 32, 121, // 600 ymin=0 y - 109, 97, 120, 61, 50, 48, 32, 120, 109, 97, 120, 61, // max=20 xmax= - 36, 123, 120, 109, 97, 120, 125, 32, 100, 97, 116, 97, // ${xmax} data - 61, 36, 123, 100, 97, 116, 97, 125, 32, 47, 62, 10, // =${data} />. - 32, 32, 60, 47, 100, 105, 118, 62, 10, 32, 32, 60, //
. < - 100, 105, 118, 32, 99, 108, 97, 115, 115, 61, 34, 109, // div class="m - 115, 103, 34, 62, 10, 32, 32, 32, 32, 84, 104, 105, // sg">. Thi - 115, 32, 99, 104, 97, 114, 116, 32, 112, 108, 111, 116, // s chart plot - 115, 32, 108, 105, 118, 101, 32, 115, 101, 110, 115, 111, // s live senso - 114, 32, 100, 97, 116, 97, 44, 32, 115, 101, 110, 116, // r data, sent - 32, 98, 121, 32, 116, 104, 101, 32, 100, 101, 118, 105, // by the devi - 99, 101, 32, 118, 105, 97, 32, 47, 97, 112, 105, 47, // ce via /api/ - 119, 97, 116, 99, 104, 46, 10, 32, 32, 60, 47, 100, // watch.. .
`; - 10, 125, 59, 10, 10, 99, 111, 110, 115, 116, 32, 65, // .};..const A - 112, 112, 32, 61, 32, 102, 117, 110, 99, 116, 105, 111, // pp = functio - 110, 40, 112, 114, 111, 112, 115, 41, 32, 123, 10, 32, // n(props) {. - 32, 99, 111, 110, 115, 116, 32, 91, 117, 115, 101, 114, // const [user - 44, 32, 115, 101, 116, 85, 115, 101, 114, 93, 32, 61, // , setUser] = - 32, 117, 115, 101, 83, 116, 97, 116, 101, 40, 39, 39, // useState('' - 41, 59, 10, 32, 32, 99, 111, 110, 115, 116, 32, 91, // );. const [ - 99, 111, 110, 102, 105, 103, 44, 32, 115, 101, 116, 67, // config, setC - 111, 110, 102, 105, 103, 93, 32, 61, 32, 117, 115, 101, // onfig] = use - 83, 116, 97, 116, 101, 40, 123, 125, 41, 59, 10, 10, // State({});.. - 32, 32, 99, 111, 110, 115, 116, 32, 103, 101, 116, 99, // const getc - 111, 110, 102, 105, 103, 32, 61, 32, 40, 41, 32, 61, // onfig = () = - 62, 10, 32, 32, 32, 32, 32, 32, 102, 101, 116, 99, // >. fetc - 104, 40, 39, 47, 97, 112, 105, 47, 99, 111, 110, 102, // h('/api/conf - 105, 103, 47, 103, 101, 116, 39, 44, 32, 123, 104, 101, // ig/get', {he - 97, 100, 101, 114, 115, 58, 32, 123, 65, 117, 116, 104, // aders: {Auth - 111, 114, 105, 122, 97, 116, 105, 111, 110, 58, 32, 39, // orization: ' - 39, 125, 125, 41, 10, 32, 32, 32, 32, 32, 32, 32, // '}}). - 32, 32, 32, 46, 116, 104, 101, 110, 40, 114, 32, 61, // .then(r = - 62, 32, 114, 46, 106, 115, 111, 110, 40, 41, 41, 10, // > r.json()). - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 46, 116, // .t - 104, 101, 110, 40, 114, 32, 61, 62, 32, 115, 101, 116, // hen(r => set - 67, 111, 110, 102, 105, 103, 40, 114, 41, 41, 10, 32, // Config(r)). - 32, 32, 32, 32, 32, 32, 32, 32, 32, 46, 99, 97, // .ca - 116, 99, 104, 40, 101, 114, 114, 32, 61, 62, 32, 99, // tch(err => c - 111, 110, 115, 111, 108, 101, 46, 108, 111, 103, 40, 101, // onsole.log(e - 114, 114, 41, 41, 59, 10, 10, 32, 32, 99, 111, 110, // rr));.. con - 115, 116, 32, 108, 111, 103, 105, 110, 32, 61, 32, 102, // st login = f - 117, 110, 99, 116, 105, 111, 110, 40, 117, 41, 32, 123, // unction(u) { - 10, 32, 32, 32, 32, 100, 111, 99, 117, 109, 101, 110, // . documen - 116, 46, 99, 111, 111, 107, 105, 101, 32, 61, 32, 96, // t.cookie = ` - 97, 99, 99, 101, 115, 115, 95, 116, 111, 107, 101, 110, // access_token - 61, 36, 123, 117, 46, 116, 111, 107, 101, 110, 125, 59, // =${u.token}; - 112, 97, 116, 104, 61, 47, 59, 109, 97, 120, 45, 97, // path=/;max-a - 103, 101, 61, 51, 54, 48, 48, 96, 59, 10, 32, 32, // ge=3600`;. - 32, 32, 115, 101, 116, 85, 115, 101, 114, 40, 117, 46, // setUser(u. - 117, 115, 101, 114, 41, 59, 10, 32, 32, 32, 32, 114, // user);. r - 101, 116, 117, 114, 110, 32, 103, 101, 116, 99, 111, 110, // eturn getcon - 102, 105, 103, 40, 41, 59, 10, 32, 32, 125, 59, 10, // fig();. };. - 10, 32, 32, 99, 111, 110, 115, 116, 32, 108, 111, 103, // . const log - 111, 117, 116, 32, 61, 32, 101, 118, 32, 61, 62, 32, // out = ev => - 123, 10, 32, 32, 32, 32, 100, 111, 99, 117, 109, 101, // {. docume - 110, 116, 46, 99, 111, 111, 107, 105, 101, 32, 61, 32, // nt.cookie = - 96, 97, 99, 99, 101, 115, 115, 95, 116, 111, 107, 101, // `access_toke - 110, 61, 59, 112, 97, 116, 104, 61, 47, 59, 109, 97, // n=;path=/;ma - 120, 45, 97, 103, 101, 61, 48, 96, 59, 10, 32, 32, // x-age=0`;. - 32, 32, 115, 101, 116, 85, 115, 101, 114, 40, 39, 39, // setUser('' - 41, 59, 10, 32, 32, 125, 59, 10, 10, 32, 32, 47, // );. };.. / - 47, 32, 87, 97, 116, 99, 104, 32, 102, 111, 114, 32, // / Watch for - 110, 111, 116, 105, 102, 105, 99, 97, 116, 105, 111, 110, // notification - 115, 46, 32, 65, 115, 32, 115, 111, 111, 110, 32, 97, // s. As soon a - 115, 32, 97, 32, 110, 111, 116, 105, 102, 105, 99, 97, // s a notifica - 116, 105, 111, 110, 32, 97, 114, 114, 105, 118, 101, 115, // tion arrives - 44, 32, 112, 97, 115, 115, 32, 105, 116, 32, 111, 110, // , pass it on - 10, 32, 32, 47, 47, 32, 116, 111, 32, 97, 108, 108, // . // to all - 32, 115, 117, 98, 115, 99, 114, 105, 98, 101, 100, 32, // subscribed - 99, 111, 109, 112, 111, 110, 101, 110, 116, 115, 10, 32, // components. - 32, 99, 111, 110, 115, 116, 32, 119, 97, 116, 99, 104, // const watch - 32, 61, 32, 102, 117, 110, 99, 116, 105, 111, 110, 40, // = function( - 41, 32, 123, 10, 32, 32, 32, 32, 118, 97, 114, 32, // ) {. var - 108, 32, 61, 32, 119, 105, 110, 100, 111, 119, 46, 108, // l = window.l - 111, 99, 97, 116, 105, 111, 110, 44, 32, 112, 114, 111, // ocation, pro - 116, 111, 32, 61, 32, 108, 46, 112, 114, 111, 116, 111, // to = l.proto - 99, 111, 108, 46, 114, 101, 112, 108, 97, 99, 101, 40, // col.replace( - 39, 104, 116, 116, 112, 39, 44, 32, 39, 119, 115, 39, // 'http', 'ws' - 41, 59, 10, 32, 32, 32, 32, 118, 97, 114, 32, 116, // );. var t - 105, 100, 44, 32, 119, 115, 85, 82, 73, 32, 61, 32, // id, wsURI = - 112, 114, 111, 116, 111, 32, 43, 32, 39, 47, 47, 39, // proto + '//' - 32, 43, 32, 108, 46, 104, 111, 115, 116, 32, 43, 32, // + l.host + - 39, 47, 97, 112, 105, 47, 119, 97, 116, 99, 104, 39, // '/api/watch' - 10, 32, 32, 32, 32, 118, 97, 114, 32, 114, 101, 99, // . var rec - 111, 110, 110, 101, 99, 116, 32, 61, 32, 102, 117, 110, // onnect = fun - 99, 116, 105, 111, 110, 40, 41, 32, 123, 10, 32, 32, // ction() {. - 32, 32, 32, 32, 118, 97, 114, 32, 119, 115, 32, 61, // var ws = - 32, 110, 101, 119, 32, 87, 101, 98, 83, 111, 99, 107, // new WebSock - 101, 116, 40, 119, 115, 85, 82, 73, 41, 59, 10, 32, // et(wsURI);. - 32, 32, 32, 32, 32, 119, 115, 46, 111, 110, 111, 112, // ws.onop - 101, 110, 32, 61, 32, 40, 41, 32, 61, 62, 32, 99, // en = () => c - 111, 110, 115, 111, 108, 101, 46, 108, 111, 103, 40, 39, // onsole.log(' - 119, 115, 32, 99, 111, 110, 110, 101, 99, 116, 101, 100, // ws connected - 39, 41, 59, 10, 32, 32, 32, 32, 32, 32, 119, 115, // ');. ws - 46, 111, 110, 109, 101, 115, 115, 97, 103, 101, 32, 61, // .onmessage = - 32, 102, 117, 110, 99, 116, 105, 111, 110, 40, 101, 118, // function(ev - 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, // ) {. - 116, 114, 121, 32, 123, 10, 32, 32, 32, 32, 32, 32, // try {. - 32, 32, 32, 32, 118, 97, 114, 32, 109, 115, 103, 32, // var msg - 61, 32, 74, 83, 79, 78, 46, 112, 97, 114, 115, 101, // = JSON.parse - 40, 101, 118, 46, 100, 97, 116, 97, 41, 59, 10, 32, // (ev.data);. - 32, 32, 32, 32, 32, 32, 32, 32, 32, 80, 117, 98, // Pub - 83, 117, 98, 46, 112, 117, 98, 108, 105, 115, 104, 40, // Sub.publish( - 109, 115, 103, 41, 59, 10, 32, 32, 32, 32, 32, 32, // msg);. - 32, 32, 32, 32, 105, 102, 32, 40, 109, 115, 103, 46, // if (msg. - 110, 97, 109, 101, 32, 33, 61, 32, 39, 109, 101, 116, // name != 'met - 114, 105, 99, 115, 39, 41, 32, 99, 111, 110, 115, 111, // rics') conso - 108, 101, 46, 108, 111, 103, 40, 39, 119, 115, 45, 62, // le.log('ws-> - 39, 44, 32, 109, 115, 103, 41, 59, 10, 32, 32, 32, // ', msg);. - 32, 32, 32, 32, 32, 125, 32, 99, 97, 116, 99, 104, // } catch - 32, 40, 101, 41, 32, 123, 10, 32, 32, 32, 32, 32, // (e) {. - 32, 32, 32, 32, 32, 99, 111, 110, 115, 111, 108, 101, // console - 46, 108, 111, 103, 40, 39, 73, 110, 118, 97, 108, 105, // .log('Invali - 100, 32, 119, 115, 32, 102, 114, 97, 109, 101, 58, 39, // d ws frame:' - 44, 32, 101, 118, 46, 100, 97, 116, 97, 41, 59, 32, // , ev.data); - 32, 47, 47, 32, 101, 115, 108, 105, 110, 116, 45, 100, // // eslint-d - 105, 115, 97, 98, 108, 101, 45, 108, 105, 110, 101, 10, // isable-line. - 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, // }. - 32, 32, 32, 32, 125, 59, 10, 32, 32, 32, 32, 32, // };. - 32, 119, 115, 46, 111, 110, 99, 108, 111, 115, 101, 32, // ws.onclose - 61, 32, 102, 117, 110, 99, 116, 105, 111, 110, 40, 41, // = function() - 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 99, // {. c - 108, 101, 97, 114, 84, 105, 109, 101, 111, 117, 116, 40, // learTimeout( - 116, 105, 100, 41, 59, 10, 32, 32, 32, 32, 32, 32, // tid);. - 32, 32, 116, 105, 100, 32, 61, 32, 115, 101, 116, 84, // tid = setT - 105, 109, 101, 111, 117, 116, 40, 114, 101, 99, 111, 110, // imeout(recon - 110, 101, 99, 116, 44, 32, 49, 48, 48, 48, 41, 59, // nect, 1000); - 10, 32, 32, 32, 32, 32, 32, 32, 32, 99, 111, 110, // . con - 115, 111, 108, 101, 46, 108, 111, 103, 40, 39, 119, 115, // sole.log('ws - 32, 100, 105, 115, 99, 111, 110, 110, 101, 99, 116, 101, // disconnecte - 100, 39, 41, 59, 10, 32, 32, 32, 32, 32, 32, 125, // d');. } - 59, 10, 32, 32, 32, 32, 125, 59, 10, 32, 32, 32, // ;. };. - 32, 114, 101, 99, 111, 110, 110, 101, 99, 116, 40, 41, // reconnect() - 59, 10, 32, 32, 125, 59, 10, 10, 32, 32, 117, 115, // ;. };.. us - 101, 69, 102, 102, 101, 99, 116, 40, 40, 41, 32, 61, // eEffect(() = - 62, 32, 123, 10, 32, 32, 32, 32, 47, 47, 32, 67, // > {. // C - 97, 108, 108, 101, 100, 32, 111, 110, 99, 101, 32, 97, // alled once a - 116, 32, 105, 110, 105, 116, 32, 116, 105, 109, 101, 10, // t init time. - 32, 32, 32, 32, 80, 117, 98, 83, 117, 98, 46, 115, // PubSub.s - 117, 98, 115, 99, 114, 105, 98, 101, 40, 109, 115, 103, // ubscribe(msg - 32, 61, 62, 32, 109, 115, 103, 46, 110, 97, 109, 101, // => msg.name - 32, 61, 61, 32, 39, 99, 111, 110, 102, 105, 103, 39, // == 'config' - 32, 38, 38, 32, 103, 101, 116, 99, 111, 110, 102, 105, // && getconfi - 103, 40, 41, 41, 59, 10, 32, 32, 32, 32, 102, 101, // g());. fe - 116, 99, 104, 40, 39, 47, 97, 112, 105, 47, 108, 111, // tch('/api/lo - 103, 105, 110, 39, 44, 32, 123, 104, 101, 97, 100, 101, // gin', {heade - 114, 115, 58, 32, 123, 65, 117, 116, 104, 111, 114, 105, // rs: {Authori - 122, 97, 116, 105, 111, 110, 58, 32, 39, 39, 125, 125, // zation: ''}} - 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 46, 116, // ). .t - 104, 101, 110, 40, 114, 32, 61, 62, 32, 114, 46, 106, // hen(r => r.j - 115, 111, 110, 40, 41, 41, 10, 32, 32, 32, 32, 32, // son()). - 32, 32, 32, 46, 116, 104, 101, 110, 40, 114, 32, 61, // .then(r = - 62, 32, 108, 111, 103, 105, 110, 40, 114, 41, 41, 10, // > login(r)). - 32, 32, 32, 32, 32, 32, 32, 32, 46, 116, 104, 101, // .the - 110, 40, 119, 97, 116, 99, 104, 41, 10, 32, 32, 32, // n(watch). - 32, 32, 32, 32, 32, 46, 99, 97, 116, 99, 104, 40, // .catch( - 101, 114, 114, 32, 61, 62, 32, 115, 101, 116, 85, 115, // err => setUs - 101, 114, 40, 39, 39, 41, 41, 59, 10, 32, 32, 125, // er(''));. } - 44, 32, 91, 93, 41, 59, 10, 10, 32, 32, 105, 102, // , []);.. if - 32, 40, 33, 117, 115, 101, 114, 41, 32, 114, 101, 116, // (!user) ret - 117, 114, 110, 32, 104, 116, 109, 108, 96, 60, 36, 123, // urn html`<${ - 76, 111, 103, 105, 110, 125, 32, 108, 111, 103, 105, 110, // Login} login - 61, 36, 123, 108, 111, 103, 105, 110, 125, 32, 47, 62, // =${login} /> - 96, 59, 10, 10, 32, 32, 114, 101, 116, 117, 114, 110, // `;.. return - 32, 104, 116, 109, 108, 96, 10, 60, 36, 123, 78, 97, // html`.<${Na - 118, 125, 32, 117, 115, 101, 114, 61, 36, 123, 117, 115, // v} user=${us - 101, 114, 125, 32, 108, 111, 103, 111, 117, 116, 61, 36, // er} logout=$ - 123, 108, 111, 103, 111, 117, 116, 125, 32, 47, 62, 10, // {logout} />. - 60, 100, 105, 118, 32, 99, 108, 97, 115, 115, 61, 34, //
. - 32, 32, 60, 100, 105, 118, 32, 99, 108, 97, 115, 115, //
. - 60, 100, 105, 118, 32, 99, 108, 97, 115, 115, 61, 34, //
< - 36, 123, 72, 101, 114, 111, 125, 32, 47, 62, 60, 47, // ${Hero} />. <${C - 104, 97, 114, 116, 125, 32, 47, 62, 60, 47, 100, 105, // hart} />.
. - 32, 36, 123, 117, 115, 101, 114, 32, 61, 61, 32, 39, // ${user == ' - 97, 100, 109, 105, 110, 39, 32, 38, 38, 32, 104, 40, // admin' && h( - 67, 111, 110, 102, 105, 103, 117, 114, 97, 116, 105, 111, // Configuratio - 110, 44, 32, 123, 99, 111, 110, 102, 105, 103, 125, 41, // n, {config}) - 125, 10, 32, 32, 32, 32, 60, 47, 100, 105, 118, 62, // }.
- 10, 32, 32, 32, 32, 60, 100, 105, 118, 32, 99, 108, // .
<${Messa - 103, 101, 115, 125, 32, 99, 111, 110, 102, 105, 103, 61, // ges} config= - 36, 123, 99, 111, 110, 102, 105, 103, 125, 32, 47, 62, // ${config} /> - 60, 47, 100, 105, 118, 62, 10, 32, 32, 60, 47, 100, //
. .
`; - 10, 125, 59, 10, 10, 119, 105, 110, 100, 111, 119, 46, // .};..window. - 111, 110, 108, 111, 97, 100, 32, 61, 32, 40, 41, 32, // onload = () - 61, 62, 32, 114, 101, 110, 100, 101, 114, 40, 104, 40, // => render(h( - 65, 112, 112, 41, 44, 32, 100, 111, 99, 117, 109, 101, // App), docume - 110, 116, 46, 98, 111, 100, 121, 41, 59, 10, 0 // nt.body);. + 60, 33, 68, 79, 67, 84, 89, 80, 69, 32, 104, 116, // .. < + 104, 101, 97, 100, 62, 10, 32, 32, 32, 32, 60, 116, // head>. Device + 68, 97, 115, 104, 98, 111, 97, 114, 100, 60, 47, 116, // Dashboard. . + 32, 32, 32, 60, 109, 101, 116, 97, 32, 104, 116, 116, // . + 32, 32, 32, 60, 109, 101, 116, 97, 32, 110, 97, 109, // . . + 10, 32, 32, 60, 98, 111, 100, 121, 62, 60, 47, 98, // . . . + 10, 0 // . }; static const unsigned char v2[] = { - 118, 97, 114, 32, 101, 44, 110, 44, 95, 44, 116, 44, // var e,n,_,t, - 111, 44, 114, 44, 117, 44, 108, 61, 123, 125, 44, 105, // o,r,u,l={},i - 61, 91, 93, 44, 99, 61, 47, 97, 99, 105, 116, 124, // =[],c=/acit| - 101, 120, 40, 63, 58, 115, 124, 103, 124, 110, 124, 112, // ex(?:s|g|n|p - 124, 36, 41, 124, 114, 112, 104, 124, 103, 114, 105, 100, // |$)|rph|grid - 124, 111, 119, 115, 124, 109, 110, 99, 124, 110, 116, 119, // |ows|mnc|ntw - 124, 105, 110, 101, 91, 99, 104, 93, 124, 122, 111, 111, // |ine[ch]|zoo - 124, 94, 111, 114, 100, 124, 105, 116, 101, 114, 97, 47, // |^ord|itera/ - 105, 59, 102, 117, 110, 99, 116, 105, 111, 110, 32, 115, // i;function s - 40, 101, 44, 110, 41, 123, 102, 111, 114, 40, 118, 97, // (e,n){for(va - 114, 32, 95, 32, 105, 110, 32, 110, 41, 101, 91, 95, // r _ in n)e[_ - 93, 61, 110, 91, 95, 93, 59, 114, 101, 116, 117, 114, // ]=n[_];retur - 110, 32, 101, 125, 102, 117, 110, 99, 116, 105, 111, 110, // n e}function - 32, 102, 40, 101, 41, 123, 118, 97, 114, 32, 110, 61, // f(e){var n= - 101, 46, 112, 97, 114, 101, 110, 116, 78, 111, 100, 101, // e.parentNode - 59, 110, 38, 38, 110, 46, 114, 101, 109, 111, 118, 101, // ;n&&n.remove - 67, 104, 105, 108, 100, 40, 101, 41, 125, 102, 117, 110, // Child(e)}fun - 99, 116, 105, 111, 110, 32, 97, 40, 110, 44, 95, 44, // ction a(n,_, - 116, 41, 123, 118, 97, 114, 32, 111, 44, 114, 44, 117, // t){var o,r,u - 44, 108, 61, 123, 125, 59, 102, 111, 114, 40, 117, 32, // ,l={};for(u - 105, 110, 32, 95, 41, 34, 107, 101, 121, 34, 61, 61, // in _)"key"== - 117, 63, 111, 61, 95, 91, 117, 93, 58, 34, 114, 101, // u?o=_[u]:"re - 102, 34, 61, 61, 117, 63, 114, 61, 95, 91, 117, 93, // f"==u?r=_[u] - 58, 108, 91, 117, 93, 61, 95, 91, 117, 93, 59, 105, // :l[u]=_[u];i - 102, 40, 97, 114, 103, 117, 109, 101, 110, 116, 115, 46, // f(arguments. - 108, 101, 110, 103, 116, 104, 62, 50, 38, 38, 40, 108, // length>2&&(l - 46, 99, 104, 105, 108, 100, 114, 101, 110, 61, 97, 114, // .children=ar - 103, 117, 109, 101, 110, 116, 115, 46, 108, 101, 110, 103, // guments.leng - 116, 104, 62, 51, 63, 101, 46, 99, 97, 108, 108, 40, // th>3?e.call( - 97, 114, 103, 117, 109, 101, 110, 116, 115, 44, 50, 41, // arguments,2) - 58, 116, 41, 44, 34, 102, 117, 110, 99, 116, 105, 111, // :t),"functio - 110, 34, 61, 61, 116, 121, 112, 101, 111, 102, 32, 110, // n"==typeof n - 38, 38, 110, 117, 108, 108, 33, 61, 110, 46, 100, 101, // &&null!=n.de - 102, 97, 117, 108, 116, 80, 114, 111, 112, 115, 41, 102, // faultProps)f - 111, 114, 40, 117, 32, 105, 110, 32, 110, 46, 100, 101, // or(u in n.de - 102, 97, 117, 108, 116, 80, 114, 111, 112, 115, 41, 118, // faultProps)v - 111, 105, 100, 32, 48, 61, 61, 61, 108, 91, 117, 93, // oid 0===l[u] - 38, 38, 40, 108, 91, 117, 93, 61, 110, 46, 100, 101, // &&(l[u]=n.de - 102, 97, 117, 108, 116, 80, 114, 111, 112, 115, 91, 117, // faultProps[u - 93, 41, 59, 114, 101, 116, 117, 114, 110, 32, 112, 40, // ]);return p( - 110, 44, 108, 44, 111, 44, 114, 44, 110, 117, 108, 108, // n,l,o,r,null - 41, 125, 102, 117, 110, 99, 116, 105, 111, 110, 32, 112, // )}function p - 40, 101, 44, 116, 44, 111, 44, 114, 44, 117, 41, 123, // (e,t,o,r,u){ - 118, 97, 114, 32, 108, 61, 123, 116, 121, 112, 101, 58, // var l={type: - 101, 44, 112, 114, 111, 112, 115, 58, 116, 44, 107, 101, // e,props:t,ke - 121, 58, 111, 44, 114, 101, 102, 58, 114, 44, 95, 95, // y:o,ref:r,__ - 107, 58, 110, 117, 108, 108, 44, 95, 95, 58, 110, 117, // k:null,__:nu - 108, 108, 44, 95, 95, 98, 58, 48, 44, 95, 95, 101, // ll,__b:0,__e - 58, 110, 117, 108, 108, 44, 95, 95, 100, 58, 118, 111, // :null,__d:vo - 105, 100, 32, 48, 44, 95, 95, 99, 58, 110, 117, 108, // id 0,__c:nul - 108, 44, 95, 95, 104, 58, 110, 117, 108, 108, 44, 99, // l,__h:null,c - 111, 110, 115, 116, 114, 117, 99, 116, 111, 114, 58, 118, // onstructor:v - 111, 105, 100, 32, 48, 44, 95, 95, 118, 58, 110, 117, // oid 0,__v:nu - 108, 108, 61, 61, 117, 63, 43, 43, 95, 58, 117, 125, // ll==u?++_:u} - 59, 114, 101, 116, 117, 114, 110, 32, 110, 117, 108, 108, // ;return null - 33, 61, 110, 46, 118, 110, 111, 100, 101, 38, 38, 110, // !=n.vnode&&n - 46, 118, 110, 111, 100, 101, 40, 108, 41, 44, 108, 125, // .vnode(l),l} - 102, 117, 110, 99, 116, 105, 111, 110, 32, 104, 40, 101, // function h(e - 41, 123, 114, 101, 116, 117, 114, 110, 32, 101, 46, 99, // ){return e.c - 104, 105, 108, 100, 114, 101, 110, 125, 102, 117, 110, 99, // hildren}func - 116, 105, 111, 110, 32, 100, 40, 101, 44, 110, 41, 123, // tion d(e,n){ - 116, 104, 105, 115, 46, 112, 114, 111, 112, 115, 61, 101, // this.props=e - 44, 116, 104, 105, 115, 46, 99, 111, 110, 116, 101, 120, // ,this.contex - 116, 61, 110, 125, 102, 117, 110, 99, 116, 105, 111, 110, // t=n}function - 32, 118, 40, 101, 44, 110, 41, 123, 105, 102, 40, 110, // v(e,n){if(n - 117, 108, 108, 61, 61, 110, 41, 114, 101, 116, 117, 114, // ull==n)retur - 110, 32, 101, 46, 95, 95, 63, 118, 40, 101, 46, 95, // n e.__?v(e._ - 95, 44, 101, 46, 95, 95, 46, 95, 95, 107, 46, 105, // _,e.__.__k.i - 110, 100, 101, 120, 79, 102, 40, 101, 41, 43, 49, 41, // ndexOf(e)+1) - 58, 110, 117, 108, 108, 59, 102, 111, 114, 40, 118, 97, // :null;for(va - 114, 32, 95, 59, 110, 60, 101, 46, 95, 95, 107, 46, // r _;n0?p(m. - 116, 121, 112, 101, 44, 109, 46, 112, 114, 111, 112, 115, // type,m.props - 44, 109, 46, 107, 101, 121, 44, 110, 117, 108, 108, 44, // ,m.key,null, - 109, 46, 95, 95, 118, 41, 58, 109, 41, 41, 123, 105, // m.__v):m)){i - 102, 40, 109, 46, 95, 95, 61, 95, 44, 109, 46, 95, // f(m.__=_,m._ - 95, 98, 61, 95, 46, 95, 95, 98, 43, 49, 44, 110, // _b=_.__b+1,n - 117, 108, 108, 61, 61, 61, 40, 121, 61, 72, 91, 97, // ull===(y=H[a - 93, 41, 124, 124, 121, 38, 38, 109, 46, 107, 101, 121, // ])||y&&m.key - 61, 61, 121, 46, 107, 101, 121, 38, 38, 109, 46, 116, // ==y.key&&m.t - 121, 112, 101, 61, 61, 61, 121, 46, 116, 121, 112, 101, // ype===y.type - 41, 72, 91, 97, 93, 61, 118, 111, 105, 100, 32, 48, // )H[a]=void 0 - 59, 101, 108, 115, 101, 32, 102, 111, 114, 40, 100, 61, // ;else for(d= - 48, 59, 100, 60, 69, 59, 100, 43, 43, 41, 123, 105, // 0;d=t.__.len - 103, 116, 104, 38, 38, 116, 46, 95, 95, 46, 112, 117, // gth&&t.__.pu - 115, 104, 40, 123, 125, 41, 44, 116, 46, 95, 95, 91, // sh({}),t.__[ - 101, 93, 125, 102, 117, 110, 99, 116, 105, 111, 110, 32, // e]}function - 71, 40, 101, 41, 123, 114, 101, 116, 117, 114, 110, 32, // G(e){return - 82, 61, 49, 44, 122, 40, 105, 101, 44, 101, 41, 125, // R=1,z(ie,e)} - 102, 117, 110, 99, 116, 105, 111, 110, 32, 122, 40, 101, // function z(e - 44, 110, 44, 95, 41, 123, 118, 97, 114, 32, 116, 61, // ,n,_){var t= - 106, 40, 76, 43, 43, 44, 50, 41, 59, 114, 101, 116, // j(L++,2);ret - 117, 114, 110, 32, 116, 46, 116, 61, 101, 44, 116, 46, // urn t.t=e,t. - 95, 95, 99, 124, 124, 40, 116, 46, 95, 95, 61, 91, // __c||(t.__=[ - 95, 63, 95, 40, 110, 41, 58, 105, 101, 40, 118, 111, // _?_(n):ie(vo - 105, 100, 32, 48, 44, 110, 41, 44, 102, 117, 110, 99, // id 0,n),func - 116, 105, 111, 110, 40, 101, 41, 123, 118, 97, 114, 32, // tion(e){var - 110, 61, 116, 46, 116, 40, 116, 46, 95, 95, 91, 48, // n=t.t(t.__[0 - 93, 44, 101, 41, 59, 116, 46, 95, 95, 91, 48, 93, // ],e);t.__[0] - 33, 61, 61, 110, 38, 38, 40, 116, 46, 95, 95, 61, // !==n&&(t.__= - 91, 110, 44, 116, 46, 95, 95, 91, 49, 93, 93, 44, // [n,t.__[1]], - 116, 46, 95, 95, 99, 46, 115, 101, 116, 83, 116, 97, // t.__c.setSta - 116, 101, 40, 123, 125, 41, 41, 125, 93, 44, 116, 46, // te({}))}],t. - 95, 95, 99, 61, 78, 41, 44, 116, 46, 95, 95, 125, // __c=N),t.__} - 102, 117, 110, 99, 116, 105, 111, 110, 32, 74, 40, 101, // function J(e - 44, 95, 41, 123, 118, 97, 114, 32, 116, 61, 106, 40, // ,_){var t=j( - 76, 43, 43, 44, 51, 41, 59, 33, 110, 46, 95, 95, // L++,3);!n.__ - 115, 38, 38, 108, 101, 40, 116, 46, 95, 95, 72, 44, // s&&le(t.__H, - 95, 41, 38, 38, 40, 116, 46, 95, 95, 61, 101, 44, // _)&&(t.__=e, - 116, 46, 95, 95, 72, 61, 95, 44, 78, 46, 95, 95, // t.__H=_,N.__ - 72, 46, 95, 95, 104, 46, 112, 117, 115, 104, 40, 116, // H.__h.push(t - 41, 41, 125, 102, 117, 110, 99, 116, 105, 111, 110, 32, // ))}function - 75, 40, 101, 44, 95, 41, 123, 118, 97, 114, 32, 116, // K(e,_){var t - 61, 106, 40, 76, 43, 43, 44, 52, 41, 59, 33, 110, // =j(L++,4);!n - 46, 95, 95, 115, 38, 38, 108, 101, 40, 116, 46, 95, // .__s&&le(t._ - 95, 72, 44, 95, 41, 38, 38, 40, 116, 46, 95, 95, // _H,_)&&(t.__ - 61, 101, 44, 116, 46, 95, 95, 72, 61, 95, 44, 78, // =e,t.__H=_,N - 46, 95, 95, 104, 46, 112, 117, 115, 104, 40, 116, 41, // .__h.push(t) - 41, 125, 102, 117, 110, 99, 116, 105, 111, 110, 32, 81, // )}function Q - 40, 101, 41, 123, 114, 101, 116, 117, 114, 110, 32, 82, // (e){return R - 61, 53, 44, 89, 40, 102, 117, 110, 99, 116, 105, 111, // =5,Y(functio - 110, 40, 41, 123, 114, 101, 116, 117, 114, 110, 123, 99, // n(){return{c - 117, 114, 114, 101, 110, 116, 58, 101, 125, 125, 44, 91, // urrent:e}},[ - 93, 41, 125, 102, 117, 110, 99, 116, 105, 111, 110, 32, // ])}function - 88, 40, 101, 44, 110, 44, 95, 41, 123, 82, 61, 54, // X(e,n,_){R=6 - 44, 75, 40, 102, 117, 110, 99, 116, 105, 111, 110, 40, // ,K(function( - 41, 123, 34, 102, 117, 110, 99, 116, 105, 111, 110, 34, // ){"function" - 61, 61, 116, 121, 112, 101, 111, 102, 32, 101, 63, 101, // ==typeof e?e - 40, 110, 40, 41, 41, 58, 101, 38, 38, 40, 101, 46, // (n()):e&&(e. - 99, 117, 114, 114, 101, 110, 116, 61, 110, 40, 41, 41, // current=n()) - 125, 44, 110, 117, 108, 108, 61, 61, 95, 63, 95, 58, // },null==_?_: - 95, 46, 99, 111, 110, 99, 97, 116, 40, 101, 41, 41, // _.concat(e)) - 125, 102, 117, 110, 99, 116, 105, 111, 110, 32, 89, 40, // }function Y( - 101, 44, 110, 41, 123, 118, 97, 114, 32, 95, 61, 106, // e,n){var _=j - 40, 76, 43, 43, 44, 55, 41, 59, 114, 101, 116, 117, // (L++,7);retu - 114, 110, 32, 108, 101, 40, 95, 46, 95, 95, 72, 44, // rn le(_.__H, - 110, 41, 38, 38, 40, 95, 46, 95, 95, 61, 101, 40, // n)&&(_.__=e( - 41, 44, 95, 46, 95, 95, 72, 61, 110, 44, 95, 46, // ),_.__H=n,_. - 95, 95, 104, 61, 101, 41, 44, 95, 46, 95, 95, 125, // __h=e),_.__} - 102, 117, 110, 99, 116, 105, 111, 110, 32, 90, 40, 101, // function Z(e - 44, 110, 41, 123, 114, 101, 116, 117, 114, 110, 32, 82, // ,n){return R - 61, 56, 44, 89, 40, 102, 117, 110, 99, 116, 105, 111, // =8,Y(functio - 110, 40, 41, 123, 114, 101, 116, 117, 114, 110, 32, 101, // n(){return e - 125, 44, 110, 41, 125, 102, 117, 110, 99, 116, 105, 111, // },n)}functio - 110, 32, 101, 101, 40, 101, 41, 123, 118, 97, 114, 32, // n ee(e){var - 110, 61, 78, 46, 99, 111, 110, 116, 101, 120, 116, 91, // n=N.context[ - 101, 46, 95, 95, 99, 93, 44, 95, 61, 106, 40, 76, // e.__c],_=j(L - 43, 43, 44, 57, 41, 59, 114, 101, 116, 117, 114, 110, // ++,9);return - 32, 95, 46, 99, 61, 101, 44, 110, 63, 40, 110, 117, // _.c=e,n?(nu - 108, 108, 61, 61, 95, 46, 95, 95, 38, 38, 40, 95, // ll==_.__&&(_ - 46, 95, 95, 61, 33, 48, 44, 110, 46, 115, 117, 98, // .__=!0,n.sub - 40, 78, 41, 41, 44, 110, 46, 112, 114, 111, 112, 115, // (N)),n.props - 46, 118, 97, 108, 117, 101, 41, 58, 101, 46, 95, 95, // .value):e.__ - 125, 102, 117, 110, 99, 116, 105, 111, 110, 32, 110, 101, // }function ne - 40, 101, 44, 95, 41, 123, 110, 46, 117, 115, 101, 68, // (e,_){n.useD - 101, 98, 117, 103, 86, 97, 108, 117, 101, 38, 38, 110, // ebugValue&&n - 46, 117, 115, 101, 68, 101, 98, 117, 103, 86, 97, 108, // .useDebugVal - 117, 101, 40, 95, 63, 95, 40, 101, 41, 58, 101, 41, // ue(_?_(e):e) - 125, 102, 117, 110, 99, 116, 105, 111, 110, 32, 95, 101, // }function _e - 40, 101, 41, 123, 118, 97, 114, 32, 110, 61, 106, 40, // (e){var n=j( - 76, 43, 43, 44, 49, 48, 41, 44, 95, 61, 71, 40, // L++,10),_=G( - 41, 59, 114, 101, 116, 117, 114, 110, 32, 110, 46, 95, // );return n._ - 95, 61, 101, 44, 78, 46, 99, 111, 109, 112, 111, 110, // _=e,N.compon - 101, 110, 116, 68, 105, 100, 67, 97, 116, 99, 104, 124, // entDidCatch| - 124, 40, 78, 46, 99, 111, 109, 112, 111, 110, 101, 110, // |(N.componen - 116, 68, 105, 100, 67, 97, 116, 99, 104, 61, 102, 117, // tDidCatch=fu - 110, 99, 116, 105, 111, 110, 40, 101, 41, 123, 110, 46, // nction(e){n. - 95, 95, 38, 38, 110, 46, 95, 95, 40, 101, 41, 44, // __&&n.__(e), - 95, 91, 49, 93, 40, 101, 41, 125, 41, 44, 91, 95, // _[1](e)}),[_ - 91, 48, 93, 44, 102, 117, 110, 99, 116, 105, 111, 110, // [0],function - 40, 41, 123, 95, 91, 49, 93, 40, 118, 111, 105, 100, // (){_[1](void - 32, 48, 41, 125, 93, 125, 102, 117, 110, 99, 116, 105, // 0)}]}functi - 111, 110, 32, 116, 101, 40, 41, 123, 73, 46, 102, 111, // on te(){I.fo - 114, 69, 97, 99, 104, 40, 102, 117, 110, 99, 116, 105, // rEach(functi - 111, 110, 40, 101, 41, 123, 105, 102, 40, 101, 46, 95, // on(e){if(e._ - 95, 80, 41, 116, 114, 121, 123, 101, 46, 95, 95, 72, // _P)try{e.__H - 46, 95, 95, 104, 46, 102, 111, 114, 69, 97, 99, 104, // .__h.forEach - 40, 114, 101, 41, 44, 101, 46, 95, 95, 72, 46, 95, // (re),e.__H._ - 95, 104, 46, 102, 111, 114, 69, 97, 99, 104, 40, 117, // _h.forEach(u - 101, 41, 44, 101, 46, 95, 95, 72, 46, 95, 95, 104, // e),e.__H.__h - 61, 91, 93, 125, 99, 97, 116, 99, 104, 40, 95, 41, // =[]}catch(_) - 123, 101, 46, 95, 95, 72, 46, 95, 95, 104, 61, 91, // {e.__H.__h=[ - 93, 44, 110, 46, 95, 95, 101, 40, 95, 44, 101, 46, // ],n.__e(_,e. - 95, 95, 118, 41, 125, 125, 41, 44, 73, 61, 91, 93, // __v)}}),I=[] - 125, 110, 46, 95, 95, 98, 61, 102, 117, 110, 99, 116, // }n.__b=funct - 105, 111, 110, 40, 101, 41, 123, 78, 61, 110, 117, 108, // ion(e){N=nul - 108, 44, 79, 38, 38, 79, 40, 101, 41, 125, 44, 110, // l,O&&O(e)},n - 46, 95, 95, 114, 61, 102, 117, 110, 99, 116, 105, 111, // .__r=functio - 110, 40, 101, 41, 123, 86, 38, 38, 86, 40, 101, 41, // n(e){V&&V(e) - 44, 76, 61, 48, 59, 118, 97, 114, 32, 110, 61, 40, // ,L=0;var n=( - 78, 61, 101, 46, 95, 95, 99, 41, 46, 95, 95, 72, // N=e.__c).__H - 59, 110, 38, 38, 40, 110, 46, 95, 95, 104, 46, 102, // ;n&&(n.__h.f - 111, 114, 69, 97, 99, 104, 40, 114, 101, 41, 44, 110, // orEach(re),n - 46, 95, 95, 104, 46, 102, 111, 114, 69, 97, 99, 104, // .__h.forEach - 40, 117, 101, 41, 44, 110, 46, 95, 95, 104, 61, 91, // (ue),n.__h=[ - 93, 41, 125, 44, 110, 46, 100, 105, 102, 102, 101, 100, // ])},n.diffed - 61, 102, 117, 110, 99, 116, 105, 111, 110, 40, 101, 41, // =function(e) - 123, 113, 38, 38, 113, 40, 101, 41, 59, 118, 97, 114, // {q&&q(e);var - 32, 95, 61, 101, 46, 95, 95, 99, 59, 95, 38, 38, // _=e.__c;_&& - 95, 46, 95, 95, 72, 38, 38, 95, 46, 95, 95, 72, // _.__H&&_.__H - 46, 95, 95, 104, 46, 108, 101, 110, 103, 116, 104, 38, // .__h.length& - 38, 40, 49, 33, 61, 61, 73, 46, 112, 117, 115, 104, // &(1!==I.push - 40, 95, 41, 38, 38, 87, 61, 61, 61, 110, 46, 114, // (_)&&W===n.r - 101, 113, 117, 101, 115, 116, 65, 110, 105, 109, 97, 116, // equestAnimat - 105, 111, 110, 70, 114, 97, 109, 101, 124, 124, 40, 40, // ionFrame||(( - 87, 61, 110, 46, 114, 101, 113, 117, 101, 115, 116, 65, // W=n.requestA - 110, 105, 109, 97, 116, 105, 111, 110, 70, 114, 97, 109, // nimationFram - 101, 41, 124, 124, 102, 117, 110, 99, 116, 105, 111, 110, // e)||function - 40, 101, 41, 123, 118, 97, 114, 32, 110, 44, 95, 61, // (e){var n,_= - 102, 117, 110, 99, 116, 105, 111, 110, 40, 41, 123, 99, // function(){c - 108, 101, 97, 114, 84, 105, 109, 101, 111, 117, 116, 40, // learTimeout( - 116, 41, 44, 111, 101, 38, 38, 99, 97, 110, 99, 101, // t),oe&&cance - 108, 65, 110, 105, 109, 97, 116, 105, 111, 110, 70, 114, // lAnimationFr - 97, 109, 101, 40, 110, 41, 44, 115, 101, 116, 84, 105, // ame(n),setTi - 109, 101, 111, 117, 116, 40, 101, 41, 125, 44, 116, 61, // meout(e)},t= - 115, 101, 116, 84, 105, 109, 101, 111, 117, 116, 40, 95, // setTimeout(_ - 44, 49, 48, 48, 41, 59, 111, 101, 38, 38, 40, 110, // ,100);oe&&(n - 61, 114, 101, 113, 117, 101, 115, 116, 65, 110, 105, 109, // =requestAnim - 97, 116, 105, 111, 110, 70, 114, 97, 109, 101, 40, 95, // ationFrame(_ - 41, 41, 125, 41, 40, 116, 101, 41, 41, 44, 78, 61, // ))})(te)),N= - 118, 111, 105, 100, 32, 48, 125, 44, 110, 46, 95, 95, // void 0},n.__ - 99, 61, 102, 117, 110, 99, 116, 105, 111, 110, 40, 101, // c=function(e - 44, 95, 41, 123, 95, 46, 115, 111, 109, 101, 40, 102, // ,_){_.some(f - 117, 110, 99, 116, 105, 111, 110, 40, 101, 41, 123, 116, // unction(e){t - 114, 121, 123, 101, 46, 95, 95, 104, 46, 102, 111, 114, // ry{e.__h.for - 69, 97, 99, 104, 40, 114, 101, 41, 44, 101, 46, 95, // Each(re),e._ - 95, 104, 61, 101, 46, 95, 95, 104, 46, 102, 105, 108, // _h=e.__h.fil - 116, 101, 114, 40, 102, 117, 110, 99, 116, 105, 111, 110, // ter(function - 40, 101, 41, 123, 114, 101, 116, 117, 114, 110, 33, 101, // (e){return!e - 46, 95, 95, 124, 124, 117, 101, 40, 101, 41, 125, 41, // .__||ue(e)}) - 125, 99, 97, 116, 99, 104, 40, 116, 41, 123, 95, 46, // }catch(t){_. - 115, 111, 109, 101, 40, 102, 117, 110, 99, 116, 105, 111, // some(functio - 110, 40, 101, 41, 123, 101, 46, 95, 95, 104, 38, 38, // n(e){e.__h&& - 40, 101, 46, 95, 95, 104, 61, 91, 93, 41, 125, 41, // (e.__h=[])}) - 44, 95, 61, 91, 93, 44, 110, 46, 95, 95, 101, 40, // ,_=[],n.__e( - 116, 44, 101, 46, 95, 95, 118, 41, 125, 125, 41, 44, // t,e.__v)}}), - 66, 38, 38, 66, 40, 101, 44, 95, 41, 125, 44, 110, // B&&B(e,_)},n - 46, 117, 110, 109, 111, 117, 110, 116, 61, 102, 117, 110, // .unmount=fun - 99, 116, 105, 111, 110, 40, 101, 41, 123, 36, 38, 38, // ction(e){$&& - 36, 40, 101, 41, 59, 118, 97, 114, 32, 95, 61, 101, // $(e);var _=e - 46, 95, 95, 99, 59, 105, 102, 40, 95, 38, 38, 95, // .__c;if(_&&_ - 46, 95, 95, 72, 41, 116, 114, 121, 123, 95, 46, 95, // .__H)try{_._ - 95, 72, 46, 95, 95, 46, 102, 111, 114, 69, 97, 99, // _H.__.forEac - 104, 40, 114, 101, 41, 125, 99, 97, 116, 99, 104, 40, // h(re)}catch( - 101, 41, 123, 110, 46, 95, 95, 101, 40, 101, 44, 95, // e){n.__e(e,_ - 46, 95, 95, 118, 41, 125, 125, 59, 118, 97, 114, 32, // .__v)}};var - 111, 101, 61, 34, 102, 117, 110, 99, 116, 105, 111, 110, // oe="function - 34, 61, 61, 116, 121, 112, 101, 111, 102, 32, 114, 101, // "==typeof re - 113, 117, 101, 115, 116, 65, 110, 105, 109, 97, 116, 105, // questAnimati - 111, 110, 70, 114, 97, 109, 101, 59, 102, 117, 110, 99, // onFrame;func - 116, 105, 111, 110, 32, 114, 101, 40, 101, 41, 123, 118, // tion re(e){v - 97, 114, 32, 110, 61, 78, 59, 34, 102, 117, 110, 99, // ar n=N;"func - 116, 105, 111, 110, 34, 61, 61, 116, 121, 112, 101, 111, // tion"==typeo - 102, 32, 101, 46, 95, 95, 99, 38, 38, 101, 46, 95, // f e.__c&&e._ - 95, 99, 40, 41, 44, 78, 61, 110, 125, 102, 117, 110, // _c(),N=n}fun - 99, 116, 105, 111, 110, 32, 117, 101, 40, 101, 41, 123, // ction ue(e){ - 118, 97, 114, 32, 110, 61, 78, 59, 101, 46, 95, 95, // var n=N;e.__ - 99, 61, 101, 46, 95, 95, 40, 41, 44, 78, 61, 110, // c=e.__(),N=n - 125, 102, 117, 110, 99, 116, 105, 111, 110, 32, 108, 101, // }function le - 40, 101, 44, 110, 41, 123, 114, 101, 116, 117, 114, 110, // (e,n){return - 33, 101, 124, 124, 101, 46, 108, 101, 110, 103, 116, 104, // !e||e.length - 33, 61, 61, 110, 46, 108, 101, 110, 103, 116, 104, 124, // !==n.length| - 124, 110, 46, 115, 111, 109, 101, 40, 102, 117, 110, 99, // |n.some(func - 116, 105, 111, 110, 40, 110, 44, 95, 41, 123, 114, 101, // tion(n,_){re - 116, 117, 114, 110, 32, 110, 33, 61, 61, 101, 91, 95, // turn n!==e[_ - 93, 125, 41, 125, 102, 117, 110, 99, 116, 105, 111, 110, // ]})}function - 32, 105, 101, 40, 101, 44, 110, 41, 123, 114, 101, 116, // ie(e,n){ret - 117, 114, 110, 34, 102, 117, 110, 99, 116, 105, 111, 110, // urn"function - 34, 61, 61, 116, 121, 112, 101, 111, 102, 32, 110, 63, // "==typeof n? - 110, 40, 101, 41, 58, 110, 125, 118, 97, 114, 32, 99, // n(e):n}var c - 101, 61, 102, 117, 110, 99, 116, 105, 111, 110, 40, 101, // e=function(e - 44, 110, 44, 95, 44, 116, 41, 123, 118, 97, 114, 32, // ,n,_,t){var - 111, 59, 110, 91, 48, 93, 61, 48, 59, 102, 111, 114, // o;n[0]=0;for - 40, 118, 97, 114, 32, 114, 61, 49, 59, 114, 60, 110, // (var r=1;r=5&& - 40, 40, 111, 124, 124, 33, 101, 38, 38, 53, 61, 61, // ((o||!e&&5== - 61, 116, 41, 38, 38, 40, 117, 46, 112, 117, 115, 104, // =t)&&(u.push - 40, 116, 44, 48, 44, 111, 44, 95, 41, 44, 116, 61, // (t,0,o,_),t= - 54, 41, 44, 101, 38, 38, 40, 117, 46, 112, 117, 115, // 6),e&&(u.pus - 104, 40, 116, 44, 101, 44, 48, 44, 95, 41, 44, 116, // h(t,e,0,_),t - 61, 54, 41, 41, 44, 111, 61, 34, 34, 125, 44, 105, // =6)),o=""},i - 61, 48, 59, 105, 60, 101, 46, 108, 101, 110, 103, 116, // =0;i"===n?(t=1, - 111, 61, 34, 34, 41, 58, 111, 61, 110, 43, 111, 91, // o=""):o=n+o[ - 48, 93, 58, 114, 63, 110, 61, 61, 61, 114, 63, 114, // 0]:r?n===r?r - 61, 34, 34, 58, 111, 43, 61, 110, 58, 39, 34, 39, // ="":o+=n:'"' - 61, 61, 61, 110, 124, 124, 34, 39, 34, 61, 61, 61, // ===n||"'"=== - 110, 63, 114, 61, 110, 58, 34, 62, 34, 61, 61, 61, // n?r=n:">"=== - 110, 63, 40, 108, 40, 41, 44, 116, 61, 49, 41, 58, // n?(l(),t=1): - 116, 38, 38, 40, 34, 61, 34, 61, 61, 61, 110, 63, // t&&("="===n? - 40, 116, 61, 53, 44, 95, 61, 111, 44, 111, 61, 34, // (t=5,_=o,o=" - 34, 41, 58, 34, 47, 34, 61, 61, 61, 110, 38, 38, // "):"/"===n&& - 40, 116, 60, 53, 124, 124, 34, 62, 34, 61, 61, 61, // (t<5||">"=== - 101, 91, 105, 93, 91, 99, 43, 49, 93, 41, 63, 40, // e[i][c+1])?( - 108, 40, 41, 44, 51, 61, 61, 61, 116, 38, 38, 40, // l(),3===t&&( - 117, 61, 117, 91, 48, 93, 41, 44, 116, 61, 117, 44, // u=u[0]),t=u, - 40, 117, 61, 117, 91, 48, 93, 41, 46, 112, 117, 115, // (u=u[0]).pus - 104, 40, 50, 44, 48, 44, 116, 41, 44, 116, 61, 48, // h(2,0,t),t=0 - 41, 58, 34, 32, 34, 61, 61, 61, 110, 124, 124, 34, // ):" "===n||" - 92, 116, 34, 61, 61, 61, 110, 124, 124, 34, 92, 110, // .t"===n||".n - 34, 61, 61, 61, 110, 124, 124, 34, 92, 114, 34, 61, // "===n||".r"= - 61, 61, 110, 63, 40, 108, 40, 41, 44, 116, 61, 50, // ==n?(l(),t=2 - 41, 58, 111, 43, 61, 110, 41, 44, 51, 61, 61, 61, // ):o+=n),3=== - 116, 38, 38, 34, 33, 45, 45, 34, 61, 61, 61, 111, // t&&"!--"===o - 38, 38, 40, 116, 61, 52, 44, 117, 61, 117, 91, 48, // &&(t=4,u=u[0 - 93, 41, 125, 114, 101, 116, 117, 114, 110, 32, 108, 40, // ])}return l( - 41, 44, 117, 125, 40, 101, 41, 41, 44, 110, 41, 44, // ),u}(e)),n), - 97, 114, 103, 117, 109, 101, 110, 116, 115, 44, 91, 93, // arguments,[] - 41, 41, 46, 108, 101, 110, 103, 116, 104, 62, 49, 63, // )).length>1? - 110, 58, 110, 91, 48, 93, 125, 46, 98, 105, 110, 100, // n:n[0]}.bind - 40, 97, 41, 59, 101, 120, 112, 111, 114, 116, 123, 97, // (a);export{a - 32, 97, 115, 32, 104, 44, 102, 101, 32, 97, 115, 32, // as h,fe as - 104, 116, 109, 108, 44, 77, 32, 97, 115, 32, 114, 101, // html,M as re - 110, 100, 101, 114, 44, 100, 32, 97, 115, 32, 67, 111, // nder,d as Co - 109, 112, 111, 110, 101, 110, 116, 44, 70, 32, 97, 115, // mponent,F as - 32, 99, 114, 101, 97, 116, 101, 67, 111, 110, 116, 101, // createConte - 120, 116, 44, 71, 32, 97, 115, 32, 117, 115, 101, 83, // xt,G as useS - 116, 97, 116, 101, 44, 122, 32, 97, 115, 32, 117, 115, // tate,z as us - 101, 82, 101, 100, 117, 99, 101, 114, 44, 74, 32, 97, // eReducer,J a - 115, 32, 117, 115, 101, 69, 102, 102, 101, 99, 116, 44, // s useEffect, - 75, 32, 97, 115, 32, 117, 115, 101, 76, 97, 121, 111, // K as useLayo - 117, 116, 69, 102, 102, 101, 99, 116, 44, 81, 32, 97, // utEffect,Q a - 115, 32, 117, 115, 101, 82, 101, 102, 44, 88, 32, 97, // s useRef,X a - 115, 32, 117, 115, 101, 73, 109, 112, 101, 114, 97, 116, // s useImperat - 105, 118, 101, 72, 97, 110, 100, 108, 101, 44, 89, 32, // iveHandle,Y - 97, 115, 32, 117, 115, 101, 77, 101, 109, 111, 44, 90, // as useMemo,Z - 32, 97, 115, 32, 117, 115, 101, 67, 97, 108, 108, 98, // as useCallb - 97, 99, 107, 44, 101, 101, 32, 97, 115, 32, 117, 115, // ack,ee as us - 101, 67, 111, 110, 116, 101, 120, 116, 44, 110, 101, 32, // eContext,ne - 97, 115, 32, 117, 115, 101, 68, 101, 98, 117, 103, 86, // as useDebugV - 97, 108, 117, 101, 44, 95, 101, 32, 97, 115, 32, 117, // alue,_e as u - 115, 101, 69, 114, 114, 111, 114, 66, 111, 117, 110, 100, // seErrorBound - 97, 114, 121, 125, 59, 10, 0 // ary};. -}; -static const unsigned char v3[] = { 39, 117, 115, 101, 32, 115, 116, 114, 105, 99, 116, 39, // 'use strict' 59, 10, 105, 109, 112, 111, 114, 116, 32, 123, 67, 111, // ;.import {Co 109, 112, 111, 110, 101, 110, 116, 44, 32, 104, 44, 32, // mponent, h, @@ -3446,7 +1207,1264 @@ static const unsigned char v3[] = { 99, 117, 109, 101, 110, 116, 46, 98, 111, 100, 121, 41, // cument.body) 59, 10, 0 // ;. }; +static const unsigned char v3[] = { + 118, 97, 114, 32, 101, 44, 110, 44, 95, 44, 116, 44, // var e,n,_,t, + 111, 44, 114, 44, 117, 44, 108, 61, 123, 125, 44, 105, // o,r,u,l={},i + 61, 91, 93, 44, 99, 61, 47, 97, 99, 105, 116, 124, // =[],c=/acit| + 101, 120, 40, 63, 58, 115, 124, 103, 124, 110, 124, 112, // ex(?:s|g|n|p + 124, 36, 41, 124, 114, 112, 104, 124, 103, 114, 105, 100, // |$)|rph|grid + 124, 111, 119, 115, 124, 109, 110, 99, 124, 110, 116, 119, // |ows|mnc|ntw + 124, 105, 110, 101, 91, 99, 104, 93, 124, 122, 111, 111, // |ine[ch]|zoo + 124, 94, 111, 114, 100, 124, 105, 116, 101, 114, 97, 47, // |^ord|itera/ + 105, 59, 102, 117, 110, 99, 116, 105, 111, 110, 32, 115, // i;function s + 40, 101, 44, 110, 41, 123, 102, 111, 114, 40, 118, 97, // (e,n){for(va + 114, 32, 95, 32, 105, 110, 32, 110, 41, 101, 91, 95, // r _ in n)e[_ + 93, 61, 110, 91, 95, 93, 59, 114, 101, 116, 117, 114, // ]=n[_];retur + 110, 32, 101, 125, 102, 117, 110, 99, 116, 105, 111, 110, // n e}function + 32, 102, 40, 101, 41, 123, 118, 97, 114, 32, 110, 61, // f(e){var n= + 101, 46, 112, 97, 114, 101, 110, 116, 78, 111, 100, 101, // e.parentNode + 59, 110, 38, 38, 110, 46, 114, 101, 109, 111, 118, 101, // ;n&&n.remove + 67, 104, 105, 108, 100, 40, 101, 41, 125, 102, 117, 110, // Child(e)}fun + 99, 116, 105, 111, 110, 32, 97, 40, 110, 44, 95, 44, // ction a(n,_, + 116, 41, 123, 118, 97, 114, 32, 111, 44, 114, 44, 117, // t){var o,r,u + 44, 108, 61, 123, 125, 59, 102, 111, 114, 40, 117, 32, // ,l={};for(u + 105, 110, 32, 95, 41, 34, 107, 101, 121, 34, 61, 61, // in _)"key"== + 117, 63, 111, 61, 95, 91, 117, 93, 58, 34, 114, 101, // u?o=_[u]:"re + 102, 34, 61, 61, 117, 63, 114, 61, 95, 91, 117, 93, // f"==u?r=_[u] + 58, 108, 91, 117, 93, 61, 95, 91, 117, 93, 59, 105, // :l[u]=_[u];i + 102, 40, 97, 114, 103, 117, 109, 101, 110, 116, 115, 46, // f(arguments. + 108, 101, 110, 103, 116, 104, 62, 50, 38, 38, 40, 108, // length>2&&(l + 46, 99, 104, 105, 108, 100, 114, 101, 110, 61, 97, 114, // .children=ar + 103, 117, 109, 101, 110, 116, 115, 46, 108, 101, 110, 103, // guments.leng + 116, 104, 62, 51, 63, 101, 46, 99, 97, 108, 108, 40, // th>3?e.call( + 97, 114, 103, 117, 109, 101, 110, 116, 115, 44, 50, 41, // arguments,2) + 58, 116, 41, 44, 34, 102, 117, 110, 99, 116, 105, 111, // :t),"functio + 110, 34, 61, 61, 116, 121, 112, 101, 111, 102, 32, 110, // n"==typeof n + 38, 38, 110, 117, 108, 108, 33, 61, 110, 46, 100, 101, // &&null!=n.de + 102, 97, 117, 108, 116, 80, 114, 111, 112, 115, 41, 102, // faultProps)f + 111, 114, 40, 117, 32, 105, 110, 32, 110, 46, 100, 101, // or(u in n.de + 102, 97, 117, 108, 116, 80, 114, 111, 112, 115, 41, 118, // faultProps)v + 111, 105, 100, 32, 48, 61, 61, 61, 108, 91, 117, 93, // oid 0===l[u] + 38, 38, 40, 108, 91, 117, 93, 61, 110, 46, 100, 101, // &&(l[u]=n.de + 102, 97, 117, 108, 116, 80, 114, 111, 112, 115, 91, 117, // faultProps[u + 93, 41, 59, 114, 101, 116, 117, 114, 110, 32, 112, 40, // ]);return p( + 110, 44, 108, 44, 111, 44, 114, 44, 110, 117, 108, 108, // n,l,o,r,null + 41, 125, 102, 117, 110, 99, 116, 105, 111, 110, 32, 112, // )}function p + 40, 101, 44, 116, 44, 111, 44, 114, 44, 117, 41, 123, // (e,t,o,r,u){ + 118, 97, 114, 32, 108, 61, 123, 116, 121, 112, 101, 58, // var l={type: + 101, 44, 112, 114, 111, 112, 115, 58, 116, 44, 107, 101, // e,props:t,ke + 121, 58, 111, 44, 114, 101, 102, 58, 114, 44, 95, 95, // y:o,ref:r,__ + 107, 58, 110, 117, 108, 108, 44, 95, 95, 58, 110, 117, // k:null,__:nu + 108, 108, 44, 95, 95, 98, 58, 48, 44, 95, 95, 101, // ll,__b:0,__e + 58, 110, 117, 108, 108, 44, 95, 95, 100, 58, 118, 111, // :null,__d:vo + 105, 100, 32, 48, 44, 95, 95, 99, 58, 110, 117, 108, // id 0,__c:nul + 108, 44, 95, 95, 104, 58, 110, 117, 108, 108, 44, 99, // l,__h:null,c + 111, 110, 115, 116, 114, 117, 99, 116, 111, 114, 58, 118, // onstructor:v + 111, 105, 100, 32, 48, 44, 95, 95, 118, 58, 110, 117, // oid 0,__v:nu + 108, 108, 61, 61, 117, 63, 43, 43, 95, 58, 117, 125, // ll==u?++_:u} + 59, 114, 101, 116, 117, 114, 110, 32, 110, 117, 108, 108, // ;return null + 33, 61, 110, 46, 118, 110, 111, 100, 101, 38, 38, 110, // !=n.vnode&&n + 46, 118, 110, 111, 100, 101, 40, 108, 41, 44, 108, 125, // .vnode(l),l} + 102, 117, 110, 99, 116, 105, 111, 110, 32, 104, 40, 101, // function h(e + 41, 123, 114, 101, 116, 117, 114, 110, 32, 101, 46, 99, // ){return e.c + 104, 105, 108, 100, 114, 101, 110, 125, 102, 117, 110, 99, // hildren}func + 116, 105, 111, 110, 32, 100, 40, 101, 44, 110, 41, 123, // tion d(e,n){ + 116, 104, 105, 115, 46, 112, 114, 111, 112, 115, 61, 101, // this.props=e + 44, 116, 104, 105, 115, 46, 99, 111, 110, 116, 101, 120, // ,this.contex + 116, 61, 110, 125, 102, 117, 110, 99, 116, 105, 111, 110, // t=n}function + 32, 118, 40, 101, 44, 110, 41, 123, 105, 102, 40, 110, // v(e,n){if(n + 117, 108, 108, 61, 61, 110, 41, 114, 101, 116, 117, 114, // ull==n)retur + 110, 32, 101, 46, 95, 95, 63, 118, 40, 101, 46, 95, // n e.__?v(e._ + 95, 44, 101, 46, 95, 95, 46, 95, 95, 107, 46, 105, // _,e.__.__k.i + 110, 100, 101, 120, 79, 102, 40, 101, 41, 43, 49, 41, // ndexOf(e)+1) + 58, 110, 117, 108, 108, 59, 102, 111, 114, 40, 118, 97, // :null;for(va + 114, 32, 95, 59, 110, 60, 101, 46, 95, 95, 107, 46, // r _;n0?p(m. + 116, 121, 112, 101, 44, 109, 46, 112, 114, 111, 112, 115, // type,m.props + 44, 109, 46, 107, 101, 121, 44, 110, 117, 108, 108, 44, // ,m.key,null, + 109, 46, 95, 95, 118, 41, 58, 109, 41, 41, 123, 105, // m.__v):m)){i + 102, 40, 109, 46, 95, 95, 61, 95, 44, 109, 46, 95, // f(m.__=_,m._ + 95, 98, 61, 95, 46, 95, 95, 98, 43, 49, 44, 110, // _b=_.__b+1,n + 117, 108, 108, 61, 61, 61, 40, 121, 61, 72, 91, 97, // ull===(y=H[a + 93, 41, 124, 124, 121, 38, 38, 109, 46, 107, 101, 121, // ])||y&&m.key + 61, 61, 121, 46, 107, 101, 121, 38, 38, 109, 46, 116, // ==y.key&&m.t + 121, 112, 101, 61, 61, 61, 121, 46, 116, 121, 112, 101, // ype===y.type + 41, 72, 91, 97, 93, 61, 118, 111, 105, 100, 32, 48, // )H[a]=void 0 + 59, 101, 108, 115, 101, 32, 102, 111, 114, 40, 100, 61, // ;else for(d= + 48, 59, 100, 60, 69, 59, 100, 43, 43, 41, 123, 105, // 0;d=t.__.len + 103, 116, 104, 38, 38, 116, 46, 95, 95, 46, 112, 117, // gth&&t.__.pu + 115, 104, 40, 123, 125, 41, 44, 116, 46, 95, 95, 91, // sh({}),t.__[ + 101, 93, 125, 102, 117, 110, 99, 116, 105, 111, 110, 32, // e]}function + 71, 40, 101, 41, 123, 114, 101, 116, 117, 114, 110, 32, // G(e){return + 82, 61, 49, 44, 122, 40, 105, 101, 44, 101, 41, 125, // R=1,z(ie,e)} + 102, 117, 110, 99, 116, 105, 111, 110, 32, 122, 40, 101, // function z(e + 44, 110, 44, 95, 41, 123, 118, 97, 114, 32, 116, 61, // ,n,_){var t= + 106, 40, 76, 43, 43, 44, 50, 41, 59, 114, 101, 116, // j(L++,2);ret + 117, 114, 110, 32, 116, 46, 116, 61, 101, 44, 116, 46, // urn t.t=e,t. + 95, 95, 99, 124, 124, 40, 116, 46, 95, 95, 61, 91, // __c||(t.__=[ + 95, 63, 95, 40, 110, 41, 58, 105, 101, 40, 118, 111, // _?_(n):ie(vo + 105, 100, 32, 48, 44, 110, 41, 44, 102, 117, 110, 99, // id 0,n),func + 116, 105, 111, 110, 40, 101, 41, 123, 118, 97, 114, 32, // tion(e){var + 110, 61, 116, 46, 116, 40, 116, 46, 95, 95, 91, 48, // n=t.t(t.__[0 + 93, 44, 101, 41, 59, 116, 46, 95, 95, 91, 48, 93, // ],e);t.__[0] + 33, 61, 61, 110, 38, 38, 40, 116, 46, 95, 95, 61, // !==n&&(t.__= + 91, 110, 44, 116, 46, 95, 95, 91, 49, 93, 93, 44, // [n,t.__[1]], + 116, 46, 95, 95, 99, 46, 115, 101, 116, 83, 116, 97, // t.__c.setSta + 116, 101, 40, 123, 125, 41, 41, 125, 93, 44, 116, 46, // te({}))}],t. + 95, 95, 99, 61, 78, 41, 44, 116, 46, 95, 95, 125, // __c=N),t.__} + 102, 117, 110, 99, 116, 105, 111, 110, 32, 74, 40, 101, // function J(e + 44, 95, 41, 123, 118, 97, 114, 32, 116, 61, 106, 40, // ,_){var t=j( + 76, 43, 43, 44, 51, 41, 59, 33, 110, 46, 95, 95, // L++,3);!n.__ + 115, 38, 38, 108, 101, 40, 116, 46, 95, 95, 72, 44, // s&&le(t.__H, + 95, 41, 38, 38, 40, 116, 46, 95, 95, 61, 101, 44, // _)&&(t.__=e, + 116, 46, 95, 95, 72, 61, 95, 44, 78, 46, 95, 95, // t.__H=_,N.__ + 72, 46, 95, 95, 104, 46, 112, 117, 115, 104, 40, 116, // H.__h.push(t + 41, 41, 125, 102, 117, 110, 99, 116, 105, 111, 110, 32, // ))}function + 75, 40, 101, 44, 95, 41, 123, 118, 97, 114, 32, 116, // K(e,_){var t + 61, 106, 40, 76, 43, 43, 44, 52, 41, 59, 33, 110, // =j(L++,4);!n + 46, 95, 95, 115, 38, 38, 108, 101, 40, 116, 46, 95, // .__s&&le(t._ + 95, 72, 44, 95, 41, 38, 38, 40, 116, 46, 95, 95, // _H,_)&&(t.__ + 61, 101, 44, 116, 46, 95, 95, 72, 61, 95, 44, 78, // =e,t.__H=_,N + 46, 95, 95, 104, 46, 112, 117, 115, 104, 40, 116, 41, // .__h.push(t) + 41, 125, 102, 117, 110, 99, 116, 105, 111, 110, 32, 81, // )}function Q + 40, 101, 41, 123, 114, 101, 116, 117, 114, 110, 32, 82, // (e){return R + 61, 53, 44, 89, 40, 102, 117, 110, 99, 116, 105, 111, // =5,Y(functio + 110, 40, 41, 123, 114, 101, 116, 117, 114, 110, 123, 99, // n(){return{c + 117, 114, 114, 101, 110, 116, 58, 101, 125, 125, 44, 91, // urrent:e}},[ + 93, 41, 125, 102, 117, 110, 99, 116, 105, 111, 110, 32, // ])}function + 88, 40, 101, 44, 110, 44, 95, 41, 123, 82, 61, 54, // X(e,n,_){R=6 + 44, 75, 40, 102, 117, 110, 99, 116, 105, 111, 110, 40, // ,K(function( + 41, 123, 34, 102, 117, 110, 99, 116, 105, 111, 110, 34, // ){"function" + 61, 61, 116, 121, 112, 101, 111, 102, 32, 101, 63, 101, // ==typeof e?e + 40, 110, 40, 41, 41, 58, 101, 38, 38, 40, 101, 46, // (n()):e&&(e. + 99, 117, 114, 114, 101, 110, 116, 61, 110, 40, 41, 41, // current=n()) + 125, 44, 110, 117, 108, 108, 61, 61, 95, 63, 95, 58, // },null==_?_: + 95, 46, 99, 111, 110, 99, 97, 116, 40, 101, 41, 41, // _.concat(e)) + 125, 102, 117, 110, 99, 116, 105, 111, 110, 32, 89, 40, // }function Y( + 101, 44, 110, 41, 123, 118, 97, 114, 32, 95, 61, 106, // e,n){var _=j + 40, 76, 43, 43, 44, 55, 41, 59, 114, 101, 116, 117, // (L++,7);retu + 114, 110, 32, 108, 101, 40, 95, 46, 95, 95, 72, 44, // rn le(_.__H, + 110, 41, 38, 38, 40, 95, 46, 95, 95, 61, 101, 40, // n)&&(_.__=e( + 41, 44, 95, 46, 95, 95, 72, 61, 110, 44, 95, 46, // ),_.__H=n,_. + 95, 95, 104, 61, 101, 41, 44, 95, 46, 95, 95, 125, // __h=e),_.__} + 102, 117, 110, 99, 116, 105, 111, 110, 32, 90, 40, 101, // function Z(e + 44, 110, 41, 123, 114, 101, 116, 117, 114, 110, 32, 82, // ,n){return R + 61, 56, 44, 89, 40, 102, 117, 110, 99, 116, 105, 111, // =8,Y(functio + 110, 40, 41, 123, 114, 101, 116, 117, 114, 110, 32, 101, // n(){return e + 125, 44, 110, 41, 125, 102, 117, 110, 99, 116, 105, 111, // },n)}functio + 110, 32, 101, 101, 40, 101, 41, 123, 118, 97, 114, 32, // n ee(e){var + 110, 61, 78, 46, 99, 111, 110, 116, 101, 120, 116, 91, // n=N.context[ + 101, 46, 95, 95, 99, 93, 44, 95, 61, 106, 40, 76, // e.__c],_=j(L + 43, 43, 44, 57, 41, 59, 114, 101, 116, 117, 114, 110, // ++,9);return + 32, 95, 46, 99, 61, 101, 44, 110, 63, 40, 110, 117, // _.c=e,n?(nu + 108, 108, 61, 61, 95, 46, 95, 95, 38, 38, 40, 95, // ll==_.__&&(_ + 46, 95, 95, 61, 33, 48, 44, 110, 46, 115, 117, 98, // .__=!0,n.sub + 40, 78, 41, 41, 44, 110, 46, 112, 114, 111, 112, 115, // (N)),n.props + 46, 118, 97, 108, 117, 101, 41, 58, 101, 46, 95, 95, // .value):e.__ + 125, 102, 117, 110, 99, 116, 105, 111, 110, 32, 110, 101, // }function ne + 40, 101, 44, 95, 41, 123, 110, 46, 117, 115, 101, 68, // (e,_){n.useD + 101, 98, 117, 103, 86, 97, 108, 117, 101, 38, 38, 110, // ebugValue&&n + 46, 117, 115, 101, 68, 101, 98, 117, 103, 86, 97, 108, // .useDebugVal + 117, 101, 40, 95, 63, 95, 40, 101, 41, 58, 101, 41, // ue(_?_(e):e) + 125, 102, 117, 110, 99, 116, 105, 111, 110, 32, 95, 101, // }function _e + 40, 101, 41, 123, 118, 97, 114, 32, 110, 61, 106, 40, // (e){var n=j( + 76, 43, 43, 44, 49, 48, 41, 44, 95, 61, 71, 40, // L++,10),_=G( + 41, 59, 114, 101, 116, 117, 114, 110, 32, 110, 46, 95, // );return n._ + 95, 61, 101, 44, 78, 46, 99, 111, 109, 112, 111, 110, // _=e,N.compon + 101, 110, 116, 68, 105, 100, 67, 97, 116, 99, 104, 124, // entDidCatch| + 124, 40, 78, 46, 99, 111, 109, 112, 111, 110, 101, 110, // |(N.componen + 116, 68, 105, 100, 67, 97, 116, 99, 104, 61, 102, 117, // tDidCatch=fu + 110, 99, 116, 105, 111, 110, 40, 101, 41, 123, 110, 46, // nction(e){n. + 95, 95, 38, 38, 110, 46, 95, 95, 40, 101, 41, 44, // __&&n.__(e), + 95, 91, 49, 93, 40, 101, 41, 125, 41, 44, 91, 95, // _[1](e)}),[_ + 91, 48, 93, 44, 102, 117, 110, 99, 116, 105, 111, 110, // [0],function + 40, 41, 123, 95, 91, 49, 93, 40, 118, 111, 105, 100, // (){_[1](void + 32, 48, 41, 125, 93, 125, 102, 117, 110, 99, 116, 105, // 0)}]}functi + 111, 110, 32, 116, 101, 40, 41, 123, 73, 46, 102, 111, // on te(){I.fo + 114, 69, 97, 99, 104, 40, 102, 117, 110, 99, 116, 105, // rEach(functi + 111, 110, 40, 101, 41, 123, 105, 102, 40, 101, 46, 95, // on(e){if(e._ + 95, 80, 41, 116, 114, 121, 123, 101, 46, 95, 95, 72, // _P)try{e.__H + 46, 95, 95, 104, 46, 102, 111, 114, 69, 97, 99, 104, // .__h.forEach + 40, 114, 101, 41, 44, 101, 46, 95, 95, 72, 46, 95, // (re),e.__H._ + 95, 104, 46, 102, 111, 114, 69, 97, 99, 104, 40, 117, // _h.forEach(u + 101, 41, 44, 101, 46, 95, 95, 72, 46, 95, 95, 104, // e),e.__H.__h + 61, 91, 93, 125, 99, 97, 116, 99, 104, 40, 95, 41, // =[]}catch(_) + 123, 101, 46, 95, 95, 72, 46, 95, 95, 104, 61, 91, // {e.__H.__h=[ + 93, 44, 110, 46, 95, 95, 101, 40, 95, 44, 101, 46, // ],n.__e(_,e. + 95, 95, 118, 41, 125, 125, 41, 44, 73, 61, 91, 93, // __v)}}),I=[] + 125, 110, 46, 95, 95, 98, 61, 102, 117, 110, 99, 116, // }n.__b=funct + 105, 111, 110, 40, 101, 41, 123, 78, 61, 110, 117, 108, // ion(e){N=nul + 108, 44, 79, 38, 38, 79, 40, 101, 41, 125, 44, 110, // l,O&&O(e)},n + 46, 95, 95, 114, 61, 102, 117, 110, 99, 116, 105, 111, // .__r=functio + 110, 40, 101, 41, 123, 86, 38, 38, 86, 40, 101, 41, // n(e){V&&V(e) + 44, 76, 61, 48, 59, 118, 97, 114, 32, 110, 61, 40, // ,L=0;var n=( + 78, 61, 101, 46, 95, 95, 99, 41, 46, 95, 95, 72, // N=e.__c).__H + 59, 110, 38, 38, 40, 110, 46, 95, 95, 104, 46, 102, // ;n&&(n.__h.f + 111, 114, 69, 97, 99, 104, 40, 114, 101, 41, 44, 110, // orEach(re),n + 46, 95, 95, 104, 46, 102, 111, 114, 69, 97, 99, 104, // .__h.forEach + 40, 117, 101, 41, 44, 110, 46, 95, 95, 104, 61, 91, // (ue),n.__h=[ + 93, 41, 125, 44, 110, 46, 100, 105, 102, 102, 101, 100, // ])},n.diffed + 61, 102, 117, 110, 99, 116, 105, 111, 110, 40, 101, 41, // =function(e) + 123, 113, 38, 38, 113, 40, 101, 41, 59, 118, 97, 114, // {q&&q(e);var + 32, 95, 61, 101, 46, 95, 95, 99, 59, 95, 38, 38, // _=e.__c;_&& + 95, 46, 95, 95, 72, 38, 38, 95, 46, 95, 95, 72, // _.__H&&_.__H + 46, 95, 95, 104, 46, 108, 101, 110, 103, 116, 104, 38, // .__h.length& + 38, 40, 49, 33, 61, 61, 73, 46, 112, 117, 115, 104, // &(1!==I.push + 40, 95, 41, 38, 38, 87, 61, 61, 61, 110, 46, 114, // (_)&&W===n.r + 101, 113, 117, 101, 115, 116, 65, 110, 105, 109, 97, 116, // equestAnimat + 105, 111, 110, 70, 114, 97, 109, 101, 124, 124, 40, 40, // ionFrame||(( + 87, 61, 110, 46, 114, 101, 113, 117, 101, 115, 116, 65, // W=n.requestA + 110, 105, 109, 97, 116, 105, 111, 110, 70, 114, 97, 109, // nimationFram + 101, 41, 124, 124, 102, 117, 110, 99, 116, 105, 111, 110, // e)||function + 40, 101, 41, 123, 118, 97, 114, 32, 110, 44, 95, 61, // (e){var n,_= + 102, 117, 110, 99, 116, 105, 111, 110, 40, 41, 123, 99, // function(){c + 108, 101, 97, 114, 84, 105, 109, 101, 111, 117, 116, 40, // learTimeout( + 116, 41, 44, 111, 101, 38, 38, 99, 97, 110, 99, 101, // t),oe&&cance + 108, 65, 110, 105, 109, 97, 116, 105, 111, 110, 70, 114, // lAnimationFr + 97, 109, 101, 40, 110, 41, 44, 115, 101, 116, 84, 105, // ame(n),setTi + 109, 101, 111, 117, 116, 40, 101, 41, 125, 44, 116, 61, // meout(e)},t= + 115, 101, 116, 84, 105, 109, 101, 111, 117, 116, 40, 95, // setTimeout(_ + 44, 49, 48, 48, 41, 59, 111, 101, 38, 38, 40, 110, // ,100);oe&&(n + 61, 114, 101, 113, 117, 101, 115, 116, 65, 110, 105, 109, // =requestAnim + 97, 116, 105, 111, 110, 70, 114, 97, 109, 101, 40, 95, // ationFrame(_ + 41, 41, 125, 41, 40, 116, 101, 41, 41, 44, 78, 61, // ))})(te)),N= + 118, 111, 105, 100, 32, 48, 125, 44, 110, 46, 95, 95, // void 0},n.__ + 99, 61, 102, 117, 110, 99, 116, 105, 111, 110, 40, 101, // c=function(e + 44, 95, 41, 123, 95, 46, 115, 111, 109, 101, 40, 102, // ,_){_.some(f + 117, 110, 99, 116, 105, 111, 110, 40, 101, 41, 123, 116, // unction(e){t + 114, 121, 123, 101, 46, 95, 95, 104, 46, 102, 111, 114, // ry{e.__h.for + 69, 97, 99, 104, 40, 114, 101, 41, 44, 101, 46, 95, // Each(re),e._ + 95, 104, 61, 101, 46, 95, 95, 104, 46, 102, 105, 108, // _h=e.__h.fil + 116, 101, 114, 40, 102, 117, 110, 99, 116, 105, 111, 110, // ter(function + 40, 101, 41, 123, 114, 101, 116, 117, 114, 110, 33, 101, // (e){return!e + 46, 95, 95, 124, 124, 117, 101, 40, 101, 41, 125, 41, // .__||ue(e)}) + 125, 99, 97, 116, 99, 104, 40, 116, 41, 123, 95, 46, // }catch(t){_. + 115, 111, 109, 101, 40, 102, 117, 110, 99, 116, 105, 111, // some(functio + 110, 40, 101, 41, 123, 101, 46, 95, 95, 104, 38, 38, // n(e){e.__h&& + 40, 101, 46, 95, 95, 104, 61, 91, 93, 41, 125, 41, // (e.__h=[])}) + 44, 95, 61, 91, 93, 44, 110, 46, 95, 95, 101, 40, // ,_=[],n.__e( + 116, 44, 101, 46, 95, 95, 118, 41, 125, 125, 41, 44, // t,e.__v)}}), + 66, 38, 38, 66, 40, 101, 44, 95, 41, 125, 44, 110, // B&&B(e,_)},n + 46, 117, 110, 109, 111, 117, 110, 116, 61, 102, 117, 110, // .unmount=fun + 99, 116, 105, 111, 110, 40, 101, 41, 123, 36, 38, 38, // ction(e){$&& + 36, 40, 101, 41, 59, 118, 97, 114, 32, 95, 61, 101, // $(e);var _=e + 46, 95, 95, 99, 59, 105, 102, 40, 95, 38, 38, 95, // .__c;if(_&&_ + 46, 95, 95, 72, 41, 116, 114, 121, 123, 95, 46, 95, // .__H)try{_._ + 95, 72, 46, 95, 95, 46, 102, 111, 114, 69, 97, 99, // _H.__.forEac + 104, 40, 114, 101, 41, 125, 99, 97, 116, 99, 104, 40, // h(re)}catch( + 101, 41, 123, 110, 46, 95, 95, 101, 40, 101, 44, 95, // e){n.__e(e,_ + 46, 95, 95, 118, 41, 125, 125, 59, 118, 97, 114, 32, // .__v)}};var + 111, 101, 61, 34, 102, 117, 110, 99, 116, 105, 111, 110, // oe="function + 34, 61, 61, 116, 121, 112, 101, 111, 102, 32, 114, 101, // "==typeof re + 113, 117, 101, 115, 116, 65, 110, 105, 109, 97, 116, 105, // questAnimati + 111, 110, 70, 114, 97, 109, 101, 59, 102, 117, 110, 99, // onFrame;func + 116, 105, 111, 110, 32, 114, 101, 40, 101, 41, 123, 118, // tion re(e){v + 97, 114, 32, 110, 61, 78, 59, 34, 102, 117, 110, 99, // ar n=N;"func + 116, 105, 111, 110, 34, 61, 61, 116, 121, 112, 101, 111, // tion"==typeo + 102, 32, 101, 46, 95, 95, 99, 38, 38, 101, 46, 95, // f e.__c&&e._ + 95, 99, 40, 41, 44, 78, 61, 110, 125, 102, 117, 110, // _c(),N=n}fun + 99, 116, 105, 111, 110, 32, 117, 101, 40, 101, 41, 123, // ction ue(e){ + 118, 97, 114, 32, 110, 61, 78, 59, 101, 46, 95, 95, // var n=N;e.__ + 99, 61, 101, 46, 95, 95, 40, 41, 44, 78, 61, 110, // c=e.__(),N=n + 125, 102, 117, 110, 99, 116, 105, 111, 110, 32, 108, 101, // }function le + 40, 101, 44, 110, 41, 123, 114, 101, 116, 117, 114, 110, // (e,n){return + 33, 101, 124, 124, 101, 46, 108, 101, 110, 103, 116, 104, // !e||e.length + 33, 61, 61, 110, 46, 108, 101, 110, 103, 116, 104, 124, // !==n.length| + 124, 110, 46, 115, 111, 109, 101, 40, 102, 117, 110, 99, // |n.some(func + 116, 105, 111, 110, 40, 110, 44, 95, 41, 123, 114, 101, // tion(n,_){re + 116, 117, 114, 110, 32, 110, 33, 61, 61, 101, 91, 95, // turn n!==e[_ + 93, 125, 41, 125, 102, 117, 110, 99, 116, 105, 111, 110, // ]})}function + 32, 105, 101, 40, 101, 44, 110, 41, 123, 114, 101, 116, // ie(e,n){ret + 117, 114, 110, 34, 102, 117, 110, 99, 116, 105, 111, 110, // urn"function + 34, 61, 61, 116, 121, 112, 101, 111, 102, 32, 110, 63, // "==typeof n? + 110, 40, 101, 41, 58, 110, 125, 118, 97, 114, 32, 99, // n(e):n}var c + 101, 61, 102, 117, 110, 99, 116, 105, 111, 110, 40, 101, // e=function(e + 44, 110, 44, 95, 44, 116, 41, 123, 118, 97, 114, 32, // ,n,_,t){var + 111, 59, 110, 91, 48, 93, 61, 48, 59, 102, 111, 114, // o;n[0]=0;for + 40, 118, 97, 114, 32, 114, 61, 49, 59, 114, 60, 110, // (var r=1;r=5&& + 40, 40, 111, 124, 124, 33, 101, 38, 38, 53, 61, 61, // ((o||!e&&5== + 61, 116, 41, 38, 38, 40, 117, 46, 112, 117, 115, 104, // =t)&&(u.push + 40, 116, 44, 48, 44, 111, 44, 95, 41, 44, 116, 61, // (t,0,o,_),t= + 54, 41, 44, 101, 38, 38, 40, 117, 46, 112, 117, 115, // 6),e&&(u.pus + 104, 40, 116, 44, 101, 44, 48, 44, 95, 41, 44, 116, // h(t,e,0,_),t + 61, 54, 41, 41, 44, 111, 61, 34, 34, 125, 44, 105, // =6)),o=""},i + 61, 48, 59, 105, 60, 101, 46, 108, 101, 110, 103, 116, // =0;i"===n?(t=1, + 111, 61, 34, 34, 41, 58, 111, 61, 110, 43, 111, 91, // o=""):o=n+o[ + 48, 93, 58, 114, 63, 110, 61, 61, 61, 114, 63, 114, // 0]:r?n===r?r + 61, 34, 34, 58, 111, 43, 61, 110, 58, 39, 34, 39, // ="":o+=n:'"' + 61, 61, 61, 110, 124, 124, 34, 39, 34, 61, 61, 61, // ===n||"'"=== + 110, 63, 114, 61, 110, 58, 34, 62, 34, 61, 61, 61, // n?r=n:">"=== + 110, 63, 40, 108, 40, 41, 44, 116, 61, 49, 41, 58, // n?(l(),t=1): + 116, 38, 38, 40, 34, 61, 34, 61, 61, 61, 110, 63, // t&&("="===n? + 40, 116, 61, 53, 44, 95, 61, 111, 44, 111, 61, 34, // (t=5,_=o,o=" + 34, 41, 58, 34, 47, 34, 61, 61, 61, 110, 38, 38, // "):"/"===n&& + 40, 116, 60, 53, 124, 124, 34, 62, 34, 61, 61, 61, // (t<5||">"=== + 101, 91, 105, 93, 91, 99, 43, 49, 93, 41, 63, 40, // e[i][c+1])?( + 108, 40, 41, 44, 51, 61, 61, 61, 116, 38, 38, 40, // l(),3===t&&( + 117, 61, 117, 91, 48, 93, 41, 44, 116, 61, 117, 44, // u=u[0]),t=u, + 40, 117, 61, 117, 91, 48, 93, 41, 46, 112, 117, 115, // (u=u[0]).pus + 104, 40, 50, 44, 48, 44, 116, 41, 44, 116, 61, 48, // h(2,0,t),t=0 + 41, 58, 34, 32, 34, 61, 61, 61, 110, 124, 124, 34, // ):" "===n||" + 92, 116, 34, 61, 61, 61, 110, 124, 124, 34, 92, 110, // .t"===n||".n + 34, 61, 61, 61, 110, 124, 124, 34, 92, 114, 34, 61, // "===n||".r"= + 61, 61, 110, 63, 40, 108, 40, 41, 44, 116, 61, 50, // ==n?(l(),t=2 + 41, 58, 111, 43, 61, 110, 41, 44, 51, 61, 61, 61, // ):o+=n),3=== + 116, 38, 38, 34, 33, 45, 45, 34, 61, 61, 61, 111, // t&&"!--"===o + 38, 38, 40, 116, 61, 52, 44, 117, 61, 117, 91, 48, // &&(t=4,u=u[0 + 93, 41, 125, 114, 101, 116, 117, 114, 110, 32, 108, 40, // ])}return l( + 41, 44, 117, 125, 40, 101, 41, 41, 44, 110, 41, 44, // ),u}(e)),n), + 97, 114, 103, 117, 109, 101, 110, 116, 115, 44, 91, 93, // arguments,[] + 41, 41, 46, 108, 101, 110, 103, 116, 104, 62, 49, 63, // )).length>1? + 110, 58, 110, 91, 48, 93, 125, 46, 98, 105, 110, 100, // n:n[0]}.bind + 40, 97, 41, 59, 101, 120, 112, 111, 114, 116, 123, 97, // (a);export{a + 32, 97, 115, 32, 104, 44, 102, 101, 32, 97, 115, 32, // as h,fe as + 104, 116, 109, 108, 44, 77, 32, 97, 115, 32, 114, 101, // html,M as re + 110, 100, 101, 114, 44, 100, 32, 97, 115, 32, 67, 111, // nder,d as Co + 109, 112, 111, 110, 101, 110, 116, 44, 70, 32, 97, 115, // mponent,F as + 32, 99, 114, 101, 97, 116, 101, 67, 111, 110, 116, 101, // createConte + 120, 116, 44, 71, 32, 97, 115, 32, 117, 115, 101, 83, // xt,G as useS + 116, 97, 116, 101, 44, 122, 32, 97, 115, 32, 117, 115, // tate,z as us + 101, 82, 101, 100, 117, 99, 101, 114, 44, 74, 32, 97, // eReducer,J a + 115, 32, 117, 115, 101, 69, 102, 102, 101, 99, 116, 44, // s useEffect, + 75, 32, 97, 115, 32, 117, 115, 101, 76, 97, 121, 111, // K as useLayo + 117, 116, 69, 102, 102, 101, 99, 116, 44, 81, 32, 97, // utEffect,Q a + 115, 32, 117, 115, 101, 82, 101, 102, 44, 88, 32, 97, // s useRef,X a + 115, 32, 117, 115, 101, 73, 109, 112, 101, 114, 97, 116, // s useImperat + 105, 118, 101, 72, 97, 110, 100, 108, 101, 44, 89, 32, // iveHandle,Y + 97, 115, 32, 117, 115, 101, 77, 101, 109, 111, 44, 90, // as useMemo,Z + 32, 97, 115, 32, 117, 115, 101, 67, 97, 108, 108, 98, // as useCallb + 97, 99, 107, 44, 101, 101, 32, 97, 115, 32, 117, 115, // ack,ee as us + 101, 67, 111, 110, 116, 101, 120, 116, 44, 110, 101, 32, // eContext,ne + 97, 115, 32, 117, 115, 101, 68, 101, 98, 117, 103, 86, // as useDebugV + 97, 108, 117, 101, 44, 95, 101, 32, 97, 115, 32, 117, // alue,_e as u + 115, 101, 69, 114, 114, 111, 114, 66, 111, 117, 110, 100, // seErrorBound + 97, 114, 121, 125, 59, 10, 0 // ary};. +}; static const unsigned char v4[] = { + 42, 32, 123, 32, 98, 111, 120, 45, 115, 105, 122, 105, // * { box-sizi + 110, 103, 58, 32, 98, 111, 114, 100, 101, 114, 45, 98, // ng: border-b + 111, 120, 59, 32, 125, 10, 104, 116, 109, 108, 44, 32, // ox; }.html, + 98, 111, 100, 121, 32, 123, 32, 109, 97, 114, 103, 105, // body { margi + 110, 58, 32, 48, 59, 32, 112, 97, 100, 100, 105, 110, // n: 0; paddin + 103, 58, 32, 48, 59, 32, 104, 101, 105, 103, 104, 116, // g: 0; height + 58, 32, 49, 48, 48, 37, 59, 32, 102, 111, 110, 116, // : 100%; font + 58, 32, 49, 54, 112, 120, 32, 115, 97, 110, 115, 45, // : 16px sans- + 115, 101, 114, 105, 102, 59, 32, 125, 10, 115, 101, 108, // serif; }.sel + 101, 99, 116, 44, 32, 105, 110, 112, 117, 116, 44, 32, // ect, input, + 108, 97, 98, 101, 108, 58, 58, 98, 101, 102, 111, 114, // label::befor + 101, 44, 32, 116, 101, 120, 116, 97, 114, 101, 97, 32, // e, textarea + 123, 32, 111, 117, 116, 108, 105, 110, 101, 58, 32, 110, // { outline: n + 111, 110, 101, 59, 32, 98, 111, 120, 45, 115, 104, 97, // one; box-sha + 100, 111, 119, 58, 110, 111, 110, 101, 32, 33, 105, 109, // dow:none !im + 112, 111, 114, 116, 97, 110, 116, 59, 32, 98, 111, 114, // portant; bor + 100, 101, 114, 58, 32, 49, 112, 120, 32, 115, 111, 108, // der: 1px sol + 105, 100, 32, 35, 99, 99, 99, 32, 33, 105, 109, 112, // id #ccc !imp + 111, 114, 116, 97, 110, 116, 59, 32, 125, 10, 99, 111, // ortant; }.co + 100, 101, 44, 32, 112, 114, 101, 32, 123, 32, 99, 111, // de, pre { co + 108, 111, 114, 58, 32, 35, 51, 55, 51, 59, 32, 102, // lor: #373; f + 111, 110, 116, 45, 102, 97, 109, 105, 108, 121, 58, 32, // ont-family: + 109, 111, 110, 111, 115, 112, 97, 99, 101, 59, 32, 102, // monospace; f + 111, 110, 116, 45, 119, 101, 105, 103, 104, 116, 58, 32, // ont-weight: + 98, 111, 108, 100, 101, 114, 59, 32, 102, 111, 110, 116, // bolder; font + 45, 115, 105, 122, 101, 58, 32, 115, 109, 97, 108, 108, // -size: small + 101, 114, 59, 32, 98, 97, 99, 107, 103, 114, 111, 117, // er; backgrou + 110, 100, 58, 32, 35, 100, 100, 100, 59, 32, 112, 97, // nd: #ddd; pa + 100, 100, 105, 110, 103, 58, 32, 48, 46, 49, 101, 109, // dding: 0.1em + 32, 48, 46, 51, 101, 109, 59, 32, 98, 111, 114, 100, // 0.3em; bord + 101, 114, 45, 114, 97, 100, 105, 117, 115, 58, 32, 48, // er-radius: 0 + 46, 50, 101, 109, 59, 32, 125, 10, 116, 101, 120, 116, // .2em; }.text + 97, 114, 101, 97, 44, 32, 105, 110, 112, 117, 116, 44, // area, input, + 32, 46, 97, 100, 100, 111, 110, 32, 123, 32, 102, 111, // .addon { fo + 110, 116, 45, 115, 105, 122, 101, 58, 32, 49, 53, 112, // nt-size: 15p + 120, 59, 32, 98, 111, 114, 100, 101, 114, 58, 32, 49, // x; border: 1 + 112, 120, 32, 115, 111, 108, 105, 100, 32, 35, 99, 99, // px solid #cc + 99, 59, 32, 112, 97, 100, 100, 105, 110, 103, 58, 32, // c; padding: + 48, 46, 53, 101, 109, 59, 32, 125, 10, 97, 44, 32, // 0.5em; }.a, + 97, 58, 118, 105, 115, 105, 116, 101, 100, 44, 32, 97, // a:visited, a + 58, 97, 99, 116, 105, 118, 101, 32, 123, 32, 99, 111, // :active { co + 108, 111, 114, 58, 32, 35, 53, 53, 102, 59, 32, 125, // lor: #55f; } + 10, 46, 97, 100, 100, 111, 110, 32, 123, 32, 98, 97, // ..addon { ba + 99, 107, 103, 114, 111, 117, 110, 100, 58, 32, 35, 101, // ckground: #e + 101, 101, 59, 32, 32, 109, 105, 110, 45, 119, 105, 100, // ee; min-wid + 116, 104, 58, 32, 57, 101, 109, 59, 125, 10, 46, 98, // th: 9em;}..b + 116, 110, 32, 123, 10, 32, 32, 98, 97, 99, 107, 103, // tn {. backg + 114, 111, 117, 110, 100, 58, 32, 35, 99, 99, 99, 59, // round: #ccc; + 32, 98, 111, 114, 100, 101, 114, 45, 114, 97, 100, 105, // border-radi + 117, 115, 58, 32, 48, 46, 51, 101, 109, 59, 32, 98, // us: 0.3em; b + 111, 114, 100, 101, 114, 58, 32, 48, 59, 32, 99, 111, // order: 0; co + 108, 111, 114, 58, 32, 35, 102, 102, 102, 59, 32, 99, // lor: #fff; c + 117, 114, 115, 111, 114, 58, 32, 112, 111, 105, 110, 116, // ursor: point + 101, 114, 59, 10, 32, 32, 100, 105, 115, 112, 108, 97, // er;. displa + 121, 58, 32, 105, 110, 108, 105, 110, 101, 45, 98, 108, // y: inline-bl + 111, 99, 107, 59, 32, 112, 97, 100, 100, 105, 110, 103, // ock; padding + 58, 32, 48, 46, 54, 101, 109, 32, 50, 101, 109, 59, // : 0.6em 2em; + 32, 102, 111, 110, 116, 45, 119, 101, 105, 103, 104, 116, // font-weight + 58, 32, 98, 111, 108, 100, 101, 114, 59, 10, 125, 10, // : bolder;.}. + 46, 98, 116, 110, 91, 100, 105, 115, 97, 98, 108, 101, // .btn[disable + 100, 93, 32, 123, 32, 111, 112, 97, 99, 105, 116, 121, // d] { opacity + 58, 32, 48, 46, 53, 59, 32, 99, 117, 114, 115, 111, // : 0.5; curso + 114, 58, 32, 97, 117, 116, 111, 59, 125, 10, 46, 115, // r: auto;}..s + 109, 111, 111, 116, 104, 32, 123, 32, 116, 114, 97, 110, // mooth { tran + 115, 105, 116, 105, 111, 110, 58, 32, 97, 108, 108, 32, // sition: all + 46, 50, 115, 59, 32, 125, 10, 46, 99, 111, 110, 116, // .2s; }..cont + 97, 105, 110, 101, 114, 32, 123, 32, 109, 97, 114, 103, // ainer { marg + 105, 110, 58, 32, 48, 32, 50, 48, 112, 120, 59, 32, // in: 0 20px; + 119, 105, 100, 116, 104, 58, 32, 97, 117, 116, 111, 59, // width: auto; + 32, 125, 10, 46, 100, 45, 102, 108, 101, 120, 32, 123, // }..d-flex { + 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 102, 108, // display: fl + 101, 120, 59, 32, 125, 10, 46, 100, 45, 110, 111, 110, // ex; }..d-non + 101, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, // e { display: + 32, 110, 111, 110, 101, 59, 32, 125, 10, 46, 98, 111, // none; }..bo + 114, 100, 101, 114, 32, 123, 32, 98, 111, 114, 100, 101, // rder { borde + 114, 58, 32, 49, 112, 120, 32, 115, 111, 108, 105, 100, // r: 1px solid + 32, 35, 100, 100, 100, 59, 32, 125, 10, 46, 114, 111, // #ddd; }..ro + 117, 110, 100, 101, 100, 32, 123, 32, 98, 111, 114, 100, // unded { bord + 101, 114, 45, 114, 97, 100, 105, 117, 115, 58, 32, 48, // er-radius: 0 + 46, 53, 101, 109, 59, 32, 125, 10, 46, 110, 111, 119, // .5em; }..now + 114, 97, 112, 32, 123, 32, 119, 104, 105, 116, 101, 45, // rap { white- + 115, 112, 97, 99, 101, 58, 32, 110, 111, 119, 114, 97, // space: nowra + 112, 59, 32, 125, 10, 46, 109, 115, 103, 32, 123, 32, // p; }..msg { + 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 58, 32, // background: + 35, 100, 101, 102, 59, 32, 98, 111, 114, 100, 101, 114, // #def; border + 45, 108, 101, 102, 116, 58, 32, 53, 112, 120, 32, 115, // -left: 5px s + 111, 108, 105, 100, 32, 35, 53, 57, 100, 59, 32, 112, // olid #59d; p + 97, 100, 100, 105, 110, 103, 58, 32, 48, 46, 53, 101, // adding: 0.5e + 109, 59, 32, 102, 111, 110, 116, 45, 115, 105, 122, 101, // m; font-size + 58, 32, 57, 48, 37, 59, 32, 109, 97, 114, 103, 105, // : 90%; margi + 110, 58, 32, 49, 101, 109, 32, 48, 59, 32, 125, 10, // n: 1em 0; }. + 46, 115, 101, 99, 116, 105, 111, 110, 32, 123, 32, 109, // .section { m + 97, 114, 103, 105, 110, 58, 32, 48, 32, 49, 101, 109, // argin: 0 1em + 59, 32, 125, 10, 46, 116, 111, 112, 105, 99, 44, 32, // ; }..topic, + 46, 100, 97, 116, 97, 44, 32, 46, 113, 111, 115, 32, // .data, .qos + 123, 32, 32, 112, 97, 100, 100, 105, 110, 103, 58, 32, // { padding: + 48, 46, 50, 101, 109, 32, 48, 46, 53, 101, 109, 59, // 0.2em 0.5em; + 32, 98, 111, 114, 100, 101, 114, 45, 114, 97, 100, 105, // border-radi + 117, 115, 58, 32, 48, 46, 52, 101, 109, 59, 32, 109, // us: 0.4em; m + 97, 114, 103, 105, 110, 45, 114, 105, 103, 104, 116, 58, // argin-right: + 32, 48, 46, 53, 101, 109, 59, 32, 32, 125, 10, 46, // 0.5em; }.. + 113, 111, 115, 32, 123, 32, 98, 97, 99, 107, 103, 114, // qos { backgr + 111, 117, 110, 100, 58, 32, 35, 101, 102, 97, 59, 32, // ound: #efa; + 125, 10, 46, 116, 111, 112, 105, 99, 32, 123, 32, 98, // }..topic { b + 97, 99, 107, 103, 114, 111, 117, 110, 100, 58, 32, 35, // ackground: # + 102, 101, 97, 59, 32, 125, 10, 46, 100, 97, 116, 97, // fea; }..data + 32, 123, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, // { backgroun + 100, 58, 32, 35, 97, 101, 102, 59, 32, 125, 10, 10, // d: #aef; }.. + 47, 42, 32, 71, 114, 105, 100, 32, 42, 47, 10, 46, // /* Grid */.. + 114, 111, 119, 32, 123, 32, 100, 105, 115, 112, 108, 97, // row { displa + 121, 58, 32, 102, 108, 101, 120, 59, 32, 102, 108, 101, // y: flex; fle + 120, 45, 119, 114, 97, 112, 58, 32, 119, 114, 97, 112, // x-wrap: wrap + 59, 32, 125, 10, 46, 99, 111, 108, 32, 123, 32, 109, // ; }..col { m + 97, 114, 103, 105, 110, 58, 32, 48, 59, 32, 112, 97, // argin: 0; pa + 100, 100, 105, 110, 103, 58, 32, 48, 59, 32, 111, 118, // dding: 0; ov + 101, 114, 102, 108, 111, 119, 58, 32, 97, 117, 116, 111, // erflow: auto + 59, 32, 125, 10, 46, 99, 111, 108, 45, 49, 50, 32, // ; }..col-12 + 123, 32, 119, 105, 100, 116, 104, 58, 32, 49, 48, 48, // { width: 100 + 37, 59, 32, 125, 10, 46, 99, 111, 108, 45, 49, 49, // %; }..col-11 + 32, 123, 32, 119, 105, 100, 116, 104, 58, 32, 57, 49, // { width: 91 + 46, 54, 54, 37, 59, 32, 125, 10, 46, 99, 111, 108, // .66%; }..col + 45, 49, 48, 32, 123, 32, 119, 105, 100, 116, 104, 58, // -10 { width: + 32, 56, 51, 46, 51, 51, 37, 59, 32, 125, 10, 46, // 83.33%; }.. + 99, 111, 108, 45, 57, 32, 123, 32, 119, 105, 100, 116, // col-9 { widt + 104, 58, 32, 55, 53, 37, 59, 32, 125, 10, 46, 99, // h: 75%; }..c + 111, 108, 45, 56, 32, 123, 32, 119, 105, 100, 116, 104, // ol-8 { width + 58, 32, 54, 54, 46, 54, 54, 37, 59, 32, 125, 10, // : 66.66%; }. + 46, 99, 111, 108, 45, 55, 32, 123, 32, 119, 105, 100, // .col-7 { wid + 116, 104, 58, 32, 53, 56, 46, 51, 51, 37, 59, 32, // th: 58.33%; + 125, 10, 46, 99, 111, 108, 45, 54, 32, 123, 32, 119, // }..col-6 { w + 105, 100, 116, 104, 58, 32, 53, 48, 37, 59, 32, 125, // idth: 50%; } + 10, 46, 99, 111, 108, 45, 53, 32, 123, 32, 119, 105, // ..col-5 { wi + 100, 116, 104, 58, 32, 52, 49, 46, 54, 54, 37, 59, // dth: 41.66%; + 32, 125, 10, 46, 99, 111, 108, 45, 52, 32, 123, 32, // }..col-4 { + 119, 105, 100, 116, 104, 58, 32, 51, 51, 46, 51, 51, // width: 33.33 + 37, 59, 32, 125, 10, 46, 99, 111, 108, 45, 51, 32, // %; }..col-3 + 123, 32, 119, 105, 100, 116, 104, 58, 32, 50, 53, 37, // { width: 25% + 59, 32, 125, 10, 46, 99, 111, 108, 45, 50, 32, 123, // ; }..col-2 { + 32, 119, 105, 100, 116, 104, 58, 32, 49, 54, 46, 54, // width: 16.6 + 54, 37, 59, 32, 125, 10, 46, 99, 111, 108, 45, 49, // 6%; }..col-1 + 32, 123, 32, 119, 105, 100, 116, 104, 58, 32, 56, 46, // { width: 8. + 51, 51, 37, 59, 32, 125, 10, 64, 109, 101, 100, 105, // 33%; }.@medi + 97, 32, 40, 109, 105, 110, 45, 119, 105, 100, 116, 104, // a (min-width + 58, 32, 49, 51, 49, 48, 112, 120, 41, 32, 123, 32, // : 1310px) { + 46, 99, 111, 110, 116, 97, 105, 110, 101, 114, 32, 123, // .container { + 32, 109, 97, 114, 103, 105, 110, 58, 32, 97, 117, 116, // margin: aut + 111, 59, 32, 119, 105, 100, 116, 104, 58, 32, 49, 50, // o; width: 12 + 55, 48, 112, 120, 59, 32, 125, 32, 125, 10, 64, 109, // 70px; } }.@m + 101, 100, 105, 97, 32, 40, 109, 97, 120, 45, 119, 105, // edia (max-wi + 100, 116, 104, 58, 32, 57, 50, 48, 112, 120, 41, 32, // dth: 920px) + 123, 32, 46, 114, 111, 119, 32, 46, 99, 111, 108, 32, // { .row .col + 123, 32, 119, 105, 100, 116, 104, 58, 32, 49, 48, 48, // { width: 100 + 37, 59, 32, 125, 32, 125, 10, 0 // %; } }. +}; +static const unsigned char v5[] = { 137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, // .PNG........ 73, 72, 68, 82, 0, 0, 0, 128, 0, 0, 0, 128, // IHDR........ 8, 6, 0, 0, 0, 195, 62, 97, 203, 0, 0, 0, // ......>a.... @@ -3770,195 +2788,6 @@ static const unsigned char v4[] = { 126, 121, 49, 188, 0, 0, 0, 0, 73, 69, 78, 68, // ~y1.....IEND 174, 66, 96, 130, 0 // .B`. }; -static const unsigned char v5[] = { - 42, 32, 123, 32, 98, 111, 120, 45, 115, 105, 122, 105, // * { box-sizi - 110, 103, 58, 32, 98, 111, 114, 100, 101, 114, 45, 98, // ng: border-b - 111, 120, 59, 32, 125, 10, 104, 116, 109, 108, 44, 32, // ox; }.html, - 98, 111, 100, 121, 32, 123, 32, 109, 97, 114, 103, 105, // body { margi - 110, 58, 32, 48, 59, 32, 112, 97, 100, 100, 105, 110, // n: 0; paddin - 103, 58, 32, 48, 59, 32, 104, 101, 105, 103, 104, 116, // g: 0; height - 58, 32, 49, 48, 48, 37, 59, 32, 102, 111, 110, 116, // : 100%; font - 58, 32, 49, 54, 112, 120, 32, 115, 97, 110, 115, 45, // : 16px sans- - 115, 101, 114, 105, 102, 59, 32, 125, 10, 115, 101, 108, // serif; }.sel - 101, 99, 116, 44, 32, 105, 110, 112, 117, 116, 44, 32, // ect, input, - 108, 97, 98, 101, 108, 58, 58, 98, 101, 102, 111, 114, // label::befor - 101, 44, 32, 116, 101, 120, 116, 97, 114, 101, 97, 32, // e, textarea - 123, 32, 111, 117, 116, 108, 105, 110, 101, 58, 32, 110, // { outline: n - 111, 110, 101, 59, 32, 98, 111, 120, 45, 115, 104, 97, // one; box-sha - 100, 111, 119, 58, 110, 111, 110, 101, 32, 33, 105, 109, // dow:none !im - 112, 111, 114, 116, 97, 110, 116, 59, 32, 98, 111, 114, // portant; bor - 100, 101, 114, 58, 32, 49, 112, 120, 32, 115, 111, 108, // der: 1px sol - 105, 100, 32, 35, 99, 99, 99, 32, 33, 105, 109, 112, // id #ccc !imp - 111, 114, 116, 97, 110, 116, 59, 32, 125, 10, 99, 111, // ortant; }.co - 100, 101, 44, 32, 112, 114, 101, 32, 123, 32, 99, 111, // de, pre { co - 108, 111, 114, 58, 32, 35, 51, 55, 51, 59, 32, 102, // lor: #373; f - 111, 110, 116, 45, 102, 97, 109, 105, 108, 121, 58, 32, // ont-family: - 109, 111, 110, 111, 115, 112, 97, 99, 101, 59, 32, 102, // monospace; f - 111, 110, 116, 45, 119, 101, 105, 103, 104, 116, 58, 32, // ont-weight: - 98, 111, 108, 100, 101, 114, 59, 32, 102, 111, 110, 116, // bolder; font - 45, 115, 105, 122, 101, 58, 32, 115, 109, 97, 108, 108, // -size: small - 101, 114, 59, 32, 98, 97, 99, 107, 103, 114, 111, 117, // er; backgrou - 110, 100, 58, 32, 35, 100, 100, 100, 59, 32, 112, 97, // nd: #ddd; pa - 100, 100, 105, 110, 103, 58, 32, 48, 46, 49, 101, 109, // dding: 0.1em - 32, 48, 46, 51, 101, 109, 59, 32, 98, 111, 114, 100, // 0.3em; bord - 101, 114, 45, 114, 97, 100, 105, 117, 115, 58, 32, 48, // er-radius: 0 - 46, 50, 101, 109, 59, 32, 125, 10, 116, 101, 120, 116, // .2em; }.text - 97, 114, 101, 97, 44, 32, 105, 110, 112, 117, 116, 44, // area, input, - 32, 46, 97, 100, 100, 111, 110, 32, 123, 32, 102, 111, // .addon { fo - 110, 116, 45, 115, 105, 122, 101, 58, 32, 49, 53, 112, // nt-size: 15p - 120, 59, 32, 98, 111, 114, 100, 101, 114, 58, 32, 49, // x; border: 1 - 112, 120, 32, 115, 111, 108, 105, 100, 32, 35, 99, 99, // px solid #cc - 99, 59, 32, 112, 97, 100, 100, 105, 110, 103, 58, 32, // c; padding: - 48, 46, 53, 101, 109, 59, 32, 125, 10, 97, 44, 32, // 0.5em; }.a, - 97, 58, 118, 105, 115, 105, 116, 101, 100, 44, 32, 97, // a:visited, a - 58, 97, 99, 116, 105, 118, 101, 32, 123, 32, 99, 111, // :active { co - 108, 111, 114, 58, 32, 35, 53, 53, 102, 59, 32, 125, // lor: #55f; } - 10, 46, 97, 100, 100, 111, 110, 32, 123, 32, 98, 97, // ..addon { ba - 99, 107, 103, 114, 111, 117, 110, 100, 58, 32, 35, 101, // ckground: #e - 101, 101, 59, 32, 32, 109, 105, 110, 45, 119, 105, 100, // ee; min-wid - 116, 104, 58, 32, 57, 101, 109, 59, 125, 10, 46, 98, // th: 9em;}..b - 116, 110, 32, 123, 10, 32, 32, 98, 97, 99, 107, 103, // tn {. backg - 114, 111, 117, 110, 100, 58, 32, 35, 99, 99, 99, 59, // round: #ccc; - 32, 98, 111, 114, 100, 101, 114, 45, 114, 97, 100, 105, // border-radi - 117, 115, 58, 32, 48, 46, 51, 101, 109, 59, 32, 98, // us: 0.3em; b - 111, 114, 100, 101, 114, 58, 32, 48, 59, 32, 99, 111, // order: 0; co - 108, 111, 114, 58, 32, 35, 102, 102, 102, 59, 32, 99, // lor: #fff; c - 117, 114, 115, 111, 114, 58, 32, 112, 111, 105, 110, 116, // ursor: point - 101, 114, 59, 10, 32, 32, 100, 105, 115, 112, 108, 97, // er;. displa - 121, 58, 32, 105, 110, 108, 105, 110, 101, 45, 98, 108, // y: inline-bl - 111, 99, 107, 59, 32, 112, 97, 100, 100, 105, 110, 103, // ock; padding - 58, 32, 48, 46, 54, 101, 109, 32, 50, 101, 109, 59, // : 0.6em 2em; - 32, 102, 111, 110, 116, 45, 119, 101, 105, 103, 104, 116, // font-weight - 58, 32, 98, 111, 108, 100, 101, 114, 59, 10, 125, 10, // : bolder;.}. - 46, 98, 116, 110, 91, 100, 105, 115, 97, 98, 108, 101, // .btn[disable - 100, 93, 32, 123, 32, 111, 112, 97, 99, 105, 116, 121, // d] { opacity - 58, 32, 48, 46, 53, 59, 32, 99, 117, 114, 115, 111, // : 0.5; curso - 114, 58, 32, 97, 117, 116, 111, 59, 125, 10, 46, 115, // r: auto;}..s - 109, 111, 111, 116, 104, 32, 123, 32, 116, 114, 97, 110, // mooth { tran - 115, 105, 116, 105, 111, 110, 58, 32, 97, 108, 108, 32, // sition: all - 46, 50, 115, 59, 32, 125, 10, 46, 99, 111, 110, 116, // .2s; }..cont - 97, 105, 110, 101, 114, 32, 123, 32, 109, 97, 114, 103, // ainer { marg - 105, 110, 58, 32, 48, 32, 50, 48, 112, 120, 59, 32, // in: 0 20px; - 119, 105, 100, 116, 104, 58, 32, 97, 117, 116, 111, 59, // width: auto; - 32, 125, 10, 46, 100, 45, 102, 108, 101, 120, 32, 123, // }..d-flex { - 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 102, 108, // display: fl - 101, 120, 59, 32, 125, 10, 46, 100, 45, 110, 111, 110, // ex; }..d-non - 101, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, // e { display: - 32, 110, 111, 110, 101, 59, 32, 125, 10, 46, 98, 111, // none; }..bo - 114, 100, 101, 114, 32, 123, 32, 98, 111, 114, 100, 101, // rder { borde - 114, 58, 32, 49, 112, 120, 32, 115, 111, 108, 105, 100, // r: 1px solid - 32, 35, 100, 100, 100, 59, 32, 125, 10, 46, 114, 111, // #ddd; }..ro - 117, 110, 100, 101, 100, 32, 123, 32, 98, 111, 114, 100, // unded { bord - 101, 114, 45, 114, 97, 100, 105, 117, 115, 58, 32, 48, // er-radius: 0 - 46, 53, 101, 109, 59, 32, 125, 10, 46, 110, 111, 119, // .5em; }..now - 114, 97, 112, 32, 123, 32, 119, 104, 105, 116, 101, 45, // rap { white- - 115, 112, 97, 99, 101, 58, 32, 110, 111, 119, 114, 97, // space: nowra - 112, 59, 32, 125, 10, 46, 109, 115, 103, 32, 123, 32, // p; }..msg { - 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 58, 32, // background: - 35, 100, 101, 102, 59, 32, 98, 111, 114, 100, 101, 114, // #def; border - 45, 108, 101, 102, 116, 58, 32, 53, 112, 120, 32, 115, // -left: 5px s - 111, 108, 105, 100, 32, 35, 53, 57, 100, 59, 32, 112, // olid #59d; p - 97, 100, 100, 105, 110, 103, 58, 32, 48, 46, 53, 101, // adding: 0.5e - 109, 59, 32, 102, 111, 110, 116, 45, 115, 105, 122, 101, // m; font-size - 58, 32, 57, 48, 37, 59, 32, 109, 97, 114, 103, 105, // : 90%; margi - 110, 58, 32, 49, 101, 109, 32, 48, 59, 32, 125, 10, // n: 1em 0; }. - 46, 115, 101, 99, 116, 105, 111, 110, 32, 123, 32, 109, // .section { m - 97, 114, 103, 105, 110, 58, 32, 48, 32, 49, 101, 109, // argin: 0 1em - 59, 32, 125, 10, 46, 116, 111, 112, 105, 99, 44, 32, // ; }..topic, - 46, 100, 97, 116, 97, 44, 32, 46, 113, 111, 115, 32, // .data, .qos - 123, 32, 32, 112, 97, 100, 100, 105, 110, 103, 58, 32, // { padding: - 48, 46, 50, 101, 109, 32, 48, 46, 53, 101, 109, 59, // 0.2em 0.5em; - 32, 98, 111, 114, 100, 101, 114, 45, 114, 97, 100, 105, // border-radi - 117, 115, 58, 32, 48, 46, 52, 101, 109, 59, 32, 109, // us: 0.4em; m - 97, 114, 103, 105, 110, 45, 114, 105, 103, 104, 116, 58, // argin-right: - 32, 48, 46, 53, 101, 109, 59, 32, 32, 125, 10, 46, // 0.5em; }.. - 113, 111, 115, 32, 123, 32, 98, 97, 99, 107, 103, 114, // qos { backgr - 111, 117, 110, 100, 58, 32, 35, 101, 102, 97, 59, 32, // ound: #efa; - 125, 10, 46, 116, 111, 112, 105, 99, 32, 123, 32, 98, // }..topic { b - 97, 99, 107, 103, 114, 111, 117, 110, 100, 58, 32, 35, // ackground: # - 102, 101, 97, 59, 32, 125, 10, 46, 100, 97, 116, 97, // fea; }..data - 32, 123, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, // { backgroun - 100, 58, 32, 35, 97, 101, 102, 59, 32, 125, 10, 10, // d: #aef; }.. - 47, 42, 32, 71, 114, 105, 100, 32, 42, 47, 10, 46, // /* Grid */.. - 114, 111, 119, 32, 123, 32, 100, 105, 115, 112, 108, 97, // row { displa - 121, 58, 32, 102, 108, 101, 120, 59, 32, 102, 108, 101, // y: flex; fle - 120, 45, 119, 114, 97, 112, 58, 32, 119, 114, 97, 112, // x-wrap: wrap - 59, 32, 125, 10, 46, 99, 111, 108, 32, 123, 32, 109, // ; }..col { m - 97, 114, 103, 105, 110, 58, 32, 48, 59, 32, 112, 97, // argin: 0; pa - 100, 100, 105, 110, 103, 58, 32, 48, 59, 32, 111, 118, // dding: 0; ov - 101, 114, 102, 108, 111, 119, 58, 32, 97, 117, 116, 111, // erflow: auto - 59, 32, 125, 10, 46, 99, 111, 108, 45, 49, 50, 32, // ; }..col-12 - 123, 32, 119, 105, 100, 116, 104, 58, 32, 49, 48, 48, // { width: 100 - 37, 59, 32, 125, 10, 46, 99, 111, 108, 45, 49, 49, // %; }..col-11 - 32, 123, 32, 119, 105, 100, 116, 104, 58, 32, 57, 49, // { width: 91 - 46, 54, 54, 37, 59, 32, 125, 10, 46, 99, 111, 108, // .66%; }..col - 45, 49, 48, 32, 123, 32, 119, 105, 100, 116, 104, 58, // -10 { width: - 32, 56, 51, 46, 51, 51, 37, 59, 32, 125, 10, 46, // 83.33%; }.. - 99, 111, 108, 45, 57, 32, 123, 32, 119, 105, 100, 116, // col-9 { widt - 104, 58, 32, 55, 53, 37, 59, 32, 125, 10, 46, 99, // h: 75%; }..c - 111, 108, 45, 56, 32, 123, 32, 119, 105, 100, 116, 104, // ol-8 { width - 58, 32, 54, 54, 46, 54, 54, 37, 59, 32, 125, 10, // : 66.66%; }. - 46, 99, 111, 108, 45, 55, 32, 123, 32, 119, 105, 100, // .col-7 { wid - 116, 104, 58, 32, 53, 56, 46, 51, 51, 37, 59, 32, // th: 58.33%; - 125, 10, 46, 99, 111, 108, 45, 54, 32, 123, 32, 119, // }..col-6 { w - 105, 100, 116, 104, 58, 32, 53, 48, 37, 59, 32, 125, // idth: 50%; } - 10, 46, 99, 111, 108, 45, 53, 32, 123, 32, 119, 105, // ..col-5 { wi - 100, 116, 104, 58, 32, 52, 49, 46, 54, 54, 37, 59, // dth: 41.66%; - 32, 125, 10, 46, 99, 111, 108, 45, 52, 32, 123, 32, // }..col-4 { - 119, 105, 100, 116, 104, 58, 32, 51, 51, 46, 51, 51, // width: 33.33 - 37, 59, 32, 125, 10, 46, 99, 111, 108, 45, 51, 32, // %; }..col-3 - 123, 32, 119, 105, 100, 116, 104, 58, 32, 50, 53, 37, // { width: 25% - 59, 32, 125, 10, 46, 99, 111, 108, 45, 50, 32, 123, // ; }..col-2 { - 32, 119, 105, 100, 116, 104, 58, 32, 49, 54, 46, 54, // width: 16.6 - 54, 37, 59, 32, 125, 10, 46, 99, 111, 108, 45, 49, // 6%; }..col-1 - 32, 123, 32, 119, 105, 100, 116, 104, 58, 32, 56, 46, // { width: 8. - 51, 51, 37, 59, 32, 125, 10, 64, 109, 101, 100, 105, // 33%; }.@medi - 97, 32, 40, 109, 105, 110, 45, 119, 105, 100, 116, 104, // a (min-width - 58, 32, 49, 51, 49, 48, 112, 120, 41, 32, 123, 32, // : 1310px) { - 46, 99, 111, 110, 116, 97, 105, 110, 101, 114, 32, 123, // .container { - 32, 109, 97, 114, 103, 105, 110, 58, 32, 97, 117, 116, // margin: aut - 111, 59, 32, 119, 105, 100, 116, 104, 58, 32, 49, 50, // o; width: 12 - 55, 48, 112, 120, 59, 32, 125, 32, 125, 10, 64, 109, // 70px; } }.@m - 101, 100, 105, 97, 32, 40, 109, 97, 120, 45, 119, 105, // edia (max-wi - 100, 116, 104, 58, 32, 57, 50, 48, 112, 120, 41, 32, // dth: 920px) - 123, 32, 46, 114, 111, 119, 32, 46, 99, 111, 108, 32, // { .row .col - 123, 32, 119, 105, 100, 116, 104, 58, 32, 49, 48, 48, // { width: 100 - 37, 59, 32, 125, 32, 125, 10, 0 // %; } }. -}; -static const unsigned char v6[] = { - 60, 33, 68, 79, 67, 84, 89, 80, 69, 32, 104, 116, // .. < - 104, 101, 97, 100, 62, 10, 32, 32, 32, 32, 60, 116, // head>. Device - 68, 97, 115, 104, 98, 111, 97, 114, 100, 60, 47, 116, // Dashboard. . - 32, 32, 32, 60, 109, 101, 116, 97, 32, 104, 116, 116, // . - 32, 32, 32, 60, 109, 101, 116, 97, 32, 110, 97, 109, // . . - 10, 32, 32, 60, 98, 111, 100, 121, 62, 60, 47, 98, // . . . - 10, 0 // . -}; static const struct packed_file { const char *name; @@ -3966,12 +2795,11 @@ static const struct packed_file { size_t size; time_t mtime; } packed_files[] = { - {"/web_root/main.js.orig", v1, sizeof(v1), 1656079031}, - {"/web_root/preact.min.js", v2, sizeof(v2), 1655487950}, - {"/web_root/main.js", v3, sizeof(v3), 1656422708}, - {"/web_root/user.png", v4, sizeof(v4), 1655487950}, - {"/web_root/style.css", v5, sizeof(v5), 1655487950}, - {"/web_root/index.html", v6, sizeof(v6), 1655487950}, + {"/web_root/index.html", v1, sizeof(v1), 1654437619}, + {"/web_root/main.js", v2, sizeof(v2), 1656444283}, + {"/web_root/preact.min.js", v3, sizeof(v3), 1652374364}, + {"/web_root/style.css", v4, sizeof(v4), 1654709515}, + {"/web_root/user.png", v5, sizeof(v5), 1626172939}, {NULL, NULL, 0, 0} }; diff --git a/mongoose.c b/mongoose.c index 1b9c8618..ac13edb5 100644 --- a/mongoose.c +++ b/mongoose.c @@ -4193,7 +4193,7 @@ void mg_connect_resolved(struct mg_connection *c) { if ((rc = connect(FD(c), &usa.sa, slen)) == 0) { mg_call(c, MG_EV_CONNECT, NULL); } else if (mg_sock_would_block()) { - MG_DEBUG(("%lu %p connect in progress...", c->id, c->fd)); + MG_DEBUG(("%lu %p -> %x:%hu pend", c->id, c->fd, c->rem.ip, c->rem.port)); c->is_connecting = 1; } else { mg_error(c, "connect: %d", MG_SOCK_ERRNO); @@ -4355,7 +4355,8 @@ static void mg_iotest(struct mg_mgr *mgr, int ms) { // Socket not valid, ignore } else { fds[n].fd = FD(c); - if (can_read(c)) fds[n].events = POLLIN; + fds[n].events = POLLERR; + if (can_read(c)) fds[n].events |= POLLIN; if (can_write(c)) fds[n].events |= POLLOUT; n++; if (mg_tls_pending(c) > 0) ms = 0; // Don't wait if TLS is ready @@ -4367,72 +4368,56 @@ static void mg_iotest(struct mg_mgr *mgr, int ms) { } else { n = 0; for (struct mg_connection *c = mgr->conns; c != NULL; c = c->next) { - if (skip_iotest(c)) { - // Socket not valid, ignore + if (skip_iotest(c)) continue; + if (fds[n].revents & POLLERR) { + mg_error(c, "socket error"); } else { c->is_readable = (unsigned) (fds[n].revents & POLLIN ? 1 : 0); c->is_writable = (unsigned) (fds[n].revents & POLLOUT ? 1 : 0); if (mg_tls_pending(c) > 0) c->is_readable = 1; - fds[n].revents = 0; - n++; } + n++; } } #else struct timeval tv = {ms / 1000, (ms % 1000) * 1000}, tv_zero = {0, 0}; struct mg_connection *c; - fd_set rset, wset; + fd_set rset, wset, eset; SOCKET maxfd = 0; int rc; - FD_ZERO(&rset); - FD_ZERO(&wset); - + FD_ZERO(&rset), FD_ZERO(&wset), FD_ZERO(&eset); for (c = mgr->conns; c != NULL; c = c->next) { c->is_readable = c->is_writable = 0; if (skip_iotest(c)) continue; + FD_SET(FD(c), &eset); if (can_read(c)) FD_SET(FD(c), &rset); if (can_write(c)) FD_SET(FD(c), &wset); if (mg_tls_pending(c) > 0) tv = tv_zero; if (FD(c) > maxfd) maxfd = FD(c); } - if ((rc = select((int) maxfd + 1, &rset, &wset, NULL, &tv)) < 0) { + if ((rc = select((int) maxfd + 1, &rset, &wset, &eset, &tv)) < 0) { #if MG_ARCH == MG_ARCH_WIN32 if (maxfd == 0) Sleep(ms); // On Windows, select fails if no sockets #else MG_ERROR(("select: %d %d", rc, MG_SOCK_ERRNO)); #endif - FD_ZERO(&rset); - FD_ZERO(&wset); + FD_ZERO(&rset), FD_ZERO(&wset), FD_ZERO(&eset); } for (c = mgr->conns; c != NULL; c = c->next) { - c->is_readable = FD(c) != INVALID_SOCKET && FD_ISSET(FD(c), &rset); - c->is_writable = FD(c) != INVALID_SOCKET && FD_ISSET(FD(c), &wset); - if (mg_tls_pending(c) > 0) c->is_readable = 1; + if (FD(c) != INVALID_SOCKET && FD_ISSET(FD(c), &eset)) { + mg_error(c, "socket error"); + } else { + c->is_readable = FD(c) != INVALID_SOCKET && FD_ISSET(FD(c), &rset); + c->is_writable = FD(c) != INVALID_SOCKET && FD_ISSET(FD(c), &wset); + if (mg_tls_pending(c) > 0) c->is_readable = 1; + } } #endif } -static void connect_conn(struct mg_connection *c) { - int rc = 0; -#if (MG_ARCH != MG_ARCH_FREERTOS_TCP) && (MG_ARCH != MG_ARCH_RTX) - socklen_t len = sizeof(rc); - if (getsockopt(FD(c), SOL_SOCKET, SO_ERROR, (char *) &rc, &len)) rc = 1; -#endif - if (rc == EAGAIN || rc == EWOULDBLOCK) rc = 0; - c->is_connecting = 0; - if (rc) { - char buf[50]; - mg_error(c, "error connecting to %s", - mg_straddr(&c->rem, buf, sizeof(buf))); - } else { - if (c->is_tls_hs) mg_tls_handshake(c); - mg_call(c, MG_EV_CONNECT, NULL); - } -} - void mg_mgr_poll(struct mg_mgr *mgr, int ms) { struct mg_connection *c, *tmp; uint64_t now; @@ -4453,7 +4438,11 @@ void mg_mgr_poll(struct mg_mgr *mgr, int ms) { } else if (c->is_listening && c->is_udp == 0) { if (c->is_readable) accept_conn(mgr, c); } else if (c->is_connecting) { - if (c->is_readable || c->is_writable) connect_conn(c); + if (c->is_readable || c->is_writable) { + c->is_connecting = 0; + mg_call(c, MG_EV_CONNECT, NULL); + if (c->is_tls_hs) mg_tls_handshake(c); + } } else if (c->is_tls_hs) { if ((c->is_readable || c->is_writable)) mg_tls_handshake(c); } else { diff --git a/src/sock.c b/src/sock.c index 38460b83..9b03c88a 100644 --- a/src/sock.c +++ b/src/sock.c @@ -351,7 +351,7 @@ void mg_connect_resolved(struct mg_connection *c) { if ((rc = connect(FD(c), &usa.sa, slen)) == 0) { mg_call(c, MG_EV_CONNECT, NULL); } else if (mg_sock_would_block()) { - MG_DEBUG(("%lu %p connect in progress...", c->id, c->fd)); + MG_DEBUG(("%lu %p -> %x:%hu pend", c->id, c->fd, c->rem.ip, c->rem.port)); c->is_connecting = 1; } else { mg_error(c, "connect: %d", MG_SOCK_ERRNO); @@ -513,7 +513,8 @@ static void mg_iotest(struct mg_mgr *mgr, int ms) { // Socket not valid, ignore } else { fds[n].fd = FD(c); - if (can_read(c)) fds[n].events = POLLIN; + fds[n].events = POLLERR; + if (can_read(c)) fds[n].events |= POLLIN; if (can_write(c)) fds[n].events |= POLLOUT; n++; if (mg_tls_pending(c) > 0) ms = 0; // Don't wait if TLS is ready @@ -525,72 +526,56 @@ static void mg_iotest(struct mg_mgr *mgr, int ms) { } else { n = 0; for (struct mg_connection *c = mgr->conns; c != NULL; c = c->next) { - if (skip_iotest(c)) { - // Socket not valid, ignore + if (skip_iotest(c)) continue; + if (fds[n].revents & POLLERR) { + mg_error(c, "socket error"); } else { c->is_readable = (unsigned) (fds[n].revents & POLLIN ? 1 : 0); c->is_writable = (unsigned) (fds[n].revents & POLLOUT ? 1 : 0); if (mg_tls_pending(c) > 0) c->is_readable = 1; - fds[n].revents = 0; - n++; } + n++; } } #else struct timeval tv = {ms / 1000, (ms % 1000) * 1000}, tv_zero = {0, 0}; struct mg_connection *c; - fd_set rset, wset; + fd_set rset, wset, eset; SOCKET maxfd = 0; int rc; - FD_ZERO(&rset); - FD_ZERO(&wset); - + FD_ZERO(&rset), FD_ZERO(&wset), FD_ZERO(&eset); for (c = mgr->conns; c != NULL; c = c->next) { c->is_readable = c->is_writable = 0; if (skip_iotest(c)) continue; + FD_SET(FD(c), &eset); if (can_read(c)) FD_SET(FD(c), &rset); if (can_write(c)) FD_SET(FD(c), &wset); if (mg_tls_pending(c) > 0) tv = tv_zero; if (FD(c) > maxfd) maxfd = FD(c); } - if ((rc = select((int) maxfd + 1, &rset, &wset, NULL, &tv)) < 0) { + if ((rc = select((int) maxfd + 1, &rset, &wset, &eset, &tv)) < 0) { #if MG_ARCH == MG_ARCH_WIN32 if (maxfd == 0) Sleep(ms); // On Windows, select fails if no sockets #else MG_ERROR(("select: %d %d", rc, MG_SOCK_ERRNO)); #endif - FD_ZERO(&rset); - FD_ZERO(&wset); + FD_ZERO(&rset), FD_ZERO(&wset), FD_ZERO(&eset); } for (c = mgr->conns; c != NULL; c = c->next) { - c->is_readable = FD(c) != INVALID_SOCKET && FD_ISSET(FD(c), &rset); - c->is_writable = FD(c) != INVALID_SOCKET && FD_ISSET(FD(c), &wset); - if (mg_tls_pending(c) > 0) c->is_readable = 1; + if (FD(c) != INVALID_SOCKET && FD_ISSET(FD(c), &eset)) { + mg_error(c, "socket error"); + } else { + c->is_readable = FD(c) != INVALID_SOCKET && FD_ISSET(FD(c), &rset); + c->is_writable = FD(c) != INVALID_SOCKET && FD_ISSET(FD(c), &wset); + if (mg_tls_pending(c) > 0) c->is_readable = 1; + } } #endif } -static void connect_conn(struct mg_connection *c) { - int rc = 0; -#if (MG_ARCH != MG_ARCH_FREERTOS_TCP) && (MG_ARCH != MG_ARCH_RTX) - socklen_t len = sizeof(rc); - if (getsockopt(FD(c), SOL_SOCKET, SO_ERROR, (char *) &rc, &len)) rc = 1; -#endif - if (rc == EAGAIN || rc == EWOULDBLOCK) rc = 0; - c->is_connecting = 0; - if (rc) { - char buf[50]; - mg_error(c, "error connecting to %s", - mg_straddr(&c->rem, buf, sizeof(buf))); - } else { - if (c->is_tls_hs) mg_tls_handshake(c); - mg_call(c, MG_EV_CONNECT, NULL); - } -} - void mg_mgr_poll(struct mg_mgr *mgr, int ms) { struct mg_connection *c, *tmp; uint64_t now; @@ -611,7 +596,11 @@ void mg_mgr_poll(struct mg_mgr *mgr, int ms) { } else if (c->is_listening && c->is_udp == 0) { if (c->is_readable) accept_conn(mgr, c); } else if (c->is_connecting) { - if (c->is_readable || c->is_writable) connect_conn(c); + if (c->is_readable || c->is_writable) { + c->is_connecting = 0; + mg_call(c, MG_EV_CONNECT, NULL); + if (c->is_tls_hs) mg_tls_handshake(c); + } } else if (c->is_tls_hs) { if ((c->is_readable || c->is_writable)) mg_tls_handshake(c); } else { diff --git a/test/unit_test.c b/test/unit_test.c index 23a72f06..ea0c7c5f 100644 --- a/test/unit_test.c +++ b/test/unit_test.c @@ -1,6 +1,7 @@ +#include "mongoose.h" + #include "float.h" // For DBL_EPSILON and HUGE_VAL #include "math.h" -#include "mongoose.h" static int s_num_tests = 0; @@ -606,7 +607,7 @@ static void test_ws(void) { static void eh9(struct mg_connection *c, int ev, void *ev_data, void *fn_data) { if (ev == MG_EV_ERROR) { - ASSERT(!strcmp((char *) ev_data, "error connecting to 127.0.0.1:55117")); + ASSERT(!strcmp((char *) ev_data, "socket error")); *(int *) fn_data = 7; } (void) c;