diff --git a/examples/device-dashboard/packed_fs.c b/examples/device-dashboard/packed_fs.c index 8ba8c6a7..01d5b903 100644 --- a/examples/device-dashboard/packed_fs.c +++ b/examples/device-dashboard/packed_fs.c @@ -3,40 +3,6 @@ #include static const unsigned char v1[] = { - 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[] = { 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, @@ -408,78 +374,46 @@ static const unsigned char v2[] = { 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, 47, 47, 32, 99, 111, 110, 115, 111, 108, // . // consol - 101, 46, 108, 111, 103, 40, 112, 114, 111, 112, 115, 44, // e.log(props, - 32, 91, 117, 114, 108, 44, 32, 112, 117, 98, 44, 32, // [url, pub, - 115, 117, 98, 93, 41, 59, 10, 32, 32, 114, 101, 116, // sub]);. ret - 117, 114, 110, 32, 104, 116, 109, 108, 96, 10, 60, 100, // urn html`.. - 10, 32, 32, 32, 32, 68, 101, 118, 105, 99, 101, 32, // . Device - 67, 111, 110, 102, 105, 103, 117, 114, 97, 116, 105, 111, // Configuratio - 110, 60, 47, 104, 51, 62, 10, 32, 32, 60, 100, 105, // n. . < - 115, 112, 97, 110, 32, 99, 108, 97, 115, 115, 61, 34, // span class=" - 97, 100, 100, 111, 110, 32, 110, 111, 119, 114, 97, 112, // addon nowrap - 34, 62, 77, 81, 84, 84, 32, 115, 101, 114, 118, 101, // ">MQTT serve - 114, 58, 60, 47, 115, 112, 97, 110, 62, 10, 32, 32, // r:. - 32, 32, 60, 105, 110, 112, 117, 116, 32, 116, 121, 112, // setUrl - 40, 101, 118, 46, 116, 97, 114, 103, 101, 116, 46, 118, // (ev.target.v - 97, 108, 117, 101, 41, 125, 32, 47, 62, 10, 32, 32, // alue)} />. - 32, 32, 60, 98, 117, 116, 116, 111, 110, 32, 99, 108, // - 10, 32, 32, 60, 47, 100, 105, 118, 62, 10, 32, 32, // . . - 60, 100, 105, 118, 62, 10, 32, 32, 32, 32, 89, 111, //
. Yo - 117, 32, 99, 97, 110, 32, 117, 115, 101, 32, 60, 97, // u can use . H - 105, 118, 101, 77, 81, 32, 87, 101, 98, 115, 111, 99, // iveMQ Websoc - 107, 101, 116, 32, 119, 101, 98, 32, 99, 108, 105, 101, // ket web clie - 110, 116, 60, 47, 97, 62, 32, 116, 111, 32, 115, 101, // nt to se - 110, 100, 32, 109, 101, 115, 115, 97, 103, 101, 115, 32, // nd messages - 116, 111, 32, 116, 104, 105, 115, 32, 99, 111, 110, 115, // to this cons - 111, 108, 101, 46, 10, 32, 32, 60, 47, 100, 105, 118, // ole..
.
. - 32, 32, 84, 104, 101, 32, 100, 101, 118, 105, 99, 101, // The device - 32, 107, 101, 101, 112, 115, 32, 97, 32, 112, 101, 114, // keeps a per - 115, 105, 115, 116, 101, 110, 116, 32, 99, 111, 110, 110, // sistent conn - 101, 99, 116, 105, 111, 110, 32, 116, 111, 32, 116, 104, // ection to th - 101, 32, 99, 111, 110, 102, 105, 103, 117, 114, 101, 100, // e configured - 32, 77, 81, 84, 84, 32, 115, 101, 114, 118, 101, 114, // MQTT server - 46, 10, 32, 32, 32, 32, 67, 104, 97, 110, 103, 101, // .. Change - 115, 32, 116, 111, 32, 116, 104, 105, 115, 32, 99, 111, // s to this co - 110, 102, 105, 103, 117, 114, 97, 116, 105, 111, 110, 32, // nfiguration - 97, 114, 101, 32, 112, 114, 111, 112, 97, 103, 97, 116, // are propagat - 101, 100, 32, 116, 111, 32, 97, 108, 108, 32, 100, 97, // ed to all da - 115, 104, 98, 111, 97, 114, 100, 115, 58, 32, 116, 114, // shboards: tr - 121, 10, 32, 32, 32, 32, 99, 104, 97, 110, 103, 105, // y. changi - 110, 103, 32, 116, 104, 101, 109, 32, 105, 110, 32, 116, // ng them in t - 104, 105, 115, 32, 100, 97, 115, 104, 98, 111, 97, 114, // his dashboar - 100, 32, 97, 110, 100, 32, 111, 98, 115, 101, 114, 118, // d and observ - 101, 32, 99, 104, 97, 110, 103, 101, 115, 32, 105, 110, // e changes in - 32, 111, 116, 104, 101, 114, 32, 111, 112, 101, 110, 101, // other opene - 100, 10, 32, 32, 32, 32, 100, 97, 115, 104, 98, 111, // d. dashbo - 97, 114, 100, 115, 46, 10, 32, 32, 60, 47, 100, 105, // ards..
. - 78, 111, 116, 101, 58, 32, 97, 100, 109, 105, 110, 105, // Note: admini - 115, 116, 114, 97, 116, 111, 114, 115, 32, 99, 97, 110, // strators can - 32, 115, 101, 101, 32, 116, 104, 105, 115, 32, 115, 101, // see this se - 99, 116, 105, 111, 110, 32, 97, 110, 100, 32, 99, 97, // ction and ca - 110, 32, 99, 104, 97, 110, 103, 101, 32, 100, 101, 118, // n change dev - 105, 99, 101, 10, 32, 32, 32, 32, 99, 111, 110, 102, // ice. conf - 105, 103, 117, 114, 97, 116, 105, 111, 110, 44, 32, 119, // iguration, w - 104, 105, 108, 115, 116, 32, 117, 115, 101, 114, 115, 32, // hilst users - 99, 97, 110, 110, 111, 116, 46, 10, 32, 32, 60, 47, // cannot.. .
` - 59, 10, 125, 59, 10, 10, 10, 99, 111, 110, 115, 116, // ;.};...const - 32, 77, 101, 115, 115, 97, 103, 101, 32, 61, 32, 109, // Message = m - 32, 61, 62, 32, 104, 116, 109, 108, 96, 60, 100, 105, // => html`. - 113, 111, 115, 58, 32, 36, 123, 109, 46, 109, 101, 115, // qos: ${m.mes - 115, 97, 103, 101, 46, 113, 111, 115, 125, 32, 60, 47, // sage.qos} . topic: $ - 123, 109, 46, 109, 101, 115, 115, 97, 103, 101, 46, 116, // {m.message.t - 111, 112, 105, 99, 125, 32, 60, 47, 115, 112, 97, 110, // opic} . d - 97, 116, 97, 58, 32, 36, 123, 109, 46, 109, 101, 115, // ata: ${m.mes - 115, 97, 103, 101, 46, 100, 97, 116, 97, 125, 60, 47, // sage.data}.
- 96, 59, 10, 10, 99, 111, 110, 115, 116, 32, 77, 101, // `;..const Me - 115, 115, 97, 103, 101, 115, 32, 61, 32, 102, 117, 110, // ssages = fun - 99, 116, 105, 111, 110, 40, 112, 114, 111, 112, 115, 41, // ction(props) - 32, 123, 10, 32, 32, 99, 111, 110, 115, 116, 32, 91, // {. const [ - 109, 101, 115, 115, 97, 103, 101, 115, 44, 32, 115, 101, // messages, se - 116, 77, 101, 115, 115, 97, 103, 101, 115, 93, 32, 61, // tMessages] = - 32, 117, 115, 101, 83, 116, 97, 116, 101, 40, 91, 93, // useState([] - 41, 59, 10, 32, 32, 99, 111, 110, 115, 116, 32, 91, // );. const [ - 116, 120, 116, 44, 32, 115, 101, 116, 84, 120, 116, 93, // txt, setTxt] - 32, 61, 32, 117, 115, 101, 83, 116, 97, 116, 101, 40, // = useState( - 39, 39, 41, 59, 10, 10, 32, 32, 117, 115, 101, 69, // '');.. useE - 102, 102, 101, 99, 116, 40, 40, 41, 32, 61, 62, 32, // ffect(() => - 123, 10, 32, 32, 32, 32, 99, 111, 110, 115, 116, 32, // {. const - 105, 100, 32, 61, 32, 80, 117, 98, 83, 117, 98, 46, // id = PubSub. - 115, 117, 98, 115, 99, 114, 105, 98, 101, 40, 102, 117, // subscribe(fu - 110, 99, 116, 105, 111, 110, 40, 109, 115, 103, 41, 32, // nction(msg) - 123, 10, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, // {. if ( - 109, 115, 103, 46, 110, 97, 109, 101, 32, 61, 61, 32, // msg.name == - 39, 109, 101, 115, 115, 97, 103, 101, 39, 41, 32, 115, // 'message') s - 101, 116, 77, 101, 115, 115, 97, 103, 101, 115, 40, 120, // etMessages(x - 32, 61, 62, 32, 120, 46, 99, 111, 110, 99, 97, 116, // => x.concat - 40, 91, 109, 115, 103, 46, 100, 97, 116, 97, 93, 41, // ([msg.data]) - 41, 59, 10, 32, 32, 32, 32, 125, 41, 59, 10, 32, // );. });. - 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 80, 117, // return Pu - 98, 83, 117, 98, 46, 117, 110, 115, 117, 98, 115, 99, // bSub.unsubsc - 114, 105, 98, 101, 40, 105, 100, 41, 59, 10, 32, 32, // ribe(id);. - 125, 44, 32, 91, 93, 41, 59, 10, 10, 32, 32, 99, // }, []);.. c - 111, 110, 115, 116, 32, 115, 101, 110, 100, 109, 101, 115, // onst sendmes - 115, 97, 103, 101, 32, 61, 32, 101, 118, 32, 61, 62, // sage = ev => - 32, 102, 101, 116, 99, 104, 40, 39, 47, 97, 112, 105, // fetch('/api - 47, 109, 101, 115, 115, 97, 103, 101, 47, 115, 101, 110, // /message/sen - 100, 39, 44, 32, 123, 10, 32, 32, 32, 32, 32, 32, // d', {. - 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, 112, 111, 115, // method: 'pos - 116, 39, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, // t',. - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 98, 111, // bo - 100, 121, 58, 32, 96, 109, 101, 115, 115, 97, 103, 101, // dy: `message - 61, 36, 123, 101, 110, 99, 111, 100, 101, 85, 82, 73, // =${encodeURI - 67, 111, 109, 112, 111, 110, 101, 110, 116, 40, 116, 120, // Component(tx - 116, 41, 125, 96, 10, 32, 32, 32, 32, 32, 32, 32, // t)}`. - 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, 110, 40, 114, 32, 61, 62, 32, 115, 101, // then(r => se - 116, 84, 120, 116, 40, 39, 39, 41, 41, 59, 10, 32, // tTxt(''));. - 32, 99, 111, 110, 115, 116, 32, 99, 111, 110, 110, 115, // const conns - 116, 97, 116, 117, 115, 32, 61, 32, 112, 114, 111, 112, // tatus = prop - 115, 46, 99, 111, 110, 102, 105, 103, 46, 99, 111, 110, // s.config.con - 110, 101, 99, 116, 101, 100, 32, 63, 32, 39, 99, 111, // nected ? 'co - 110, 110, 101, 99, 116, 101, 100, 39, 32, 58, 32, 39, // nnected' : ' - 100, 105, 115, 99, 111, 110, 110, 101, 99, 116, 101, 100, // disconnected - 39, 59, 10, 32, 32, 114, 101, 116, 117, 114, 110, 32, // ';. return - 104, 116, 109, 108, 96, 10, 60, 100, 105, 118, 32, 99, // html`.
.

MQTT - 32, 109, 101, 115, 115, 97, 103, 101, 115, 60, 47, 104, // messages.
. - 32, 32, 32, 77, 81, 84, 84, 32, 115, 101, 114, 118, // MQTT serv - 101, 114, 32, 115, 116, 97, 116, 117, 115, 58, 32, 60, // er status: < - 98, 62, 36, 123, 99, 111, 110, 110, 115, 116, 97, 116, // b>${connstat - 117, 115, 125, 60, 47, 98, 62, 10, 32, 32, 60, 47, // us}. .
. - 32, 32, 32, 36, 123, 109, 101, 115, 115, 97, 103, 101, // ${message - 115, 46, 109, 97, 112, 40, 109, 101, 115, 115, 97, 103, // s.map(messag - 101, 32, 61, 62, 32, 104, 40, 77, 101, 115, 115, 97, // e => h(Messa - 103, 101, 44, 32, 123, 109, 101, 115, 115, 97, 103, 101, // ge, {message - 125, 41, 41, 125, 10, 32, 32, 60, 47, 100, 105, 118, // }))}.
.
+ 97, 121, 58, 32, 102, 108, 101, 120, 59, 32, 34, 62, // ay: flex; "> 10, 32, 32, 32, 32, 60, 115, 112, 97, 110, 32, 99, // . Publ - 105, 115, 104, 32, 109, 101, 115, 115, 97, 103, 101, 58, // ish message: + 110, 111, 119, 114, 97, 112, 34, 62, 83, 117, 98, 115, // nowrap">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, 112, 108, 97, 99, 101, // - 115, 101, 116, 84, 120, 116, 40, 101, 118, 46, 116, 97, // setTxt(ev.ta + 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, 60, 47, 100, 105, 118, 62, // />.
- 10, 32, 32, 60, 100, 105, 118, 32, 99, 108, 97, 115, // .
. - 32, 84, 104, 101, 32, 109, 101, 115, 115, 97, 103, 101, // The message - 32, 103, 101, 116, 115, 32, 112, 97, 115, 115, 101, 100, // gets passed - 32, 116, 111, 32, 116, 104, 101, 32, 100, 101, 118, 105, // to the devi - 99, 101, 32, 118, 105, 97, 32, 82, 69, 83, 84, 46, // ce via REST. - 32, 84, 104, 101, 110, 32, 116, 104, 101, 32, 100, 101, // Then the de - 118, 105, 99, 101, 32, 115, 101, 110, 100, 115, 32, 105, // vice sends i - 116, 32, 116, 111, 10, 32, 32, 32, 32, 116, 104, 101, // t to. the - 32, 77, 81, 84, 84, 32, 115, 101, 114, 118, 101, 114, // MQTT server - 32, 111, 118, 101, 114, 32, 77, 81, 84, 84, 46, 32, // over MQTT. - 65, 108, 108, 32, 77, 81, 84, 84, 32, 109, 101, 115, // All MQTT mes - 115, 97, 103, 101, 115, 32, 111, 110, 32, 97, 32, 115, // sages on a s - 117, 98, 115, 99, 114, 105, 98, 101, 100, 32, 116, 111, // ubscribed to - 112, 105, 99, 10, 32, 32, 32, 32, 114, 101, 99, 101, // pic. rece - 105, 118, 101, 100, 32, 98, 121, 32, 116, 104, 101, 32, // ived by the - 100, 101, 118, 105, 99, 101, 44, 32, 97, 114, 101, 32, // device, are - 112, 114, 111, 112, 97, 103, 97, 116, 101, 100, 32, 116, // propagated t - 111, 32, 116, 104, 105, 115, 32, 100, 97, 115, 104, 98, // o this dashb - 111, 97, 114, 100, 32, 118, 105, 97, 32, 47, 97, 112, // oard via /ap - 105, 47, 119, 97, 116, 99, 104, 46, 10, 32, 32, 60, // i/watch.. < - 47, 100, 105, 118, 62, 10, 60, 47, 100, 105, 118, 62, // /div>.
- 96, 59, 10, 125, 59, 10, 10, 47, 47, 32, 69, 120, // `;.};..// Ex - 112, 101, 99, 116, 101, 100, 32, 97, 114, 103, 117, 109, // pected argum - 101, 110, 116, 115, 58, 10, 47, 47, 32, 100, 97, 116, // ents:.// dat - 97, 58, 32, 116, 105, 109, 101, 115, 101, 114, 105, 101, // a: timeserie - 115, 44, 32, 101, 46, 103, 46, 32, 91, 32, 91, 49, // s, e.g. [ [1 - 54, 53, 52, 51, 54, 49, 51, 53, 50, 44, 32, 49, // 654361352, 1 - 57, 93, 44, 32, 91, 49, 54, 53, 52, 51, 54, 49, // 9], [1654361 - 51, 53, 51, 44, 32, 49, 56, 93, 44, 32, 46, 46, // 353, 18], .. - 46, 32, 93, 10, 47, 47, 32, 119, 105, 100, 116, 104, // . ].// width - 44, 32, 104, 101, 105, 103, 104, 116, 44, 32, 121, 116, // , height, yt - 105, 99, 107, 115, 44, 32, 120, 116, 105, 99, 107, 115, // icks, xticks - 44, 32, 121, 109, 105, 110, 44, 32, 121, 109, 97, 120, // , ymin, ymax - 44, 32, 120, 109, 105, 110, 44, 32, 120, 109, 97, 120, // , xmin, xmax - 10, 99, 111, 110, 115, 116, 32, 83, 86, 71, 32, 61, // .const SVG = - 32, 102, 117, 110, 99, 116, 105, 111, 110, 40, 112, 114, // function(pr - 111, 112, 115, 41, 32, 123, 10, 32, 32, 47, 47, 32, // ops) {. // - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 119, // w - 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, // ------+. // - 32, 32, 32, 124, 32, 32, 32, 32, 32, 32, 32, 32, // | - 104, 49, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // h1 - 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, // | h. // - 32, 32, 32, 124, 32, 119, 49, 32, 124, 32, 32, 32, // | w1 | - 32, 32, 32, 32, 32, 32, 32, 32, 124, 32, 119, 50, // | w2 - 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, 32, 32, // // | - 32, 32, 32, 104, 50, 32, 32, 32, 32, 32, 32, 32, // h2 - 32, 32, 32, 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, // //. let w - 32, 61, 32, 112, 114, 111, 112, 115, 46, 119, 105, 100, // = props.wid - 116, 104, 44, 32, 104, 32, 61, 32, 112, 114, 111, 112, // th, h = prop - 115, 46, 104, 101, 105, 103, 104, 116, 44, 32, 119, 49, // s.height, w1 - 32, 61, 32, 51, 48, 44, 32, 119, 50, 32, 61, 32, // = 30, w2 = - 48, 44, 32, 104, 49, 32, 61, 32, 56, 44, 32, 104, // 0, h1 = 8, h - 50, 32, 61, 32, 49, 56, 59, 10, 32, 32, 108, 101, // 2 = 18;. le - 116, 32, 121, 116, 105, 99, 107, 115, 32, 61, 32, 112, // t yticks = p - 114, 111, 112, 115, 46, 121, 116, 105, 99, 107, 115, 32, // rops.yticks - 124, 124, 32, 52, 44, 32, 120, 116, 105, 99, 107, 115, // || 4, xticks - 32, 61, 32, 112, 114, 111, 112, 115, 46, 120, 116, 105, // = props.xti - 99, 107, 115, 32, 124, 124, 32, 53, 59, 10, 32, 32, // cks || 5;. - 108, 101, 116, 32, 100, 97, 116, 97, 32, 61, 32, 112, // let data = p - 114, 111, 112, 115, 46, 100, 97, 116, 97, 32, 124, 124, // rops.data || - 32, 91, 93, 59, 10, 32, 32, 108, 101, 116, 32, 121, // [];. let y - 109, 105, 110, 32, 61, 32, 112, 114, 111, 112, 115, 46, // min = props. - 121, 109, 105, 110, 32, 124, 124, 32, 48, 59, 10, 32, // ymin || 0;. - 32, 108, 101, 116, 32, 121, 109, 97, 120, 32, 61, 32, // let ymax = - 112, 114, 111, 112, 115, 46, 121, 109, 97, 120, 32, 124, // props.ymax | - 124, 32, 77, 97, 116, 104, 46, 109, 97, 120, 46, 97, // | Math.max.a - 112, 112, 108, 121, 40, 110, 117, 108, 108, 44, 32, 100, // pply(null, d - 97, 116, 97, 46, 109, 97, 112, 40, 112, 32, 61, 62, // ata.map(p => - 32, 112, 91, 49, 93, 41, 41, 59, 10, 32, 32, 108, // p[1]));. l - 101, 116, 32, 120, 109, 105, 110, 32, 61, 32, 112, 114, // et xmin = pr - 111, 112, 115, 46, 120, 109, 105, 110, 32, 124, 124, 32, // ops.xmin || - 77, 97, 116, 104, 46, 109, 105, 110, 46, 97, 112, 112, // Math.min.app - 108, 121, 40, 110, 117, 108, 108, 44, 32, 100, 97, 116, // ly(null, dat - 97, 46, 109, 97, 112, 40, 112, 32, 61, 62, 32, 112, // a.map(p => p - 91, 48, 93, 41, 41, 59, 10, 32, 32, 108, 101, 116, // [0]));. let - 32, 120, 109, 97, 120, 32, 61, 32, 112, 114, 111, 112, // xmax = prop - 115, 46, 120, 109, 97, 120, 32, 124, 124, 32, 77, 97, // s.xmax || Ma - 116, 104, 46, 109, 97, 120, 46, 97, 112, 112, 108, 121, // th.max.apply - 40, 110, 117, 108, 108, 44, 32, 100, 97, 116, 97, 46, // (null, data. - 109, 97, 112, 40, 112, 32, 61, 62, 32, 112, 91, 48, // map(p => p[0 - 93, 41, 41, 59, 10, 10, 32, 32, 47, 47, 32, 89, // ]));.. // Y - 45, 97, 120, 105, 115, 32, 116, 105, 99, 107, 32, 108, // -axis tick l - 105, 110, 101, 115, 32, 97, 110, 100, 32, 108, 97, 98, // ines and lab - 101, 108, 115, 10, 32, 32, 108, 101, 116, 32, 121, 116, // els. let yt - 97, 32, 61, 32, 40, 110, 101, 119, 32, 65, 114, 114, // a = (new Arr - 97, 121, 40, 121, 116, 105, 99, 107, 115, 32, 43, 32, // ay(yticks + - 49, 41, 41, 46, 102, 105, 108, 108, 40, 48, 41, 46, // 1)).fill(0). - 109, 97, 112, 40, 40, 95, 44, 32, 105, 41, 32, 61, // map((_, i) = - 62, 32, 105, 41, 59, 32, 32, 47, 47, 32, 105, 110, // > i); // in - 100, 105, 99, 101, 115, 10, 32, 32, 108, 101, 116, 32, // dices. let - 121, 116, 105, 32, 61, 32, 105, 32, 61, 62, 32, 104, // yti = i => h - 32, 45, 32, 104, 50, 32, 45, 32, 40, 104, 32, 45, // - h2 - (h - - 32, 104, 49, 32, 45, 32, 104, 50, 41, 32, 42, 32, // h1 - h2) * - 105, 32, 47, 32, 121, 116, 105, 99, 107, 115, 59, 32, // i / yticks; - 32, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, // // - 105, 110, 100, 101, 120, 39, 115, 32, 89, 10, 32, 32, // index's Y. - 108, 101, 116, 32, 121, 116, 118, 32, 61, 32, 105, 32, // let ytv = i - 61, 62, 32, 40, 121, 109, 97, 120, 32, 45, 32, 121, // => (ymax - y - 109, 105, 110, 41, 32, 42, 32, 105, 32, 47, 32, 121, // min) * i / y - 116, 105, 99, 107, 115, 59, 10, 32, 32, 108, 101, 116, // ticks;. let - 32, 121, 116, 108, 32, 61, 32, 121, 32, 61, 62, 32, // ytl = y => - 104, 116, 109, 108, 96, 60, 108, 105, 110, 101, 32, 120, // html``; - 10, 32, 32, 108, 101, 116, 32, 121, 116, 116, 32, 61, // . let ytt = - 32, 40, 121, 44, 32, 118, 41, 32, 61, 62, 32, 104, // (y, v) => h - 116, 109, 108, 96, 60, 116, 101, 120, 116, 32, 120, 61, // tml`${v}`;.. // X - 45, 97, 120, 105, 115, 32, 116, 105, 99, 107, 32, 108, // -axis tick l - 105, 110, 101, 115, 32, 97, 110, 100, 32, 108, 97, 98, // ines and lab - 101, 108, 115, 10, 32, 32, 108, 101, 116, 32, 100, 97, // els. let da - 116, 101, 102, 109, 116, 32, 61, 32, 117, 110, 105, 120, // tefmt = unix - 32, 61, 62, 32, 40, 110, 101, 119, 32, 68, 97, 116, // => (new Dat - 101, 40, 117, 110, 105, 120, 32, 42, 32, 49, 48, 48, // e(unix * 100 - 48, 41, 41, 46, 116, 111, 73, 83, 79, 83, 116, 114, // 0)).toISOStr - 105, 110, 103, 40, 41, 46, 115, 117, 98, 115, 116, 114, // ing().substr - 40, 49, 52, 44, 32, 53, 41, 59, 10, 32, 32, 108, // (14, 5);. l - 101, 116, 32, 120, 116, 97, 32, 61, 32, 40, 110, 101, // et xta = (ne - 119, 32, 65, 114, 114, 97, 121, 40, 120, 116, 105, 99, // w Array(xtic - 107, 115, 32, 43, 32, 49, 41, 41, 46, 102, 105, 108, // ks + 1)).fil - 108, 40, 48, 41, 46, 109, 97, 112, 40, 40, 95, 44, // l(0).map((_, - 32, 105, 41, 32, 61, 62, 32, 105, 41, 59, 32, 32, // i) => i); - 47, 47, 32, 105, 110, 100, 105, 99, 101, 115, 10, 32, // // indices. - 32, 108, 101, 116, 32, 120, 116, 105, 32, 61, 32, 105, // let xti = i - 32, 61, 62, 32, 119, 49, 32, 43, 32, 40, 119, 32, // => w1 + (w - 45, 32, 119, 49, 32, 45, 32, 119, 50, 41, 32, 42, // - w1 - w2) * - 32, 105, 32, 47, 32, 120, 116, 105, 99, 107, 115, 59, // i / xticks; - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // - 32, 32, 47, 47, 32, 105, 110, 100, 101, 120, 39, 115, // // index's - 32, 88, 10, 32, 32, 108, 101, 116, 32, 120, 116, 118, // X. let xtv - 32, 61, 32, 105, 32, 61, 62, 32, 100, 97, 116, 101, // = i => date - 102, 109, 116, 40, 120, 109, 105, 110, 32, 43, 32, 40, // fmt(xmin + ( - 120, 109, 97, 120, 32, 45, 32, 120, 109, 105, 110, 41, // xmax - xmin) - 32, 42, 32, 105, 32, 47, 32, 120, 116, 105, 99, 107, // * i / xtick - 115, 41, 59, 10, 32, 32, 108, 101, 116, 32, 120, 116, // s);. let xt - 108, 32, 61, 32, 120, 32, 61, 62, 32, 104, 116, 109, // l = x => htm - 108, 96, 60, 112, 97, 116, 104, 32, 100, 61, 34, 77, // l``;. - 32, 108, 101, 116, 32, 120, 116, 116, 32, 61, 32, 40, // let xtt = ( - 120, 44, 32, 118, 41, 32, 61, 62, 10, 32, 32, 32, // x, v) =>. - 32, 32, 32, 104, 116, 109, 108, 96, 60, 116, 101, 120, // html`${v}`;.. // T - 114, 97, 110, 115, 102, 111, 114, 109, 32, 100, 97, 116, // ransform dat - 97, 32, 112, 111, 105, 110, 116, 115, 32, 97, 114, 114, // a points arr - 97, 121, 32, 105, 110, 116, 111, 32, 99, 111, 111, 114, // ay into coor - 100, 105, 110, 97, 116, 101, 10, 32, 32, 108, 101, 116, // dinate. let - 32, 100, 120, 32, 61, 32, 118, 32, 61, 62, 32, 119, // dx = v => w - 49, 32, 43, 32, 40, 118, 32, 45, 32, 120, 109, 105, // 1 + (v - xmi - 110, 41, 32, 47, 32, 40, 40, 120, 109, 97, 120, 32, // n) / ((xmax - 45, 32, 120, 109, 105, 110, 41, 32, 124, 124, 32, 49, // - xmin) || 1 - 41, 32, 42, 32, 40, 119, 32, 45, 32, 119, 49, 32, // ) * (w - w1 - 45, 32, 119, 50, 41, 59, 10, 32, 32, 108, 101, 116, // - w2);. let - 32, 100, 121, 32, 61, 32, 118, 32, 61, 62, 32, 104, // dy = v => h - 32, 45, 32, 104, 50, 32, 45, 32, 40, 118, 32, 45, // - h2 - (v - - 32, 121, 109, 105, 110, 41, 32, 47, 32, 40, 40, 121, // ymin) / ((y - 109, 97, 120, 32, 45, 32, 121, 109, 105, 110, 41, 32, // max - ymin) - 124, 124, 32, 49, 41, 32, 42, 32, 40, 104, 32, 45, // || 1) * (h - - 32, 104, 49, 32, 45, 32, 104, 50, 41, 59, 10, 32, // h1 - h2);. - 32, 108, 101, 116, 32, 100, 100, 32, 61, 32, 100, 97, // let dd = da - 116, 97, 46, 109, 97, 112, 40, 112, 32, 61, 62, 32, // ta.map(p => - 91, 77, 97, 116, 104, 46, 114, 111, 117, 110, 100, 40, // [Math.round( - 100, 120, 40, 112, 91, 48, 93, 41, 41, 44, 32, 77, // dx(p[0])), M - 97, 116, 104, 46, 114, 111, 117, 110, 100, 40, 100, 121, // ath.round(dy - 40, 112, 91, 49, 93, 41, 41, 93, 41, 59, 10, 32, // (p[1]))]);. - 32, 108, 101, 116, 32, 100, 100, 108, 32, 61, 32, 100, // let ddl = d - 100, 46, 108, 101, 110, 103, 116, 104, 59, 10, 32, 32, // d.length;. - 47, 47, 32, 65, 110, 100, 32, 112, 108, 111, 116, 32, // // And plot - 116, 104, 101, 32, 100, 97, 116, 97, 32, 97, 115, 32, // the data as - 60, 112, 97, 116, 104, 62, 32, 101, 108, 101, 109, 101, // eleme - 110, 116, 10, 32, 32, 108, 101, 116, 32, 98, 101, 103, // nt. let beg - 105, 110, 48, 32, 61, 32, 100, 100, 108, 32, 63, 32, // in0 = ddl ? - 96, 77, 32, 36, 123, 100, 100, 91, 48, 93, 91, 48, // `M ${dd[0][0 - 93, 125, 44, 36, 123, 100, 100, 91, 48, 93, 91, 49, // ]},${dd[0][1 - 93, 125, 96, 32, 58, 32, 96, 77, 32, 48, 44, 48, // ]}` : `M 0,0 - 96, 59, 10, 32, 32, 108, 101, 116, 32, 98, 101, 103, // `;. let beg - 105, 110, 32, 61, 32, 96, 77, 32, 36, 123, 119, 49, // in = `M ${w1 - 125, 44, 36, 123, 104, 32, 45, 32, 104, 50, 125, 96, // },${h - h2}` - 59, 32, 32, 47, 47, 32, 73, 110, 105, 116, 105, 97, // ; // Initia - 108, 32, 112, 111, 105, 110, 116, 10, 32, 32, 108, 101, // l point. le - 116, 32, 101, 110, 100, 32, 61, 32, 100, 100, 108, 32, // t end = ddl - 63, 32, 96, 76, 32, 36, 123, 100, 100, 91, 100, 100, // ? `L ${dd[dd - 108, 32, 45, 32, 49, 93, 91, 48, 93, 125, 44, 36, // l - 1][0]},$ - 123, 104, 32, 45, 32, 104, 50, 125, 96, 32, 58, 32, // {h - h2}` : - 96, 76, 32, 36, 123, 119, 49, 125, 44, 36, 123, 104, // `L ${w1},${h - 32, 45, 32, 104, 50, 125, 96, 59, 10, 32, 32, 108, // - h2}`;. l - 101, 116, 32, 115, 101, 114, 105, 101, 115, 32, 61, 32, // et series = - 100, 100, 108, 32, 63, 32, 100, 100, 46, 109, 97, 112, // ddl ? dd.map - 40, 112, 32, 61, 62, 32, 96, 76, 32, 36, 123, 112, // (p => `L ${p - 91, 48, 93, 125, 32, 36, 123, 112, 91, 49, 93, 125, // [0]} ${p[1]} - 96, 41, 32, 58, 32, 91, 93, 59, 10, 10, 32, 32, // `) : [];.. - 114, 101, 116, 117, 114, 110, 32, 104, 116, 109, 108, 96, // return html` - 10, 60, 115, 118, 103, 32, 118, 105, 101, 119, 66, 111, // .. . .ax - 105, 115, 32, 123, 32, 115, 116, 114, 111, 107, 101, 58, // is { stroke: - 32, 35, 97, 97, 97, 59, 32, 102, 105, 108, 108, 58, // #aaa; fill: - 32, 110, 111, 110, 101, 59, 32, 125, 10, 32, 32, 32, // none; }. - 32, 46, 108, 97, 98, 101, 108, 32, 123, 32, 115, 116, // .label { st - 114, 111, 107, 101, 58, 32, 35, 97, 97, 97, 59, 32, // roke: #aaa; - 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 32, 49, // font-size: 1 - 51, 112, 120, 59, 32, 125, 10, 32, 32, 32, 32, 46, // 3px; }. . - 116, 105, 99, 107, 32, 123, 32, 115, 116, 114, 111, 107, // tick { strok - 101, 58, 32, 35, 99, 99, 99, 59, 32, 102, 105, 108, // e: #ccc; fil - 108, 58, 32, 110, 111, 110, 101, 59, 32, 115, 116, 114, // l: none; str - 111, 107, 101, 45, 100, 97, 115, 104, 97, 114, 114, 97, // oke-dasharra - 121, 58, 32, 53, 59, 32, 125, 10, 32, 32, 32, 32, // y: 5; }. - 46, 115, 101, 114, 105, 101, 115, 98, 103, 32, 123, 32, // .seriesbg { - 115, 116, 114, 111, 107, 101, 58, 32, 110, 111, 110, 101, // stroke: none - 59, 32, 102, 105, 108, 108, 58, 32, 114, 103, 98, 97, // ; fill: rgba - 40, 50, 48, 48, 44, 50, 50, 53, 44, 50, 53, 53, // (200,225,255 - 44, 32, 48, 46, 50, 53, 41, 125, 10, 32, 32, 32, // , 0.25)}. - 32, 46, 115, 101, 114, 105, 101, 115, 32, 123, 32, 115, // .series { s - 116, 114, 111, 107, 101, 58, 32, 35, 50, 53, 97, 59, // troke: #25a; - 32, 102, 105, 108, 108, 58, 32, 110, 111, 110, 101, 59, // fill: none; - 32, 125, 10, 32, 32, 60, 47, 115, 116, 121, 108, 101, // }. . ${yta.ma - 112, 40, 105, 32, 61, 62, 32, 121, 116, 108, 40, 121, // p(i => ytl(y - 116, 105, 40, 105, 41, 41, 41, 125, 10, 32, 32, 36, // ti(i)))}. $ - 123, 121, 116, 97, 46, 109, 97, 112, 40, 105, 32, 61, // {yta.map(i = - 62, 32, 121, 116, 116, 40, 121, 116, 105, 40, 105, 41, // > ytt(yti(i) - 44, 32, 121, 116, 118, 40, 105, 41, 41, 41, 125, 10, // , ytv(i)))}. - 32, 32, 36, 123, 120, 116, 97, 46, 109, 97, 112, 40, // ${xta.map( - 105, 32, 61, 62, 32, 120, 116, 108, 40, 120, 116, 105, // i => xtl(xti - 40, 105, 41, 41, 41, 125, 10, 32, 32, 36, 123, 100, // (i)))}. ${d - 97, 116, 97, 46, 108, 101, 110, 103, 116, 104, 32, 63, // ata.length ? - 32, 120, 116, 97, 46, 109, 97, 112, 40, 105, 32, 61, // xta.map(i = - 62, 32, 120, 116, 116, 40, 120, 116, 105, 40, 105, 41, // > xtt(xti(i) - 44, 32, 120, 116, 118, 40, 105, 41, 41, 41, 32, 58, // , xtv(i))) : - 32, 39, 39, 125, 10, 32, 32, 60, 112, 97, 116, 104, // ''}. - 10, 32, 32, 60, 112, 97, 116, 104, 32, 100, 61, 34, // . - 10, 60, 47, 115, 118, 103, 62, 96, 59, 10, 125, 59, // .`;.}; - 10, 10, 10, 99, 111, 110, 115, 116, 32, 67, 104, 97, // ...const Cha - 114, 116, 32, 61, 32, 102, 117, 110, 99, 116, 105, 111, // rt = functio - 110, 40, 112, 114, 111, 112, 115, 41, 32, 123, 10, 32, // n(props) {. - 32, 99, 111, 110, 115, 116, 32, 91, 100, 97, 116, 97, // const [data - 44, 32, 115, 101, 116, 68, 97, 116, 97, 93, 32, 61, // , setData] = - 32, 117, 115, 101, 83, 116, 97, 116, 101, 40, 91, 93, // useState([] - 41, 59, 10, 32, 32, 117, 115, 101, 69, 102, 102, 101, // );. useEffe + 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, 33, 61, 32, 39, 109, 101, // .name != 'me - 116, 114, 105, 99, 115, 39, 41, 32, 114, 101, 116, 117, // trics') retu - 114, 110, 59, 10, 32, 32, 32, 32, 32, 32, 115, 101, // rn;. se - 116, 68, 97, 116, 97, 40, 120, 32, 61, 62, 32, 120, // tData(x => x - 46, 99, 111, 110, 99, 97, 116, 40, 91, 109, 115, 103, // .concat([msg - 46, 100, 97, 116, 97, 93, 41, 46, 115, 112, 108, 105, // .data]).spli - 99, 101, 40, 45, 77, 97, 120, 77, 101, 116, 114, 105, // ce(-MaxMetri - 99, 115, 68, 97, 116, 97, 80, 111, 105, 110, 116, 115, // csDataPoints - 41, 41, 59, 10, 32, 32, 32, 32, 125, 41, 59, 10, // ));. });. - 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 80, // return P - 117, 98, 83, 117, 98, 46, 117, 110, 115, 117, 98, 115, // ubSub.unsubs - 99, 114, 105, 98, 101, 40, 105, 100, 41, 59, 10, 32, // cribe(id);. - 32, 125, 44, 32, 91, 93, 41, 59, 10, 10, 32, 32, // }, []);.. - 108, 101, 116, 32, 120, 109, 97, 120, 32, 61, 32, 48, // let xmax = 0 - 44, 32, 109, 105, 115, 115, 105, 110, 103, 32, 61, 32, // , missing = - 77, 97, 120, 77, 101, 116, 114, 105, 99, 115, 68, 97, // MaxMetricsDa - 116, 97, 80, 111, 105, 110, 116, 115, 32, 45, 32, 100, // taPoints - d - 97, 116, 97, 46, 108, 101, 110, 103, 116, 104, 59, 10, // ata.length;. - 32, 32, 105, 102, 32, 40, 109, 105, 115, 115, 105, 110, // if (missin - 103, 32, 62, 32, 48, 41, 32, 120, 109, 97, 120, 32, // g > 0) xmax - 61, 32, 77, 97, 116, 104, 46, 114, 111, 117, 110, 100, // = Math.round - 40, 68, 97, 116, 101, 46, 110, 111, 119, 40, 41, 32, // (Date.now() - 47, 32, 49, 48, 48, 48, 41, 32, 43, 32, 109, 105, // / 1000) + mi - 115, 115, 105, 110, 103, 59, 10, 32, 32, 114, 101, 116, // ssing;. ret - 117, 114, 110, 32, 104, 116, 109, 108, 96, 10, 60, 100, // urn html`.. Dat - 97, 32, 67, 104, 97, 114, 116, 60, 47, 104, 51, 62, // a Chart - 10, 32, 32, 60, 100, 105, 118, 32, 115, 116, 121, 108, // .
. - 32, 32, 60, 36, 123, 83, 86, 71, 125, 32, 104, 101, // <${SVG} he - 105, 103, 104, 116, 61, 50, 52, 48, 32, 119, 105, 100, // ight=240 wid - 116, 104, 61, 54, 48, 48, 32, 121, 109, 105, 110, 61, // th=600 ymin= - 48, 32, 121, 109, 97, 120, 61, 50, 48, 32, 120, 109, // 0 ymax=20 xm - 97, 120, 61, 36, 123, 120, 109, 97, 120, 125, 32, 100, // ax=${xmax} d - 97, 116, 97, 61, 36, 123, 100, 97, 116, 97, 125, 32, // ata=${data} - 47, 62, 10, 32, 32, 60, 47, 100, 105, 118, 62, 10, // />.
. - 32, 32, 60, 100, 105, 118, 32, 99, 108, 97, 115, 115, //
. - 84, 104, 105, 115, 32, 99, 104, 97, 114, 116, 32, 112, // This chart p - 108, 111, 116, 115, 32, 108, 105, 118, 101, 32, 115, 101, // lots live se - 110, 115, 111, 114, 32, 100, 97, 116, 97, 44, 32, 115, // nsor data, s - 101, 110, 116, 32, 98, 121, 32, 116, 104, 101, 32, 100, // ent by the d - 101, 118, 105, 99, 101, 32, 118, 105, 97, 32, 47, 97, // evice via /a - 112, 105, 47, 119, 97, 116, 99, 104, 46, 10, 32, 32, // pi/watch.. - 60, 47, 100, 105, 118, 62, 10, 60, 47, 100, 105, 118, //
.`;.};..cons - 116, 32, 65, 112, 112, 32, 61, 32, 102, 117, 110, 99, // t App = func - 116, 105, 111, 110, 40, 112, 114, 111, 112, 115, 41, 32, // tion(props) - 123, 10, 32, 32, 99, 111, 110, 115, 116, 32, 91, 117, // {. const [u - 115, 101, 114, 44, 32, 115, 101, 116, 85, 115, 101, 114, // ser, setUser - 93, 32, 61, 32, 117, 115, 101, 83, 116, 97, 116, 101, // ] = useState - 40, 39, 39, 41, 59, 10, 32, 32, 99, 111, 110, 115, // ('');. cons - 116, 32, 91, 99, 111, 110, 102, 105, 103, 44, 32, 115, // t [config, s - 101, 116, 67, 111, 110, 102, 105, 103, 93, 32, 61, 32, // etConfig] = - 117, 115, 101, 83, 116, 97, 116, 101, 40, 123, 125, 41, // useState({}) - 59, 10, 10, 32, 32, 99, 111, 110, 115, 116, 32, 103, // ;.. const g - 101, 116, 99, 111, 110, 102, 105, 103, 32, 61, 32, 40, // etconfig = ( - 41, 32, 61, 62, 10, 32, 32, 32, 32, 32, 32, 102, // ) =>. f - 101, 116, 99, 104, 40, 39, 47, 97, 112, 105, 47, 99, // etch('/api/c - 111, 110, 102, 105, 103, 47, 103, 101, 116, 39, 44, 32, // onfig/get', - 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, 39, 125, 125, 41, 10, 32, 32, 32, 32, // : ''}}). - 32, 32, 32, 32, 32, 32, 46, 116, 104, 101, 110, 40, // .then( - 114, 32, 61, 62, 32, 114, 46, 106, 115, 111, 110, 40, // r => r.json( - 41, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, // )). - 32, 46, 116, 104, 101, 110, 40, 114, 32, 61, 62, 32, // .then(r => - 115, 101, 116, 67, 111, 110, 102, 105, 103, 40, 114, 41, // setConfig(r) - 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // ). - 46, 99, 97, 116, 99, 104, 40, 101, 114, 114, 32, 61, // .catch(err = - 62, 32, 99, 111, 110, 115, 111, 108, 101, 46, 108, 111, // > console.lo - 103, 40, 101, 114, 114, 41, 41, 59, 10, 10, 32, 32, // g(err));.. - 47, 47, 32, 87, 97, 116, 99, 104, 32, 102, 111, 114, // // Watch for - 32, 110, 111, 116, 105, 102, 105, 99, 97, 116, 105, 111, // notificatio - 110, 115, 46, 32, 65, 115, 32, 115, 111, 111, 110, 32, // ns. As soon - 97, 115, 32, 97, 32, 110, 111, 116, 105, 102, 105, 99, // as a notific - 97, 116, 105, 111, 110, 32, 97, 114, 114, 105, 118, 101, // ation arrive - 115, 44, 32, 112, 97, 115, 115, 32, 105, 116, 32, 111, // s, pass it o - 110, 10, 32, 32, 47, 47, 32, 116, 111, 32, 97, 108, // n. // to al - 108, 32, 115, 117, 98, 115, 99, 114, 105, 98, 101, 100, // l subscribed - 32, 99, 111, 109, 112, 111, 110, 101, 110, 116, 115, 10, // components. - 32, 32, 99, 111, 110, 115, 116, 32, 119, 97, 116, 99, // const watc - 104, 32, 61, 32, 102, 117, 110, 99, 116, 105, 111, 110, // h = function - 40, 41, 32, 123, 10, 32, 32, 32, 32, 118, 97, 114, // () {. var - 32, 108, 32, 61, 32, 119, 105, 110, 100, 111, 119, 46, // l = window. - 108, 111, 99, 97, 116, 105, 111, 110, 44, 32, 112, 114, // location, pr - 111, 116, 111, 32, 61, 32, 108, 46, 112, 114, 111, 116, // oto = l.prot - 111, 99, 111, 108, 46, 114, 101, 112, 108, 97, 99, 101, // ocol.replace - 40, 39, 104, 116, 116, 112, 39, 44, 32, 39, 119, 115, // ('http', 'ws - 39, 41, 59, 10, 32, 32, 32, 32, 118, 97, 114, 32, // ');. var - 116, 105, 100, 44, 32, 119, 115, 85, 82, 73, 32, 61, // tid, wsURI = - 32, 112, 114, 111, 116, 111, 32, 43, 32, 39, 47, 47, // proto + '// - 39, 32, 43, 32, 108, 46, 104, 111, 115, 116, 32, 43, // ' + l.host + - 32, 39, 47, 97, 112, 105, 47, 119, 97, 116, 99, 104, // '/api/watch - 39, 10, 32, 32, 32, 32, 118, 97, 114, 32, 114, 101, // '. var re - 99, 111, 110, 110, 101, 99, 116, 32, 61, 32, 102, 117, // connect = fu - 110, 99, 116, 105, 111, 110, 40, 41, 32, 123, 10, 32, // nction() {. - 32, 32, 32, 32, 32, 118, 97, 114, 32, 119, 115, 32, // var ws - 61, 32, 110, 101, 119, 32, 87, 101, 98, 83, 111, 99, // = new WebSoc - 107, 101, 116, 40, 119, 115, 85, 82, 73, 41, 59, 10, // ket(wsURI);. - 32, 32, 32, 32, 32, 32, 47, 47, 32, 119, 115, 46, // // ws. - 111, 110, 111, 112, 101, 110, 32, 61, 32, 40, 41, 32, // onopen = () - 61, 62, 32, 99, 111, 110, 115, 111, 108, 101, 46, 108, // => console.l - 111, 103, 40, 39, 119, 115, 32, 99, 111, 110, 110, 101, // og('ws conne - 99, 116, 101, 100, 39, 41, 59, 10, 32, 32, 32, 32, // cted');. - 32, 32, 119, 115, 46, 111, 110, 109, 101, 115, 115, 97, // ws.onmessa - 103, 101, 32, 61, 32, 102, 117, 110, 99, 116, 105, 111, // ge = functio - 110, 40, 101, 118, 41, 32, 123, 10, 32, 32, 32, 32, // n(ev) {. - 32, 32, 32, 32, 116, 114, 121, 32, 123, 10, 32, 32, // try {. - 32, 32, 32, 32, 32, 32, 32, 32, 118, 97, 114, 32, // var - 109, 115, 103, 32, 61, 32, 74, 83, 79, 78, 46, 112, // msg = JSON.p - 97, 114, 115, 101, 40, 101, 118, 46, 100, 97, 116, 97, // arse(ev.data - 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, // );. - 32, 80, 117, 98, 83, 117, 98, 46, 112, 117, 98, 108, // PubSub.publ - 105, 115, 104, 40, 109, 115, 103, 41, 59, 10, 32, 32, // ish(msg);. - 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, 105, // // i - 102, 32, 40, 109, 115, 103, 46, 110, 97, 109, 101, 32, // f (msg.name - 33, 61, 32, 39, 109, 101, 116, 114, 105, 99, 115, 39, // != 'metrics' - 41, 32, 99, 111, 110, 115, 111, 108, 101, 46, 108, 111, // ) console.lo - 103, 40, 39, 119, 115, 45, 62, 39, 44, 32, 109, 115, // g('ws->', ms - 103, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, // g);. - 125, 32, 99, 97, 116, 99, 104, 32, 40, 101, 41, 32, // } catch (e) - 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // {. - 99, 111, 110, 115, 111, 108, 101, 46, 108, 111, 103, 40, // console.log( - 39, 73, 110, 118, 97, 108, 105, 100, 32, 119, 115, 32, // 'Invalid ws - 102, 114, 97, 109, 101, 58, 39, 44, 32, 101, 118, 46, // frame:', ev. - 100, 97, 116, 97, 41, 59, 32, 32, 47, 47, 32, 101, // data); // e - 115, 108, 105, 110, 116, 45, 100, 105, 115, 97, 98, 108, // slint-disabl - 101, 45, 108, 105, 110, 101, 10, 32, 32, 32, 32, 32, // e-line. - 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 125, // }. } - 59, 10, 32, 32, 32, 32, 32, 32, 119, 115, 46, 111, // ;. ws.o - 110, 99, 108, 111, 115, 101, 32, 61, 32, 102, 117, 110, // nclose = fun - 99, 116, 105, 111, 110, 40, 41, 32, 123, 10, 32, 32, // ction() {. - 32, 32, 32, 32, 32, 32, 99, 108, 101, 97, 114, 84, // clearT - 105, 109, 101, 111, 117, 116, 40, 116, 105, 100, 41, 59, // imeout(tid); - 10, 32, 32, 32, 32, 32, 32, 32, 32, 116, 105, 100, // . tid - 32, 61, 32, 115, 101, 116, 84, 105, 109, 101, 111, 117, // = setTimeou - 116, 40, 114, 101, 99, 111, 110, 110, 101, 99, 116, 44, // t(reconnect, - 32, 49, 48, 48, 48, 41, 59, 10, 32, 32, 32, 32, // 1000);. - 32, 32, 32, 32, 99, 111, 110, 115, 111, 108, 101, 46, // console. - 108, 111, 103, 40, 39, 119, 115, 32, 100, 105, 115, 99, // log('ws disc - 111, 110, 110, 101, 99, 116, 101, 100, 39, 41, 59, 10, // onnected');. - 32, 32, 32, 32, 32, 32, 125, 59, 10, 32, 32, 32, // };. - 32, 125, 59, 10, 32, 32, 32, 32, 114, 101, 99, 111, // };. reco - 110, 110, 101, 99, 116, 40, 41, 59, 10, 32, 32, 125, // nnect();. } - 59, 10, 10, 32, 32, 99, 111, 110, 115, 116, 32, 108, // ;.. const l - 111, 103, 105, 110, 32, 61, 32, 102, 117, 110, 99, 116, // ogin = funct - 105, 111, 110, 40, 117, 41, 32, 123, 10, 32, 32, 32, // ion(u) {. - 32, 100, 111, 99, 117, 109, 101, 110, 116, 46, 99, 111, // document.co - 111, 107, 105, 101, 32, 61, 32, 96, 97, 99, 99, 101, // okie = `acce - 115, 115, 95, 116, 111, 107, 101, 110, 61, 36, 123, 117, // ss_token=${u - 46, 116, 111, 107, 101, 110, 125, 59, 112, 97, 116, 104, // .token};path - 61, 47, 59, 109, 97, 120, 45, 97, 103, 101, 61, 51, // =/;max-age=3 - 54, 48, 48, 96, 59, 10, 32, 32, 32, 32, 115, 101, // 600`;. se - 116, 85, 115, 101, 114, 40, 117, 46, 117, 115, 101, 114, // tUser(u.user - 41, 59, 10, 32, 32, 32, 32, 119, 97, 116, 99, 104, // );. watch - 40, 41, 59, 10, 32, 32, 32, 32, 114, 101, 116, 117, // ();. retu - 114, 110, 32, 103, 101, 116, 99, 111, 110, 102, 105, 103, // rn getconfig - 40, 41, 59, 10, 32, 32, 125, 59, 10, 10, 32, 32, // ();. };.. - 99, 111, 110, 115, 116, 32, 108, 111, 103, 111, 117, 116, // const logout - 32, 61, 32, 101, 118, 32, 61, 62, 32, 123, 10, 32, // = ev => {. - 32, 32, 32, 100, 111, 99, 117, 109, 101, 110, 116, 46, // document. - 99, 111, 111, 107, 105, 101, 32, 61, 32, 96, 97, 99, // cookie = `ac - 99, 101, 115, 115, 95, 116, 111, 107, 101, 110, 61, 59, // cess_token=; + 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, 48, 96, 59, 10, 32, 32, 32, 32, 115, // ge=0`;. s - 101, 116, 85, 115, 101, 114, 40, 39, 39, 41, 59, 10, // etUser('');. - 32, 32, 125, 59, 10, 10, 32, 32, 117, 115, 101, 69, // };.. useE - 102, 102, 101, 99, 116, 40, 40, 41, 32, 61, 62, 32, // ffect(() => - 123, 10, 32, 32, 32, 32, 47, 47, 32, 67, 97, 108, // {. // Cal - 108, 101, 100, 32, 111, 110, 99, 101, 32, 97, 116, 32, // led once at - 105, 110, 105, 116, 32, 116, 105, 109, 101, 10, 32, 32, // init time. - 32, 32, 80, 117, 98, 83, 117, 98, 46, 115, 117, 98, // PubSub.sub - 115, 99, 114, 105, 98, 101, 40, 109, 115, 103, 32, 61, // scribe(msg = - 62, 32, 109, 115, 103, 46, 110, 97, 109, 101, 32, 61, // > msg.name = - 61, 32, 39, 99, 111, 110, 102, 105, 103, 39, 32, 38, // = 'config' & - 38, 32, 103, 101, 116, 99, 111, 110, 102, 105, 103, 40, // & getconfig( - 41, 41, 59, 10, 32, 32, 32, 32, 102, 101, 116, 99, // ));. fetc - 104, 40, 39, 47, 97, 112, 105, 47, 108, 111, 103, 105, // h('/api/logi - 110, 39, 44, 32, 123, 104, 101, 97, 100, 101, 114, 115, // n', {headers - 58, 32, 123, 65, 117, 116, 104, 111, 114, 105, 122, 97, // : {Authoriza - 116, 105, 111, 110, 58, 32, 39, 39, 125, 125, 41, 10, // tion: ''}}). + 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, 114, 32, 61, 62, 32, 114, 46, 106, 115, 111, // n(r => r.jso - 110, 40, 41, 41, 10, 32, 32, 32, 32, 32, 32, 32, // n()). - 32, 46, 116, 104, 101, 110, 40, 114, 32, 61, 62, 32, // .then(r => - 108, 111, 103, 105, 110, 40, 114, 41, 41, 10, 32, 32, // login(r)). - 32, 32, 32, 32, 32, 32, 46, 99, 97, 116, 99, 104, // .catch - 40, 101, 114, 114, 32, 61, 62, 32, 115, 101, 116, 85, // (err => setU - 115, 101, 114, 40, 39, 39, 41, 41, 59, 10, 32, 32, // ser(''));. - 125, 44, 32, 91, 93, 41, 59, 10, 10, 32, 32, 105, // }, []);.. i - 102, 32, 40, 33, 117, 115, 101, 114, 41, 32, 114, 101, // f (!user) re - 116, 117, 114, 110, 32, 104, 116, 109, 108, 96, 60, 36, // turn html`<$ - 123, 76, 111, 103, 105, 110, 125, 32, 108, 111, 103, 105, // {Login} logi - 110, 61, 36, 123, 108, 111, 103, 105, 110, 125, 32, 47, // n=${login} / - 62, 96, 59, 10, 10, 32, 32, 114, 101, 116, 117, 114, // >`;.. retur - 110, 32, 104, 116, 109, 108, 96, 10, 60, 36, 123, 78, // n html`.<${N - 97, 118, 125, 32, 117, 115, 101, 114, 61, 36, 123, 117, // av} user=${u - 115, 101, 114, 125, 32, 108, 111, 103, 111, 117, 116, 61, // ser} logout= - 36, 123, 108, 111, 103, 111, 117, 116, 125, 32, 47, 62, // ${logout} /> - 10, 60, 100, 105, 118, 32, 99, 108, 97, 115, 115, 61, // .
- 10, 32, 32, 60, 100, 105, 118, 32, 99, 108, 97, 115, // .
. - 32, 60, 100, 105, 118, 32, 99, 108, 97, 115, 115, 61, //
- 60, 36, 123, 72, 101, 114, 111, 125, 32, 47, 62, 60, // <${Hero} />< - 47, 100, 105, 118, 62, 10, 32, 32, 32, 32, 60, 100, // /div>. <${ - 67, 104, 97, 114, 116, 125, 32, 47, 62, 60, 47, 100, // Chart} />.
. - 32, 32, 36, 123, 117, 115, 101, 114, 32, 61, 61, 32, // ${user == - 39, 97, 100, 109, 105, 110, 39, 32, 38, 38, 32, 104, // 'admin' && h - 40, 67, 111, 110, 102, 105, 103, 117, 114, 97, 116, 105, // (Configurati - 111, 110, 44, 32, 123, 99, 111, 110, 102, 105, 103, 125, // on, {config} - 41, 125, 10, 32, 32, 32, 32, 60, 47, 100, 105, 118, // )}.
.
<${Mess - 97, 103, 101, 115, 125, 32, 99, 111, 110, 102, 105, 103, // ages} config - 61, 36, 123, 99, 111, 110, 102, 105, 103, 125, 32, 47, // =${config} / - 62, 60, 47, 100, 105, 118, 62, 10, 32, 32, 60, 47, // >
. .
` - 59, 10, 125, 59, 10, 10, 119, 105, 110, 100, 111, 119, // ;.};..window - 46, 111, 110, 108, 111, 97, 100, 32, 61, 32, 40, 41, // .onload = () - 32, 61, 62, 32, 114, 101, 110, 100, 101, 114, 40, 104, // => render(h - 40, 65, 112, 112, 41, 44, 32, 100, 111, 99, 117, 109, // (App), docum - 101, 110, 116, 46, 98, 111, 100, 121, 41, 59, 10, 0 // ent.body);. + 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);. }; -static const unsigned char v3[] = { +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| @@ -2309,162 +2275,1184 @@ static const unsigned char v3[] = { 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 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, + 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, //
. + 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, 47, 47, 32, 99, 111, 110, 115, 111, 108, // . // consol + 101, 46, 108, 111, 103, 40, 112, 114, 111, 112, 115, 44, // e.log(props, + 32, 91, 117, 114, 108, 44, 32, 112, 117, 98, 44, 32, // [url, pub, + 115, 117, 98, 93, 41, 59, 10, 32, 32, 114, 101, 116, // sub]);. ret + 117, 114, 110, 32, 104, 116, 109, 108, 96, 10, 60, 100, // urn html`.. + 10, 32, 32, 32, 32, 68, 101, 118, 105, 99, 101, 32, // . Device + 67, 111, 110, 102, 105, 103, 117, 114, 97, 116, 105, 111, // Configuratio + 110, 60, 47, 104, 51, 62, 10, 32, 32, 60, 100, 105, // n. . < + 115, 112, 97, 110, 32, 99, 108, 97, 115, 115, 61, 34, // span class=" + 97, 100, 100, 111, 110, 32, 110, 111, 119, 114, 97, 112, // addon nowrap + 34, 62, 77, 81, 84, 84, 32, 115, 101, 114, 118, 101, // ">MQTT serve + 114, 58, 60, 47, 115, 112, 97, 110, 62, 10, 32, 32, // r:. + 32, 32, 60, 105, 110, 112, 117, 116, 32, 116, 121, 112, // setUrl + 40, 101, 118, 46, 116, 97, 114, 103, 101, 116, 46, 118, // (ev.target.v + 97, 108, 117, 101, 41, 125, 32, 47, 62, 10, 32, 32, // alue)} />. + 32, 32, 60, 98, 117, 116, 116, 111, 110, 32, 99, 108, //
+ 10, 32, 32, 60, 47, 100, 105, 118, 62, 10, 32, 32, // .
. + 60, 100, 105, 118, 62, 10, 32, 32, 32, 32, 89, 111, //
. Yo + 117, 32, 99, 97, 110, 32, 117, 115, 101, 32, 60, 97, // u can use . H + 105, 118, 101, 77, 81, 32, 87, 101, 98, 115, 111, 99, // iveMQ Websoc + 107, 101, 116, 32, 119, 101, 98, 32, 99, 108, 105, 101, // ket web clie + 110, 116, 60, 47, 97, 62, 32, 116, 111, 32, 115, 101, // nt to se + 110, 100, 32, 109, 101, 115, 115, 97, 103, 101, 115, 32, // nd messages + 116, 111, 32, 116, 104, 105, 115, 32, 99, 111, 110, 115, // to this cons + 111, 108, 101, 46, 10, 32, 32, 60, 47, 100, 105, 118, // ole..
.
. + 32, 32, 84, 104, 101, 32, 100, 101, 118, 105, 99, 101, // The device + 32, 107, 101, 101, 112, 115, 32, 97, 32, 112, 101, 114, // keeps a per + 115, 105, 115, 116, 101, 110, 116, 32, 99, 111, 110, 110, // sistent conn + 101, 99, 116, 105, 111, 110, 32, 116, 111, 32, 116, 104, // ection to th + 101, 32, 99, 111, 110, 102, 105, 103, 117, 114, 101, 100, // e configured + 32, 77, 81, 84, 84, 32, 115, 101, 114, 118, 101, 114, // MQTT server + 46, 10, 32, 32, 32, 32, 67, 104, 97, 110, 103, 101, // .. Change + 115, 32, 116, 111, 32, 116, 104, 105, 115, 32, 99, 111, // s to this co + 110, 102, 105, 103, 117, 114, 97, 116, 105, 111, 110, 32, // nfiguration + 97, 114, 101, 32, 112, 114, 111, 112, 97, 103, 97, 116, // are propagat + 101, 100, 32, 116, 111, 32, 97, 108, 108, 32, 100, 97, // ed to all da + 115, 104, 98, 111, 97, 114, 100, 115, 58, 32, 116, 114, // shboards: tr + 121, 10, 32, 32, 32, 32, 99, 104, 97, 110, 103, 105, // y. changi + 110, 103, 32, 116, 104, 101, 109, 32, 105, 110, 32, 116, // ng them in t + 104, 105, 115, 32, 100, 97, 115, 104, 98, 111, 97, 114, // his dashboar + 100, 32, 97, 110, 100, 32, 111, 98, 115, 101, 114, 118, // d and observ + 101, 32, 99, 104, 97, 110, 103, 101, 115, 32, 105, 110, // e changes in + 32, 111, 116, 104, 101, 114, 32, 111, 112, 101, 110, 101, // other opene + 100, 10, 32, 32, 32, 32, 100, 97, 115, 104, 98, 111, // d. dashbo + 97, 114, 100, 115, 46, 10, 32, 32, 60, 47, 100, 105, // ards..
. + 78, 111, 116, 101, 58, 32, 97, 100, 109, 105, 110, 105, // Note: admini + 115, 116, 114, 97, 116, 111, 114, 115, 32, 99, 97, 110, // strators can + 32, 115, 101, 101, 32, 116, 104, 105, 115, 32, 115, 101, // see this se + 99, 116, 105, 111, 110, 32, 97, 110, 100, 32, 99, 97, // ction and ca + 110, 32, 99, 104, 97, 110, 103, 101, 32, 100, 101, 118, // n change dev + 105, 99, 101, 10, 32, 32, 32, 32, 99, 111, 110, 102, // ice. conf + 105, 103, 117, 114, 97, 116, 105, 111, 110, 44, 32, 119, // iguration, w + 104, 105, 108, 115, 116, 32, 117, 115, 101, 114, 115, 32, // hilst users + 99, 97, 110, 110, 111, 116, 46, 10, 32, 32, 60, 47, // cannot.. .
` + 59, 10, 125, 59, 10, 10, 10, 99, 111, 110, 115, 116, // ;.};...const + 32, 77, 101, 115, 115, 97, 103, 101, 32, 61, 32, 109, // Message = m + 32, 61, 62, 32, 104, 116, 109, 108, 96, 60, 100, 105, // => html`. + 113, 111, 115, 58, 32, 36, 123, 109, 46, 109, 101, 115, // qos: ${m.mes + 115, 97, 103, 101, 46, 113, 111, 115, 125, 32, 60, 47, // sage.qos} . topic: $ + 123, 109, 46, 109, 101, 115, 115, 97, 103, 101, 46, 116, // {m.message.t + 111, 112, 105, 99, 125, 32, 60, 47, 115, 112, 97, 110, // opic} . d + 97, 116, 97, 58, 32, 36, 123, 109, 46, 109, 101, 115, // ata: ${m.mes + 115, 97, 103, 101, 46, 100, 97, 116, 97, 125, 60, 47, // sage.data}.
+ 96, 59, 10, 10, 99, 111, 110, 115, 116, 32, 77, 101, // `;..const Me + 115, 115, 97, 103, 101, 115, 32, 61, 32, 102, 117, 110, // ssages = fun + 99, 116, 105, 111, 110, 40, 112, 114, 111, 112, 115, 41, // ction(props) + 32, 123, 10, 32, 32, 99, 111, 110, 115, 116, 32, 91, // {. const [ + 109, 101, 115, 115, 97, 103, 101, 115, 44, 32, 115, 101, // messages, se + 116, 77, 101, 115, 115, 97, 103, 101, 115, 93, 32, 61, // tMessages] = + 32, 117, 115, 101, 83, 116, 97, 116, 101, 40, 91, 93, // useState([] + 41, 59, 10, 32, 32, 99, 111, 110, 115, 116, 32, 91, // );. const [ + 116, 120, 116, 44, 32, 115, 101, 116, 84, 120, 116, 93, // txt, setTxt] + 32, 61, 32, 117, 115, 101, 83, 116, 97, 116, 101, 40, // = useState( + 39, 39, 41, 59, 10, 10, 32, 32, 117, 115, 101, 69, // '');.. useE + 102, 102, 101, 99, 116, 40, 40, 41, 32, 61, 62, 32, // ffect(() => + 123, 10, 32, 32, 32, 32, 99, 111, 110, 115, 116, 32, // {. const + 105, 100, 32, 61, 32, 80, 117, 98, 83, 117, 98, 46, // id = PubSub. + 115, 117, 98, 115, 99, 114, 105, 98, 101, 40, 102, 117, // subscribe(fu + 110, 99, 116, 105, 111, 110, 40, 109, 115, 103, 41, 32, // nction(msg) + 123, 10, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, // {. if ( + 109, 115, 103, 46, 110, 97, 109, 101, 32, 61, 61, 32, // msg.name == + 39, 109, 101, 115, 115, 97, 103, 101, 39, 41, 32, 115, // 'message') s + 101, 116, 77, 101, 115, 115, 97, 103, 101, 115, 40, 120, // etMessages(x + 32, 61, 62, 32, 120, 46, 99, 111, 110, 99, 97, 116, // => x.concat + 40, 91, 109, 115, 103, 46, 100, 97, 116, 97, 93, 41, // ([msg.data]) + 41, 59, 10, 32, 32, 32, 32, 125, 41, 59, 10, 32, // );. });. + 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 80, 117, // return Pu + 98, 83, 117, 98, 46, 117, 110, 115, 117, 98, 115, 99, // bSub.unsubsc + 114, 105, 98, 101, 40, 105, 100, 41, 59, 10, 32, 32, // ribe(id);. + 125, 44, 32, 91, 93, 41, 59, 10, 10, 32, 32, 99, // }, []);.. c + 111, 110, 115, 116, 32, 115, 101, 110, 100, 109, 101, 115, // onst sendmes + 115, 97, 103, 101, 32, 61, 32, 101, 118, 32, 61, 62, // sage = ev => + 32, 102, 101, 116, 99, 104, 40, 39, 47, 97, 112, 105, // fetch('/api + 47, 109, 101, 115, 115, 97, 103, 101, 47, 115, 101, 110, // /message/sen + 100, 39, 44, 32, 123, 10, 32, 32, 32, 32, 32, 32, // d', {. + 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, 112, 111, 115, // method: 'pos + 116, 39, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, // t',. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 98, 111, // bo + 100, 121, 58, 32, 96, 109, 101, 115, 115, 97, 103, 101, // dy: `message + 61, 36, 123, 101, 110, 99, 111, 100, 101, 85, 82, 73, // =${encodeURI + 67, 111, 109, 112, 111, 110, 101, 110, 116, 40, 116, 120, // Component(tx + 116, 41, 125, 96, 10, 32, 32, 32, 32, 32, 32, 32, // t)}`. + 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, 110, 40, 114, 32, 61, 62, 32, 115, 101, // then(r => se + 116, 84, 120, 116, 40, 39, 39, 41, 41, 59, 10, 32, // tTxt(''));. + 32, 99, 111, 110, 115, 116, 32, 99, 111, 110, 110, 115, // const conns + 116, 97, 116, 117, 115, 32, 61, 32, 112, 114, 111, 112, // tatus = prop + 115, 46, 99, 111, 110, 102, 105, 103, 46, 99, 111, 110, // s.config.con + 110, 101, 99, 116, 101, 100, 32, 63, 32, 39, 99, 111, // nected ? 'co + 110, 110, 101, 99, 116, 101, 100, 39, 32, 58, 32, 39, // nnected' : ' + 100, 105, 115, 99, 111, 110, 110, 101, 99, 116, 101, 100, // disconnected + 39, 59, 10, 32, 32, 114, 101, 116, 117, 114, 110, 32, // ';. return + 104, 116, 109, 108, 96, 10, 60, 100, 105, 118, 32, 99, // html`.
.

MQTT + 32, 109, 101, 115, 115, 97, 103, 101, 115, 60, 47, 104, // messages.
. + 32, 32, 32, 77, 81, 84, 84, 32, 115, 101, 114, 118, // MQTT serv + 101, 114, 32, 115, 116, 97, 116, 117, 115, 58, 32, 60, // er status: < + 98, 62, 36, 123, 99, 111, 110, 110, 115, 116, 97, 116, // b>${connstat + 117, 115, 125, 60, 47, 98, 62, 10, 32, 32, 60, 47, // us}. .
. + 32, 32, 32, 36, 123, 109, 101, 115, 115, 97, 103, 101, // ${message + 115, 46, 109, 97, 112, 40, 109, 101, 115, 115, 97, 103, // s.map(messag + 101, 32, 61, 62, 32, 104, 40, 77, 101, 115, 115, 97, // e => h(Messa + 103, 101, 44, 32, 123, 109, 101, 115, 115, 97, 103, 101, // ge, {message + 125, 41, 41, 125, 10, 32, 32, 60, 47, 100, 105, 118, // }))}.
.
+ 10, 32, 32, 32, 32, 60, 115, 112, 97, 110, 32, 99, // . Publ + 105, 115, 104, 32, 109, 101, 115, 115, 97, 103, 101, 58, // ish message: + 60, 47, 115, 112, 97, 110, 62, 10, 32, 32, 32, 32, // . + 60, 105, 110, 112, 117, 116, 32, 112, 108, 97, 99, 101, // + 115, 101, 116, 84, 120, 116, 40, 101, 118, 46, 116, 97, // setTxt(ev.ta + 114, 103, 101, 116, 46, 118, 97, 108, 117, 101, 41, 125, // rget.value)} + 32, 47, 62, 10, 32, 32, 60, 47, 100, 105, 118, 62, // />.
+ 10, 32, 32, 60, 100, 105, 118, 32, 99, 108, 97, 115, // .
. + 32, 84, 104, 101, 32, 109, 101, 115, 115, 97, 103, 101, // The message + 32, 103, 101, 116, 115, 32, 112, 97, 115, 115, 101, 100, // gets passed + 32, 116, 111, 32, 116, 104, 101, 32, 100, 101, 118, 105, // to the devi + 99, 101, 32, 118, 105, 97, 32, 82, 69, 83, 84, 46, // ce via REST. + 32, 84, 104, 101, 110, 32, 116, 104, 101, 32, 100, 101, // Then the de + 118, 105, 99, 101, 32, 115, 101, 110, 100, 115, 32, 105, // vice sends i + 116, 32, 116, 111, 10, 32, 32, 32, 32, 116, 104, 101, // t to. the + 32, 77, 81, 84, 84, 32, 115, 101, 114, 118, 101, 114, // MQTT server + 32, 111, 118, 101, 114, 32, 77, 81, 84, 84, 46, 32, // over MQTT. + 65, 108, 108, 32, 77, 81, 84, 84, 32, 109, 101, 115, // All MQTT mes + 115, 97, 103, 101, 115, 32, 111, 110, 32, 97, 32, 115, // sages on a s + 117, 98, 115, 99, 114, 105, 98, 101, 100, 32, 116, 111, // ubscribed to + 112, 105, 99, 10, 32, 32, 32, 32, 114, 101, 99, 101, // pic. rece + 105, 118, 101, 100, 32, 98, 121, 32, 116, 104, 101, 32, // ived by the + 100, 101, 118, 105, 99, 101, 44, 32, 97, 114, 101, 32, // device, are + 112, 114, 111, 112, 97, 103, 97, 116, 101, 100, 32, 116, // propagated t + 111, 32, 116, 104, 105, 115, 32, 100, 97, 115, 104, 98, // o this dashb + 111, 97, 114, 100, 32, 118, 105, 97, 32, 47, 97, 112, // oard via /ap + 105, 47, 119, 97, 116, 99, 104, 46, 10, 32, 32, 60, // i/watch.. < + 47, 100, 105, 118, 62, 10, 60, 47, 100, 105, 118, 62, // /div>.
+ 96, 59, 10, 125, 59, 10, 10, 47, 47, 32, 69, 120, // `;.};..// Ex + 112, 101, 99, 116, 101, 100, 32, 97, 114, 103, 117, 109, // pected argum + 101, 110, 116, 115, 58, 10, 47, 47, 32, 100, 97, 116, // ents:.// dat + 97, 58, 32, 116, 105, 109, 101, 115, 101, 114, 105, 101, // a: timeserie + 115, 44, 32, 101, 46, 103, 46, 32, 91, 32, 91, 49, // s, e.g. [ [1 + 54, 53, 52, 51, 54, 49, 51, 53, 50, 44, 32, 49, // 654361352, 1 + 57, 93, 44, 32, 91, 49, 54, 53, 52, 51, 54, 49, // 9], [1654361 + 51, 53, 51, 44, 32, 49, 56, 93, 44, 32, 46, 46, // 353, 18], .. + 46, 32, 93, 10, 47, 47, 32, 119, 105, 100, 116, 104, // . ].// width + 44, 32, 104, 101, 105, 103, 104, 116, 44, 32, 121, 116, // , height, yt + 105, 99, 107, 115, 44, 32, 120, 116, 105, 99, 107, 115, // icks, xticks + 44, 32, 121, 109, 105, 110, 44, 32, 121, 109, 97, 120, // , ymin, ymax + 44, 32, 120, 109, 105, 110, 44, 32, 120, 109, 97, 120, // , xmin, xmax + 10, 99, 111, 110, 115, 116, 32, 83, 86, 71, 32, 61, // .const SVG = + 32, 102, 117, 110, 99, 116, 105, 111, 110, 40, 112, 114, // function(pr + 111, 112, 115, 41, 32, 123, 10, 32, 32, 47, 47, 32, // ops) {. // + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 119, // w + 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, // ------+. // + 32, 32, 32, 124, 32, 32, 32, 32, 32, 32, 32, 32, // | + 104, 49, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // h1 + 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, // | h. // + 32, 32, 32, 124, 32, 119, 49, 32, 124, 32, 32, 32, // | w1 | + 32, 32, 32, 32, 32, 32, 32, 32, 124, 32, 119, 50, // | w2 + 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, 32, 32, // // | + 32, 32, 32, 104, 50, 32, 32, 32, 32, 32, 32, 32, // h2 + 32, 32, 32, 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, // //. let w + 32, 61, 32, 112, 114, 111, 112, 115, 46, 119, 105, 100, // = props.wid + 116, 104, 44, 32, 104, 32, 61, 32, 112, 114, 111, 112, // th, h = prop + 115, 46, 104, 101, 105, 103, 104, 116, 44, 32, 119, 49, // s.height, w1 + 32, 61, 32, 51, 48, 44, 32, 119, 50, 32, 61, 32, // = 30, w2 = + 48, 44, 32, 104, 49, 32, 61, 32, 56, 44, 32, 104, // 0, h1 = 8, h + 50, 32, 61, 32, 49, 56, 59, 10, 32, 32, 108, 101, // 2 = 18;. le + 116, 32, 121, 116, 105, 99, 107, 115, 32, 61, 32, 112, // t yticks = p + 114, 111, 112, 115, 46, 121, 116, 105, 99, 107, 115, 32, // rops.yticks + 124, 124, 32, 52, 44, 32, 120, 116, 105, 99, 107, 115, // || 4, xticks + 32, 61, 32, 112, 114, 111, 112, 115, 46, 120, 116, 105, // = props.xti + 99, 107, 115, 32, 124, 124, 32, 53, 59, 10, 32, 32, // cks || 5;. + 108, 101, 116, 32, 100, 97, 116, 97, 32, 61, 32, 112, // let data = p + 114, 111, 112, 115, 46, 100, 97, 116, 97, 32, 124, 124, // rops.data || + 32, 91, 93, 59, 10, 32, 32, 108, 101, 116, 32, 121, // [];. let y + 109, 105, 110, 32, 61, 32, 112, 114, 111, 112, 115, 46, // min = props. + 121, 109, 105, 110, 32, 124, 124, 32, 48, 59, 10, 32, // ymin || 0;. + 32, 108, 101, 116, 32, 121, 109, 97, 120, 32, 61, 32, // let ymax = + 112, 114, 111, 112, 115, 46, 121, 109, 97, 120, 32, 124, // props.ymax | + 124, 32, 77, 97, 116, 104, 46, 109, 97, 120, 46, 97, // | Math.max.a + 112, 112, 108, 121, 40, 110, 117, 108, 108, 44, 32, 100, // pply(null, d + 97, 116, 97, 46, 109, 97, 112, 40, 112, 32, 61, 62, // ata.map(p => + 32, 112, 91, 49, 93, 41, 41, 59, 10, 32, 32, 108, // p[1]));. l + 101, 116, 32, 120, 109, 105, 110, 32, 61, 32, 112, 114, // et xmin = pr + 111, 112, 115, 46, 120, 109, 105, 110, 32, 124, 124, 32, // ops.xmin || + 77, 97, 116, 104, 46, 109, 105, 110, 46, 97, 112, 112, // Math.min.app + 108, 121, 40, 110, 117, 108, 108, 44, 32, 100, 97, 116, // ly(null, dat + 97, 46, 109, 97, 112, 40, 112, 32, 61, 62, 32, 112, // a.map(p => p + 91, 48, 93, 41, 41, 59, 10, 32, 32, 108, 101, 116, // [0]));. let + 32, 120, 109, 97, 120, 32, 61, 32, 112, 114, 111, 112, // xmax = prop + 115, 46, 120, 109, 97, 120, 32, 124, 124, 32, 77, 97, // s.xmax || Ma + 116, 104, 46, 109, 97, 120, 46, 97, 112, 112, 108, 121, // th.max.apply + 40, 110, 117, 108, 108, 44, 32, 100, 97, 116, 97, 46, // (null, data. + 109, 97, 112, 40, 112, 32, 61, 62, 32, 112, 91, 48, // map(p => p[0 + 93, 41, 41, 59, 10, 10, 32, 32, 47, 47, 32, 89, // ]));.. // Y + 45, 97, 120, 105, 115, 32, 116, 105, 99, 107, 32, 108, // -axis tick l + 105, 110, 101, 115, 32, 97, 110, 100, 32, 108, 97, 98, // ines and lab + 101, 108, 115, 10, 32, 32, 108, 101, 116, 32, 121, 116, // els. let yt + 97, 32, 61, 32, 40, 110, 101, 119, 32, 65, 114, 114, // a = (new Arr + 97, 121, 40, 121, 116, 105, 99, 107, 115, 32, 43, 32, // ay(yticks + + 49, 41, 41, 46, 102, 105, 108, 108, 40, 48, 41, 46, // 1)).fill(0). + 109, 97, 112, 40, 40, 95, 44, 32, 105, 41, 32, 61, // map((_, i) = + 62, 32, 105, 41, 59, 32, 32, 47, 47, 32, 105, 110, // > i); // in + 100, 105, 99, 101, 115, 10, 32, 32, 108, 101, 116, 32, // dices. let + 121, 116, 105, 32, 61, 32, 105, 32, 61, 62, 32, 104, // yti = i => h + 32, 45, 32, 104, 50, 32, 45, 32, 40, 104, 32, 45, // - h2 - (h - + 32, 104, 49, 32, 45, 32, 104, 50, 41, 32, 42, 32, // h1 - h2) * + 105, 32, 47, 32, 121, 116, 105, 99, 107, 115, 59, 32, // i / yticks; + 32, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, // // + 105, 110, 100, 101, 120, 39, 115, 32, 89, 10, 32, 32, // index's Y. + 108, 101, 116, 32, 121, 116, 118, 32, 61, 32, 105, 32, // let ytv = i + 61, 62, 32, 40, 121, 109, 97, 120, 32, 45, 32, 121, // => (ymax - y + 109, 105, 110, 41, 32, 42, 32, 105, 32, 47, 32, 121, // min) * i / y + 116, 105, 99, 107, 115, 59, 10, 32, 32, 108, 101, 116, // ticks;. let + 32, 121, 116, 108, 32, 61, 32, 121, 32, 61, 62, 32, // ytl = y => + 104, 116, 109, 108, 96, 60, 108, 105, 110, 101, 32, 120, // html``; + 10, 32, 32, 108, 101, 116, 32, 121, 116, 116, 32, 61, // . let ytt = + 32, 40, 121, 44, 32, 118, 41, 32, 61, 62, 32, 104, // (y, v) => h + 116, 109, 108, 96, 60, 116, 101, 120, 116, 32, 120, 61, // tml`${v}`;.. // X + 45, 97, 120, 105, 115, 32, 116, 105, 99, 107, 32, 108, // -axis tick l + 105, 110, 101, 115, 32, 97, 110, 100, 32, 108, 97, 98, // ines and lab + 101, 108, 115, 10, 32, 32, 108, 101, 116, 32, 100, 97, // els. let da + 116, 101, 102, 109, 116, 32, 61, 32, 117, 110, 105, 120, // tefmt = unix + 32, 61, 62, 32, 40, 110, 101, 119, 32, 68, 97, 116, // => (new Dat + 101, 40, 117, 110, 105, 120, 32, 42, 32, 49, 48, 48, // e(unix * 100 + 48, 41, 41, 46, 116, 111, 73, 83, 79, 83, 116, 114, // 0)).toISOStr + 105, 110, 103, 40, 41, 46, 115, 117, 98, 115, 116, 114, // ing().substr + 40, 49, 52, 44, 32, 53, 41, 59, 10, 32, 32, 108, // (14, 5);. l + 101, 116, 32, 120, 116, 97, 32, 61, 32, 40, 110, 101, // et xta = (ne + 119, 32, 65, 114, 114, 97, 121, 40, 120, 116, 105, 99, // w Array(xtic + 107, 115, 32, 43, 32, 49, 41, 41, 46, 102, 105, 108, // ks + 1)).fil + 108, 40, 48, 41, 46, 109, 97, 112, 40, 40, 95, 44, // l(0).map((_, + 32, 105, 41, 32, 61, 62, 32, 105, 41, 59, 32, 32, // i) => i); + 47, 47, 32, 105, 110, 100, 105, 99, 101, 115, 10, 32, // // indices. + 32, 108, 101, 116, 32, 120, 116, 105, 32, 61, 32, 105, // let xti = i + 32, 61, 62, 32, 119, 49, 32, 43, 32, 40, 119, 32, // => w1 + (w + 45, 32, 119, 49, 32, 45, 32, 119, 50, 41, 32, 42, // - w1 - w2) * + 32, 105, 32, 47, 32, 120, 116, 105, 99, 107, 115, 59, // i / xticks; + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // + 32, 32, 47, 47, 32, 105, 110, 100, 101, 120, 39, 115, // // index's + 32, 88, 10, 32, 32, 108, 101, 116, 32, 120, 116, 118, // X. let xtv + 32, 61, 32, 105, 32, 61, 62, 32, 100, 97, 116, 101, // = i => date + 102, 109, 116, 40, 120, 109, 105, 110, 32, 43, 32, 40, // fmt(xmin + ( + 120, 109, 97, 120, 32, 45, 32, 120, 109, 105, 110, 41, // xmax - xmin) + 32, 42, 32, 105, 32, 47, 32, 120, 116, 105, 99, 107, // * i / xtick + 115, 41, 59, 10, 32, 32, 108, 101, 116, 32, 120, 116, // s);. let xt + 108, 32, 61, 32, 120, 32, 61, 62, 32, 104, 116, 109, // l = x => htm + 108, 96, 60, 112, 97, 116, 104, 32, 100, 61, 34, 77, // l``;. + 32, 108, 101, 116, 32, 120, 116, 116, 32, 61, 32, 40, // let xtt = ( + 120, 44, 32, 118, 41, 32, 61, 62, 10, 32, 32, 32, // x, v) =>. + 32, 32, 32, 104, 116, 109, 108, 96, 60, 116, 101, 120, // html`${v}`;.. // T + 114, 97, 110, 115, 102, 111, 114, 109, 32, 100, 97, 116, // ransform dat + 97, 32, 112, 111, 105, 110, 116, 115, 32, 97, 114, 114, // a points arr + 97, 121, 32, 105, 110, 116, 111, 32, 99, 111, 111, 114, // ay into coor + 100, 105, 110, 97, 116, 101, 10, 32, 32, 108, 101, 116, // dinate. let + 32, 100, 120, 32, 61, 32, 118, 32, 61, 62, 32, 119, // dx = v => w + 49, 32, 43, 32, 40, 118, 32, 45, 32, 120, 109, 105, // 1 + (v - xmi + 110, 41, 32, 47, 32, 40, 40, 120, 109, 97, 120, 32, // n) / ((xmax + 45, 32, 120, 109, 105, 110, 41, 32, 124, 124, 32, 49, // - xmin) || 1 + 41, 32, 42, 32, 40, 119, 32, 45, 32, 119, 49, 32, // ) * (w - w1 + 45, 32, 119, 50, 41, 59, 10, 32, 32, 108, 101, 116, // - w2);. let + 32, 100, 121, 32, 61, 32, 118, 32, 61, 62, 32, 104, // dy = v => h + 32, 45, 32, 104, 50, 32, 45, 32, 40, 118, 32, 45, // - h2 - (v - + 32, 121, 109, 105, 110, 41, 32, 47, 32, 40, 40, 121, // ymin) / ((y + 109, 97, 120, 32, 45, 32, 121, 109, 105, 110, 41, 32, // max - ymin) + 124, 124, 32, 49, 41, 32, 42, 32, 40, 104, 32, 45, // || 1) * (h - + 32, 104, 49, 32, 45, 32, 104, 50, 41, 59, 10, 32, // h1 - h2);. + 32, 108, 101, 116, 32, 100, 100, 32, 61, 32, 100, 97, // let dd = da + 116, 97, 46, 109, 97, 112, 40, 112, 32, 61, 62, 32, // ta.map(p => + 91, 77, 97, 116, 104, 46, 114, 111, 117, 110, 100, 40, // [Math.round( + 100, 120, 40, 112, 91, 48, 93, 41, 41, 44, 32, 77, // dx(p[0])), M + 97, 116, 104, 46, 114, 111, 117, 110, 100, 40, 100, 121, // ath.round(dy + 40, 112, 91, 49, 93, 41, 41, 93, 41, 59, 10, 32, // (p[1]))]);. + 32, 108, 101, 116, 32, 100, 100, 108, 32, 61, 32, 100, // let ddl = d + 100, 46, 108, 101, 110, 103, 116, 104, 59, 10, 32, 32, // d.length;. + 47, 47, 32, 65, 110, 100, 32, 112, 108, 111, 116, 32, // // And plot + 116, 104, 101, 32, 100, 97, 116, 97, 32, 97, 115, 32, // the data as + 60, 112, 97, 116, 104, 62, 32, 101, 108, 101, 109, 101, // eleme + 110, 116, 10, 32, 32, 108, 101, 116, 32, 98, 101, 103, // nt. let beg + 105, 110, 48, 32, 61, 32, 100, 100, 108, 32, 63, 32, // in0 = ddl ? + 96, 77, 32, 36, 123, 100, 100, 91, 48, 93, 91, 48, // `M ${dd[0][0 + 93, 125, 44, 36, 123, 100, 100, 91, 48, 93, 91, 49, // ]},${dd[0][1 + 93, 125, 96, 32, 58, 32, 96, 77, 32, 48, 44, 48, // ]}` : `M 0,0 + 96, 59, 10, 32, 32, 108, 101, 116, 32, 98, 101, 103, // `;. let beg + 105, 110, 32, 61, 32, 96, 77, 32, 36, 123, 119, 49, // in = `M ${w1 + 125, 44, 36, 123, 104, 32, 45, 32, 104, 50, 125, 96, // },${h - h2}` + 59, 32, 32, 47, 47, 32, 73, 110, 105, 116, 105, 97, // ; // Initia + 108, 32, 112, 111, 105, 110, 116, 10, 32, 32, 108, 101, // l point. le + 116, 32, 101, 110, 100, 32, 61, 32, 100, 100, 108, 32, // t end = ddl + 63, 32, 96, 76, 32, 36, 123, 100, 100, 91, 100, 100, // ? `L ${dd[dd + 108, 32, 45, 32, 49, 93, 91, 48, 93, 125, 44, 36, // l - 1][0]},$ + 123, 104, 32, 45, 32, 104, 50, 125, 96, 32, 58, 32, // {h - h2}` : + 96, 76, 32, 36, 123, 119, 49, 125, 44, 36, 123, 104, // `L ${w1},${h + 32, 45, 32, 104, 50, 125, 96, 59, 10, 32, 32, 108, // - h2}`;. l + 101, 116, 32, 115, 101, 114, 105, 101, 115, 32, 61, 32, // et series = + 100, 100, 108, 32, 63, 32, 100, 100, 46, 109, 97, 112, // ddl ? dd.map + 40, 112, 32, 61, 62, 32, 96, 76, 32, 36, 123, 112, // (p => `L ${p + 91, 48, 93, 125, 32, 36, 123, 112, 91, 49, 93, 125, // [0]} ${p[1]} + 96, 41, 32, 58, 32, 91, 93, 59, 10, 10, 32, 32, // `) : [];.. + 114, 101, 116, 117, 114, 110, 32, 104, 116, 109, 108, 96, // return html` + 10, 60, 115, 118, 103, 32, 118, 105, 101, 119, 66, 111, // .. . .ax + 105, 115, 32, 123, 32, 115, 116, 114, 111, 107, 101, 58, // is { stroke: + 32, 35, 97, 97, 97, 59, 32, 102, 105, 108, 108, 58, // #aaa; fill: + 32, 110, 111, 110, 101, 59, 32, 125, 10, 32, 32, 32, // none; }. + 32, 46, 108, 97, 98, 101, 108, 32, 123, 32, 115, 116, // .label { st + 114, 111, 107, 101, 58, 32, 35, 97, 97, 97, 59, 32, // roke: #aaa; + 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 32, 49, // font-size: 1 + 51, 112, 120, 59, 32, 125, 10, 32, 32, 32, 32, 46, // 3px; }. . + 116, 105, 99, 107, 32, 123, 32, 115, 116, 114, 111, 107, // tick { strok + 101, 58, 32, 35, 99, 99, 99, 59, 32, 102, 105, 108, // e: #ccc; fil + 108, 58, 32, 110, 111, 110, 101, 59, 32, 115, 116, 114, // l: none; str + 111, 107, 101, 45, 100, 97, 115, 104, 97, 114, 114, 97, // oke-dasharra + 121, 58, 32, 53, 59, 32, 125, 10, 32, 32, 32, 32, // y: 5; }. + 46, 115, 101, 114, 105, 101, 115, 98, 103, 32, 123, 32, // .seriesbg { + 115, 116, 114, 111, 107, 101, 58, 32, 110, 111, 110, 101, // stroke: none + 59, 32, 102, 105, 108, 108, 58, 32, 114, 103, 98, 97, // ; fill: rgba + 40, 50, 48, 48, 44, 50, 50, 53, 44, 50, 53, 53, // (200,225,255 + 44, 32, 48, 46, 50, 53, 41, 125, 10, 32, 32, 32, // , 0.25)}. + 32, 46, 115, 101, 114, 105, 101, 115, 32, 123, 32, 115, // .series { s + 116, 114, 111, 107, 101, 58, 32, 35, 50, 53, 97, 59, // troke: #25a; + 32, 102, 105, 108, 108, 58, 32, 110, 111, 110, 101, 59, // fill: none; + 32, 125, 10, 32, 32, 60, 47, 115, 116, 121, 108, 101, // }. . ${yta.ma + 112, 40, 105, 32, 61, 62, 32, 121, 116, 108, 40, 121, // p(i => ytl(y + 116, 105, 40, 105, 41, 41, 41, 125, 10, 32, 32, 36, // ti(i)))}. $ + 123, 121, 116, 97, 46, 109, 97, 112, 40, 105, 32, 61, // {yta.map(i = + 62, 32, 121, 116, 116, 40, 121, 116, 105, 40, 105, 41, // > ytt(yti(i) + 44, 32, 121, 116, 118, 40, 105, 41, 41, 41, 125, 10, // , ytv(i)))}. + 32, 32, 36, 123, 120, 116, 97, 46, 109, 97, 112, 40, // ${xta.map( + 105, 32, 61, 62, 32, 120, 116, 108, 40, 120, 116, 105, // i => xtl(xti + 40, 105, 41, 41, 41, 125, 10, 32, 32, 36, 123, 100, // (i)))}. ${d + 97, 116, 97, 46, 108, 101, 110, 103, 116, 104, 32, 63, // ata.length ? + 32, 120, 116, 97, 46, 109, 97, 112, 40, 105, 32, 61, // xta.map(i = + 62, 32, 120, 116, 116, 40, 120, 116, 105, 40, 105, 41, // > xtt(xti(i) + 44, 32, 120, 116, 118, 40, 105, 41, 41, 41, 32, 58, // , xtv(i))) : + 32, 39, 39, 125, 10, 32, 32, 60, 112, 97, 116, 104, // ''}. + 10, 32, 32, 60, 112, 97, 116, 104, 32, 100, 61, 34, // . + 10, 60, 47, 115, 118, 103, 62, 96, 59, 10, 125, 59, // .`;.}; + 10, 10, 10, 99, 111, 110, 115, 116, 32, 67, 104, 97, // ...const Cha + 114, 116, 32, 61, 32, 102, 117, 110, 99, 116, 105, 111, // rt = functio + 110, 40, 112, 114, 111, 112, 115, 41, 32, 123, 10, 32, // n(props) {. + 32, 99, 111, 110, 115, 116, 32, 91, 100, 97, 116, 97, // const [data + 44, 32, 115, 101, 116, 68, 97, 116, 97, 93, 32, 61, // , setData] = + 32, 117, 115, 101, 83, 116, 97, 116, 101, 40, 91, 93, // useState([] + 41, 59, 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, 33, 61, 32, 39, 109, 101, // .name != 'me + 116, 114, 105, 99, 115, 39, 41, 32, 114, 101, 116, 117, // trics') retu + 114, 110, 59, 10, 32, 32, 32, 32, 32, 32, 115, 101, // rn;. se + 116, 68, 97, 116, 97, 40, 120, 32, 61, 62, 32, 120, // tData(x => x + 46, 99, 111, 110, 99, 97, 116, 40, 91, 109, 115, 103, // .concat([msg + 46, 100, 97, 116, 97, 93, 41, 46, 115, 112, 108, 105, // .data]).spli + 99, 101, 40, 45, 77, 97, 120, 77, 101, 116, 114, 105, // ce(-MaxMetri + 99, 115, 68, 97, 116, 97, 80, 111, 105, 110, 116, 115, // csDataPoints + 41, 41, 59, 10, 32, 32, 32, 32, 125, 41, 59, 10, // ));. });. + 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 80, // return P + 117, 98, 83, 117, 98, 46, 117, 110, 115, 117, 98, 115, // ubSub.unsubs + 99, 114, 105, 98, 101, 40, 105, 100, 41, 59, 10, 32, // cribe(id);. + 32, 125, 44, 32, 91, 93, 41, 59, 10, 10, 32, 32, // }, []);.. + 108, 101, 116, 32, 120, 109, 97, 120, 32, 61, 32, 48, // let xmax = 0 + 44, 32, 109, 105, 115, 115, 105, 110, 103, 32, 61, 32, // , missing = + 77, 97, 120, 77, 101, 116, 114, 105, 99, 115, 68, 97, // MaxMetricsDa + 116, 97, 80, 111, 105, 110, 116, 115, 32, 45, 32, 100, // taPoints - d + 97, 116, 97, 46, 108, 101, 110, 103, 116, 104, 59, 10, // ata.length;. + 32, 32, 105, 102, 32, 40, 109, 105, 115, 115, 105, 110, // if (missin + 103, 32, 62, 32, 48, 41, 32, 120, 109, 97, 120, 32, // g > 0) xmax + 61, 32, 77, 97, 116, 104, 46, 114, 111, 117, 110, 100, // = Math.round + 40, 68, 97, 116, 101, 46, 110, 111, 119, 40, 41, 32, // (Date.now() + 47, 32, 49, 48, 48, 48, 41, 32, 43, 32, 109, 105, // / 1000) + mi + 115, 115, 105, 110, 103, 59, 10, 32, 32, 114, 101, 116, // ssing;. ret + 117, 114, 110, 32, 104, 116, 109, 108, 96, 10, 60, 100, // urn html`.. Dat + 97, 32, 67, 104, 97, 114, 116, 60, 47, 104, 51, 62, // a Chart

+ 10, 32, 32, 60, 100, 105, 118, 32, 115, 116, 121, 108, // .
. + 32, 32, 60, 36, 123, 83, 86, 71, 125, 32, 104, 101, // <${SVG} he + 105, 103, 104, 116, 61, 50, 52, 48, 32, 119, 105, 100, // ight=240 wid + 116, 104, 61, 54, 48, 48, 32, 121, 109, 105, 110, 61, // th=600 ymin= + 48, 32, 121, 109, 97, 120, 61, 50, 48, 32, 120, 109, // 0 ymax=20 xm + 97, 120, 61, 36, 123, 120, 109, 97, 120, 125, 32, 100, // ax=${xmax} d + 97, 116, 97, 61, 36, 123, 100, 97, 116, 97, 125, 32, // ata=${data} + 47, 62, 10, 32, 32, 60, 47, 100, 105, 118, 62, 10, // />.
. + 32, 32, 60, 100, 105, 118, 32, 99, 108, 97, 115, 115, //
. + 84, 104, 105, 115, 32, 99, 104, 97, 114, 116, 32, 112, // This chart p + 108, 111, 116, 115, 32, 108, 105, 118, 101, 32, 115, 101, // lots live se + 110, 115, 111, 114, 32, 100, 97, 116, 97, 44, 32, 115, // nsor data, s + 101, 110, 116, 32, 98, 121, 32, 116, 104, 101, 32, 100, // ent by the d + 101, 118, 105, 99, 101, 32, 118, 105, 97, 32, 47, 97, // evice via /a + 112, 105, 47, 119, 97, 116, 99, 104, 46, 10, 32, 32, // pi/watch.. + 60, 47, 100, 105, 118, 62, 10, 60, 47, 100, 105, 118, //
.
`;.};..cons + 116, 32, 65, 112, 112, 32, 61, 32, 102, 117, 110, 99, // t App = func + 116, 105, 111, 110, 40, 112, 114, 111, 112, 115, 41, 32, // tion(props) + 123, 10, 32, 32, 99, 111, 110, 115, 116, 32, 91, 117, // {. const [u + 115, 101, 114, 44, 32, 115, 101, 116, 85, 115, 101, 114, // ser, setUser + 93, 32, 61, 32, 117, 115, 101, 83, 116, 97, 116, 101, // ] = useState + 40, 39, 39, 41, 59, 10, 32, 32, 99, 111, 110, 115, // ('');. cons + 116, 32, 91, 99, 111, 110, 102, 105, 103, 44, 32, 115, // t [config, s + 101, 116, 67, 111, 110, 102, 105, 103, 93, 32, 61, 32, // etConfig] = + 117, 115, 101, 83, 116, 97, 116, 101, 40, 123, 125, 41, // useState({}) + 59, 10, 10, 32, 32, 99, 111, 110, 115, 116, 32, 103, // ;.. const g + 101, 116, 99, 111, 110, 102, 105, 103, 32, 61, 32, 40, // etconfig = ( + 41, 32, 61, 62, 10, 32, 32, 32, 32, 32, 32, 102, // ) =>. f + 101, 116, 99, 104, 40, 39, 47, 97, 112, 105, 47, 99, // etch('/api/c + 111, 110, 102, 105, 103, 47, 103, 101, 116, 39, 44, 32, // onfig/get', + 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, 39, 125, 125, 41, 10, 32, 32, 32, 32, // : ''}}). + 32, 32, 32, 32, 32, 32, 46, 116, 104, 101, 110, 40, // .then( + 114, 32, 61, 62, 32, 114, 46, 106, 115, 111, 110, 40, // r => r.json( + 41, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, // )). + 32, 46, 116, 104, 101, 110, 40, 114, 32, 61, 62, 32, // .then(r => + 115, 101, 116, 67, 111, 110, 102, 105, 103, 40, 114, 41, // setConfig(r) + 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // ). + 46, 99, 97, 116, 99, 104, 40, 101, 114, 114, 32, 61, // .catch(err = + 62, 32, 99, 111, 110, 115, 111, 108, 101, 46, 108, 111, // > console.lo + 103, 40, 101, 114, 114, 41, 41, 59, 10, 10, 32, 32, // g(err));.. + 47, 47, 32, 87, 97, 116, 99, 104, 32, 102, 111, 114, // // Watch for + 32, 110, 111, 116, 105, 102, 105, 99, 97, 116, 105, 111, // notificatio + 110, 115, 46, 32, 65, 115, 32, 115, 111, 111, 110, 32, // ns. As soon + 97, 115, 32, 97, 32, 110, 111, 116, 105, 102, 105, 99, // as a notific + 97, 116, 105, 111, 110, 32, 97, 114, 114, 105, 118, 101, // ation arrive + 115, 44, 32, 112, 97, 115, 115, 32, 105, 116, 32, 111, // s, pass it o + 110, 10, 32, 32, 47, 47, 32, 116, 111, 32, 97, 108, // n. // to al + 108, 32, 115, 117, 98, 115, 99, 114, 105, 98, 101, 100, // l subscribed + 32, 99, 111, 109, 112, 111, 110, 101, 110, 116, 115, 10, // components. + 32, 32, 99, 111, 110, 115, 116, 32, 119, 97, 116, 99, // const watc + 104, 32, 61, 32, 102, 117, 110, 99, 116, 105, 111, 110, // h = function + 40, 41, 32, 123, 10, 32, 32, 32, 32, 118, 97, 114, // () {. var + 32, 108, 32, 61, 32, 119, 105, 110, 100, 111, 119, 46, // l = window. + 108, 111, 99, 97, 116, 105, 111, 110, 44, 32, 112, 114, // location, pr + 111, 116, 111, 32, 61, 32, 108, 46, 112, 114, 111, 116, // oto = l.prot + 111, 99, 111, 108, 46, 114, 101, 112, 108, 97, 99, 101, // ocol.replace + 40, 39, 104, 116, 116, 112, 39, 44, 32, 39, 119, 115, // ('http', 'ws + 39, 41, 59, 10, 32, 32, 32, 32, 118, 97, 114, 32, // ');. var + 116, 105, 100, 44, 32, 119, 115, 85, 82, 73, 32, 61, // tid, wsURI = + 32, 112, 114, 111, 116, 111, 32, 43, 32, 39, 47, 47, // proto + '// + 39, 32, 43, 32, 108, 46, 104, 111, 115, 116, 32, 43, // ' + l.host + + 32, 39, 47, 97, 112, 105, 47, 119, 97, 116, 99, 104, // '/api/watch + 39, 10, 32, 32, 32, 32, 118, 97, 114, 32, 114, 101, // '. var re + 99, 111, 110, 110, 101, 99, 116, 32, 61, 32, 102, 117, // connect = fu + 110, 99, 116, 105, 111, 110, 40, 41, 32, 123, 10, 32, // nction() {. + 32, 32, 32, 32, 32, 118, 97, 114, 32, 119, 115, 32, // var ws + 61, 32, 110, 101, 119, 32, 87, 101, 98, 83, 111, 99, // = new WebSoc + 107, 101, 116, 40, 119, 115, 85, 82, 73, 41, 59, 10, // ket(wsURI);. + 32, 32, 32, 32, 32, 32, 47, 47, 32, 119, 115, 46, // // ws. + 111, 110, 111, 112, 101, 110, 32, 61, 32, 40, 41, 32, // onopen = () + 61, 62, 32, 99, 111, 110, 115, 111, 108, 101, 46, 108, // => console.l + 111, 103, 40, 39, 119, 115, 32, 99, 111, 110, 110, 101, // og('ws conne + 99, 116, 101, 100, 39, 41, 59, 10, 32, 32, 32, 32, // cted');. + 32, 32, 119, 115, 46, 111, 110, 109, 101, 115, 115, 97, // ws.onmessa + 103, 101, 32, 61, 32, 102, 117, 110, 99, 116, 105, 111, // ge = functio + 110, 40, 101, 118, 41, 32, 123, 10, 32, 32, 32, 32, // n(ev) {. + 32, 32, 32, 32, 116, 114, 121, 32, 123, 10, 32, 32, // try {. + 32, 32, 32, 32, 32, 32, 32, 32, 118, 97, 114, 32, // var + 109, 115, 103, 32, 61, 32, 74, 83, 79, 78, 46, 112, // msg = JSON.p + 97, 114, 115, 101, 40, 101, 118, 46, 100, 97, 116, 97, // arse(ev.data + 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, // );. + 32, 80, 117, 98, 83, 117, 98, 46, 112, 117, 98, 108, // PubSub.publ + 105, 115, 104, 40, 109, 115, 103, 41, 59, 10, 32, 32, // ish(msg);. + 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, 105, // // i + 102, 32, 40, 109, 115, 103, 46, 110, 97, 109, 101, 32, // f (msg.name + 33, 61, 32, 39, 109, 101, 116, 114, 105, 99, 115, 39, // != 'metrics' + 41, 32, 99, 111, 110, 115, 111, 108, 101, 46, 108, 111, // ) console.lo + 103, 40, 39, 119, 115, 45, 62, 39, 44, 32, 109, 115, // g('ws->', ms + 103, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, // g);. + 125, 32, 99, 97, 116, 99, 104, 32, 40, 101, 41, 32, // } catch (e) + 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // {. + 99, 111, 110, 115, 111, 108, 101, 46, 108, 111, 103, 40, // console.log( + 39, 73, 110, 118, 97, 108, 105, 100, 32, 119, 115, 32, // 'Invalid ws + 102, 114, 97, 109, 101, 58, 39, 44, 32, 101, 118, 46, // frame:', ev. + 100, 97, 116, 97, 41, 59, 32, 32, 47, 47, 32, 101, // data); // e + 115, 108, 105, 110, 116, 45, 100, 105, 115, 97, 98, 108, // slint-disabl + 101, 45, 108, 105, 110, 101, 10, 32, 32, 32, 32, 32, // e-line. + 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 125, // }. } + 59, 10, 32, 32, 32, 32, 32, 32, 119, 115, 46, 111, // ;. ws.o + 110, 99, 108, 111, 115, 101, 32, 61, 32, 102, 117, 110, // nclose = fun + 99, 116, 105, 111, 110, 40, 41, 32, 123, 10, 32, 32, // ction() {. + 32, 32, 32, 32, 32, 32, 99, 108, 101, 97, 114, 84, // clearT + 105, 109, 101, 111, 117, 116, 40, 116, 105, 100, 41, 59, // imeout(tid); + 10, 32, 32, 32, 32, 32, 32, 32, 32, 116, 105, 100, // . tid + 32, 61, 32, 115, 101, 116, 84, 105, 109, 101, 111, 117, // = setTimeou + 116, 40, 114, 101, 99, 111, 110, 110, 101, 99, 116, 44, // t(reconnect, + 32, 49, 48, 48, 48, 41, 59, 10, 32, 32, 32, 32, // 1000);. + 32, 32, 32, 32, 99, 111, 110, 115, 111, 108, 101, 46, // console. + 108, 111, 103, 40, 39, 119, 115, 32, 100, 105, 115, 99, // log('ws disc + 111, 110, 110, 101, 99, 116, 101, 100, 39, 41, 59, 10, // onnected');. + 32, 32, 32, 32, 32, 32, 125, 59, 10, 32, 32, 32, // };. + 32, 125, 59, 10, 32, 32, 32, 32, 114, 101, 99, 111, // };. reco + 110, 110, 101, 99, 116, 40, 41, 59, 10, 32, 32, 125, // nnect();. } + 59, 10, 10, 32, 32, 99, 111, 110, 115, 116, 32, 108, // ;.. const l + 111, 103, 105, 110, 32, 61, 32, 102, 117, 110, 99, 116, // ogin = funct + 105, 111, 110, 40, 117, 41, 32, 123, 10, 32, 32, 32, // ion(u) {. + 32, 100, 111, 99, 117, 109, 101, 110, 116, 46, 99, 111, // document.co + 111, 107, 105, 101, 32, 61, 32, 96, 97, 99, 99, 101, // okie = `acce + 115, 115, 95, 116, 111, 107, 101, 110, 61, 36, 123, 117, // ss_token=${u + 46, 116, 111, 107, 101, 110, 125, 59, 32, 83, 101, 99, // .token}; Sec + 117, 114, 101, 44, 32, 72, 116, 116, 112, 79, 110, 108, // ure, HttpOnl + 121, 59, 32, 83, 97, 109, 101, 83, 105, 116, 101, 61, // y; SameSite= + 76, 97, 120, 59, 32, 112, 97, 116, 104, 61, 47, 59, // Lax; path=/; + 32, 109, 97, 120, 45, 97, 103, 101, 61, 51, 54, 48, // max-age=360 + 48, 96, 59, 10, 32, 32, 32, 32, 115, 101, 116, 85, // 0`;. setU + 115, 101, 114, 40, 117, 46, 117, 115, 101, 114, 41, 59, // ser(u.user); + 10, 32, 32, 32, 32, 119, 97, 116, 99, 104, 40, 41, // . watch() + 59, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, // ;. return + 32, 103, 101, 116, 99, 111, 110, 102, 105, 103, 40, 41, // getconfig() + 59, 10, 32, 32, 125, 59, 10, 10, 32, 32, 99, 111, // ;. };.. co + 110, 115, 116, 32, 108, 111, 103, 111, 117, 116, 32, 61, // nst logout = + 32, 101, 118, 32, 61, 62, 32, 123, 10, 32, 32, 32, // ev => {. + 32, 100, 111, 99, 117, 109, 101, 110, 116, 46, 99, 111, // document.co + 111, 107, 105, 101, 32, 61, 32, 96, 97, 99, 99, 101, // okie = `acce + 115, 115, 95, 116, 111, 107, 101, 110, 61, 59, 32, 83, // ss_token=; S + 101, 99, 117, 114, 101, 44, 32, 72, 116, 116, 112, 79, // ecure, HttpO + 110, 108, 121, 59, 32, 83, 97, 109, 101, 83, 105, 116, // nly; SameSit + 101, 61, 76, 97, 120, 59, 32, 112, 97, 116, 104, 61, // e=Lax; path= + 47, 59, 32, 109, 97, 120, 45, 97, 103, 101, 61, 48, // /; max-age=0 + 96, 59, 10, 32, 32, 32, 32, 115, 101, 116, 85, 115, // `;. setUs + 101, 114, 40, 39, 39, 41, 59, 10, 32, 32, 125, 59, // er('');. }; + 10, 10, 32, 32, 117, 115, 101, 69, 102, 102, 101, 99, // .. useEffec + 116, 40, 40, 41, 32, 61, 62, 32, 123, 10, 32, 32, // t(() => {. + 32, 32, 47, 47, 32, 67, 97, 108, 108, 101, 100, 32, // // Called + 111, 110, 99, 101, 32, 97, 116, 32, 105, 110, 105, 116, // once at init + 32, 116, 105, 109, 101, 10, 32, 32, 32, 32, 80, 117, // time. Pu + 98, 83, 117, 98, 46, 115, 117, 98, 115, 99, 114, 105, // bSub.subscri + 98, 101, 40, 109, 115, 103, 32, 61, 62, 32, 109, 115, // be(msg => ms + 103, 46, 110, 97, 109, 101, 32, 61, 61, 32, 39, 99, // g.name == 'c + 111, 110, 102, 105, 103, 39, 32, 38, 38, 32, 103, 101, // onfig' && ge + 116, 99, 111, 110, 102, 105, 103, 40, 41, 41, 59, 10, // tconfig());. + 32, 32, 32, 32, 102, 101, 116, 99, 104, 40, 39, 47, // fetch('/ + 97, 112, 105, 47, 108, 111, 103, 105, 110, 39, 44, 32, // api/login', + 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, 39, 125, 125, 41, 10, 32, 32, 32, 32, // : ''}}). + 32, 32, 32, 32, 46, 116, 104, 101, 110, 40, 114, 32, // .then(r + 61, 62, 32, 114, 46, 106, 115, 111, 110, 40, 41, 41, // => r.json()) + 10, 32, 32, 32, 32, 32, 32, 32, 32, 46, 116, 104, // . .th + 101, 110, 40, 114, 32, 61, 62, 32, 108, 111, 103, 105, // en(r => logi + 110, 40, 114, 41, 41, 10, 32, 32, 32, 32, 32, 32, // n(r)). + 32, 32, 46, 99, 97, 116, 99, 104, 40, 101, 114, 114, // .catch(err + 32, 61, 62, 32, 115, 101, 116, 85, 115, 101, 114, 40, // => setUser( + 39, 39, 41, 41, 59, 10, 32, 32, 125, 44, 32, 91, // ''));. }, [ + 93, 41, 59, 10, 10, 32, 32, 105, 102, 32, 40, 33, // ]);.. if (! + 117, 115, 101, 114, 41, 32, 114, 101, 116, 117, 114, 110, // user) return + 32, 104, 116, 109, 108, 96, 60, 36, 123, 76, 111, 103, // html`<${Log + 105, 110, 125, 32, 108, 111, 103, 105, 110, 61, 36, 123, // in} login=${ + 108, 111, 103, 105, 110, 125, 32, 47, 62, 96, 59, 10, // login} />`;. + 10, 32, 32, 114, 101, 116, 117, 114, 110, 32, 104, 116, // . return ht + 109, 108, 96, 10, 60, 36, 123, 78, 97, 118, 125, 32, // ml`.<${Nav} + 117, 115, 101, 114, 61, 36, 123, 117, 115, 101, 114, 125, // user=${user} + 32, 108, 111, 103, 111, 117, 116, 61, 36, 123, 108, 111, // logout=${lo + 103, 111, 117, 116, 125, 32, 47, 62, 10, 60, 100, 105, // gout} />.. < + 100, 105, 118, 32, 99, 108, 97, 115, 115, 61, 34, 114, // div class="r + 111, 119, 34, 62, 10, 32, 32, 32, 32, 60, 100, 105, // ow">. <${H + 101, 114, 111, 125, 32, 47, 62, 60, 47, 100, 105, 118, // ero} />
.
<${Char + 116, 125, 32, 47, 62, 60, 47, 100, 105, 118, 62, 10, // t} />
. + 32, 32, 32, 32, 60, 100, 105, 118, 32, 99, 108, 97, //
. ${ + 117, 115, 101, 114, 32, 61, 61, 32, 39, 97, 100, 109, // user == 'adm + 105, 110, 39, 32, 38, 38, 32, 104, 40, 67, 111, 110, // in' && h(Con + 102, 105, 103, 117, 114, 97, 116, 105, 111, 110, 44, 32, // figuration, + 123, 99, 111, 110, 102, 105, 103, 125, 41, 125, 10, 32, // {config})}. + 32, 32, 32, 60, 47, 100, 105, 118, 62, 10, 32, 32, //
. + 32, 32, 60, 100, 105, 118, 32, 99, 108, 97, 115, 115, //
<${Messages + 125, 32, 99, 111, 110, 102, 105, 103, 61, 36, 123, 99, // } config=${c + 111, 110, 102, 105, 103, 125, 32, 47, 62, 60, 47, 100, // onfig} />.
+ 10, 60, 47, 100, 105, 118, 62, 96, 59, 10, 125, 59, // .
`;.}; + 10, 10, 119, 105, 110, 100, 111, 119, 46, 111, 110, 108, // ..window.onl + 111, 97, 100, 32, 61, 32, 40, 41, 32, 61, 62, 32, // oad = () => + 114, 101, 110, 100, 101, 114, 40, 104, 40, 65, 112, 112, // render(h(App + 41, 44, 32, 100, 111, 99, 117, 109, 101, 110, 116, 46, // ), document. + 98, 111, 100, 121, 41, 59, 10, 0 // body);. }; -static const unsigned char v5[] = { +static const unsigned char v4[] = { 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.... @@ -2788,6 +3776,195 @@ static const unsigned char v5[] = { 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; @@ -2795,11 +3972,12 @@ static const struct packed_file { size_t size; time_t mtime; } packed_files[] = { - {"/web_root/index.html", v1, sizeof(v1), 1659483223}, - {"/web_root/main.js", v2, sizeof(v2), 1660395584}, - {"/web_root/preact.min.js", v3, sizeof(v3), 1659483223}, - {"/web_root/style.css", v4, sizeof(v4), 1659483223}, - {"/web_root/user.png", v5, sizeof(v5), 1659483223}, + {"/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), 1661519046}, + {"/web_root/user.png", v4, sizeof(v4), 1655487950}, + {"/web_root/style.css", v5, sizeof(v5), 1655487950}, + {"/web_root/index.html", v6, sizeof(v6), 1655487950}, {NULL, NULL, 0, 0} }; diff --git a/examples/device-dashboard/web_root/main.js b/examples/device-dashboard/web_root/main.js index 010bb7ae..2ecfb2d0 100644 --- a/examples/device-dashboard/web_root/main.js +++ b/examples/device-dashboard/web_root/main.js @@ -339,14 +339,14 @@ const App = function(props) { }; const login = function(u) { - document.cookie = `access_token=${u.token};path=/;max-age=3600`; + document.cookie = `access_token=${u.token}; Secure, HttpOnly; SameSite=Lax; path=/; max-age=3600`; setUser(u.user); watch(); return getconfig(); }; const logout = ev => { - document.cookie = `access_token=;path=/;max-age=0`; + document.cookie = `access_token=; Secure, HttpOnly; SameSite=Lax; path=/; max-age=0`; setUser(''); };