diff --git a/examples/arduino/teensy41-http/teensy41-http.ino b/examples/arduino/teensy41-http/teensy41-http.ino
index f9368630..90a6d54e 100644
--- a/examples/arduino/teensy41-http/teensy41-http.ino
+++ b/examples/arduino/teensy41-http/teensy41-http.ino
@@ -25,7 +25,7 @@ uint64_t mg_millis(void) { // Let Mongoose use our uptime function
// Simple HTTP server that runs on port 8000
// Mongoose event handler function, gets called by the mg_mgr_poll()
// See https://mongoose.ws/documentation/#2-minute-integration-guide
-static void simple_http_listener(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void simple_http_listener(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_HTTP_MSG) {
// The MG_EV_HTTP_MSG event means HTTP request. `hm` holds parsed request,
// see https://mongoose.ws/documentation/#struct-mg_http_message
diff --git a/examples/arduino/w5500-http/w5500-http.ino b/examples/arduino/w5500-http/w5500-http.ino
index 93959785..abf3fe75 100644
--- a/examples/arduino/w5500-http/w5500-http.ino
+++ b/examples/arduino/w5500-http/w5500-http.ino
@@ -38,7 +38,7 @@ void setup() {
// Setup HTTP listener. Respond "ok" on any HTTP request
mg_http_listen(
&mgr, "http://0.0.0.0",
- [](struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+ [](struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_HTTP_MSG) mg_http_reply(c, 200, "", "ok\n");
},
&mgr);
diff --git a/examples/arduino/w5500-mqtt/net.c b/examples/arduino/w5500-mqtt/net.c
index 07f90dd9..e756410b 100644
--- a/examples/arduino/w5500-mqtt/net.c
+++ b/examples/arduino/w5500-mqtt/net.c
@@ -15,7 +15,7 @@ void mqtt_publish(const char *message) {
if (mqtt_connection) mg_mqtt_pub(mqtt_connection, &opts);
}
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_MQTT_OPEN) {
MG_INFO(("%lu CONNECTED to %s", c->id, MQTT_SERVER));
struct mg_mqtt_opts opts = {};
diff --git a/examples/captive-dns-server/main.c b/examples/captive-dns-server/main.c
index e69e501b..db60f53e 100644
--- a/examples/captive-dns-server/main.c
+++ b/examples/captive-dns-server/main.c
@@ -20,7 +20,7 @@ uint8_t answer[] = {
1, 2, 3, 4 // 4 bytes - IP address
};
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_OPEN) {
c->is_hexdumping = 1;
} else if (ev == MG_EV_READ) {
@@ -41,7 +41,6 @@ static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
}
mg_iobuf_del(&c->recv, 0, c->recv.len);
}
- (void) fn_data;
(void) ev_data;
}
diff --git a/examples/device-dashboard/net.c b/examples/device-dashboard/net.c
index 91d29511..2d8d3b1c 100644
--- a/examples/device-dashboard/net.c
+++ b/examples/device-dashboard/net.c
@@ -51,7 +51,7 @@ int ui_event_next(int no, struct ui_event *e) {
// SNTP connection event handler. When we get a response from an SNTP server,
// adjust s_boot_timestamp. We'll get a valid time from that point on
-static void sfn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void sfn(struct mg_connection *c, int ev, void *ev_data) {
uint64_t *expiration_time = (uint64_t *) c->data;
if (ev == MG_EV_OPEN) {
*expiration_time = mg_millis() + 3000; // Store expiration time in 3s
@@ -62,7 +62,6 @@ static void sfn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
} else if (ev == MG_EV_POLL) {
if (mg_millis() > *expiration_time) c->is_closing = 1;
}
- (void) fn_data;
}
static void timer_sntp_fn(void *param) { // SNTP timer function. Sync up time
@@ -262,9 +261,9 @@ static void handle_device_eraselast(struct mg_connection *c) {
}
// HTTP request handler function
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_ACCEPT) {
- if (fn_data != NULL) { // TLS listener!
+ if (c->fn_data != NULL) { // TLS listener!
struct mg_tls_opts opts = {0};
opts.cert = mg_unpacked("/certs/server_cert.pem");
opts.key = mg_unpacked("/certs/server_key.pem");
diff --git a/examples/embedded-filesystem/main.c b/examples/embedded-filesystem/main.c
index 3a42fdf3..c1813266 100644
--- a/examples/embedded-filesystem/main.c
+++ b/examples/embedded-filesystem/main.c
@@ -6,7 +6,7 @@
const char *s_listening_url = "http://0.0.0.0:8000";
// HTTP request handler function
-void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+void fn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_HTTP_MSG) {
struct mg_http_serve_opts opts = {
.root_dir = "/web_root",
@@ -14,7 +14,6 @@ void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
};
mg_http_serve_dir(c, ev_data, &opts);
}
- (void) fn_data;
}
int main(void) {
diff --git a/examples/embedded-filesystem/packed_fs.c b/examples/embedded-filesystem/packed_fs.c
index 5af52123..f2dbd6e7 100644
--- a/examples/embedded-filesystem/packed_fs.c
+++ b/examples/embedded-filesystem/packed_fs.c
@@ -12,51 +12,552 @@ const char *mg_unpack(const char *, size_t *, time_t *);
#endif
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, 109, // head>. .
- 32, 32, 32, 32, 60, 109, 101, 116, 97, 32, 104, 116, // .
- 32, 32, 32, 32, 60, 109, 101, 116, 97, 32, 104, 116, // .
- 32, 32, 60, 109, 101, 116, 97, 32, 110, 97, 109, 101, // .
- 32, 32, 32, 32, 32, 32, 32, 60, 116, 105, 116, 108, // Mongoose E
- 109, 98, 101, 100, 100, 101, 100, 32, 70, 105, 108, 101, // mbedded File
- 115, 121, 116, 101, 109, 32, 101, 120, 97, 109, 112, 108, // sytem exampl
- 101, 60, 47, 116, 105, 116, 108, 101, 62, 10, 32, 32, // e.
- 32, 32, 60, 108, 105, 110, 107, 32, 114, 101, 108, 61, // . <
- 47, 104, 101, 97, 100, 62, 10, 32, 32, 60, 98, 111, // /head>. .
- 32, 60, 115, 99, 114, 105, 112, 116, 32, 116, 121, 112, // .<
- 47, 104, 116, 109, 108, 62, 10, 0 // /html>.
+ 31, 139, 8, 8, 219, 27, 244, 98, 0, 3, 112, 114, // .......b..pr
+ 101, 97, 99, 116, 46, 109, 105, 110, 46, 106, 115, 0, // eact.min.js.
+ 157, 91, 123, 119, 219, 182, 146, 255, 127, 63, 69, 164, // .[{w.....?E.
+ 211, 163, 18, 43, 68, 177, 147, 182, 187, 75, 5, 213, // ...+D....K..
+ 105, 29, 183, 238, 109, 234, 230, 38, 105, 123, 123, 85, // i...m..&i{{U
+ 93, 30, 138, 132, 44, 214, 20, 169, 242, 97, 91, 53, // ]...,....a[5
+ 245, 221, 247, 55, 3, 128, 164, 108, 185, 247, 236, 158, // ...7...l....
+ 36, 34, 30, 131, 1, 48, 47, 204, 12, 144, 155, 176, // $"...0/.....
+ 120, 166, 101, 38, 3, 89, 201, 92, 22, 178, 150, 169, // x.e&.Y......
+ 186, 223, 203, 68, 205, 23, 50, 82, 47, 194, 40, 169, // ...D..2R/.(.
+ 26, 125, 231, 205, 252, 178, 185, 106, 178, 102, 219, 124, // .}.....j.f.|
+ 34, 154, 98, 187, 110, 174, 138, 36, 110, 242, 219, 178, // ".b.n..$n...
+ 217, 100, 81, 147, 85, 183, 77, 146, 233, 121, 180, 94, // .dQ.U.M..y.^
+ 52, 127, 230, 121, 243, 175, 188, 136, 155, 164, 210, 69, // 4..y.......E
+ 248, 34, 153, 174, 234, 44, 170, 146, 60, 123, 86, 122, // ."...,..<{Vz
+ 152, 72, 220, 175, 242, 194, 187, 193, 172, 193, 179, 36, // .H.........$
+ 123, 150, 9, 61, 15, 22, 42, 195, 207, 180, 208, 85, // {..=..*....U
+ 93, 100, 207, 244, 190, 29, 177, 242, 180, 184, 39, 216, // ]d........'.
+ 76, 233, 201, 54, 44, 116, 86, 93, 230, 177, 158, 102, // L..6,tV]...f
+ 163, 81, 54, 41, 244, 38, 191, 209, 103, 235, 36, 141, // .Q6).&..g.$.
+ 1, 214, 13, 10, 61, 222, 141, 25, 216, 109, 105, 74, // ....=....miJ
+ 243, 214, 52, 103, 32, 134, 215, 122, 55, 84, 170, 158, // ..4g ..z7T..
+ 229, 42, 152, 215, 11, 127, 88, 232, 21, 215, 11, 83, // .*....X....S
+ 79, 241, 195, 165, 105, 178, 242, 194, 226, 170, 222, 96, // O...i......`
+ 230, 114, 146, 234, 236, 170, 90, 127, 249, 114, 52, 242, // .r....Z..r4.
+ 210, 73, 68, 19, 99, 69, 234, 81, 255, 171, 153, 158, // .ID.cE.Q....
+ 68, 97, 154, 118, 35, 229, 75, 225, 87, 66, 14, 221, // Da.v#.K.WB..
+ 26, 49, 87, 181, 219, 234, 124, 245, 140, 118, 82, 167, // .1W...|..vR.
+ 233, 64, 101, 147, 88, 175, 194, 58, 173, 222, 21, 249, // .@e.X..:....
+ 182, 20, 237, 98, 31, 180, 223, 228, 73, 252, 236, 68, // ...b....I..D
+ 41, 69, 75, 164, 117, 208, 74, 15, 97, 208, 34, 28, // )EK.u.J.a.".
+ 45, 183, 160, 69, 202, 124, 165, 89, 122, 68, 218, 130, // -..E.|.YzD..
+ 23, 150, 225, 134, 80, 32, 17, 45, 201, 215, 114, 75, // ....P .-..rK
+ 72, 252, 74, 130, 70, 62, 0, 244, 202, 47, 100, 16, // H.J.F>.../d.
+ 92, 251, 132, 1, 5, 247, 93, 250, 39, 248, 213, 174, // ......].'...
+ 26, 251, 102, 105, 40, 70, 174, 109, 109, 10, 81, 158, // ..fi(F.mm.Q.
+ 149, 85, 81, 71, 85, 94, 116, 64, 55, 220, 71, 52, // .UQGU^t@7.G4
+ 31, 143, 3, 191, 222, 187, 21, 59, 106, 220, 100, 96, // .......;j.d`
+ 52, 177, 153, 11, 94, 42, 100, 218, 173, 126, 77, 114, // 4...^*d..~Mr
+ 225, 196, 165, 229, 68, 215, 31, 27, 73, 171, 214, 73, // ....D...I..I
+ 57, 225, 237, 40, 236, 150, 42, 88, 74, 165, 239, 42, // 9..(..*XJ..*
+ 213, 131, 189, 49, 176, 96, 180, 89, 80, 38, 90, 196, // ...1.`.YP&Z.
+ 65, 48, 67, 47, 62, 146, 126, 240, 247, 122, 146, 100, // A0C/>.~..z.d
+ 177, 190, 251, 145, 228, 114, 124, 42, 120, 11, 211, 86, // .....r|*x..V
+ 158, 167, 217, 107, 205, 64, 70, 14, 166, 217, 120, 44, // ...k.@F...x,
+ 44, 218, 129, 242, 2, 197, 157, 243, 108, 33, 28, 207, // ,.......l!..
+ 9, 165, 118, 211, 113, 197, 82, 225, 136, 160, 232, 9, // ..v.q.R.....
+ 21, 104, 61, 102, 218, 110, 3, 187, 86, 73, 100, 48, // .h=f.n..VId0
+ 237, 230, 211, 60, 95, 59, 23, 85, 34, 163, 124, 84, // ...<_;.U".|T
+ 52, 189, 209, 100, 25, 150, 90, 49, 151, 50, 117, 242, // 4..d..Z1.2u.
+ 255, 220, 192, 253, 35, 132, 102, 47, 203, 66, 135, 215, // ....#.f/.B..
+ 123, 187, 61, 90, 229, 190, 91, 244, 134, 22, 237, 13, // {.=Z..[.....
+ 104, 76, 12, 49, 230, 175, 26, 156, 0, 115, 53, 217, // hL.1.....s5.
+ 214, 37, 49, 120, 52, 26, 92, 161, 185, 24, 143, 155, // .%1x4.......
+ 166, 24, 40, 150, 242, 101, 14, 4, 250, 189, 6, 23, // ..(..e......
+ 138, 36, 187, 2, 140, 231, 21, 71, 123, 154, 38, 23, // .$.....G{.&.
+ 222, 85, 79, 226, 175, 188, 206, 244, 232, 41, 99, 86, // .UO......)cV
+ 149, 219, 169, 208, 40, 151, 121, 81, 121, 14, 222, 72, // ....(.yQy..H
+ 69, 79, 20, 110, 240, 111, 249, 60, 115, 165, 189, 144, // EO.n.o...D....J.
+ 208, 20, 246, 246, 155, 230, 206, 193, 99, 113, 128, 35, // ........cq.#
+ 225, 8, 58, 208, 64, 0, 99, 64, 59, 199, 20, 248, // ..:.@.c@;...
+ 28, 194, 83, 135, 216, 59, 57, 25, 230, 142, 124, 163, // ..S..;9...|.
+ 209, 48, 51, 229, 211, 133, 128, 11, 2, 250, 227, 104, // .03........h
+ 167, 168, 100, 155, 134, 145, 246, 94, 156, 133, 91, 176, // ..d....^..[.
+ 71, 127, 242, 130, 166, 132, 61, 67, 95, 149, 191, 205, // G.....=C_...
+ 111, 117, 113, 6, 23, 201, 19, 152, 89, 207, 30, 180, // ouq.....Y...
+ 77, 202, 52, 193, 88, 68, 11, 89, 91, 132, 22, 164, // M.4.XD.Y[...
+ 176, 163, 248, 69, 16, 195, 181, 121, 54, 46, 16, 158, // ...E...y6...
+ 200, 96, 86, 53, 13, 4, 47, 142, 207, 111, 32, 139, // .`V5../..o .
+ 111, 147, 178, 210, 240, 5, 192, 202, 98, 246, 193, 63, // o.......b..?
+ 135, 152, 192, 54, 153, 40, 233, 41, 128, 86, 1, 134, // ...6.(.).V..
+ 113, 152, 93, 233, 34, 175, 203, 116, 247, 65, 87, 223, // q.]."..t.AW.
+ 101, 128, 187, 248, 248, 195, 91, 50, 134, 198, 59, 206, // e.....[2..;.
+ 197, 193, 246, 238, 32, 96, 215, 243, 11, 127, 189, 192, // .... `......
+ 6, 215, 67, 209, 245, 148, 151, 225, 134, 183, 93, 14, // ..C.......].
+ 123, 248, 215, 20, 98, 17, 50, 16, 46, 197, 66, 92, // {...b.2...B.
+ 25, 108, 216, 184, 114, 21, 46, 191, 35, 255, 218, 213, // .l..r...#...
+ 99, 248, 54, 105, 30, 198, 182, 206, 220, 210, 162, 42, // c.6i.......*
+ 118, 247, 15, 5, 53, 152, 90, 101, 217, 71, 97, 21, // v...5.Ze.Ga.
+ 113, 120, 176, 63, 102, 66, 65, 72, 235, 185, 66, 136, // qx.?fBAH..B.
+ 6, 167, 3, 214, 249, 97, 216, 99, 106, 209, 50, 213, // .....a.cj.2.
+ 40, 200, 87, 21, 196, 111, 89, 87, 218, 106, 136, 37, // (.W..oYW.j.%
+ 104, 175, 89, 244, 253, 218, 115, 154, 154, 67, 141, 116, // h.Y...s..C.t
+ 110, 92, 246, 241, 224, 116, 225, 101, 19, 77, 28, 152, // n....t.e.M..
+ 217, 47, 57, 241, 253, 144, 245, 195, 145, 81, 39, 255, // ./9......Q'.
+ 118, 20, 29, 203, 189, 176, 93, 38, 50, 50, 90, 183, // v.....]&22Z.
+ 146, 161, 220, 202, 27, 235, 155, 45, 229, 25, 121, 103, // .......-..yg
+ 240, 200, 204, 9, 114, 96, 27, 131, 73, 47, 58, 19, // ....r`..I/:.
+ 189, 24, 108, 106, 232, 68, 254, 220, 26, 180, 138, 76, // ..lj.D.....L
+ 9, 38, 204, 156, 91, 21, 27, 101, 42, 175, 77, 248, // .&..[..e*.M.
+ 80, 171, 121, 130, 131, 222, 91, 177, 153, 93, 194, 172, // P.y...[..]..
+ 145, 146, 77, 153, 89, 108, 2, 30, 115, 227, 156, 229, // ..M.Yl..s...
+ 138, 252, 31, 227, 45, 157, 41, 140, 62, 119, 49, 218, // ....-.).>w1.
+ 71, 242, 73, 70, 163, 124, 190, 34, 183, 0, 135, 145, // G.IF.|."....
+ 90, 205, 206, 102, 103, 6, 214, 28, 185, 62, 117, 33, // Z..fg....>u!
+ 70, 165, 197, 68, 179, 43, 133, 19, 141, 86, 100, 214, // F..D.+...Vd.
+ 26, 145, 255, 172, 66, 252, 156, 251, 222, 16, 163, 170, // ....B.......
+ 156, 230, 29, 66, 134, 206, 71, 163, 243, 73, 219, 2, // ...B..G..I..
+ 142, 82, 208, 48, 51, 67, 67, 149, 233, 91, 176, 113, // .R.03CC..[.q
+ 41, 239, 132, 239, 245, 219, 98, 110, 147, 97, 159, 98, // ).....bn.a.b
+ 234, 28, 117, 51, 94, 125, 37, 228, 217, 104, 116, 54, // ..u3^}%..ht6
+ 41, 235, 165, 23, 18, 156, 137, 60, 151, 40, 149, 85, // )......<.(.U
+ 88, 105, 200, 158, 45, 177, 34, 135, 109, 48, 122, 39, // Xi..-.".m0z'
+ 105, 149, 153, 202, 229, 150, 215, 75, 129, 16, 55, 173, // i......K..7.
+ 217, 119, 50, 98, 78, 117, 248, 20, 30, 127, 149, 69, // .w2bNu.....E
+ 228, 220, 164, 243, 201, 149, 174, 222, 32, 240, 185, 209, // ........ ...
+ 241, 7, 234, 248, 166, 200, 55, 156, 12, 104, 71, 184, // ......7..hG.
+ 33, 109, 3, 71, 25, 92, 132, 117, 42, 77, 163, 124, // !m.G...u*M.|
+ 26, 145, 183, 116, 192, 66, 222, 40, 187, 57, 248, 132, // ...t.B.(.9..
+ 22, 173, 220, 10, 179, 206, 191, 90, 138, 89, 44, 109, // .......Z.Y,m
+ 124, 179, 205, 51, 72, 244, 47, 73, 154, 254, 128, 192, // |..3H./I....
+ 13, 6, 248, 88, 171, 231, 246, 215, 235, 124, 147, 196, // ...X.....|..
+ 237, 8, 80, 200, 248, 142, 71, 250, 69, 123, 128, 252, // ..P...G.E{..
+ 251, 117, 45, 161, 8, 55, 79, 44, 239, 189, 142, 52, // .u-..7O,...4
+ 198, 88, 200, 191, 232, 52, 210, 49, 8, 141, 83, 230, // .X...4.1..S.
+ 112, 149, 235, 188, 78, 227, 51, 55, 232, 167, 109, 204, // p...N.37..m.
+ 60, 24, 156, 42, 245, 84, 175, 163, 52, 208, 53, 77, // <..*.T..4.5M
+ 192, 65, 160, 98, 137, 190, 17, 247, 143, 132, 202, 200, // .A.b........
+ 5, 43, 226, 205, 192, 130, 89, 22, 67, 140, 78, 5, // .+....Y.C.N.
+ 163, 186, 161, 195, 226, 129, 218, 94, 115, 249, 218, 148, // .......^s...
+ 39, 176, 194, 231, 33, 236, 102, 63, 140, 213, 54, 46, // '...!.f?..6.
+ 87, 129, 216, 27, 60, 107, 235, 166, 140, 70, 169, 165, // W...i........
+ 117, 155, 249, 75, 196, 194, 174, 156, 164, 71, 155, 51, // u..K.....G.3
+ 184, 239, 2, 188, 161, 38, 113, 79, 189, 17, 37, 48, // .....&qO..%0
+ 241, 65, 60, 163, 197, 163, 84, 17, 128, 248, 120, 100, // .A<...T...xd
+ 2, 174, 237, 116, 199, 83, 74, 54, 161, 76, 154, 216, // ...t.SJ6.L..
+ 237, 160, 157, 159, 109, 195, 190, 159, 180, 185, 245, 250, // ....m.......
+ 41, 155, 214, 49, 40, 217, 49, 88, 131, 118, 70, 140, // )..1(.1X.vF.
+ 227, 246, 236, 221, 89, 231, 64, 110, 16, 163, 176, 215, // ....Y.@n....
+ 125, 67, 46, 183, 218, 113, 222, 106, 112, 226, 84, 180, // }C...q.jp.T.
+ 102, 191, 121, 186, 121, 93, 187, 144, 101, 99, 50, 56, // f.y.y]..ec28
+ 136, 109, 235, 249, 134, 67, 189, 146, 60, 40, 136, 232, // .m...C..<(..
+ 110, 6, 127, 38, 199, 194, 201, 33, 4, 42, 255, 21, // n..&...!.*..
+ 194, 226, 9, 165, 115, 249, 108, 23, 216, 129, 42, 37, // ....s.l...*%
+ 141, 50, 177, 146, 201, 57, 244, 18, 177, 157, 245, 86, // .2...9.....V
+ 59, 231, 155, 196, 121, 196, 57, 245, 73, 4, 232, 74, // ;...y.9.I..J
+ 147, 247, 79, 65, 152, 23, 139, 105, 166, 138, 217, 131, // ..OA...i....
+ 110, 155, 20, 187, 252, 0, 7, 180, 170, 182, 254, 139, // n...........
+ 23, 183, 183, 183, 147, 219, 87, 147, 188, 184, 122, 241, // ......W...z.
+ 242, 228, 228, 228, 5, 237, 19, 234, 226, 31, 31, 232, // ............
+ 237, 100, 12, 69, 24, 141, 98, 23, 209, 201, 136, 100, // .d.E..b....d
+ 181, 191, 176, 53, 126, 99, 196, 69, 196, 107, 168, 95, // ...5~c.E.k._
+ 104, 170, 158, 173, 196, 221, 65, 84, 147, 92, 91, 78, // h.....AT..[N
+ 102, 70, 231, 104, 233, 37, 116, 64, 121, 45, 83, 154, // fF.h.%t@y-S.
+ 38, 21, 147, 39, 188, 113, 56, 8, 241, 147, 125, 131, // &..'.q8...}.
+ 168, 37, 152, 227, 211, 154, 174, 114, 136, 163, 155, 215, // .%.....r....
+ 217, 36, 116, 46, 107, 217, 103, 221, 122, 222, 239, 1, // .$t.k.g.z...
+ 47, 38, 25, 184, 69, 119, 10, 135, 173, 236, 112, 77, // /&..Ew....pM
+ 61, 216, 166, 144, 120, 188, 37, 85, 30, 141, 182, 36, // =...x.%U...$
+ 179, 213, 198, 250, 39, 84, 106, 154, 174, 13, 72, 18, // ....'Tj...H.
+ 183, 60, 193, 36, 105, 171, 106, 219, 13, 134, 7, 142, // .<.$i.j.....
+ 8, 137, 104, 218, 79, 190, 30, 134, 145, 180, 155, 194, // ..h.O.......
+ 94, 222, 56, 107, 69, 242, 137, 88, 220, 94, 230, 112, // ^.8kE..X.^.p
+ 88, 206, 55, 38, 77, 67, 113, 168, 185, 242, 64, 252, // X.7&MCq...@.
+ 86, 44, 160, 159, 29, 130, 76, 228, 20, 118, 56, 111, // V,....L..v8o
+ 180, 13, 109, 51, 0, 2, 217, 211, 200, 135, 76, 2, // ..m3......L.
+ 87, 137, 214, 58, 186, 214, 177, 173, 210, 44, 28, 55, // W..:.....,.7
+ 16, 14, 59, 59, 77, 108, 103, 223, 67, 29, 99, 185, // ..;;Mlg.C.c.
+ 70, 43, 172, 230, 86, 184, 100, 104, 27, 29, 109, 156, // F+..V.dh..m.
+ 30, 182, 150, 24, 118, 56, 147, 143, 50, 145, 27, 31, // ....v8..2...
+ 172, 112, 138, 109, 130, 39, 157, 92, 101, 63, 46, 127, // .p.m.'..e?..
+ 215, 17, 71, 84, 59, 214, 246, 122, 86, 35, 152, 241, // ..GT;..zV#..
+ 43, 147, 9, 163, 60, 16, 244, 55, 58, 84, 225, 141, // +...<..7:T..
+ 234, 52, 184, 203, 62, 145, 50, 146, 161, 100, 85, 158, // .4..>.2..dU.
+ 194, 44, 122, 118, 215, 32, 92, 12, 84, 46, 108, 192, // .,zv. ..T.l.
+ 240, 216, 136, 4, 9, 195, 134, 147, 44, 92, 5, 101, // ........,..e
+ 176, 145, 171, 66, 151, 165, 53, 31, 131, 13, 64, 46, // ...B..5...@.
+ 176, 27, 139, 9, 49, 201, 218, 192, 74, 242, 79, 90, // ....1...J.OZ
+ 66, 30, 155, 193, 246, 81, 234, 146, 167, 176, 117, 139, // B....Q....u.
+ 207, 141, 100, 140, 182, 66, 56, 197, 254, 113, 162, 232, // ..d..B8..q..
+ 163, 181, 211, 108, 113, 143, 93, 175, 204, 180, 199, 225, // ...lq.].....
+ 93, 84, 23, 148, 216, 81, 193, 99, 59, 123, 96, 229, // ]T...Q.c;{`.
+ 127, 114, 8, 237, 45, 35, 223, 188, 76, 234, 108, 99, // .r..-#..L.lc
+ 156, 211, 182, 8, 4, 146, 83, 97, 38, 59, 234, 229, // ......Sa&;..
+ 110, 6, 132, 54, 174, 72, 25, 36, 154, 163, 105, 62, // n..6.H.$..i>
+ 82, 10, 140, 197, 182, 77, 129, 218, 60, 90, 100, 18, // R....M.......|
+ 163, 48, 87, 7, 57, 241, 128, 239, 43, 140, 99, 193, // .0W.9...+.c.
+ 151, 222, 239, 160, 46, 129, 242, 6, 208, 175, 28, 29, // ............
+ 130, 117, 53, 244, 214, 134, 47, 243, 0, 17, 89, 77, // .u5.../...YM
+ 121, 240, 180, 187, 132, 169, 30, 93, 194, 240, 232, 217, // y......]....
+ 60, 95, 248, 181, 153, 170, 154, 172, 146, 162, 52, 190, // <_........4.
+ 158, 187, 30, 174, 250, 103, 128, 185, 167, 73, 236, 200, // .....g...I..
+ 28, 227, 106, 162, 213, 193, 64, 74, 252, 189, 241, 146, // ..j...@J....
+ 3, 50, 124, 99, 46, 170, 248, 2, 82, 221, 243, 229, // .2|c....R...
+ 171, 26, 226, 115, 54, 28, 215, 227, 49, 221, 215, 106, // ...s6...1..j
+ 9, 231, 178, 196, 225, 86, 248, 79, 92, 110, 57, 163, // .....V.O.n9.
+ 227, 101, 98, 47, 17, 204, 220, 36, 241, 1, 176, 69, // .eb/...$...E
+ 47, 171, 105, 159, 53, 15, 92, 87, 216, 10, 119, 129, // /.i.5..W..w.
+ 133, 240, 150, 242, 51, 4, 37, 143, 129, 170, 158, 31, // ....3.%.....
+ 239, 48, 238, 13, 228, 209, 136, 72, 245, 151, 210, 93, // .0.....H...]
+ 234, 26, 43, 194, 202, 195, 37, 114, 26, 217, 115, 66, // ..+...%r..sB
+ 8, 96, 177, 213, 203, 131, 177, 129, 187, 91, 156, 186, // .`.......[..
+ 71, 5, 199, 84, 102, 122, 188, 185, 191, 106, 76, 180, // G..Tfz...jL.
+ 229, 252, 92, 208, 187, 17, 150, 48, 103, 252, 50, 129, // .......0g.2.
+ 185, 75, 215, 157, 36, 240, 237, 237, 116, 123, 197, 29, // .K..$...t{..
+ 76, 28, 141, 57, 186, 154, 56, 246, 244, 51, 31, 176, // L..9..8..3..
+ 63, 112, 65, 77, 18, 80, 102, 196, 88, 253, 128, 123, // ?pAM.Pf.X..{
+ 237, 181, 51, 105, 193, 52, 227, 88, 102, 202, 158, 88, // ..3i.4.Xf..X
+ 192, 229, 136, 46, 80, 233, 164, 97, 227, 64, 237, 213, // ....P..a.@..
+ 131, 108, 143, 139, 82, 171, 99, 161, 241, 121, 81, 228, // .l..R.c..yQ.
+ 5, 59, 195, 37, 162, 12, 106, 245, 158, 134, 195, 102, // .;.%..j....f
+ 133, 204, 205, 253, 131, 179, 91, 193, 65, 128, 118, 70, // ......[.A.vF
+ 54, 136, 209, 61, 106, 37, 202, 181, 99, 243, 254, 117, // 6..=j%..c..u
+ 248, 121, 107, 133, 177, 95, 173, 178, 125, 181, 46, 242, // .yk.._..}...
+ 91, 4, 155, 123, 104, 232, 9, 60, 179, 46, 135, 227, // [..{h..<....
+ 22, 169, 14, 137, 100, 238, 229, 3, 27, 9, 177, 76, // ....d......L
+ 112, 26, 197, 149, 72, 121, 89, 80, 104, 236, 204, 181, // p...HyYPh...
+ 250, 174, 96, 146, 36, 29, 196, 209, 235, 39, 142, 147, // ..`.$....'..
+ 149, 54, 65, 29, 226, 200, 78, 64, 65, 20, 116, 150, // .6A...N@A.t.
+ 198, 251, 183, 215, 240, 237, 220, 20, 166, 103, 109, 205, // .........gm.
+ 6, 184, 153, 144, 27, 143, 154, 112, 136, 29, 236, 15, // .......p....
+ 220, 142, 244, 83, 218, 96, 144, 217, 162, 166, 236, 145, // ...S.`......
+ 126, 136, 88, 63, 133, 216, 38, 175, 214, 230, 54, 59, // ~.X?..&...6;
+ 63, 102, 46, 33, 173, 155, 164, 212, 51, 251, 237, 13, // ?f.!....3...
+ 174, 214, 58, 155, 44, 161, 1, 158, 235, 195, 193, 159, // ..:.,.......
+ 167, 55, 26, 113, 172, 15, 150, 124, 76, 54, 58, 175, // .7.q...|L6:.
+ 43, 105, 110, 219, 79, 96, 144, 79, 88, 243, 222, 202, // +in.O`.OX...
+ 75, 249, 139, 124, 143, 150, 239, 104, 214, 31, 77, 206, // K..|...h..M.
+ 80, 254, 108, 2, 114, 249, 71, 27, 181, 201, 175, 141, // P.l.r.G.....
+ 44, 203, 79, 84, 123, 162, 118, 15, 138, 126, 239, 34, // ,.OT{.v..~."
+ 173, 181, 177, 251, 107, 239, 82, 106, 249, 30, 14, 153, // ....k.Rj....
+ 32, 244, 60, 89, 165, 46, 209, 115, 1, 251, 196, 95, // ..!.....m.
+ 15, 231, 22, 225, 143, 241, 161, 219, 51, 136, 146, 154, // ........3...
+ 237, 176, 146, 195, 16, 134, 160, 231, 74, 18, 93, 88, // ........J.]X
+ 167, 169, 242, 88, 109, 146, 160, 4, 68, 65, 93, 127, // ...Xm...DA].
+ 14, 199, 25, 230, 26, 220, 73, 56, 226, 67, 89, 208, // ......I8.CY.
+ 79, 173, 232, 72, 74, 15, 160, 233, 246, 144, 159, 193, // O..HJ.......
+ 0, 95, 174, 242, 238, 237, 197, 191, 126, 43, 255, 243, // ._......~+..
+ 183, 12, 63, 141, 43, 124, 242, 226, 138, 31, 160, 136, // ..?.+|......
+ 89, 109, 54, 141, 224, 0, 81, 22, 229, 226, 29, 138, // Ym6...Q.....
+ 92, 204, 60, 219, 249, 138, 59, 177, 130, 151, 194, 127, // ..<...;.....
+ 105, 32, 134, 147, 201, 132, 82, 121, 57, 84, 196, 225, // i ....Ry9T..
+ 248, 12, 96, 39, 45, 4, 122, 6, 109, 215, 231, 242, // ..`'-.z.m...
+ 68, 194, 71, 192, 12, 213, 151, 234, 115, 122, 159, 155, // D.G.....sz..
+ 55, 205, 0, 166, 145, 88, 95, 145, 163, 99, 1, 43, // 7....X_..c.+
+ 0, 230, 28, 47, 169, 47, 56, 78, 234, 58, 128, 220, // ..././8N.:..
+ 117, 8, 166, 196, 158, 159, 78, 37, 175, 117, 247, 78, // u.....N%.u.N
+ 138, 222, 54, 210, 97, 97, 150, 144, 66, 33, 83, 47, // ..6.aa..B!S/
+ 17, 162, 21, 241, 8, 3, 162, 215, 122, 158, 44, 220, // ........z.,.
+ 152, 8, 99, 16, 242, 163, 101, 14, 167, 135, 7, 206, // ..c...e.....
+ 134, 175, 249, 185, 199, 204, 35, 4, 160, 116, 13, 215, // ......#..t..
+ 88, 189, 18, 126, 62, 86, 25, 75, 52, 64, 158, 63, // X..~>V.K4@.?
+ 183, 219, 31, 126, 105, 129, 29, 131, 0, 167, 178, 113, // ...~i......q
+ 78, 185, 214, 98, 150, 81, 38, 120, 70, 44, 51, 163, // N..b.Q&xF,3.
+ 63, 29, 126, 106, 238, 65, 134, 159, 154, 97, 5, 26, // ?.~j.A...a..
+ 91, 20, 52, 31, 208, 128, 74, 244, 216, 79, 181, 136, // [.4...J..O..
+ 63, 135, 205, 205, 45, 242, 225, 11, 110, 38, 167, 248, // ?...-...n&..
+ 245, 231, 192, 195, 99, 205, 250, 199, 244, 62, 133, 145, // ....c....>..
+ 56, 62, 214, 138, 114, 190, 132, 180, 150, 174, 98, 232, // 8>..r.....b.
+ 249, 18, 212, 172, 168, 3, 28, 27, 62, 27, 218, 69, // ........>..E
+ 253, 86, 181, 165, 172, 45, 21, 7, 171, 123, 105, 232, // .V...-...{i.
+ 208, 206, 49, 28, 180, 164, 192, 74, 63, 147, 118, 22, // ..1....J?.v.
+ 167, 67, 76, 194, 61, 167, 2, 48, 166, 251, 191, 15, // .CL.=..0....
+ 56, 74, 132, 251, 175, 17, 167, 179, 204, 39, 189, 220, // 8J.......'..
+ 155, 168, 49, 20, 83, 125, 183, 205, 139, 234, 62, 124, // ..1.S}....>|
+ 22, 150, 207, 214, 208, 60, 254, 86, 155, 84, 254, 64, // .....<.V.T.@
+ 37, 19, 157, 202, 152, 202, 109, 82, 72, 126, 67, 85, // %.....mRH~CU
+ 115, 79, 99, 51, 74, 242, 91, 106, 130, 91, 201, 81, // sOc3J.[j.[.Q
+ 142, 252, 211, 214, 222, 235, 184, 142, 48, 254, 111, 182, // ........0.o.
+ 126, 14, 239, 36, 170, 228, 247, 182, 250, 54, 220, 225, // ~..$.....6..
+ 252, 182, 141, 127, 111, 199, 172, 228, 63, 108, 249, 187, // ....o...?l..
+ 205, 86, 23, 56, 84, 110, 244, 69, 152, 197, 169, 150, // .V.8Tn.E....
+ 191, 218, 142, 31, 244, 38, 151, 255, 180, 149, 179, 48, // .....&.....0
+ 77, 151, 97, 116, 45, 181, 118, 45, 118, 85, 153, 107, // M.at-.v-vU.k
+ 232, 188, 93, 25, 184, 54, 206, 156, 124, 141, 179, 51, // ..]..6..|..3
+ 14, 139, 221, 126, 250, 31, 255, 11, 22, 19, 178, 116, // ...~.......t
+ 138, 51, 0, 0, 0 // .3..
};
static const unsigned char v2[] = {
+ 31, 139, 8, 8, 219, 27, 244, 98, 0, 3, 109, 97, // .......b..ma
+ 105, 110, 46, 106, 115, 0, 165, 86, 237, 110, 219, 54, // in.js..V.n.6
+ 20, 253, 239, 167, 184, 8, 6, 52, 65, 109, 41, 77, // .......4Am)M
+ 246, 1, 52, 138, 1, 55, 93, 129, 20, 93, 61, 204, // ..4..7]..]=.
+ 233, 218, 254, 43, 37, 210, 22, 91, 138, 84, 249, 97, // ...+%..[.T.a
+ 205, 11, 242, 46, 125, 150, 62, 217, 14, 37, 217, 177, // ....}.>..%..
+ 19, 103, 195, 218, 95, 166, 36, 222, 123, 15, 207, 185, // .g.._.$.{...
+ 247, 208, 143, 130, 19, 228, 188, 149, 133, 127, 116, 54, // ..........t6
+ 144, 85, 109, 172, 167, 107, 42, 135, 84, 250, 74, 13, // .Um..k*.T.J.
+ 201, 10, 205, 133, 165, 27, 154, 91, 83, 209, 163, 36, // .......[S..$
+ 173, 173, 96, 133, 79, 42, 169, 147, 143, 14, 33, 131, // ..`.O*....!.
+ 65, 97, 180, 243, 244, 142, 206, 105, 30, 116, 225, 165, // Aa.....i.t..
+ 209, 116, 120, 68, 215, 131, 1, 33, 218, 7, 171, 219, // .txD...!....
+ 84, 31, 240, 152, 113, 185, 164, 66, 49, 231, 206, 15, // T...q..B1...
+ 16, 229, 153, 212, 194, 30, 140, 241, 5, 223, 202, 147, // ............
+ 245, 39, 39, 218, 44, 7, 227, 201, 179, 233, 155, 43, // .''.,......+
+ 122, 51, 203, 210, 242, 164, 223, 181, 149, 193, 154, 166, // z3..........
+ 143, 189, 155, 89, 141, 126, 217, 124, 193, 183, 122, 220, // ...Y.~.|..z.
+ 45, 54, 111, 136, 46, 132, 99, 168, 79, 51, 51, 247, // -6o...c.O33.
+ 13, 179, 130, 94, 121, 158, 144, 116, 84, 10, 198, 63, // ...^y..tT..?
+ 7, 102, 189, 176, 130, 127, 253, 34, 53, 61, 15, 185, // .f....."5=..
+ 146, 122, 72, 127, 136, 58, 174, 10, 50, 115, 186, 180, // .zH..:..2s..
+ 66, 49, 205, 147, 219, 26, 105, 189, 83, 112, 231, 121, // B1....i.Sp.y
+ 26, 44, 40, 54, 118, 69, 214, 24, 239, 40, 103, 197, // .,(6vE...(g.
+ 39, 242, 134, 78, 142, 143, 127, 28, 82, 83, 10, 77, // '..N....RS.M
+ 191, 25, 189, 48, 6, 82, 188, 21, 57, 205, 132, 93, // ...0.R..9..]
+ 130, 243, 87, 50, 183, 204, 174, 190, 126, 225, 98, 41, // ..W2....~.b)
+ 148, 169, 43, 161, 61, 242, 68, 108, 192, 154, 229, 118, // ..+.=.Dl...v
+ 60, 216, 148, 152, 184, 189, 41, 22, 86, 52, 132, 51, // <.....).V4.3
+ 212, 166, 14, 138, 89, 233, 87, 4, 216, 84, 49, 200, // ....Y.W..T1.
+ 34, 56, 153, 184, 199, 151, 130, 230, 70, 41, 211, 72, // "8......F).H
+ 189, 160, 149, 96, 214, 13, 99, 204, 201, 241, 147, 211, // ...`..c.....
+ 13, 79, 13, 115, 36, 80, 27, 4, 184, 18, 145, 64, // .O.s$P.....@
+ 31, 5, 148, 58, 8, 146, 56, 210, 54, 196, 88, 97, // ...:..8.6.Xa
+ 3, 172, 182, 102, 41, 57, 90, 44, 212, 109, 107, 33, // ...f)9Z,.mk!
+ 208, 128, 142, 37, 83, 1, 105, 138, 0, 94, 42, 97, // ...%S.i..^*a
+ 221, 195, 76, 190, 21, 20, 245, 65, 158, 208, 150, 45, // ..L....A...-
+ 217, 18, 111, 42, 28, 182, 77, 180, 201, 128, 67, 233, // ..o*..M...C.
+ 21, 101, 114, 252, 2, 101, 130, 22, 244, 211, 241, 113, // .er..e.....q
+ 150, 202, 49, 112, 86, 53, 211, 82, 56, 194, 25, 26, // ..1pV5.R8...
+ 161, 84, 252, 173, 4, 151, 161, 106, 161, 186, 138, 225, // .T.....j....
+ 157, 147, 127, 11, 202, 131, 67, 71, 58, 39, 182, 240, // ......CG:'..
+ 16, 184, 44, 194, 134, 58, 244, 134, 138, 107, 52, 65, // ..,..:...k4A
+ 44, 239, 140, 10, 177, 87, 93, 236, 29, 70, 53, 179, // ,....W]..F5.
+ 128, 22, 64, 194, 220, 88, 10, 174, 13, 105, 9, 198, // ..@..X...i..
+ 204, 96, 193, 252, 94, 153, 16, 139, 49, 228, 148, 175, // .`..^...1...
+ 232, 245, 100, 54, 33, 150, 27, 102, 187, 192, 75, 141, // ..d6!..f..K.
+ 78, 212, 44, 214, 96, 138, 102, 53, 43, 4, 205, 124, // N.,.`.f5+..|
+ 251, 28, 195, 182, 96, 198, 221, 57, 52, 138, 194, 204, // ....`..94...
+ 165, 173, 186, 61, 96, 76, 250, 100, 135, 212, 150, 214, // ...=`L.d....
+ 153, 212, 200, 20, 53, 30, 110, 68, 46, 163, 200, 127, // ....5.nD....
+ 129, 44, 14, 44, 81, 85, 144, 206, 3, 128, 71, 229, // .,.,QU....G.
+ 208, 34, 210, 36, 64, 189, 214, 186, 61, 27, 151, 209, // .".$@...=...
+ 59, 242, 224, 5, 137, 42, 23, 60, 70, 186, 245, 76, // ;....*.4..`.z
+ 17, 96, 1, 163, 198, 148, 99, 119, 95, 227, 150, 170, // .`....cw_...
+ 238, 196, 194, 71, 138, 175, 74, 244, 164, 235, 224, 175, // ...G..J.....
+ 39, 61, 197, 168, 247, 102, 176, 94, 246, 139, 15, 103, // '=...f.^...g
+ 131, 155, 179, 181, 31, 189, 255, 110, 63, 58, 189, 239, // .......n?:..
+ 71, 155, 182, 187, 69, 109, 197, 83, 216, 211, 233, 55, // G...Em.S...7
+ 219, 83, 22, 212, 150, 52, 153, 146, 219, 66, 81, 6, // .S...4...BQ.
+ 85, 172, 152, 159, 31, 148, 222, 215, 238, 105, 154, 86, // U........i.V
+ 125, 251, 36, 141, 75, 15, 198, 123, 154, 41, 75, 217, // }.$.K..{.)K.
+ 78, 134, 17, 136, 189, 213, 166, 193, 62, 215, 53, 93, // N.......>.5]
+ 228, 27, 52, 55, 198, 126, 138, 131, 175, 58, 183, 217, // ..47.~...:..
+ 130, 146, 238, 96, 249, 79, 100, 75, 48, 152, 72, 3, // ...`.OdK0.H.
+ 84, 127, 94, 76, 95, 99, 117, 31, 201, 196, 242, 32, // T.^L_cu....
+ 181, 25, 181, 35, 233, 101, 174, 208, 177, 177, 211, 93, // ...#.e.....]
+ 215, 29, 121, 144, 202, 143, 96, 61, 177, 125, 219, 166, // ..y...`=.}..
+ 153, 94, 77, 40, 212, 156, 121, 225, 182, 51, 117, 30, // .^M(..y..3u.
+ 166, 217, 66, 180, 134, 195, 153, 43, 219, 60, 223, 14, // ..B....+.<..
+ 190, 138, 57, 18, 208, 1, 248, 213, 243, 126, 189, 151, // ..9......~..
+ 74, 152, 5, 32, 142, 12, 28, 230, 210, 92, 209, 239, // J.. ........
+ 138, 97, 52, 108, 245, 29, 165, 123, 13, 71, 198, 37, // .a4l...{.G.%
+ 32, 102, 75, 212, 233, 108, 47, 2, 83, 11, 11, 246, // fK..l/.S...
+ 160, 153, 91, 57, 47, 170, 214, 107, 96, 223, 163, 218, // ..[9/..k`...
+ 52, 208, 181, 146, 133, 53, 177, 155, 45, 76, 29, 198, // 4....5..-L..
+ 120, 23, 217, 255, 128, 182, 128, 42, 33, 143, 168, 210, // x......*!...
+ 162, 243, 136, 180, 250, 232, 192, 208, 203, 253, 200, 54, // ...........6
+ 109, 246, 146, 45, 217, 172, 176, 178, 246, 36, 244, 2, // m..-.....$..
+ 83, 213, 98, 188, 72, 47, 30, 63, 126, 128, 168, 44, // S.b.H/.?~..,
+ 189, 157, 131, 173, 17, 191, 63, 58, 63, 239, 222, 236, // ......?:?...
+ 89, 62, 158, 238, 248, 112, 55, 144, 249, 238, 13, 188, // Y>...p7.....
+ 59, 100, 237, 193, 37, 108, 102, 1, 30, 163, 213, 105, // ;d..%lf....i
+ 184, 164, 47, 77, 192, 17, 209, 139, 240, 29, 156, 24, // ../M........
+ 119, 74, 33, 97, 185, 235, 73, 191, 35, 107, 155, 131, // wJ!a..I.#k..
+ 139, 90, 153, 85, 119, 29, 150, 65, 115, 220, 169, 109, // .Z.Uw..As..m
+ 120, 37, 149, 106, 193, 192, 42, 37, 152, 107, 175, 224, // x%.j..*%.k..
+ 46, 79, 116, 35, 161, 151, 210, 26, 29, 123, 247, 78, // .Ot#.....{.N
+ 218, 7, 88, 248, 87, 163, 155, 212, 245, 142, 213, 161, // ..X.W.......
+ 80, 237, 246, 249, 93, 86, 62, 25, 63, 99, 14, 255, // P...]V>.?c..
+ 96, 126, 93, 235, 244, 66, 42, 209, 55, 17, 23, 21, // `~]..B*.7...
+ 38, 22, 91, 6, 89, 95, 236, 135, 235, 242, 240, 221, // &.[.Y_......
+ 209, 205, 160, 47, 186, 253, 250, 253, 230, 117, 15, 5, // .../.....u..
+ 255, 29, 184, 105, 18, 163, 149, 97, 28, 112, 96, 184, // ...i...a.p`.
+ 231, 227, 254, 207, 227, 97, 121, 8, 140, 71, 67, 226, // .....ay..GC.
+ 112, 255, 120, 232, 36, 55, 124, 117, 116, 54, 248, 7, // p.x.$7|ut6..
+ 71, 33, 75, 134, 124, 10, 0, 0, 0 // G!K.|...
+};
+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, 32, 104, // ;.import { h
44, 32, 104, 116, 109, 108, 44, 32, 114, 101, 110, 100, // , html, rend
@@ -282,7 +783,7 @@ static const unsigned char v2[] = {
112, 41, 44, 32, 100, 111, 99, 117, 109, 101, 110, 116, // p), document
46, 98, 111, 100, 121, 41, 59, 10, 0 // .body);.
};
-static const unsigned char v3[] = {
+static const unsigned char v4[] = {
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|
@@ -1384,7 +1885,147 @@ 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[] = {
+static const unsigned char v5[] = {
+ 60, 33, 68, 79, 67, 84, 89, 80, 69, 32, 104, 116, // .. <
+ 104, 101, 97, 100, 62, 10, 32, 32, 32, 32, 60, 109, // head>. .
+ 32, 32, 32, 32, 60, 109, 101, 116, 97, 32, 104, 116, // .
+ 32, 32, 32, 32, 60, 109, 101, 116, 97, 32, 104, 116, // .
+ 32, 32, 60, 109, 101, 116, 97, 32, 110, 97, 109, 101, // .
+ 32, 32, 32, 32, 32, 32, 32, 60, 116, 105, 116, 108, // Mongoose E
+ 109, 98, 101, 100, 100, 101, 100, 32, 70, 105, 108, 101, // mbedded File
+ 115, 121, 116, 101, 109, 32, 101, 120, 97, 109, 112, 108, // sytem exampl
+ 101, 60, 47, 116, 105, 116, 108, 101, 62, 10, 32, 32, // e.
+ 32, 32, 60, 108, 105, 110, 107, 32, 114, 101, 108, 61, // . <
+ 47, 104, 101, 97, 100, 62, 10, 32, 32, 60, 98, 111, // /head>. .
+ 32, 60, 115, 99, 114, 105, 112, 116, 32, 116, 121, 112, // .<
+ 47, 104, 116, 109, 108, 62, 10, 0 // /html>.
+};
+static const unsigned char v6[] = {
+ 31, 139, 8, 8, 219, 27, 244, 98, 0, 3, 105, 110, // .......b..in
+ 100, 101, 120, 46, 104, 116, 109, 108, 0, 141, 145, 77, // dex.html...M
+ 75, 3, 49, 16, 134, 239, 253, 21, 99, 206, 166, 139, // K.1.....c...
+ 55, 193, 205, 130, 212, 22, 60, 136, 30, 90, 208, 99, // 7.....<..Z.c
+ 154, 140, 205, 104, 62, 214, 205, 244, 99, 255, 189, 217, // ...h>...c...
+ 110, 133, 5, 17, 60, 205, 7, 47, 15, 51, 239, 91, // n...<../.3.[
+ 95, 61, 60, 47, 214, 111, 47, 75, 112, 28, 124, 51, // _=
+ 82, 102, 53, 76, 247, 11, 203, 208, 90, 0, 251, 237, // Rf5L....Z...
+ 44, 132, 66, 114, 251, 230, 89, 9, 61, 233, 201, 42, // ,.Br..Y.=..*
+ 183, 139, 233, 148, 178, 71, 132, 89, 141, 14, 229, 150, // .....G.Y....
+ 43, 52, 53, 74, 74, 210, 220, 120, 102, 26, 108, 67, // +45JJ..xf.lC
+ 113, 20, 29, 155, 158, 228, 107, 39, 196, 72, 139, 175, // q.....k'.H..
+ 229, 176, 44, 105, 5, 92, 16, 56, 175, 225, 222, 199, // ..,i...8....
+ 148, 55, 108, 148, 26, 28, 237, 6, 246, 244, 248, 163, // .7l.........
+ 119, 163, 171, 55, 18, 98, 60, 203, 192, 102, 80, 68, // w..7.b<..fPD
+ 241, 40, 117, 42, 213, 89, 211, 30, 17, 231, 35, 202, // .(u*.Y....#.
+ 157, 120, 255, 186, 46, 46, 234, 1, 157, 57, 188, 87, // .x.......9.W
+ 152, 65, 59, 139, 38, 160, 69, 34, 203, 208, 187, 220, // .A;.&.E"....
+ 177, 91, 79, 69, 102, 220, 185, 35, 62, 81, 226, 29, // .[OEf..#>Q..
+ 238, 219, 24, 60, 217, 220, 155, 41, 208, 149, 141, 51, // ...<...)...3
+ 90, 213, 243, 6, 173, 205, 168, 69, 107, 166, 127, 148, // Z......Ek...
+ 65, 88, 220, 35, 247, 7, 165, 252, 240, 160, 60, 185, // AX.#......<.
+ 232, 80, 51, 209, 131, 236, 35, 212, 149, 30, 106, 45, // .P3...#...j-
+ 253, 219, 210, 208, 245, 125, 178, 133, 33, 233, 70, 121, // .....}..!.Fy
+ 159, 163, 224, 79, 197, 234, 241, 158, 252, 212, 72, 197, // ...O......H.
+ 253, 163, 83, 224, 124, 43, 172, 251, 77, 28, 193, 21, // ..S.|+..M...
+ 153, 105, 70, 139, 127, 126, 63, 170, 87, 208, 173, 192, // .iF..~?.W...
+ 235, 43, 152, 6, 241, 73, 150, 59, 221, 6, 55, 13, // .+...I.;..7.
+ 87, 231, 148, 200, 66, 98, 151, 165, 155, 77, 148, 90, // W...Bb...M.Z
+ 135, 212, 115, 145, 22, 69, 72, 237, 66, 102, 91, 134, // ..s..EH.Bf[.
+ 240, 115, 8, 111, 54, 139, 90, 219, 144, 41, 159, 23, // .s.o6.Z..)..
+ 165, 54, 81, 38, 154, 171, 12, 225, 167, 229, 88, 79, // .6Q&......XO
+ 33, 83, 44, 167, 42, 66, 38, 143, 166, 138, 87, 95, // !S,.*B&...W_
+ 78, 21, 237, 62, 15, 245, 163, 3, 198, 41, 249, 22, // N..>.....)..
+ 221, 74, 89, 145, 225, 105, 252, 142, 224, 15, 15, 235, // .JY..i......
+ 64, 244, 132, 205, 183, 254, 228, 94, 227, 82, 244, 50, // @......^.R.2
+ 95, 112, 249, 84, 201, 201, 61, 74, 185, 212, 5, 63, // _p.T..=J...?
+ 252, 15, 225, 232, 67, 124, 39, 7, 0, 0, 0 // ....C|'...
+};
+static const unsigned char v8[] = {
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,
@@ -1546,10 +2187,14 @@ static const struct packed_file {
size_t size;
time_t mtime;
} packed_files[] = {
- {"/web_root/index.html", v1, sizeof(v1), 1692212839},
- {"/web_root/main.js", v2, sizeof(v2), 1692212839},
- {"/web_root/preact.min.js", v3, sizeof(v3), 1692212839},
- {"/web_root/style.css", v4, sizeof(v4), 1692212839},
+ {"/web_root/preact.min.js.gz", v1, sizeof(v1), 1660165083},
+ {"/web_root/main.js.gz", v2, sizeof(v2), 1660165083},
+ {"/web_root/main.js", v3, sizeof(v3), 1660586478},
+ {"/web_root/preact.min.js", v4, sizeof(v4), 1660586478},
+ {"/web_root/index.html", v5, sizeof(v5), 1660586478},
+ {"/web_root/index.html.gz", v6, sizeof(v6), 1660165083},
+ {"/web_root/style.css.gz", v7, sizeof(v7), 1660165083},
+ {"/web_root/style.css", v8, sizeof(v8), 1660586478},
{NULL, NULL, 0, 0}
};
diff --git a/examples/esp32/micropython/mongoose/main.c b/examples/esp32/micropython/mongoose/main.c
index 6a72d005..fa2914a2 100644
--- a/examples/esp32/micropython/mongoose/main.c
+++ b/examples/esp32/micropython/mongoose/main.c
@@ -8,9 +8,8 @@ static void t_fn(void *arg) { // Tick periodically
(void) arg;
}
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_HTTP_MSG) mg_http_reply(c, 200, "", "hi\n");
- (void) fn_data;
(void) ev_data;
}
diff --git a/examples/esp8266/http-client-server/src/main/main.c b/examples/esp8266/http-client-server/src/main/main.c
index 8399f37d..6aa027e8 100644
--- a/examples/esp8266/http-client-server/src/main/main.c
+++ b/examples/esp8266/http-client-server/src/main/main.c
@@ -9,8 +9,8 @@
#define SERVER_URL "http://0.0.0.0:80"
#define CLIENT_URL "http://info.cern.ch"
-// Event handler for an server (accepted) connection
-static void cb(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+// Event handler for a server (accepted) connection
+static void cb(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_HTTP_MSG) {
mg_http_reply(c, 200, "", "Hello from ESP!\n");
}
@@ -20,7 +20,7 @@ static void cb(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
// To enable TLS for HTTP,
// 1. Copy "ca.pem" file to the ESP8266 flash FS
// 2. Add TLS init snippet for the connection, see examples/http-client
-static void cb2(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void cb2(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_CONNECT) {
struct mg_str s = mg_url_host(CLIENT_URL);
mg_printf(c, "GET / HTTP/1.0\r\nHost: %.*s\r\n\r\n", (int) s.len, s.ptr);
diff --git a/examples/file-upload-html-form/main.c b/examples/file-upload-html-form/main.c
index 8fa06e20..ce08a515 100644
--- a/examples/file-upload-html-form/main.c
+++ b/examples/file-upload-html-form/main.c
@@ -16,7 +16,7 @@
//
// Also, consider changing -DMG_IO_SIZE=SOME_BIG_VALUE to increase IO buffer
// increment when reading data.
-static void cb(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void cb(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_HTTP_MSG) {
struct mg_http_message *hm = (struct mg_http_message *) ev_data;
MG_INFO(("New request to: [%.*s], body size: %lu", (int) hm->uri.len,
@@ -35,7 +35,6 @@ static void cb(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
mg_http_serve_dir(c, ev_data, &opts);
}
}
- (void) fn_data;
}
int main(void) {
diff --git a/examples/file-upload-multiple-posts/main.c b/examples/file-upload-multiple-posts/main.c
index b1b8c4b9..8895da52 100644
--- a/examples/file-upload-multiple-posts/main.c
+++ b/examples/file-upload-multiple-posts/main.c
@@ -6,7 +6,7 @@
// HTTP request handler function. It implements the following endpoints:
// /upload - Saves the next file chunk
// all other URI - serves web_root/ directory
-static void cb(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void cb(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_HTTP_MSG) {
struct mg_http_message *hm = (struct mg_http_message *) ev_data;
if (mg_http_match_uri(hm, "/upload")) {
@@ -25,7 +25,6 @@ static void cb(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
mg_http_serve_dir(c, ev_data, &opts);
}
}
- (void) fn_data;
}
int main(void) {
diff --git a/examples/file-upload-single-post/main.c b/examples/file-upload-single-post/main.c
index 982e918e..b9bd6423 100644
--- a/examples/file-upload-single-post/main.c
+++ b/examples/file-upload-single-post/main.c
@@ -11,7 +11,7 @@
// HTTP request handler function. It implements the following endpoints:
// /upload - Saves the next file chunk
// all other URI - serves web_root/ directory
-static void cb(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void cb(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_READ) {
// Parse the incoming data ourselves. If we can parse the request,
// store two size_t variables in the c->data: expected len and recv len.
@@ -38,7 +38,7 @@ static void cb(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
}
}
}
- (void) fn_data, (void) ev_data;
+ (void) ev_data;
}
int main(void) {
diff --git a/examples/http-client/main.c b/examples/http-client/main.c
index a1f76cdd..965b2207 100644
--- a/examples/http-client/main.c
+++ b/examples/http-client/main.c
@@ -15,7 +15,7 @@ static const char *s_post_data = NULL; // POST data
static const uint64_t s_timeout_ms = 1500; // Connect timeout in milliseconds
// Print HTTP response and signal that we're done
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_OPEN) {
// Connection created. Store connect expiration time in c->data
*(uint64_t *) c->data = mg_millis() + s_timeout_ms;
@@ -50,9 +50,9 @@ static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
struct mg_http_message *hm = (struct mg_http_message *) ev_data;
printf("%.*s", (int) hm->message.len, hm->message.ptr);
c->is_draining = 1; // Tell mongoose to close this connection
- *(bool *) fn_data = true; // Tell event loop to stop
+ *(bool *) c->fn_data = true; // Tell event loop to stop
} else if (ev == MG_EV_ERROR) {
- *(bool *) fn_data = true; // Error, tell event loop to stop
+ *(bool *) c->fn_data = true; // Error, tell event loop to stop
}
}
diff --git a/examples/http-proxy-client/main.c b/examples/http-proxy-client/main.c
index 35adb96b..aea5d000 100644
--- a/examples/http-proxy-client/main.c
+++ b/examples/http-proxy-client/main.c
@@ -10,8 +10,8 @@
#include "mongoose.h"
// Print HTTP response and signal that we're done
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
- const char *url = fn_data;
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
+ const char *url = c->fn_data;
static bool connected;
if (ev == MG_EV_HTTP_MSG) {
struct mg_http_message *hm = (struct mg_http_message *) ev_data;
diff --git a/examples/http-restful-server/main.c b/examples/http-restful-server/main.c
index 9e2b76d4..b00c5d1e 100644
--- a/examples/http-restful-server/main.c
+++ b/examples/http-restful-server/main.c
@@ -56,8 +56,8 @@ static const char *s_tls_key =
// We use the same event handler function for HTTP and HTTPS connections
// fn_data is NULL for plain HTTP, and non-NULL for HTTPS
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
- if (ev == MG_EV_ACCEPT && fn_data != NULL) {
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
+ if (ev == MG_EV_ACCEPT && c->fn_data != NULL) {
struct mg_tls_opts opts = {
#ifdef TLS_TWOWAY
.ca = mg_str(s_tls_ca),
@@ -89,7 +89,6 @@ static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
mg_http_serve_dir(c, ev_data, &opts);
}
}
- (void) fn_data;
}
int main(void) {
diff --git a/examples/http-reverse-proxy/main.c b/examples/http-reverse-proxy/main.c
index 2d7d47c1..d61225d0 100644
--- a/examples/http-reverse-proxy/main.c
+++ b/examples/http-reverse-proxy/main.c
@@ -36,8 +36,8 @@ static void forward_request(struct mg_http_message *hm,
(int) hm->uri.len, hm->uri.ptr));
}
-static void fn2(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
- struct mg_connection *c2 = (struct mg_connection *) fn_data;
+static void fn2(struct mg_connection *c, int ev, void *ev_data) {
+ struct mg_connection *c2 = (struct mg_connection *) c->fn_data;
if (ev == MG_EV_READ) {
// All incoming data from the backend, forward to the client
if (c2 != NULL) mg_send(c2, c->recv.buf, c->recv.len);
@@ -48,8 +48,8 @@ static void fn2(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
(void) ev_data;
}
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
- struct mg_connection *c2 = fn_data;
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
+ struct mg_connection *c2 = c->fn_data;
if (ev == MG_EV_HTTP_MSG) {
struct mg_http_message *hm = (struct mg_http_message *) ev_data;
// Client request, create backend connection Note that we're passing
diff --git a/examples/http-server/main.c b/examples/http-server/main.c
index f2efbc5f..9e1e19ae 100644
--- a/examples/http-server/main.c
+++ b/examples/http-server/main.c
@@ -18,7 +18,7 @@ static void signal_handler(int signo) {
// Event handler for the listening connection.
// Simply serve static files from `s_root_dir`
-static void cb(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void cb(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_HTTP_MSG) {
struct mg_http_message *hm = ev_data, tmp = {0};
struct mg_str unknown = mg_str_n("?", 1), *cl;
@@ -33,7 +33,6 @@ static void cb(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
(int) hm->uri.len, hm->uri.ptr, (int) tmp.uri.len, tmp.uri.ptr,
(int) cl->len, cl->ptr));
}
- (void) fn_data;
}
static void usage(const char *prog) {
diff --git a/examples/http-streaming-client/main.c b/examples/http-streaming-client/main.c
index 5c46a1a8..de4c9082 100644
--- a/examples/http-streaming-client/main.c
+++ b/examples/http-streaming-client/main.c
@@ -15,7 +15,7 @@
static const char *s_url = "http://info.cern.ch";
// Print HTTP response and signal that we're done
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_CONNECT) {
// Connected to server. Extract host name from URL
struct mg_str host = mg_url_host(s_url);
@@ -40,7 +40,7 @@ static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
data[1] += c->recv.len;
fwrite(c->recv.buf, 1, c->recv.len, stdout);
c->recv.len = 0; // And cleanup the receive buffer. Streming!
- if (data[1] >= data[0]) * (bool *) fn_data = true;
+ if (data[1] >= data[0]) * (bool *) c->fn_data = true;
} else {
struct mg_http_message hm;
int n = mg_http_parse((char *) c->recv.buf, c->recv.len, &hm);
@@ -50,13 +50,13 @@ static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
data[0] = n + hm.body.len;
data[1] = c->recv.len;
c->recv.len = 0; // Cleanup receive buffer
- if (data[1] >= data[0]) * (bool *) fn_data = true;
+ if (data[1] >= data[0]) * (bool *) c->fn_data = true;
}
}
} else if (ev == MG_EV_CLOSE) {
- *(bool *) fn_data = true; // tell event loop to stop
+ *(bool *) c->fn_data = true; // tell event loop to stop
} else if (ev == MG_EV_ERROR) {
- *(bool *) fn_data = true; // Error, tell event loop to stop
+ *(bool *) c->fn_data = true; // Error, tell event loop to stop
}
(void) ev_data;
}
diff --git a/examples/huge-response/main.c b/examples/huge-response/main.c
index 209face5..3cc164fc 100644
--- a/examples/huge-response/main.c
+++ b/examples/huge-response/main.c
@@ -41,7 +41,7 @@ static size_t printdata(mg_pfn_t out, void *ptr, va_list *ap) {
return n;
}
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_HTTP_MSG) {
struct mg_http_message *hm = ev_data;
if (mg_http_match_uri(hm, "/api/data")) {
@@ -66,7 +66,6 @@ static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
mg_http_serve_dir(c, hm, &opts);
}
}
- (void) fn_data;
}
static void timer_fn(void *arg) {
diff --git a/examples/json-rpc-over-websocket/main.c b/examples/json-rpc-over-websocket/main.c
index 308aa397..2a4ce3aa 100644
--- a/examples/json-rpc-over-websocket/main.c
+++ b/examples/json-rpc-over-websocket/main.c
@@ -26,7 +26,7 @@ static void rpc_mul(struct mg_rpc_req *r) {
// This RESTful server implements the following endpoints:
// /websocket - upgrade to Websocket, and implement websocket echo server
// any other URI serves static files from s_web_root
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_OPEN) {
// c->is_hexdumping = 1;
} else if (ev == MG_EV_WS_OPEN) {
@@ -51,7 +51,6 @@ static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
if (io.buf) mg_ws_send(c, (char *) io.buf, io.len, WEBSOCKET_OP_TEXT);
mg_iobuf_free(&io);
}
- (void) fn_data;
}
static void timer_fn(void *arg) {
diff --git a/examples/live-log/main.c b/examples/live-log/main.c
index b4b198b2..204e0c85 100644
--- a/examples/live-log/main.c
+++ b/examples/live-log/main.c
@@ -7,7 +7,7 @@
// /api/log/static - returns contents of log.txt file
// /api/log/live - hangs forever, and returns live log messages
// all other URI - serves web_root/ directory
-static void cb(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void cb(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_HTTP_MSG) {
struct mg_http_message *hm = (struct mg_http_message *) ev_data;
if (mg_http_match_uri(hm, "/api/log/static")) {
@@ -21,7 +21,6 @@ static void cb(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
mg_http_serve_dir(c, ev_data, &opts);
}
}
- (void) fn_data;
}
static void log_message(const char *filename, const char *message) {
diff --git a/examples/microchip/same54-xpro/mqtt-client/main.c b/examples/microchip/same54-xpro/mqtt-client/main.c
index 0988574a..8656f4d4 100644
--- a/examples/microchip/same54-xpro/mqtt-client/main.c
+++ b/examples/microchip/same54-xpro/mqtt-client/main.c
@@ -31,7 +31,7 @@ void mg_random(void *buf, size_t len) { // Use on-board RNG
}
}
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_OPEN) {
MG_INFO(("%lu CREATED", c->id));
// c->is_hexdumping = 1;
@@ -66,7 +66,6 @@ static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
MG_INFO(("%lu CLOSED", c->id));
s_conn = NULL; // Mark that we're closed
}
- (void) fn_data;
}
// Timer function - recreate client connection if it is closed
diff --git a/examples/micropython/mongoose/main.c b/examples/micropython/mongoose/main.c
index c600b2ab..c3c413f4 100644
--- a/examples/micropython/mongoose/main.c
+++ b/examples/micropython/mongoose/main.c
@@ -8,9 +8,8 @@ static void t_fn(void *arg) { // Tick periodically
(void) arg;
}
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_HTTP_MSG) mg_http_reply(c, 200, "", "hi\n");
- (void) fn_data;
(void) ev_data;
}
diff --git a/examples/mip-pcap/main.c b/examples/mip-pcap/main.c
index 81935ad4..87b5679b 100644
--- a/examples/mip-pcap/main.c
+++ b/examples/mip-pcap/main.c
@@ -42,20 +42,20 @@ static size_t pcap_rx(void *buf, size_t len, struct mg_tcpip_if *ifp) {
return received;
}
-static void fn2(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void fn2(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_HTTP_MSG) {
struct mg_http_message *hm = (struct mg_http_message *) ev_data;
MG_DEBUG(("Got response (%d) %.*s...", (int) hm->message.len, 12,
hm->message.ptr));
c->is_draining = 1;
} else if (ev == MG_EV_CONNECT) {
- mg_printf(c, "GET %s HTTP/1.1\r\n\r\n", mg_url_uri((char *) fn_data));
+ mg_printf(c, "GET %s HTTP/1.1\r\n\r\n", mg_url_uri((char *) c->fn_data));
} else if (ev == MG_EV_CLOSE) {
- free(fn_data);
+ free(c->fn_data);
}
}
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_HTTP_MSG) {
struct mg_http_message *hm = (struct mg_http_message *) ev_data;
if (mg_http_match_uri(hm, "/api/debug")) {
@@ -75,7 +75,7 @@ static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
hm->message.ptr);
}
}
- (void) ev_data, (void) fn_data;
+ (void) ev_data;
}
int main(int argc, char *argv[]) {
diff --git a/examples/modbus-dashboard/net.c b/examples/modbus-dashboard/net.c
index d261708f..aef60afd 100644
--- a/examples/modbus-dashboard/net.c
+++ b/examples/modbus-dashboard/net.c
@@ -40,7 +40,7 @@ uint64_t mg_now(void) {
// SNTP connection event handler. When we get a response from an SNTP server,
// adjust s_boot_timestamp. We'll get a valid time from that point on
-static void sfn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void sfn(struct mg_connection *c, int ev, void *ev_data) {
uint64_t *expiration_time = (uint64_t *) c->data;
if (ev == MG_EV_OPEN) {
*expiration_time = mg_millis() + 3000; // Store expiration time in 3s
@@ -51,7 +51,6 @@ static void sfn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
} else if (ev == MG_EV_POLL) {
if (mg_millis() > *expiration_time) c->is_closing = 1;
}
- (void) fn_data;
}
// SNTP timer function. Sync up time
@@ -99,7 +98,7 @@ static void handle_settings_get(struct mg_connection *c) {
}
// Modbus handler function
-static void mfn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void mfn(struct mg_connection *c, int ev, void *ev_data) {
struct conndata *cd = (struct conndata *) c->data;
if (ev == MG_EV_READ) {
MG_INFO(("%lu RECEIVED %lu", c->id, c->recv.len));
@@ -117,7 +116,7 @@ static void mfn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
c->is_closing = 1;
}
}
- (void) ev_data, (void) fn_data;
+ (void) ev_data;
}
static void send8(struct mg_connection *c, uint8_t val) {
@@ -242,10 +241,10 @@ static size_t print_mb_resp(void (*out)(char, void *), void *ptr, va_list *ap) {
}
// HTTP request handler function
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
struct conndata *cd = (struct conndata *) c->data;
if (ev == MG_EV_ACCEPT) {
- if (fn_data != NULL) { // TLS listener!
+ if (c->fn_data != NULL) { // TLS listener!
struct mg_tls_opts opts = {0};
opts.cert = mg_unpacked("/certs/server_cert.pem");
opts.key = mg_unpacked("/certs/server_key.pem");
diff --git a/examples/modbus-dashboard/packed_fs.c b/examples/modbus-dashboard/packed_fs.c
index 11aebf70..010c3156 100644
--- a/examples/modbus-dashboard/packed_fs.c
+++ b/examples/modbus-dashboard/packed_fs.c
@@ -12,647 +12,649 @@ const char *mg_unpack(const char *, size_t *, time_t *);
#endif
static const unsigned char v1[] = {
- 31, 139, 8, 8, 215, 103, 114, 101, 0, 3, 98, 117, // .....gre..bu
- 110, 100, 108, 101, 46, 106, 115, 0, 173, 60, 139, 114, // ndle.js..<.r
- 219, 56, 146, 191, 18, 105, 83, 90, 98, 132, 200, 118, // .8...iSZb..v
- 102, 178, 119, 71, 25, 81, 37, 30, 79, 156, 153, 60, // f.wG.Q%.O..<
- 188, 118, 30, 187, 171, 209, 170, 40, 10, 178, 56, 166, // .v.....(..8.
- 64, 153, 132, 228, 120, 76, 221, 183, 95, 119, 227, 65, // @...xL.._w.A
- 82, 166, 231, 246, 182, 174, 42, 17, 65, 60, 27, 141, // R.....*.A<..
- 126, 163, 233, 109, 148, 63, 81, 92, 115, 201, 167, 60, // ~..m.?Q.s..<
- 231, 25, 79, 248, 134, 167, 60, 22, 247, 59, 30, 137, // ..O...<..;..
- 241, 132, 23, 226, 32, 138, 19, 93, 202, 111, 193, 40, // .... ..].o.(
- 44, 202, 171, 82, 149, 235, 242, 41, 43, 243, 245, 178, // ,..R...)+...
- 188, 202, 147, 121, 153, 221, 22, 229, 74, 197, 165, 210, // ...y....J...
- 183, 101, 162, 228, 56, 94, 78, 202, 223, 179, 172, 252, // .e..8^N.....
- 103, 150, 207, 203, 68, 203, 60, 58, 72, 134, 139, 141, // g...D.<:H...
- 138, 117, 146, 169, 39, 139, 0, 22, 99, 247, 139, 44, // .u..'...c..,
- 15, 182, 176, 178, 124, 146, 168, 39, 154, 169, 177, 156, // ....|..'....
- 8, 13, 63, 195, 92, 234, 77, 174, 158, 168, 157, 31, // ..?...M.....
- 177, 14, 20, 187, 199, 190, 90, 168, 193, 58, 202, 165, // ......Z..:..
- 210, 31, 178, 185, 28, 234, 94, 79, 15, 114, 185, 202, // ......^O.r..
- 182, 242, 100, 153, 164, 115, 232, 86, 13, 90, 6, 180, // ..d..s.V.Z..
- 35, 51, 208, 110, 11, 182, 52, 196, 117, 19, 92, 83, // #3.n..4.u..S
- 178, 238, 181, 188, 235, 10, 145, 140, 114, 33, 199, 201, // ........r!..
- 36, 236, 230, 114, 65, 239, 153, 121, 223, 192, 15, 149, // $..rA..y....
- 134, 201, 34, 136, 242, 171, 205, 10, 86, 46, 6, 169, // ..".....V...
- 84, 87, 122, 249, 242, 121, 175, 23, 108, 6, 49, 46, // TWz..y..l.1.
- 12, 16, 137, 7, 237, 223, 143, 212, 32, 142, 210, 180, // ........ ...
- 26, 201, 159, 179, 112, 202, 120, 215, 193, 8, 107, 233, // ....p.x...k.
- 187, 181, 204, 22, 79, 96, 39, 106, 147, 166, 29, 161, // ....O`'j....
- 7, 115, 185, 136, 54, 169, 62, 207, 179, 117, 193, 60, // .s..6.>..u.<
- 176, 123, 245, 219, 44, 153, 63, 57, 20, 66, 32, 136, // .{..,.?9.B .
- 8, 7, 66, 218, 236, 3, 53, 204, 225, 114, 14, 184, // ..B...5..r..
- 216, 208, 217, 226, 42, 53, 36, 1, 202, 220, 161, 27, // ....*5$.....
- 68, 1, 138, 16, 164, 80, 241, 53, 78, 18, 78, 57, // D....P.5N.N9
- 224, 40, 204, 57, 96, 38, 204, 248, 116, 122, 29, 226, // .(.9`&..tz..
- 12, 80, 112, 207, 89, 120, 8, 191, 210, 189, 206, 67, // .Pp.Yx.....C
- 3, 26, 20, 99, 87, 183, 52, 133, 56, 83, 133, 206, // ...cW.4.8S..
- 55, 177, 206, 242, 170, 211, 150, 218, 16, 231, 253, 190, // 7...........
- 12, 147, 157, 63, 125, 83, 91, 161, 101, 171, 224, 196, // ...?}S[.e...
- 241, 188, 169, 16, 108, 24, 223, 84, 219, 216, 6, 236, // ....l..T....
- 222, 12, 188, 143, 55, 57, 210, 7, 77, 187, 171, 122, // ....79..M..z
- 172, 144, 132, 220, 220, 254, 208, 170, 246, 59, 67, 148, // .........;C.
- 122, 153, 20, 3, 218, 185, 128, 119, 124, 1, 168, 181, // z......w|...
- 252, 166, 133, 174, 250, 94, 153, 190, 64, 19, 6, 74, // .....^..@..J
- 205, 252, 196, 211, 233, 8, 90, 225, 193, 241, 7, 254, // ......Z.....
- 93, 15, 18, 53, 151, 223, 62, 66, 95, 214, 63, 98, // ]..5..>B_.?b
- 4, 214, 208, 147, 254, 80, 31, 43, 234, 100, 72, 102, // .....P.+.dHf
- 168, 251, 125, 102, 167, 237, 136, 64, 10, 106, 28, 235, // ..}f...@.j..
- 9, 115, 120, 144, 80, 33, 221, 114, 244, 98, 17, 214, // .sx.P!.r.b..
- 66, 83, 106, 128, 5, 132, 199, 44, 91, 109, 96, 230, // BSj....,[m`.
- 249, 137, 203, 97, 181, 158, 162, 245, 252, 90, 248, 18, // ...a.....Z..
- 27, 62, 197, 162, 129, 38, 30, 204, 162, 2, 138, 120, // .>...&.....x
- 160, 90, 28, 254, 155, 27, 184, 127, 48, 161, 217, 203, // .Z......0...
- 44, 151, 209, 245, 206, 110, 15, 161, 172, 157, 224, 53, // ,....n.....5
- 2, 29, 116, 112, 204, 28, 40, 158, 158, 162, 115, 8, // ..tp..(...s.
- 51, 231, 131, 245, 166, 88, 66, 115, 175, 215, 57, 129, // 3....XBs..9.
- 234, 188, 223, 47, 203, 172, 35, 136, 33, 102, 25, 76, // .../..#.!f.L
- 32, 47, 36, 156, 66, 158, 168, 43, 232, 19, 4, 89, // /$.B..+...Y
- 107, 75, 89, 38, 44, 56, 169, 49, 199, 73, 96, 176, // kKY&,8.1.I`.
- 228, 100, 35, 138, 16, 32, 99, 58, 190, 124, 80, 100, // .d#.. c:.|Pd
- 185, 6, 50, 28, 42, 1, 229, 101, 178, 208, 1, 27, // ..2.*..e....
- 50, 7, 157, 134, 74, 131, 18, 62, 21, 150, 216, 51, // 2...J..>...3
- 87, 72, 69, 144, 16, 114, 24, 244, 222, 226, 143, 228, // WHE..r......
- 65, 76, 40, 56, 71, 248, 166, 40, 116, 1, 200, 69, // AL(8G..(t..E
- 0, 18, 56, 97, 212, 75, 36, 248, 219, 63, 226, 159, // ..8a.K$..?..
- 130, 24, 192, 200, 56, 246, 86, 220, 204, 8, 91, 141, // ....8.V...[.
- 7, 217, 173, 146, 249, 229, 151, 55, 167, 169, 68, 97, // .......7..Da
- 195, 13, 190, 113, 216, 114, 52, 78, 39, 150, 25, 185, // ...q.r4N'...
- 33, 217, 20, 200, 34, 97, 97, 202, 169, 157, 241, 139, // !..."aa.....
- 96, 10, 43, 209, 155, 236, 136, 180, 215, 155, 65, 51, // `.+.......A3
- 227, 110, 19, 47, 53, 98, 217, 238, 152, 13, 9, 201, // .n./5b......
- 226, 176, 194, 212, 183, 224, 161, 254, 40, 12, 242, 22, // ........(...
- 124, 205, 151, 124, 203, 239, 248, 140, 95, 243, 19, 49, // |..|...._..1
- 237, 245, 136, 47, 202, 50, 226, 223, 196, 137, 35, 28, // .../.2....#.
- 196, 41, 110, 233, 26, 247, 190, 0, 194, 90, 28, 107, // .)n......Z.k
- 223, 214, 32, 170, 45, 33, 234, 122, 188, 152, 8, 179, // .. .-!.z....
- 23, 168, 209, 240, 6, 231, 215, 157, 101, 89, 42, 163, // ........eY*.
- 26, 15, 108, 161, 242, 33, 103, 108, 71, 56, 50, 236, // ..l..!glG82.
- 130, 56, 130, 131, 111, 246, 86, 155, 213, 76, 230, 205, // .8..o.V..L..
- 186, 89, 114, 149, 40, 93, 31, 63, 39, 104, 96, 91, // .Yr.(].?'h`[
- 244, 48, 101, 22, 190, 202, 243, 232, 110, 144, 20, 244, // .0e.....n...
- 12, 182, 12, 186, 173, 248, 189, 19, 54, 225, 118, 87, // ........6.vW
- 235, 78, 130, 56, 220, 194, 86, 102, 47, 15, 161, 227, // .N.8..Vf/...
- 150, 184, 149, 111, 141, 244, 129, 39, 200, 93, 248, 5, // ...o...'.]..
- 185, 59, 162, 95, 115, 126, 91, 162, 152, 112, 203, 72, // .;._s~[..p.H
- 252, 224, 155, 144, 84, 57, 35, 172, 204, 128, 64, 12, // ....T9#...@.
- 82, 68, 176, 20, 39, 6, 43, 203, 94, 143, 102, 19, // RD..'.+.^.f.
- 98, 137, 15, 124, 195, 165, 4, 190, 99, 129, 97, 63, // b..|....c.a?
- 75, 155, 67, 153, 22, 242, 9, 30, 198, 26, 206, 96, // K.C........`
- 125, 252, 109, 184, 6, 228, 227, 90, 52, 223, 26, 25, // }.m....Z4...
- 249, 143, 39, 187, 199, 94, 110, 54, 195, 207, 75, 58, // ..'..^n6..K:
- 168, 221, 39, 32, 146, 45, 95, 138, 101, 89, 198, 13, // ..' .-_.eY..
- 58, 225, 119, 98, 107, 152, 96, 45, 104, 175, 176, 200, // :.wbk.`-h...
- 18, 159, 29, 177, 6, 118, 0, 82, 9, 144, 44, 24, // .....v.R..,.
- 167, 202, 94, 239, 218, 240, 59, 189, 57, 220, 115, 91, // ..^...;.9.s[
- 185, 38, 108, 196, 101, 9, 200, 3, 2, 54, 52, 115, // .&l.e....64s
- 55, 178, 146, 122, 6, 211, 205, 196, 93, 171, 10, 54, // 7..z....]..6
- 27, 193, 13, 33, 21, 226, 126, 224, 57, 218, 146, 152, // ...!..~.9...
- 73, 197, 105, 176, 5, 88, 65, 146, 166, 226, 179, 217, // I.i..XA.....
- 7, 63, 1, 154, 78, 91, 167, 146, 118, 42, 162, 104, // .?..N[..v*.h
- 24, 205, 96, 24, 110, 9, 101, 30, 50, 87, 90, 51, // ..`.n.e.2WZ3
- 98, 64, 206, 66, 199, 84, 92, 5, 75, 6, 178, 199, // b@.B.T..K...
- 178, 129, 20, 51, 224, 130, 111, 195, 197, 179, 103, 32, // ...3..o...g
- 84, 104, 19, 120, 74, 208, 243, 15, 150, 171, 250, 225, // Th.xJ.......
- 12, 189, 158, 43, 9, 162, 141, 185, 135, 231, 85, 48, // ...+......U0
- 101, 3, 5, 74, 237, 50, 153, 165, 40, 249, 248, 215, // e..J.2..(...
- 0, 251, 114, 34, 24, 134, 26, 225, 154, 44, 15, 195, // ..r".....,..
- 135, 215, 117, 62, 124, 31, 32, 231, 241, 235, 113, 191, // ..u>|. ...q.
- 239, 31, 53, 145, 121, 106, 4, 65, 101, 221, 129, 68, // ..5.yj.Ae..D
- 48, 74, 0, 196, 223, 225, 48, 239, 245, 178, 99, 39, // 0J....0...c'
- 84, 134, 25, 204, 7, 194, 46, 31, 103, 19, 18, 123, // T.......g..{
- 72, 205, 48, 92, 180, 108, 113, 106, 116, 217, 41, 136, // H.0..lqjt.).
- 41, 156, 62, 252, 28, 160, 176, 65, 113, 51, 37, 202, // ).>....Aq3%.
- 209, 204, 219, 58, 53, 69, 125, 102, 20, 181, 107, 16, // ...:5E}f..k.
- 186, 44, 65, 186, 24, 82, 80, 109, 226, 2, 42, 131, // .,A..RPm..*.
- 38, 19, 43, 6, 86, 92, 145, 173, 100, 16, 184, 105, // &.+.V...d..i
- 81, 15, 153, 153, 119, 112, 176, 218, 41, 31, 198, 107, // Q...wp..)..k
- 43, 127, 174, 11, 68, 35, 8, 137, 218, 17, 183, 94, // +...D#.....^
- 102, 107, 60, 13, 150, 152, 39, 167, 223, 6, 27, 122, // fk<...'....z
- 3, 67, 150, 101, 222, 17, 89, 89, 154, 215, 188, 70, // .C.e..YY...F
- 62, 76, 133, 190, 27, 116, 200, 26, 148, 5, 26, 70, // >L...t.....F
- 13, 162, 245, 26, 84, 156, 177, 143, 115, 16, 241, 196, // ....T...s...
- 140, 180, 0, 29, 210, 70, 100, 160, 144, 14, 135, 80, // .....Fd....P
- 216, 52, 136, 2, 200, 244, 120, 234, 142, 42, 237, 139, // .4....x..*..
- 35, 148, 193, 27, 88, 157, 17, 87, 63, 81, 67, 5, // #...X..W?QC.
- 182, 77, 33, 115, 253, 90, 194, 68, 50, 192, 157, 194, // .M!s.Z.D2...
- 244, 153, 211, 223, 126, 159, 201, 40, 9, 243, 250, 220, // ....~..(....
- 21, 158, 94, 213, 44, 17, 62, 29, 250, 173, 24, 219, // ..^.,.>.....
- 5, 142, 104, 95, 68, 155, 134, 186, 193, 101, 44, 24, // ..h_D....e,.
- 36, 49, 162, 89, 45, 234, 6, 201, 179, 163, 161, 126, // $1.Y-......~
- 137, 102, 202, 179, 103, 8, 126, 211, 34, 1, 218, 123, // .f..g.~."..{
- 21, 72, 198, 220, 108, 211, 186, 241, 89, 193, 120, 94, // .H..l...Y.x^
- 157, 165, 129, 53, 35, 109, 149, 89, 31, 194, 137, 119, // ...5#m.Y...w
- 128, 17, 79, 192, 250, 20, 116, 24, 100, 184, 151, 229, // ..O...t.d...
- 7, 152, 192, 88, 222, 92, 2, 173, 131, 79, 82, 77, // ...X.....ORM
- 0, 182, 99, 175, 87, 17, 124, 199, 59, 4, 208, 17, // ..c.W.|.;...
- 38, 123, 124, 242, 238, 54, 74, 55, 210, 189, 196, 75, // &{|..6J7...K
- 25, 95, 203, 185, 125, 197, 85, 160, 100, 230, 48, 171, // ._..}.U.d.0.
- 99, 217, 173, 94, 109, 237, 210, 177, 107, 247, 89, 151, // c..^m...k.Y.
- 6, 28, 78, 144, 220, 37, 121, 16, 112, 178, 119, 129, // ..N..%y.p.w.
- 182, 236, 34, 71, 221, 110, 8, 140, 167, 0, 117, 162, // .."G.n....u.
- 86, 229, 244, 165, 7, 28, 14, 173, 24, 104, 89, 232, // V........hY.
- 64, 179, 145, 12, 101, 191, 187, 254, 214, 173, 86, 252, // @...e.....V.
- 240, 16, 153, 68, 193, 112, 208, 119, 41, 109, 71, 51, // ...D.p.w)mG3
- 243, 218, 60, 119, 32, 244, 1, 117, 25, 196, 69, 241, // ..?.
- 130, 84, 120, 151, 20, 90, 130, 149, 8, 167, 154, 141, // .Tx..Z......
- 126, 12, 111, 129, 97, 67, 101, 29, 232, 199, 58, 120, // ~.o.aCe...:x
- 81, 212, 157, 71, 234, 74, 230, 217, 166, 72, 239, 46, // Q..G.J...H..
- 165, 126, 171, 160, 223, 217, 167, 247, 239, 186, 40, 201, // .~........(.
- 200, 68, 200, 89, 99, 123, 223, 128, 213, 175, 131, 179, // .D.Yc{......
- 50, 92, 50, 216, 225, 178, 203, 170, 166, 226, 67, 180, // 2.2.......C.
- 162, 125, 23, 221, 218, 2, 183, 201, 92, 47, 105, 58, // .}......./i:
- 64, 221, 82, 38, 87, 75, 237, 223, 208, 51, 183, 229, // @.R&WK...3..
- 20, 128, 116, 101, 56, 162, 149, 43, 235, 104, 246, 22, // ..te8..+.h..
- 125, 45, 247, 62, 7, 139, 56, 205, 162, 185, 125, 167, // }-.>..8...}.
- 147, 84, 76, 231, 119, 247, 251, 68, 108, 29, 143, 39, // .TL.w..Dl..'
- 106, 23, 71, 58, 70, 97, 126, 191, 107, 211, 179, 136, // j.G:Fa~.k...
- 100, 39, 144, 59, 71, 112, 180, 64, 65, 192, 57, 56, // d'.;Gp.@A.98
- 255, 248, 7, 228, 28, 131, 202, 87, 26, 232, 113, 182, // .......W..q.
- 209, 18, 88, 32, 36, 118, 170, 213, 0, 183, 213, 189, // ..X $v......
- 154, 219, 154, 95, 74, 254, 102, 58, 54, 34, 174, 223, // ..._J.f:6"..
- 57, 154, 4, 122, 32, 241, 88, 70, 246, 73, 158, 92, // 9..z .XF.I..
- 141, 125, 127, 124, 124, 240, 225, 255, 58, 24, 205, 177, // .}.||...:...
- 189, 136, 143, 225, 200, 136, 23, 100, 179, 207, 193, 202, // .......d....
- 185, 50, 86, 59, 63, 229, 103, 252, 51, 127, 197, 207, // .2V;?.g.3...
- 249, 165, 48, 230, 70, 67, 147, 201, 65, 205, 185, 103, // ..0.FC..A..g
- 53, 41, 58, 52, 54, 9, 42, 105, 48, 67, 193, 201, // 5):46.*i0C..
- 161, 18, 40, 28, 99, 228, 24, 229, 141, 101, 99, 35, // ..(.c....ec#
- 130, 250, 0, 87, 133, 241, 32, 34, 165, 56, 3, 33, // ...W.. ".8.!
- 29, 1, 35, 14, 233, 208, 72, 76, 60, 60, 149, 75, // ..#...HL<<.K
- 162, 61, 180, 127, 141, 229, 124, 45, 96, 244, 165, 243, // .=....|-`...
- 219, 63, 161, 182, 0, 231, 101, 28, 161, 89, 8, 38, // .?....e..Y.&
- 142, 136, 70, 215, 163, 107, 211, 119, 64, 50, 52, 196, // ..F..k.w@24.
- 166, 208, 88, 18, 241, 232, 74, 4, 5, 65, 103, 96, // ..X...J..Ag`
- 141, 209, 251, 18, 5, 252, 156, 134, 65, 23, 70, 233, // ........A.F.
- 12, 215, 237, 2, 45, 93, 246, 122, 151, 3, 95, 3, // ....-].z.._.
- 103, 143, 142, 228, 200, 12, 45, 132, 146, 183, 32, 94, // g.....-... ^
- 103, 252, 132, 133, 65, 189, 238, 142, 234, 120, 81, 199, // g...A....xQ.
- 152, 184, 132, 119, 51, 94, 124, 1, 83, 22, 77, 220, // ...w3^|.S.M.
- 98, 51, 11, 10, 236, 103, 162, 17, 51, 40, 21, 58, // b3...g..3(.:
- 210, 72, 131, 182, 68, 204, 94, 5, 40, 78, 56, 66, // .H..D.^.(N8B
- 9, 222, 40, 95, 19, 188, 232, 28, 83, 213, 146, 98, // ..(_....S..b
- 120, 131, 105, 49, 35, 35, 218, 80, 48, 54, 20, 112, // x.i1##.P06.p
- 34, 244, 20, 118, 70, 103, 47, 95, 14, 174, 164, 254, // "..vFg/_....
- 17, 188, 226, 173, 156, 95, 98, 195, 79, 121, 182, 162, // ....._b.Oy..
- 160, 146, 31, 225, 134, 248, 10, 114, 86, 169, 8, 162, // .......rV...
- 108, 97, 42, 249, 227, 19, 5, 51, 215, 25, 204, 122, // la*....3...z
- 97, 119, 201, 231, 110, 90, 106, 4, 79, 143, 175, 153, // aw..nZj.O...
- 129, 247, 143, 64, 50, 64, 35, 38, 86, 235, 76, 1, // ...@2@#&V.L.
- 169, 127, 77, 210, 244, 61, 120, 247, 192, 245, 109, 181, // ..M..=x...m.
- 129, 219, 103, 173, 241, 199, 100, 238, 71, 0, 202, 140, // ..g...d.G...
- 81, 215, 210, 206, 188, 214, 249, 223, 225, 154, 1, 103, // Q..........g
- 44, 31, 1, 239, 66, 198, 18, 198, 216, 158, 127, 208, // ,...B.......
- 104, 200, 165, 83, 24, 147, 222, 205, 85, 44, 179, 77, // h..S....U,.M
- 58, 63, 113, 131, 62, 175, 231, 116, 22, 36, 148, 30, // :?q.>..t.$..
- 105, 117, 24, 135, 233, 192, 66, 32, 244, 10, 34, 241, // iu....B ..".
- 173, 177, 214, 169, 170, 99, 171, 232, 88, 247, 40, 207, // .....c..X.(.
- 208, 12, 183, 180, 117, 196, 168, 36, 161, 196, 247, 153, // ....u..$....
- 249, 154, 202, 215, 166, 60, 128, 201, 79, 35, 144, 170, // .....<..O#..
- 13, 3, 90, 217, 16, 142, 144, 104, 69, 243, 83, 176, // ..Z....hE.S.
- 209, 78, 143, 137, 72, 157, 201, 121, 10, 222, 65, 227, // .N..H..y..A.
- 44, 160, 109, 124, 58, 97, 67, 71, 202, 134, 184, 109, // ,.m|:aCG...m
- 247, 94, 111, 99, 251, 49, 47, 204, 91, 17, 239, 80, // .^oc.1/.[..P
- 213, 90, 93, 195, 81, 43, 137, 84, 131, 61, 92, 213, // .Z].Q+.T.=..
- 174, 216, 125, 91, 231, 128, 4, 41, 110, 114, 151, 44, // ..}[...)nr.,
- 130, 38, 187, 86, 8, 158, 78, 207, 193, 245, 57, 35, // .&.V..N...9#
- 169, 151, 243, 207, 226, 144, 255, 11, 178, 198, 156, 91, // ...........[
- 251, 233, 240, 179, 94, 239, 12, 68, 39, 143, 132, 19, // ....^..D'...
- 45, 238, 68, 121, 197, 99, 22, 24, 198, 95, 1, 254, // -.Dy.c..._..
- 95, 53, 241, 255, 170, 13, 255, 175, 106, 248, 55, 38, // _5......j.7&
- 207, 60, 187, 255, 55, 215, 108, 0, 190, 187, 5, 75, // .<..7.l....K
- 87, 146, 216, 0, 71, 181, 223, 255, 124, 252, 252, 5, // W...G...|...
- 46, 85, 223, 155, 59, 17, 224, 56, 114, 103, 78, 204, // .U..;..8rgN.
- 76, 64, 73, 57, 136, 31, 18, 64, 57, 78, 187, 215, // L@I9...@9N..
- 30, 160, 140, 89, 59, 231, 137, 154, 47, 85, 180, 6, // ...Y;.../U..
- 38, 177, 158, 139, 57, 40, 16, 172, 219, 199, 91, 241, // &...9(....[.
- 24, 97, 154, 115, 97, 128, 136, 64, 49, 185, 192, 199, // .a.sa..@1...
- 202, 176, 165, 16, 17, 70, 68, 70, 145, 213, 45, 62, // .....FDF..->
- 236, 19, 113, 12, 143, 53, 221, 202, 115, 54, 58, 15, // ..q..5..s6:.
- 199, 231, 147, 7, 26, 24, 192, 175, 226, 161, 117, 205, // ..........u.
- 248, 8, 177, 243, 43, 43, 129, 79, 9, 73, 212, 183, // ....++.O.I..
- 226, 76, 115, 68, 62, 150, 222, 224, 250, 81, 176, 207, // .LsD>....Q..
- 170, 150, 133, 89, 104, 94, 222, 5, 150, 163, 107, 32, // ...Yh^....k
- 198, 108, 72, 186, 121, 158, 44, 22, 114, 110, 213, 115, // .lH.y.,.rn.s
- 101, 53, 153, 5, 8, 222, 32, 54, 24, 239, 136, 132, // e5.... 6....
- 217, 200, 131, 20, 169, 221, 81, 167, 19, 243, 100, 156, // ......Q...d.
- 248, 216, 120, 202, 38, 22, 114, 100, 0, 105, 44, 147, // ..x.&.rd.i,.
- 186, 153, 116, 129, 85, 236, 30, 91, 99, 188, 4, 128, // ..t.U..[c...
- 71, 32, 185, 66, 99, 119, 207, 57, 199, 94, 104, 45, // G .Bcw.9.^h-
- 16, 6, 151, 118, 61, 244, 250, 91, 188, 120, 123, 63, // ...v=..[.x{?
- 67, 34, 168, 218, 132, 7, 129, 100, 227, 14, 219, 60, // C".....d...<
- 28, 239, 130, 189, 48, 103, 101, 50, 45, 64, 143, 77, // ....0ge2-@.M
- 189, 30, 115, 214, 200, 214, 154, 75, 124, 5, 28, 70, // ..s....K|..F
- 190, 202, 22, 29, 21, 129, 18, 54, 195, 240, 181, 139, // .......6....
- 211, 146, 183, 49, 92, 29, 39, 142, 255, 86, 38, 234, // ...1..'..V&.
- 9, 232, 78, 198, 43, 116, 87, 187, 117, 67, 18, 133, // ..N.+tW.uC..
- 66, 36, 0, 145, 56, 209, 22, 136, 46, 205, 96, 47, // B$..8.....`/
- 104, 86, 227, 228, 225, 247, 2, 201, 17, 111, 74, 200, // hV.......oJ.
- 0, 130, 77, 137, 136, 227, 60, 198, 251, 55, 113, 185, // ..M...<..7q.
- 218, 5, 70, 165, 208, 196, 214, 217, 111, 243, 44, 166, // ..F.....o.,.
- 107, 171, 65, 12, 189, 181, 68, 47, 10, 195, 10, 193, // k.A...D/....
- 28, 236, 49, 145, 141, 246, 154, 109, 216, 249, 195, 101, // ..1....m...e
- 208, 93, 106, 189, 14, 15, 14, 110, 111, 111, 7, 183, // .]j....noo..
- 223, 15, 178, 252, 234, 224, 249, 225, 225, 225, 1, 238, // ............
- 28, 163, 164, 237, 3, 131, 45, 159, 3, 123, 244, 122, // ......-..{.z
- 115, 23, 163, 0, 43, 17, 40, 184, 14, 216, 18, 126, // s...+.(....~
- 231, 101, 153, 34, 5, 0, 83, 70, 230, 53, 176, 47, // .e."..SF.5./
- 243, 74, 55, 39, 116, 115, 100, 78, 87, 27, 78, 68, // .J7'tsdNW.ND
- 208, 209, 158, 194, 192, 168, 61, 166, 178, 4, 235, 238, // ......=.....
- 17, 175, 134, 47, 196, 252, 209, 182, 78, 234, 17, 230, // .../....N...
- 78, 110, 137, 183, 165, 120, 198, 171, 99, 61, 136, 220, // Nn...x..c=..
- 41, 21, 245, 195, 92, 142, 235, 45, 112, 22, 3, 5, // )......-p...
- 199, 133, 215, 118, 205, 90, 50, 74, 135, 193, 2, 28, // ...v.Z2J....
- 105, 228, 156, 5, 50, 120, 175, 183, 64, 66, 214, 43, // i...2x..@B.+
- 107, 186, 97, 169, 44, 171, 58, 152, 36, 113, 224, 49, // k.a.,.:.$q.1
- 66, 137, 127, 21, 139, 106, 112, 89, 162, 167, 137, 56, // B....jpY...8
- 61, 7, 66, 158, 131, 145, 159, 97, 8, 115, 193, 92, // =.B....a.s..
- 232, 221, 59, 99, 43, 71, 193, 94, 142, 129, 20, 211, // ..;c+G.^....
- 123, 82, 108, 197, 70, 171, 16, 64, 118, 44, 97, 28, // {Rl.F..@v,a.
- 50, 112, 220, 212, 199, 217, 111, 50, 38, 47, 109, 75, // 2p....o2&/mK
- 124, 146, 140, 18, 240, 136, 67, 146, 53, 189, 222, 85, // |.....C.5..U
- 48, 229, 64, 249, 105, 147, 248, 87, 162, 162, 253, 42, // 0.@.i..W...*
- 236, 137, 68, 219, 235, 173, 3, 98, 130, 33, 250, 185, // ..D....b.!..
- 54, 242, 1, 12, 0, 154, 194, 187, 32, 48, 124, 110, // 6....... 0|n
- 80, 135, 72, 91, 81, 120, 141, 94, 97, 207, 176, 145, // P.H[Qx.^a...
- 171, 92, 22, 133, 101, 188, 206, 10, 234, 178, 181, 117, // ....e......u
- 35, 176, 6, 187, 47, 253, 232, 15, 176, 81, 187, 8, // #.../....Q..
- 95, 113, 91, 207, 209, 226, 241, 113, 150, 182, 197, 109, // _q[....q...m
- 27, 51, 211, 105, 247, 110, 231, 115, 35, 105, 70, 251, // .3.i.n.s#iF.
- 130, 115, 178, 221, 195, 184, 229, 123, 43, 0, 73, 146, // .s.....{+.I.
- 181, 221, 236, 141, 80, 206, 129, 107, 105, 47, 59, 133, // ....P..ki/;.
- 124, 40, 189, 26, 226, 243, 171, 155, 208, 222, 133, 163, // |(..........
- 36, 210, 131, 141, 90, 25, 147, 215, 23, 97, 2, 30, // $...Z....a..
- 96, 192, 214, 4, 225, 131, 220, 173, 128, 215, 63, 182, // `.........?.
- 136, 97, 69, 92, 163, 44, 223, 7, 185, 141, 106, 249, // .aE..,....j.
- 72, 123, 144, 219, 107, 67, 19, 16, 216, 179, 177, 204, // H{..kC......
- 34, 228, 130, 183, 55, 5, 109, 98, 24, 48, 100, 116, // "...7.mb.0dt
- 98, 110, 204, 36, 186, 61, 33, 143, 202, 224, 31, 201, // bn.$.=!.....
- 217, 6, 153, 137, 142, 48, 208, 188, 23, 101, 198, 16, // .....0...e..
- 115, 175, 247, 53, 200, 41, 10, 198, 167, 245, 91, 161, // s..5.)....[.
- 206, 94, 104, 113, 56, 117, 166, 130, 221, 230, 218, 92, // .^hq8u......
- 127, 50, 90, 84, 84, 55, 151, 46, 88, 91, 161, 249, // .2ZTT7..X[..
- 139, 11, 167, 213, 125, 242, 154, 159, 103, 118, 227, 187, // ....}...gv..
- 255, 20, 212, 227, 96, 200, 39, 67, 220, 180, 209, 111, // ....`.'C...o
- 216, 134, 146, 16, 182, 211, 66, 1, 57, 51, 87, 88, // ......B.93WX
- 57, 30, 12, 221, 166, 25, 53, 190, 65, 85, 247, 9, // 9.....5.AU..
- 216, 75, 138, 160, 3, 252, 152, 67, 3, 35, 222, 94, // .K.....C.#.^
- 6, 43, 115, 88, 99, 9, 78, 96, 130, 119, 48, 113, // .+sXc.N`.w0q
- 117, 125, 56, 125, 112, 125, 72, 163, 71, 227, 124, 18, // u}8}p}H.G.|.
- 38, 102, 169, 233, 96, 145, 228, 133, 177, 172, 92, 102, // &f..`......f
- 195, 180, 46, 91, 205, 13, 213, 198, 142, 204, 97, 28, // ...[......a.
- 93, 39, 54, 6, 98, 136, 248, 34, 216, 52, 208, 240, // ]'6.b..".4..
- 214, 68, 233, 127, 34, 228, 189, 173, 53, 124, 108, 203, // .D.."...5|l.
- 224, 32, 51, 79, 27, 217, 196, 254, 189, 100, 14, 123, // . 3O.....d.{
- 58, 255, 127, 9, 29, 115, 96, 38, 82, 242, 27, 14, // :....s`&R...
- 8, 215, 116, 117, 151, 97, 193, 93, 80, 213, 54, 245, // ..tu.a.]P.6.
- 212, 236, 150, 174, 255, 197, 61, 102, 73, 104, 209, 133, // ......=fIh..
- 199, 73, 183, 159, 246, 251, 148, 88, 193, 193, 112, 45, // .I.....X..p-
- 96, 129, 60, 172, 140, 149, 218, 61, 70, 149, 190, 16, // `.<....=F...
- 104, 182, 227, 224, 37, 110, 147, 121, 163, 179, 157, 158, // h...%n.y....
- 251, 128, 54, 17, 226, 158, 89, 12, 146, 84, 210, 69, // ..6...Y..T.E
- 243, 20, 3, 9, 24, 17, 195, 94, 188, 173, 171, 168, // .......^....
- 249, 56, 46, 86, 190, 51, 61, 91, 93, 77, 81, 7, // .8.V.3=[]MQ.
- 165, 74, 169, 48, 130, 148, 228, 7, 149, 208, 32, 109, // .J.0...... m
- 51, 202, 200, 118, 61, 228, 120, 225, 143, 198, 151, 93, // 3..v=.x....]
- 104, 51, 107, 76, 43, 221, 189, 203, 208, 37, 6, 181, // h3kL+....%..
- 9, 148, 97, 123, 117, 125, 67, 0, 195, 154, 2, 169, // ..a{u}C.....
- 178, 150, 170, 193, 65, 216, 147, 96, 164, 243, 198, 60, // ....A..`...<
- 4, 100, 127, 159, 54, 226, 211, 84, 228, 192, 161, 159, // .d..6..T....
- 124, 217, 129, 59, 185, 122, 248, 9, 164, 51, 16, 147, // |..;.z...3..
- 137, 214, 114, 141, 103, 46, 27, 7, 107, 104, 220, 93, // ..r.g...kh.]
- 152, 17, 157, 15, 53, 121, 130, 67, 50, 0, 115, 42, // ....5y.C2.s*
- 199, 152, 221, 128, 171, 144, 248, 196, 250, 76, 228, 141, // .........L..
- 176, 155, 139, 14, 100, 109, 33, 137, 211, 60, 207, 114, // ....dm!..<.r
- 146, 232, 96, 69, 82, 109, 240, 120, 63, 186, 205, 74, // ..`ERm.x?..J
- 72, 222, 206, 157, 100, 207, 27, 190, 237, 9, 74, 105, // H...d.....Ji
- 163, 32, 246, 107, 81, 247, 148, 37, 198, 166, 252, 12, // . .kQ..%....
- 137, 51, 41, 115, 114, 84, 114, 43, 228, 129, 164, 149, // .3)srTr+....
- 208, 59, 189, 204, 179, 91, 112, 215, 119, 32, 180, 14, // .;...[p.w ..
- 249, 180, 113, 202, 181, 80, 34, 93, 148, 250, 188, 39, // ..q..P"]...'
- 85, 223, 250, 142, 223, 213, 156, 99, 183, 65, 209, 228, // U......c.A..
- 30, 147, 112, 35, 173, 3, 71, 52, 69, 33, 48, 87, // ..p#..G4E!0W
- 66, 157, 77, 132, 134, 99, 71, 174, 54, 116, 5, 43, // B.M..cG.6t.+
- 120, 124, 143, 214, 139, 95, 138, 106, 8, 101, 124, 81, // x|..._.j.e|Q
- 232, 82, 209, 62, 106, 72, 176, 195, 172, 211, 226, 182, // .R.>jH......
- 99, 39, 71, 27, 94, 187, 55, 240, 192, 137, 178, 193, // c'G.^.7.....
- 67, 190, 14, 176, 10, 89, 160, 190, 63, 160, 148, 88, // C....Y..?..X
- 62, 198, 104, 118, 50, 83, 36, 54, 170, 150, 89, 58, // >.hv2S$6..Y:
- 150, 121, 100, 98, 27, 129, 92, 241, 28, 229, 66, 210, // .ydb......B.
- 166, 119, 128, 218, 87, 73, 33, 71, 246, 89, 27, 172, // .w..WI!G.Y..
- 151, 82, 13, 102, 192, 65, 129, 107, 3, 139, 43, 75, // .R.f.A.k..+K
- 183, 18, 220, 239, 16, 142, 228, 83, 178, 146, 217, 70, // .......S...F
- 163, 4, 111, 23, 106, 0, 57, 134, 124, 159, 105, 87, // ..o.j.9.|.iW
- 218, 113, 155, 103, 66, 247, 147, 120, 124, 191, 241, 27, // .q.gB..x|...
- 254, 154, 255, 194, 223, 64, 221, 239, 8, 227, 207, 248, // .....@......
- 243, 87, 19, 43, 230, 127, 179, 209, 147, 191, 123, 255, // .W.+......{.
- 148, 255, 195, 176, 14, 87, 64, 103, 206, 198, 169, 18, // .....W@g....
- 17, 181, 170, 188, 202, 165, 209, 186, 203, 224, 134, 43, // ...........+
- 254, 166, 44, 225, 240, 222, 216, 85, 167, 226, 6, 90, // ..,....U...Z
- 206, 64, 94, 210, 19, 25, 56, 132, 101, 49, 175, 109, // .@^...8.e1.m
- 60, 217, 249, 123, 103, 245, 146, 220, 103, 239, 162, 211, // <..{g...g...
- 11, 33, 28, 6, 124, 9, 127, 6, 134, 192, 170, 177, // .!..|.......
- 154, 84, 202, 64, 214, 137, 252, 141, 56, 226, 83, 21, // .T.@....8.S.
- 92, 43, 94, 15, 211, 79, 149, 51, 42, 12, 44, 0, // .+^..O.3*.,.
- 244, 111, 160, 39, 158, 211, 29, 213, 116, 0, 130, 143, // .o.'....t...
- 119, 166, 198, 45, 54, 55, 232, 99, 57, 162, 139, 135, // w..-67.c9...
- 107, 101, 227, 243, 128, 101, 190, 175, 27, 52, 193, 250, // ke...e...4..
- 97, 68, 191, 206, 50, 135, 39, 199, 24, 128, 198, 91, // aD..2.'....[
- 63, 112, 242, 58, 116, 193, 65, 179, 126, 128, 105, 13, // ?p.:t.A.~.i.
- 248, 71, 147, 137, 137, 148, 87, 130, 228, 30, 165, 180, // .G....W.....
- 173, 21, 55, 188, 115, 51, 216, 48, 171, 180, 69, 83, // ..7.s3.0..ES
- 208, 145, 85, 104, 192, 69, 84, 90, 177, 208, 49, 120, // ..Uh.ETZ..1x
- 206, 133, 111, 64, 212, 45, 146, 84, 203, 188, 169, 27, // ..o@.-.T....
- 106, 196, 18, 239, 76, 166, 66, 142, 183, 27, 249, 93, // j...L.B....]
- 91, 63, 202, 21, 251, 176, 243, 23, 188, 29, 186, 32, // [?.........
- 55, 78, 33, 170, 58, 3, 18, 173, 157, 128, 171, 57, // 7N!.:......9
- 244, 66, 170, 53, 98, 105, 111, 153, 63, 84, 153, 168, // .B.5bio.?T..
- 132, 177, 161, 183, 10, 63, 144, 129, 248, 193, 101, 121, // .....?....ey
- 57, 67, 153, 110, 2, 193, 35, 5, 95, 31, 99, 9, // 9C.n..#._.c.
- 188, 19, 116, 18, 67, 29, 177, 13, 0, 226, 61, 61, // ..t.C.....==
- 116, 105, 7, 143, 237, 134, 128, 79, 97, 113, 148, 1, // ti.....Oaq..
- 45, 182, 170, 92, 96, 215, 155, 182, 136, 230, 176, 181, // -...`.......
- 182, 237, 88, 156, 204, 112, 132, 150, 13, 125, 194, 90, // ..X..p...}.Z
- 110, 187, 241, 76, 76, 119, 0, 124, 242, 0, 202, 29, // n..LLw.|....
- 127, 4, 46, 16, 246, 206, 98, 64, 228, 24, 59, 181, // ......b@..;.
- 162, 238, 220, 178, 96, 131, 182, 191, 103, 195, 142, 54, // ....`...g..6
- 194, 121, 166, 136, 252, 206, 184, 172, 101, 136, 76, 7, // .y......e.L.
- 137, 144, 252, 198, 18, 138, 149, 106, 211, 122, 152, 38, // .......j.z.&
- 107, 155, 246, 135, 127, 121, 218, 182, 41, 55, 77, 86, // k....y..)7MV
- 125, 193, 99, 213, 136, 253, 238, 167, 159, 162, 197, 48, // }.c........0
- 174, 167, 198, 164, 30, 217, 111, 196, 95, 120, 214, 54, // ......o._x.6
- 186, 213, 213, 11, 192, 204, 11, 88, 141, 133, 43, 54, // .......X..+6
- 8, 140, 109, 9, 150, 55, 244, 242, 206, 32, 222, 111, // ..m..7... .o
- 180, 116, 246, 237, 148, 221, 192, 108, 10, 238, 142, 249, // .t.....l....
- 11, 126, 25, 210, 53, 30, 232, 102, 212, 255, 21, 224, // .~..5..f....
- 113, 93, 129, 58, 100, 254, 135, 151, 123, 128, 75, 73, // q].:d...{.KI
- 184, 212, 204, 132, 20, 191, 128, 2, 100, 28, 172, 41, // ........d..)
- 161, 93, 0, 147, 158, 95, 76, 96, 177, 154, 56, 106, // .]..._L`..8j
- 170, 128, 55, 226, 63, 219, 145, 10, 182, 1, 195, 108, // ..7.?......l
- 27, 63, 176, 168, 201, 177, 27, 103, 106, 141, 73, 42, // .?.....gj.I*
- 160, 4, 179, 32, 254, 23, 171, 172, 180, 24, 19, 139, // ... ........
- 92, 22, 152, 36, 39, 139, 96, 69, 5, 169, 233, 174, // ...$'.`E....
- 237, 6, 111, 224, 235, 118, 42, 250, 215, 117, 104, 23, // ..o..v*..uh.
- 94, 91, 108, 10, 249, 163, 156, 109, 174, 190, 24, 35, // ^[l....m...#
- 118, 175, 34, 64, 249, 187, 119, 215, 186, 174, 1, 108, // v."@..w....l
- 161, 59, 58, 4, 28, 9, 80, 0, 85, 226, 146, 33, // .;:...P.U..!
- 195, 155, 135, 38, 21, 169, 158, 7, 181, 117, 38, 158, // ...&.....u&.
- 26, 45, 102, 93, 71, 124, 231, 18, 68, 53, 89, 208, // .-f]G|..D5Y.
- 224, 241, 161, 100, 175, 155, 188, 216, 100, 206, 31, 4, // ...d....d...
- 119, 45, 101, 94, 185, 140, 87, 15, 229, 17, 9, 89, // w-e^..W....Y
- 146, 164, 149, 141, 170, 73, 35, 110, 237, 229, 46, 94, // .....I#n...^
- 174, 19, 99, 173, 156, 5, 106, 141, 87, 107, 196, 90, // ..c...j.Wk.Z
- 186, 193, 14, 20, 153, 130, 167, 24, 31, 242, 195, 9, // ............
- 51, 178, 179, 123, 222, 237, 35, 132, 253, 238, 51, 44, // 3..{..#...3,
- 28, 77, 250, 253, 93, 77, 208, 215, 146, 213, 17, 60, // .M..]M.....<
- 7, 131, 26, 42, 241, 123, 149, 120, 107, 165, 243, 57, // ...*.{.xk..9
- 134, 253, 80, 179, 80, 12, 216, 75, 8, 39, 208, 239, // ..P.P..K.'..
- 148, 241, 226, 155, 181, 87, 245, 90, 188, 216, 48, 230, // .....W.Z..0.
- 105, 198, 238, 235, 181, 54, 52, 157, 81, 87, 140, 11, // i....64.QW..
- 147, 213, 209, 176, 192, 110, 76, 112, 226, 175, 189, 222, // .....nLp....
- 95, 17, 243, 52, 34, 111, 244, 248, 91, 175, 247, 55, // _..4"o..[..7
- 52, 192, 126, 179, 182, 133, 22, 193, 141, 141, 152, 224, // 4.~.........
- 82, 248, 69, 67, 240, 26, 20, 194, 205, 136, 16, 69, // R.EC.......E
- 235, 222, 212, 1, 120, 228, 54, 13, 101, 171, 187, 81, // ....x.6.e..Q
- 51, 90, 138, 192, 252, 34, 126, 182, 74, 73, 1, 59, // 3Z..."~.JI.;
- 58, 142, 7, 131, 204, 204, 222, 192, 139, 126, 128, 19, // :........~..
- 7, 1, 112, 198, 107, 113, 131, 219, 49, 102, 85, 99, // ..p.kq..1fUc
- 71, 127, 239, 245, 254, 238, 188, 48, 155, 209, 61, 148, // G......0..=.
- 230, 170, 225, 204, 50, 153, 193, 182, 179, 139, 130, 35, // ....2......#
- 32, 144, 223, 141, 132, 69, 241, 251, 11, 69, 47, 115, // ....E...E/s
- 121, 179, 145, 133, 126, 165, 146, 85, 132, 83, 255, 148, // y...~..U.S..
- 71, 43, 188, 146, 9, 126, 121, 172, 145, 149, 229, 74, // G+...~y....J
- 177, 96, 142, 190, 138, 91, 229, 49, 236, 36, 22, 55, // .`...[.1.$.7
- 103, 136, 7, 139, 26, 128, 226, 231, 58, 202, 190, 96, // g.......:..`
- 189, 67, 146, 195, 30, 34, 11, 55, 111, 132, 38, 97, // .C...".7o.&a
- 36, 222, 227, 187, 105, 139, 15, 235, 168, 239, 33, 229, // $...i.....!.
- 45, 133, 173, 127, 212, 186, 33, 94, 43, 203, 43, 101, // -.....!^+.+e
- 221, 95, 67, 140, 178, 125, 33, 101, 76, 215, 64, 185, // ._C..}!eL.@.
- 163, 66, 11, 99, 90, 81, 171, 244, 212, 10, 245, 255, // .B.cZQ......
- 232, 245, 254, 97, 34, 131, 220, 91, 195, 141, 179, 84, // ...a"..[...T
- 224, 43, 40, 229, 79, 147, 79, 237, 121, 218, 156, 237, // .+(.O.O.y...
- 51, 171, 43, 31, 199, 52, 238, 251, 142, 0, 175, 174, // 3.+..4......
- 132, 132, 162, 197, 105, 160, 195, 174, 52, 130, 10, 225, // ....i...4...
- 51, 55, 208, 96, 229, 224, 146, 91, 213, 26, 236, 106, // 37.`...[...j
- 59, 254, 202, 140, 95, 85, 194, 149, 203, 186, 103, 31, // ;..._U....g.
- 167, 50, 202, 173, 223, 1, 202, 156, 111, 97, 123, 113, // .2......oa{q
- 164, 98, 153, 54, 167, 66, 87, 171, 242, 80, 136, 115, // .b.6.BW..P.s
- 167, 162, 86, 33, 65, 88, 31, 2, 78, 148, 73, 236, // ..V!AX..N.I.
- 111, 131, 6, 211, 8, 107, 31, 147, 212, 245, 19, 119, // o....k.....w
- 92, 209, 150, 81, 100, 143, 46, 246, 136, 65, 77, 127, // ...Qd....AM.
- 211, 248, 216, 164, 62, 215, 208, 116, 198, 223, 96, 175, // ....>..t..`.
- 223, 172, 161, 76, 59, 10, 243, 190, 12, 203, 145, 60, // ...L;......<
- 54, 69, 140, 73, 237, 17, 81, 35, 94, 137, 38, 235, // 6E.I..Q#^.&.
- 88, 78, 26, 87, 94, 215, 141, 137, 219, 190, 93, 26, // XN.W^.....].
- 81, 110, 145, 222, 33, 144, 39, 106, 207, 182, 244, 241, // Qn..!.'j....
- 187, 33, 230, 196, 97, 66, 177, 21, 224, 153, 56, 26, // .!..aB....8.
- 102, 85, 146, 63, 134, 105, 77, 158, 44, 230, 45, 246, // fU.?.iM.,.-.
- 251, 19, 240, 20, 49, 105, 17, 4, 33, 140, 43, 69, // ....1i..!.+E
- 50, 58, 10, 159, 99, 174, 29, 53, 78, 96, 189, 113, // 2:..c..5N`.q
- 191, 159, 77, 134, 120, 211, 149, 140, 208, 202, 22, 155, // ..M.x.......
- 240, 7, 251, 114, 52, 17, 230, 6, 98, 16, 21, 69, // ...r4...b..E
- 2, 40, 196, 42, 12, 74, 240, 13, 11, 95, 80, 39, // .(.*.J..._P'
- 170, 18, 174, 158, 141, 205, 116, 56, 201, 95, 252, 36, // ......t8._.$
- 174, 178, 47, 54, 253, 110, 55, 132, 65, 24, 103, 142, // ../6.n7.A.g.
- 214, 235, 244, 46, 216, 240, 19, 220, 225, 6, 118, 56, // ..........v8
- 238, 118, 201, 136, 154, 16, 153, 147, 96, 203, 25, 223, // .v......`...
- 96, 50, 165, 129, 253, 57, 200, 219, 113, 246, 236, 57, // `2...9..q..9
- 108, 159, 18, 49, 69, 14, 34, 216, 246, 220, 248, 11, // l..1E.".....
- 128, 233, 142, 127, 83, 148, 35, 244, 62, 90, 87, 228, // ....S.#.>ZW.
- 125, 90, 35, 128, 111, 10, 99, 54, 198, 121, 247, 102, // }Z#.o.c6.y.f
- 3, 42, 85, 55, 12, 102, 64, 191, 204, 152, 230, 26, // .*U7.f@.....
- 224, 129, 38, 128, 211, 188, 210, 88, 101, 174, 135, 176, // ..&....Xe...
- 19, 230, 90, 215, 185, 215, 171, 119, 60, 53, 112, 70, // ..Z....w<5pF
- 115, 1, 27, 203, 240, 39, 17, 104, 65, 108, 26, 189, // s....'.hAl..
- 49, 213, 132, 18, 45, 97, 190, 92, 228, 85, 114, 223, // 1...-a...Ur.
- 63, 127, 45, 190, 251, 85, 193, 79, 233, 10, 79, 15, // ?.-..U.O..O.
- 174, 40, 197, 145, 141, 18, 179, 105, 144, 175, 60, 103, // .(.....i..|6
- 210, 152, 255, 59, 194, 35, 51, 163, 255, 220, 253, 51, // ...;.#3....3
- 246, 46, 203, 238, 159, 205, 176, 12, 42, 253, 20, 184, // ........*...
- 30, 76, 3, 88, 194, 239, 10, 132, 159, 248, 5, 136, // .L.X........
- 172, 220, 78, 222, 61, 160, 106, 148, 252, 199, 47, 96, // ..N.=.j.../`
- 30, 26, 107, 224, 239, 31, 77, 152, 153, 196, 157, 99, // ..k...M....c
- 34, 240, 150, 15, 39, 77, 184, 123, 49, 248, 124, 14, // "...'M.{1.|.
- 216, 156, 98, 3, 156, 88, 247, 73, 215, 2, 245, 171, // ..b..X.I....
- 246, 37, 229, 75, 121, 3, 186, 231, 6, 15, 126, 141, // .%.Ky.....~.
- 110, 199, 163, 2, 32, 253, 129, 219, 85, 28, 15, 17, // n... ...U...
- 10, 119, 38, 27, 159, 241, 42, 78, 143, 70, 140, 11, // .w&...*N.F..
- 227, 31, 141, 116, 136, 124, 73, 242, 234, 76, 137, 83, // ...t.|I..L.S
- 27, 183, 90, 26, 181, 247, 89, 209, 87, 162, 62, 67, // ..Z...Y.W.>C
- 93, 253, 159, 63, 87, 61, 111, 134, 108, 0, 147, 7, // ]..?W=o.l...
- 193, 40, 252, 117, 20, 140, 255, 249, 167, 201, 119, 192, // .(.u......w.
- 5, 193, 159, 6, 223, 177, 209, 211, 3, 96, 46, 53, // .........`.5
- 88, 145, 166, 164, 204, 124, 88, 23, 236, 216, 172, 215, // X....|X.....
- 203, 48, 101, 216, 173, 184, 17, 248, 74, 81, 106, 29, // .0e.....JQj.
- 116, 123, 93, 102, 9, 113, 211, 32, 68, 67, 111, 27, // t{]f.q. DCo.
- 164, 53, 219, 83, 96, 30, 243, 120, 46, 227, 108, 46, // .5.S`..x..l.
- 63, 95, 188, 245, 142, 121, 16, 35, 198, 38, 162, 173, // ?_...y.#.&..
- 197, 230, 20, 31, 177, 193, 111, 89, 162, 104, 14, 182, // ......oY.h..
- 83, 226, 22, 118, 228, 25, 60, 119, 233, 202, 80, 171, // S..v....
- 55, 106, 190, 131, 154, 45, 208, 116, 65, 221, 201, 221, // 7j...-.tA...
- 193, 75, 98, 252, 94, 166, 214, 107, 212, 101, 199, 135, // .Kb.^..k.e..
- 101, 185, 4, 224, 166, 24, 44, 242, 41, 20, 9, 126, // e.....,.)..~
- 61, 213, 130, 203, 45, 227, 160, 111, 231, 236, 158, 58, // =...-..o...:
- 40, 139, 217, 130, 1, 176, 235, 224, 97, 127, 135, 241, // (.......a...
- 131, 174, 77, 96, 219, 249, 148, 114, 220, 34, 105, 230, // ..M`...r."i.
- 98, 210, 88, 220, 80, 94, 208, 193, 120, 184, 116, 223, // b.X.P^..x.t.
- 254, 98, 102, 114, 199, 72, 185, 164, 150, 232, 191, 31, // .bfr.H......
- 109, 205, 35, 117, 13, 202, 23, 31, 160, 88, 205, 251, // m.#u.....X..
- 75, 251, 254, 12, 43, 104, 227, 207, 180, 121, 214, 242, // K...+h...y..
- 247, 247, 39, 162, 118, 240, 244, 205, 20, 173, 193, 123, // ..'.v......{
- 235, 85, 91, 0, 71, 135, 33, 145, 147, 169, 92, 3, // .U[.G.!.....
- 189, 24, 148, 252, 168, 28, 10, 186, 12, 57, 152, 219, // .........9..
- 46, 181, 92, 233, 230, 172, 53, 194, 248, 245, 160, 95, // ......5...._
- 194, 127, 71, 23, 142, 3, 0, 151, 181, 100, 233, 218, // ..G......d..
- 104, 34, 58, 85, 17, 220, 232, 168, 223, 253, 174, 63, // h":U.......?
- 234, 86, 55, 64, 174, 77, 249, 15, 73, 24, 80, 213, // .V7@.M..I.P.
- 15, 225, 11, 146, 26, 159, 80, 70, 240, 11, 133, 134, // ......PF....
- 246, 59, 250, 125, 175, 140, 239, 247, 21, 90, 54, 121, // .;.}.....Z6y
- 26, 190, 5, 3, 116, 199, 191, 40, 241, 52, 248, 10, // ....t..(.4..
- 246, 116, 117, 231, 91, 185, 216, 133, 10, 190, 40, 114, // .tu.[.....(r
- 175, 21, 28, 224, 87, 175, 228, 49, 38, 0, 12, 63, // ....W..1&..?
- 204, 91, 99, 33, 239, 148, 191, 30, 104, 109, 180, 151, // .[c!....hm..
- 89, 239, 148, 223, 139, 198, 219, 44, 23, 142, 50, 29, // Y......,..2.
- 199, 138, 127, 172, 199, 161, 223, 122, 168, 220, 231, 196, // .......z....
- 221, 126, 0, 96, 189, 7, 149, 248, 94, 81, 110, 17, // .~.`....^Qn.
- 246, 27, 213, 202, 161, 109, 195, 171, 66, 19, 88, 122, // .....m..B.Xz
- 87, 235, 245, 176, 54, 0, 193, 191, 1, 136, 22, 137, // W...6.......
- 146, 243, 234, 210, 221, 79, 237, 231, 253, 4, 116, 128, // .....O....t.
- 84, 161, 200, 1, 132, 211, 236, 227, 183, 22, 96, 201, // T.........`.
- 99, 28, 164, 91, 63, 209, 143, 77, 90, 244, 119, 67, // c..[?..MZ.wC
- 154, 236, 116, 202, 215, 176, 95, 134, 116, 106, 23, 52, // ..t..._.tj.4
- 106, 0, 231, 67, 61, 60, 9, 113, 252, 242, 25, 106, // j..C=<.q...j
- 155, 113, 242, 42, 218, 113, 225, 117, 190, 198, 196, 20, // .q.*.q.u....
- 56, 177, 11, 252, 132, 96, 0, 206, 196, 69, 134, 89, // 8....`...E.Y
- 253, 138, 85, 161, 108, 91, 56, 218, 209, 7, 201, 123, // ..U.l[8....{
- 119, 80, 77, 16, 187, 120, 146, 32, 125, 12, 42, 97, // wPM..x. }.*a
- 198, 17, 253, 162, 53, 221, 134, 43, 48, 226, 116, 150, // ....5..+0.t.
- 223, 245, 122, 182, 48, 214, 253, 46, 69, 224, 187, 147, // ..z.0...E...
- 182, 186, 160, 246, 177, 41, 114, 20, 215, 163, 174, 221, // .....)r.....
- 48, 208, 191, 93, 250, 169, 106, 252, 209, 132, 167, 123, // 0..]..j....{
- 59, 199, 228, 94, 144, 218, 242, 184, 66, 129, 4, 233, // ;..^....B...
- 125, 129, 234, 111, 144, 227, 222, 63, 101, 180, 79, 68, // }..o...?e.OD
- 248, 97, 219, 55, 120, 191, 249, 224, 57, 162, 254, 170, // .a.7x...9...
- 150, 194, 86, 5, 210, 235, 181, 129, 249, 214, 131, 145, // ..V.........
- 219, 212, 108, 208, 160, 207, 165, 54, 95, 231, 208, 229, // ..l....6_...
- 172, 21, 251, 192, 254, 7, 244, 97, 119, 71, 98, 102, // .......awGbf
- 179, 171, 157, 142, 10, 153, 46, 158, 30, 36, 213, 23, // .........$..
- 94, 31, 233, 202, 188, 2, 238, 166, 41, 81, 0, 131, // ^.......)Q..
- 235, 183, 171, 149, 156, 39, 128, 64, 204, 190, 142, 174, // .....'.@....
- 136, 38, 17, 242, 199, 218, 2, 202, 65, 132, 198, 150, // .&......A...
- 254, 251, 221, 214, 57, 125, 137, 241, 163, 17, 132, 80, // ....9}.....P
- 5, 84, 226, 97, 121, 237, 16, 213, 65, 233, 163, 243, // .T.ay...A...
- 244, 23, 121, 135, 78, 220, 74, 234, 200, 22, 163, 84, // ..y.N.J....T
- 219, 18, 197, 189, 108, 25, 144, 163, 51, 197, 42, 116, // ....l...3.*t
- 26, 60, 13, 231, 25, 125, 28, 21, 145, 126, 173, 242, // .<...}...~..
- 3, 17, 113, 109, 8, 55, 151, 0, 131, 101, 84, 212, // ..qm.7...eT.
- 154, 48, 177, 238, 153, 130, 29, 108, 101, 151, 161, 247, // .0.....le...
- 216, 108, 118, 45, 22, 191, 120, 48, 191, 33, 138, 29, // .lv-..x0.!..
- 190, 9, 191, 59, 155, 219, 139, 225, 192, 218, 135, 139, // ...;........
- 59, 146, 164, 191, 40, 212, 103, 30, 9, 111, 108, 84, // ;...(.g..olT
- 195, 147, 122, 128, 130, 213, 189, 178, 218, 253, 171, 17, // ..z.........
- 179, 196, 182, 101, 73, 210, 118, 7, 166, 218, 27, 85, // ...eI.v....U
- 93, 73, 154, 207, 45, 248, 125, 235, 189, 68, 248, 80, // ]I..-.}..D.P
- 81, 117, 14, 233, 198, 6, 103, 79, 48, 121, 21, 167, // Qu....gO0y..
- 118, 151, 194, 70, 89, 209, 90, 106, 144, 169, 147, 37, // v..FY.Zj...%
- 102, 6, 54, 27, 93, 237, 142, 59, 177, 240, 32, 35, // f.6.]..;.. #
- 67, 139, 179, 160, 54, 194, 165, 19, 120, 182, 169, 190, // C...6...x...
- 12, 165, 36, 12, 186, 134, 219, 113, 203, 102, 141, 217, // ..$....q.f..
- 12, 30, 252, 5, 28, 161, 98, 231, 82, 33, 76, 218, // ......b.R!L.
- 81, 37, 155, 26, 89, 32, 107, 56, 69, 124, 214, 110, // Q%..Y k8E|.n
- 145, 3, 252, 116, 149, 63, 252, 78, 34, 172, 41, 24, // ...t.?.N".).
- 51, 22, 120, 188, 214, 209, 125, 19, 81, 239, 103, 163, // 3.x...}.Q.g.
- 199, 208, 123, 248, 11, 122, 134, 120, 190, 135, 32, 224, // ..{..z.x.. .
- 202, 242, 193, 71, 104, 221, 53, 32, 129, 68, 21, 175, // ...Gh.5 .D..
- 235, 57, 16, 65, 120, 156, 20, 201, 122, 56, 38, 6, // .9.Ax...z8&.
- 237, 118, 221, 229, 175, 209, 194, 191, 112, 170, 16, 221, // .v......p...
- 97, 18, 162, 6, 187, 27, 129, 122, 138, 134, 212, 3, // a......z....
- 29, 254, 6, 195, 235, 48, 64, 197, 80, 121, 49, 134, // .....0@.Py1.
- 58, 79, 238, 171, 30, 89, 87, 61, 140, 194, 129, 14, // :O...YW=....
- 21, 71, 123, 56, 179, 185, 37, 117, 108, 180, 69, 75, // .G{8..%ul.EK
- 8, 66, 123, 39, 143, 238, 202, 133, 215, 217, 23, 53, // .B{'.......5
- 157, 77, 91, 2, 181, 205, 91, 110, 239, 254, 133, 115, // .M[...[n...s
- 121, 188, 35, 64, 125, 181, 151, 87, 132, 28, 102, 227, // y.#@}..W..f.
- 145, 31, 64, 249, 210, 159, 121, 184, 84, 149, 85, 111, // ..@...y.T.Uo
- 52, 64, 67, 1, 216, 155, 53, 84, 3, 224, 222, 156, // 4@C...5T....
- 99, 24, 105, 90, 179, 232, 220, 139, 185, 161, 181, 210, // c.iZ........
- 96, 12, 158, 208, 100, 7, 244, 76, 105, 6, 123, 48, // `...d..Li.{0
- 216, 128, 35, 125, 45, 238, 56, 137, 227, 223, 233, 0, // ..#}-.8.....
- 210, 6, 207, 200, 144, 52, 134, 132, 12, 103, 156, 5, // .....4...g..
- 85, 54, 14, 195, 175, 20, 241, 219, 100, 114, 9, 63, // U6......dr.?
- 6, 24, 120, 225, 32, 11, 224, 31, 49, 70, 198, 73, // ..x. ...1F.I
- 35, 200, 34, 148, 224, 31, 29, 77, 40, 51, 227, 30, // #."....M(3..
- 255, 172, 141, 187, 222, 148, 139, 176, 138, 141, 115, 252, // ..........s.
- 203, 33, 1, 221, 114, 162, 73, 192, 238, 97, 158, 175, // .!..r.I..a..
- 202, 195, 32, 236, 156, 40, 203, 147, 108, 83, 132, 174, // .. ..(..lS..
- 39, 119, 87, 127, 83, 142, 40, 8, 167, 163, 58, 70, // 'wW.S.(...:F
- 76, 114, 156, 7, 4, 179, 99, 12, 225, 229, 38, 237, // Lr....c...&.
- 42, 25, 68, 49, 202, 82, 112, 246, 199, 211, 73, 56, // *.D1.Rp...I8
- 158, 120, 236, 167, 226, 93, 21, 114, 64, 243, 227, 29, // .x...].r@...
- 186, 223, 120, 233, 222, 22, 81, 196, 132, 192, 32, 241, // ..x...Q... .
- 254, 240, 18, 76, 76, 159, 162, 196, 239, 205, 247, 110, // ...LL......n
- 201, 142, 178, 67, 141, 184, 248, 93, 181, 217, 236, 75, // ...C...]...K
- 212, 27, 136, 196, 123, 56, 12, 100, 185, 240, 181, 218, // ....{8.d....
- 113, 188, 22, 228, 63, 63, 50, 160, 150, 105, 133, 98, // q...??2..i.b
- 107, 40, 191, 173, 129, 144, 238, 239, 158, 68, 197, 19, // k(.......D..
- 47, 124, 249, 10, 95, 127, 202, 163, 43, 74, 50, 252, // /|.._...+J2.
- 93, 225, 235, 187, 68, 93, 195, 180, 88, 36, 145, 197, // ]...D]..X$..
- 223, 84, 229, 156, 127, 196, 114, 156, 194, 112, 151, 154, // .T....r..p..
- 248, 148, 106, 40, 121, 220, 38, 168, 241, 101, 85, 229, // ..j(y.&..eU.
- 122, 109, 171, 170, 11, 185, 224, 231, 52, 167, 252, 38, // zm......4..&
- 99, 254, 150, 138, 149, 137, 250, 25, 14, 111, 201, 207, // c........o..
- 168, 22, 179, 164, 249, 91, 42, 221, 205, 115, 188, 88, // .....[*..s.X
- 159, 226, 75, 82, 124, 137, 210, 100, 238, 230, 214, 88, // ..KR|..d...X
- 103, 50, 136, 11, 254, 19, 190, 24, 162, 6, 171, 154, // g2..........
- 94, 104, 23, 103, 88, 212, 25, 37, 210, 81, 190, 52, // ^h.gX..%.Q.4
- 143, 168, 117, 83, 200, 147, 40, 77, 103, 81, 124, 205, // ..uS..(MgQ|.
- 11, 95, 99, 55, 178, 112, 21, 213, 133, 34, 207, 93, // ._c7.p...".]
- 221, 233, 98, 33, 99, 205, 215, 254, 29, 147, 181, 94, // ..b!c......^
- 131, 208, 153, 71, 249, 29, 95, 186, 234, 183, 115, 158, // ...G.._...s.
- 250, 242, 106, 45, 115, 210, 210, 103, 145, 154, 167, 192, // ..j-s..g....
- 83, 174, 229, 93, 116, 7, 96, 218, 41, 99, 87, 251, // S..]t.`.)cW.
- 94, 174, 50, 62, 117, 111, 23, 114, 190, 137, 97, 91, // ^.2>uo.r..a[
- 155, 170, 98, 193, 127, 242, 47, 230, 128, 164, 123, 39, // ..b.../...{'
- 101, 180, 27, 254, 15, 228, 255, 0, 84, 79, 76, 0, // e.......TOL.
- 0, 0 // .
+ 31, 139, 8, 8, 34, 120, 156, 101, 0, 3, 98, 117, // ...."x.e..bu
+ 110, 100, 108, 101, 46, 106, 115, 0, 172, 59, 139, 114, // ndle.js..;.r
+ 219, 182, 178, 191, 18, 105, 58, 26, 224, 10, 81, 236, // .....i:...Q.
+ 180, 61, 247, 94, 42, 168, 38, 117, 220, 184, 143, 184, // .=.^*.&u....
+ 110, 157, 164, 15, 29, 29, 14, 69, 65, 22, 43, 10, // n......EA.+.
+ 148, 73, 72, 142, 107, 234, 223, 239, 238, 2, 224, 67, // .IH.k......C
+ 166, 123, 206, 116, 238, 140, 71, 196, 27, 139, 125, 239, // .{.t..G...}.
+ 2, 222, 71, 249, 51, 45, 140, 80, 34, 20, 185, 200, // ..G.3-.P"...
+ 68, 34, 118, 34, 21, 177, 124, 56, 136, 72, 78, 103, // D"v"..|8.HNg
+ 162, 144, 47, 162, 56, 49, 165, 250, 196, 38, 65, 81, // ../.81...&AQ
+ 222, 148, 186, 220, 150, 159, 241, 50, 223, 174, 202, 155, // .......2....
+ 60, 89, 148, 217, 93, 81, 110, 116, 92, 106, 115, 87, // ..p...P
+ 81, 223, 182, 214, 104, 217, 107, 160, 56, 210, 155, 10, // Q...h.k.8...
+ 108, 199, 197, 174, 62, 198, 158, 241, 7, 59, 241, 33, // l...>....;.!
+ 222, 229, 200, 31, 180, 236, 161, 30, 177, 65, 22, 242, // .........A..
+ 107, 87, 68, 171, 251, 239, 45, 83, 154, 85, 82, 140, // kWD...-S.UR.
+ 232, 228, 18, 234, 88, 1, 168, 141, 250, 100, 164, 169, // ....X....d..
+ 199, 222, 216, 177, 192, 19, 22, 74, 195, 171, 133, 195, // .......J....
+ 112, 2, 189, 240, 17, 248, 3, 127, 235, 81, 162, 23, // p........Q..
+ 234, 211, 143, 48, 150, 15, 79, 57, 129, 53, 174, 88, // ...0..O9.5.X
+ 127, 108, 94, 105, 26, 100, 89, 102, 108, 134, 67, 238, // .l^i.dYfl.C.
+ 150, 237, 73, 166, 36, 117, 78, 205, 140, 123, 60, 40, // ..I.$uN..{<(
+ 104, 80, 126, 59, 170, 56, 132, 117, 240, 148, 30, 97, // hP~;.8.u...a
+ 1, 225, 177, 219, 214, 7, 152, 87, 242, 36, 212, 184, // .......W.$..
+ 222, 79, 211, 126, 213, 94, 88, 137, 173, 156, 98, 209, // .O.~.^X...b.
+ 66, 19, 143, 230, 81, 1, 69, 36, 168, 145, 39, 127, // B...Q.E$..'.
+ 243, 0, 15, 143, 22, 180, 103, 153, 231, 42, 90, 31, // ......g..*Z.
+ 220, 241, 16, 202, 6, 5, 215, 8, 52, 235, 225, 156, // ........4...
+ 5, 112, 60, 125, 101, 239, 4, 86, 206, 71, 219, 93, // .p<}e..V.G.]
+ 177, 130, 238, 193, 160, 119, 6, 205, 249, 112, 88, 150, // .....w...pX.
+ 89, 79, 146, 64, 204, 51, 88, 64, 253, 172, 128, 10, // YO.@.3X@....
+ 121, 162, 111, 96, 12, 99, 89, 103, 79, 89, 38, 156, // y.o`.cYgOY&.
+ 157, 53, 132, 227, 140, 89, 44, 121, 221, 136, 42, 4, // .5...Y,y..*.
+ 216, 152, 200, 151, 143, 138, 44, 55, 192, 134, 99, 45, // ......,7..c-
+ 161, 188, 74, 150, 134, 241, 49, 247, 208, 25, 104, 180, // ..J...1...h.
+ 40, 17, 161, 116, 204, 158, 249, 66, 42, 89, 66, 200, // (..t...B*YB.
+ 225, 48, 122, 143, 63, 74, 176, 152, 80, 112, 133, 240, // .0z.?J..Pp..
+ 133, 168, 116, 1, 200, 37, 3, 13, 156, 112, 26, 37, // ..t..%...p.%
+ 19, 252, 29, 158, 138, 247, 44, 6, 48, 50, 129, 163, // ......,.02..
+ 181, 176, 43, 194, 81, 227, 81, 118, 167, 85, 126, 253, // ..+.Q.Qv.U~.
+ 241, 237, 121, 170, 80, 217, 8, 139, 111, 156, 182, 154, // ..y.P...o...
+ 76, 211, 153, 19, 70, 97, 89, 54, 5, 182, 72, 120, // L...FaY6..Hx
+ 144, 10, 234, 231, 226, 103, 22, 194, 78, 84, 83, 61, // .....g..NTS=
+ 153, 14, 6, 115, 232, 230, 194, 31, 226, 43, 131, 88, // ...s.....+.X
+ 118, 39, 230, 99, 66, 178, 60, 169, 49, 245, 137, 61, // v'.cB.<.1..=
+ 182, 31, 133, 69, 222, 82, 108, 197, 74, 236, 197, 189, // ...E.Rl.J...
+ 152, 139, 181, 56, 147, 225, 96, 64, 114, 81, 150, 145, // ...8..`@rQ..
+ 248, 36, 207, 60, 227, 32, 78, 241, 72, 107, 60, 251, // .$.<. N.Hk<.
+ 18, 24, 107, 249, 202, 84, 125, 45, 166, 218, 19, 162, // ..k..T}-....
+ 214, 211, 229, 76, 218, 179, 64, 139, 129, 26, 208, 175, // ...L..@.....
+ 63, 207, 178, 84, 69, 13, 25, 216, 67, 227, 99, 201, // ?..TE...C.c.
+ 216, 79, 112, 102, 208, 7, 117, 4, 132, 111, 143, 214, // .Opf..u..o..
+ 187, 205, 92, 229, 237, 182, 121, 114, 147, 104, 211, 156, // ......yr.h..
+ 191, 32, 104, 224, 88, 244, 177, 101, 30, 188, 206, 243, // . h.X..e....
+ 232, 126, 148, 20, 244, 101, 123, 14, 195, 54, 226, 193, // .~...e{..6..
+ 43, 155, 96, 127, 104, 12, 39, 69, 28, 236, 225, 40, // +.`.h.'E...(
+ 243, 175, 78, 96, 224, 158, 164, 85, 236, 173, 246, 129, // ..N`...U....
+ 47, 232, 93, 248, 5, 189, 59, 161, 95, 75, 191, 61, // /.]...;._K.=
+ 113, 76, 176, 231, 164, 126, 176, 38, 21, 53, 206, 9, // qL...~.&.5..
+ 43, 115, 96, 16, 139, 20, 201, 86, 242, 204, 98, 101, // +s`....V..be
+ 53, 24, 208, 106, 82, 174, 240, 131, 53, 220, 74, 98, // 5..jR...5.Jb
+ 29, 11, 28, 199, 57, 222, 28, 171, 180, 80, 207, 144, // ....9....P..
+ 24, 91, 160, 193, 246, 213, 167, 241, 22, 144, 143, 123, // .[.........{
+ 209, 122, 91, 20, 228, 191, 94, 236, 1, 71, 249, 213, // .z[...^..G..
+ 172, 60, 175, 136, 80, 135, 247, 192, 36, 123, 177, 146, // .<..P...${..
+ 171, 178, 140, 91, 124, 34, 238, 229, 222, 10, 193, 86, // ...[|".....V
+ 210, 89, 97, 147, 21, 126, 123, 114, 11, 226, 0, 172, // .Ya..~{r....
+ 194, 144, 45, 184, 160, 198, 193, 96, 109, 229, 157, 106, // ..-....`m..j
+ 30, 247, 194, 53, 110, 9, 27, 113, 89, 2, 242, 128, // ...5n..qY...
+ 129, 45, 207, 220, 79, 156, 166, 158, 195, 114, 115, 121, // .-..O....rsy
+ 223, 105, 130, 237, 65, 240, 64, 200, 133, 120, 30, 248, // .i..A.@..x..
+ 78, 246, 164, 102, 82, 121, 206, 246, 0, 43, 104, 210, // N..fRy...+h.
+ 84, 126, 176, 231, 16, 103, 192, 211, 105, 231, 82, 202, // T~...g..i.R.
+ 45, 69, 28, 13, 179, 57, 76, 195, 35, 161, 206, 67, // -E...9L.#..C
+ 225, 74, 27, 78, 12, 232, 89, 24, 152, 202, 27, 182, // .J.N..Y.....
+ 226, 160, 123, 156, 24, 40, 57, 7, 41, 248, 52, 94, // ..{..(9.).4^
+ 62, 127, 14, 74, 133, 14, 129, 84, 130, 145, 127, 177, // >..J...T....
+ 93, 61, 14, 87, 24, 12, 124, 73, 18, 111, 44, 42, // ]=.W..|I.o,*
+ 120, 94, 179, 144, 143, 52, 24, 181, 235, 100, 158, 162, // x^...4...d..
+ 230, 19, 191, 48, 28, 43, 136, 97, 56, 90, 132, 53, // ...0.+.a8Z.5
+ 121, 30, 86, 14, 215, 77, 57, 124, 199, 80, 242, 196, // y.V..M9|.P..
+ 122, 58, 28, 86, 159, 134, 202, 60, 183, 138, 160, 246, // z:.V...<....
+ 238, 64, 35, 88, 35, 0, 234, 239, 100, 156, 15, 6, // .@#X#...d...
+ 217, 43, 175, 84, 198, 25, 172, 7, 202, 46, 159, 102, // .+.T.......f
+ 51, 82, 123, 200, 205, 48, 93, 118, 28, 49, 180, 182, // 3R{..0]v.1..
+ 236, 28, 212, 20, 46, 31, 124, 96, 168, 108, 80, 221, // ......|`.lP.
+ 132, 196, 57, 134, 87, 190, 78, 195, 80, 95, 88, 67, // ..9.W.N.P_XC
+ 237, 59, 164, 41, 75, 208, 46, 150, 21, 116, 151, 186, // .;.)K....t..
+ 128, 70, 214, 22, 98, 205, 193, 139, 43, 178, 141, 98, // .F..b...+..b
+ 204, 47, 139, 118, 200, 174, 124, 0, 194, 26, 111, 124, // ./.v..|...o|
+ 184, 104, 236, 252, 161, 169, 16, 173, 34, 36, 110, 71, // .h......"$nG
+ 220, 86, 58, 219, 32, 53, 120, 98, 191, 130, 126, 91, // .V:. 5xb..~[
+ 98, 88, 57, 24, 170, 44, 243, 158, 204, 202, 210, 86, // bX9..,.....V
+ 243, 6, 251, 112, 29, 84, 195, 96, 64, 214, 226, 44, // ...p.T.`@..,
+ 176, 48, 122, 20, 109, 183, 96, 226, 172, 127, 156, 131, // .0z.m.`.....
+ 138, 39, 97, 164, 13, 136, 72, 59, 153, 129, 65, 58, // .'a...H;..A:
+ 25, 67, 97, 215, 98, 10, 96, 211, 87, 161, 39, 85, // .Ca.b.`.W.'U
+ 58, 148, 167, 168, 131, 119, 176, 59, 39, 169, 126, 166, // :....w.;'.~.
+ 199, 26, 124, 155, 66, 229, 230, 107, 5, 11, 41, 134, // ..|.B..k..).
+ 39, 133, 229, 51, 111, 191, 171, 115, 38, 147, 36, 200, // '..3o..s&.$.
+ 155, 107, 215, 120, 122, 221, 240, 68, 68, 56, 174, 142, // .k.xz..DD8..
+ 98, 125, 23, 32, 209, 177, 138, 182, 29, 77, 135, 203, // b}. .....M..
+ 122, 48, 200, 98, 196, 179, 70, 54, 29, 146, 231, 167, // z0.b..F6....
+ 99, 243, 21, 186, 41, 207, 159, 35, 248, 109, 143, 4, // c...)..#.m..
+ 120, 239, 53, 83, 156, 251, 213, 194, 166, 243, 89, 195, // x.5S......Y.
+ 120, 85, 211, 210, 194, 154, 145, 181, 202, 92, 12, 225, // xU..........
+ 213, 59, 192, 136, 20, 112, 49, 5, 17, 131, 28, 247, // .;...p1.....
+ 178, 188, 132, 5, 172, 231, 45, 20, 240, 58, 196, 36, // ......-..:.$
+ 245, 2, 224, 59, 14, 6, 53, 195, 247, 170, 128, 0, // ...;..5.....
+ 6, 194, 98, 79, 47, 222, 223, 71, 233, 78, 249, 74, // ..bO/..G.N.J
+ 188, 82, 241, 90, 45, 92, 21, 119, 129, 146, 93, 195, // .R.Z-..w..].
+ 238, 142, 101, 191, 123, 125, 180, 107, 47, 174, 253, 231, // ..e.{}.k/...
+ 125, 154, 112, 50, 67, 118, 87, 20, 65, 0, 101, 239, // }.p2CvW.A.e.
+ 153, 113, 226, 162, 38, 253, 126, 0, 130, 167, 1, 117, // .q..&.~....u
+ 178, 209, 228, 237, 101, 5, 56, 16, 173, 24, 25, 85, // ....e.8....U
+ 24, 102, 248, 68, 5, 106, 216, 223, 126, 234, 215, 59, // .f.D.j..~..;
+ 94, 62, 70, 38, 113, 48, 16, 250, 62, 165, 227, 24, // ^>F&q0..>...
+ 110, 171, 109, 186, 3, 163, 143, 104, 200, 40, 46, 138, // n.m....h.(..
+ 247, 232, 144, 43, 203, 195, 93, 131, 67, 242, 15, 219, // ...+..].C...
+ 195, 67, 217, 239, 115, 56, 60, 241, 8, 98, 62, 228, // .C..s8<..b>.
+ 24, 78, 16, 17, 203, 242, 218, 143, 7, 224, 96, 28, // .N........`.
+ 178, 148, 170, 135, 42, 14, 43, 42, 60, 185, 148, 33, // ....*.+*<..!
+ 124, 218, 227, 177, 131, 31, 188, 196, 246, 51, 143, 73, // |........3.I
+ 160, 171, 182, 229, 211, 25, 7, 151, 19, 36, 1, 184, // .........$..
+ 19, 3, 214, 109, 26, 197, 138, 189, 56, 139, 182, 192, // ...m....8...
+ 110, 234, 179, 23, 184, 37, 168, 15, 232, 51, 217, 15, // n....%...3..
+ 217, 157, 202, 207, 192, 37, 102, 28, 118, 214, 147, 163, // .....%f.v...
+ 182, 81, 145, 38, 48, 247, 37, 42, 30, 95, 132, 88, // .Q.&0.%*._.X
+ 35, 5, 197, 5, 191, 16, 223, 82, 109, 106, 134, 192, // #......Rmj..
+ 1, 74, 168, 73, 8, 74, 99, 20, 45, 22, 231, 123, // .J.I.Jc.-..{
+ 208, 10, 63, 36, 133, 81, 224, 37, 2, 85, 179, 201, // ..?$.Q.%.U..
+ 155, 224, 14, 4, 54, 208, 46, 128, 126, 106, 64, 165, // ....6...~j@.
+ 138, 250, 139, 72, 223, 168, 60, 219, 21, 233, 253, 181, // ...H..<.....
+ 50, 223, 106, 24, 119, 241, 254, 221, 15, 125, 212, 100, // 2.j.w....}.d
+ 228, 34, 228, 188, 117, 188, 79, 32, 234, 107, 118, 81, // ."..u.O .kvQ
+ 6, 43, 14, 39, 92, 245, 121, 221, 85, 92, 70, 27, // .+.'..y.U.F.
+ 58, 119, 209, 111, 108, 112, 151, 44, 204, 138, 150, 3, // :w.olp.,....
+ 212, 173, 84, 114, 179, 50, 85, 13, 35, 115, 87, 78, // ..Tr.2U.#sWN
+ 1, 72, 95, 6, 18, 109, 124, 217, 68, 243, 111, 49, // .H_..m|.D.o1
+ 214, 242, 245, 5, 120, 196, 105, 22, 45, 92, 157, 40, // ....x.i.-..(
+ 169, 185, 201, 239, 31, 142, 153, 216, 5, 30, 207, 244, // ............
+ 33, 142, 76, 140, 202, 252, 225, 208, 101, 103, 17, 201, // !.L.....eg..
+ 94, 33, 247, 78, 129, 180, 192, 65, 32, 57, 184, 254, // ^!.N...A 9..
+ 244, 11, 148, 28, 139, 202, 215, 6, 248, 113, 190, 51, // .........q.3
+ 10, 68, 32, 32, 113, 106, 180, 128, 180, 53, 163, 154, // .D qj...5..
+ 187, 70, 92, 74, 241, 102, 58, 181, 42, 110, 216, 59, // .F.J.f:.*n.;
+ 157, 49, 51, 82, 72, 150, 137, 251, 82, 36, 215, 16, // .13RH...R$..
+ 223, 55, 79, 79, 62, 249, 183, 147, 209, 29, 59, 202, // .7OO>.....;.
+ 248, 88, 137, 140, 68, 65, 62, 251, 2, 188, 156, 27, // .X..DA>.....
+ 235, 181, 139, 115, 113, 33, 62, 136, 215, 226, 74, 92, // ...sq!>...J.
+ 75, 235, 110, 180, 44, 153, 26, 53, 130, 123, 222, 208, // K.n.,..5.{..
+ 162, 99, 235, 147, 160, 145, 6, 55, 20, 130, 28, 42, // .c.....7...*
+ 129, 193, 177, 78, 142, 53, 222, 88, 182, 62, 34, 152, // ...N.5.X.>".
+ 15, 8, 85, 184, 96, 17, 25, 197, 57, 40, 233, 8, // ..U.`...9(..
+ 4, 113, 76, 68, 35, 53, 241, 152, 42, 215, 196, 123, // .qLD#5..*..{
+ 232, 255, 90, 207, 121, 45, 97, 246, 181, 143, 219, 223, // ..Z.y-a.....
+ 163, 181, 128, 224, 101, 26, 161, 91, 8, 46, 142, 140, // ....e..[....
+ 38, 235, 201, 218, 142, 29, 145, 14, 13, 176, 43, 176, // &.........+.
+ 158, 68, 60, 185, 145, 172, 32, 232, 44, 172, 49, 70, // .D<... .,.1F
+ 95, 178, 128, 159, 243, 128, 245, 97, 150, 201, 112, 223, // _......a..p.
+ 62, 240, 210, 245, 96, 112, 61, 170, 90, 128, 246, 24, // >...`p=.Z...
+ 72, 78, 236, 212, 66, 106, 117, 7, 234, 117, 46, 206, // HN..Bju..u..
+ 120, 192, 154, 109, 247, 212, 38, 138, 38, 198, 228, 53, // x..m..&.&..5
+ 212, 237, 124, 249, 17, 92, 89, 116, 113, 139, 221, 156, // ..|...Ytq...
+ 21, 56, 206, 102, 35, 230, 80, 42, 76, 100, 144, 7, // .8.f#.P*Ld..
+ 93, 137, 132, 189, 78, 80, 156, 9, 132, 18, 162, 81, // ]...NP.....Q
+ 177, 37, 120, 49, 56, 166, 166, 21, 229, 240, 70, 97, // .%x18.....Fa
+ 49, 39, 39, 218, 114, 48, 118, 20, 64, 17, 250, 74, // 1''.r0v.@..J
+ 183, 162, 247, 151, 175, 71, 55, 202, 188, 129, 168, 120, // .....G7....x
+ 175, 22, 215, 216, 241, 77, 158, 109, 40, 169, 84, 205, // .....M.m(.T.
+ 240, 83, 170, 6, 10, 86, 169, 8, 170, 108, 105, 27, // .S...V...li.
+ 197, 211, 11, 177, 185, 31, 12, 110, 189, 116, 167, 20, // .......n.t..
+ 11, 191, 44, 117, 66, 164, 39, 182, 220, 194, 251, 87, // ..,uB.'....W
+ 32, 89, 160, 17, 19, 155, 109, 166, 129, 213, 127, 73, // Y....m....I
+ 210, 244, 29, 68, 247, 32, 245, 93, 173, 204, 159, 179, // ...D. .]....
+ 209, 249, 38, 89, 84, 51, 0, 101, 214, 169, 235, 232, // ..&YT3.e....
+ 231, 149, 213, 249, 247, 112, 205, 65, 50, 86, 79, 128, // .....p.A2VO.
+ 247, 179, 138, 21, 204, 113, 35, 255, 162, 211, 178, 75, // .....q#....K
+ 175, 176, 46, 189, 95, 171, 88, 101, 187, 116, 113, 230, // ...._.Xe.tq.
+ 39, 125, 216, 46, 136, 22, 164, 148, 158, 232, 245, 24, // '}..........
+ 135, 229, 192, 67, 32, 244, 74, 98, 241, 189, 245, 214, // ...C .Jb....
+ 169, 169, 231, 154, 136, 172, 71, 156, 103, 121, 70, 56, // ......G.gyF8
+ 222, 58, 229, 84, 82, 80, 18, 199, 194, 188, 166, 242, // .:.TRP......
+ 218, 150, 71, 176, 248, 121, 4, 90, 181, 229, 64, 107, // ..G..y.Z..@k
+ 151, 194, 145, 10, 189, 104, 113, 14, 62, 218, 249, 43, // .....hq.>..+
+ 98, 82, 239, 114, 158, 67, 116, 208, 162, 5, 244, 77, // bR.r.Ct....M
+ 207, 103, 124, 236, 89, 217, 50, 183, 27, 62, 24, 236, // .g|.Y.2..>..
+ 220, 56, 94, 41, 243, 78, 196, 123, 84, 117, 54, 55, // .8^).N.{Tu67
+ 112, 212, 201, 34, 245, 228, 10, 174, 250, 84, 252, 161, // p..".....T..
+ 107, 48, 35, 69, 138, 135, 60, 36, 75, 214, 22, 215, // k0#E..<$K...
+ 26, 193, 97, 120, 5, 161, 207, 5, 105, 189, 92, 124, // ..ax....i..|
+ 144, 39, 226, 63, 208, 53, 150, 110, 221, 212, 17, 23, // .'.?.5.n....
+ 131, 193, 5, 168, 78, 17, 73, 175, 90, 60, 69, 69, // ....N.I.Z...
+ 198, 105, 224, 115, 66, 18, 141, 173, 37, 211, 146, 168, // .i.sB...%...
+ 202, 165, 183, 164, 126, 194, 142, 69, 213, 137, 48, 15, // ....~..E..0.
+ 108, 229, 7, 230, 36, 186, 1, 98, 204, 199, 100, 155, // l...$..b..d.
+ 23, 201, 114, 169, 22, 206, 60, 215, 94, 147, 221, 128, // ..r...<.^...
+ 224, 101, 177, 197, 120, 79, 38, 220, 101, 30, 148, 76, // .e..xO&.e..L
+ 221, 137, 122, 189, 88, 36, 211, 164, 202, 141, 167, 124, // ..z.X$.....|
+ 230, 32, 71, 1, 80, 214, 51, 105, 186, 73, 63, 99, // . G.P.3i.I?c
+ 19, 127, 192, 222, 24, 47, 1, 224, 195, 148, 208, 232, // ...../......
+ 236, 30, 5, 231, 56, 10, 189, 5, 194, 224, 202, 237, // ....8.......
+ 135, 81, 127, 71, 20, 239, 238, 103, 72, 5, 213, 135, // .Q.G...gH...
+ 168, 64, 32, 221, 120, 192, 190, 10, 142, 31, 216, 81, // .@ .x......Q
+ 154, 179, 118, 153, 150, 96, 199, 194, 202, 142, 121, 111, // ..v..`....yo
+ 100, 239, 220, 37, 177, 1, 9, 163, 88, 101, 143, 129, // d..%....Xe..
+ 138, 68, 13, 155, 97, 250, 218, 231, 105, 41, 218, 24, // .D..a...i)..
+ 111, 94, 37, 94, 254, 54, 54, 235, 9, 232, 78, 166, // o^%^.66...N.
+ 27, 12, 87, 251, 77, 71, 18, 149, 66, 36, 1, 145, // ..W.MG..B$..
+ 184, 208, 30, 152, 46, 205, 224, 44, 232, 86, 227, 226, // .......,.V..
+ 193, 231, 18, 217, 17, 111, 74, 200, 1, 130, 67, 201, // .....oJ...C.
+ 72, 224, 58, 54, 250, 183, 121, 185, 198, 5, 70, 109, // H.:6..y...Fm
+ 208, 228, 222, 251, 111, 139, 44, 166, 107, 171, 81, 12, // ....o.,.k.Q.
+ 163, 141, 194, 40, 10, 211, 10, 108, 1, 254, 152, 204, // ...(...l....
+ 38, 71, 221, 46, 237, 124, 121, 205, 250, 43, 99, 182, // &G...|y..+c.
+ 193, 139, 23, 119, 119, 119, 163, 187, 207, 71, 89, 126, // ...www...GY~
+ 243, 226, 229, 201, 201, 201, 11, 60, 57, 102, 73, 187, // .......<9fI.
+ 39, 178, 189, 88, 128, 120, 12, 6, 11, 159, 163, 0, // '..X.x......
+ 47, 17, 56, 184, 9, 216, 10, 126, 23, 101, 153, 34, // /.8....~.e."
+ 7, 128, 80, 70, 182, 202, 92, 101, 81, 219, 230, 132, // ..PF...eQ...
+ 110, 142, 44, 117, 141, 149, 68, 4, 29, 253, 41, 76, // n.,u..D...)L
+ 140, 58, 50, 149, 37, 120, 119, 79, 68, 53, 98, 41, // .:2.%xwOD5b)
+ 23, 79, 246, 245, 210, 10, 97, 158, 114, 43, 188, 45, // .O....a.r+.-
+ 69, 26, 111, 94, 153, 81, 228, 169, 84, 52, 137, 185, // E.o^.Q..T4..
+ 154, 54, 123, 128, 22, 35, 13, 228, 194, 107, 187, 118, // .6{..#...k.v
+ 43, 57, 165, 99, 182, 132, 64, 26, 37, 103, 137, 2, // +9.c..@.%g..
+ 62, 24, 44, 145, 145, 205, 198, 185, 110, 88, 42, 203, // >.,.....nX*.
+ 186, 13, 22, 73, 60, 120, 156, 80, 82, 85, 229, 178, // ...Ig.a:.
+ 210, 195, 10, 1, 142, 107, 1, 27, 228, 65, 237, 172, // .....k...A..
+ 52, 238, 49, 234, 231, 11, 204, 240, 131, 128, 40, 113, // 4.1.......(q
+ 159, 44, 90, 131, 221, 242, 162, 74, 104, 19, 35, 30, // .,Z....Jh.#.
+ 185, 197, 160, 73, 21, 93, 52, 135, 152, 72, 192, 140, // ...I.]4..H..
+ 24, 142, 18, 93, 67, 101, 35, 198, 241, 185, 242, 131, // ...]Ce#.....
+ 29, 217, 25, 106, 202, 38, 40, 245, 147, 10, 171, 72, // ...j.&(....H
+ 73, 127, 80, 9, 29, 210, 46, 167, 140, 124, 215, 19, // I.P......|..
+ 129, 23, 254, 232, 124, 185, 141, 118, 243, 214, 178, 202, // ....|..v....
+ 223, 187, 140, 253, 195, 160, 46, 133, 50, 238, 110, 110, // ........2.nn
+ 30, 8, 96, 216, 82, 34, 85, 53, 158, 106, 8, 80, // ..`.R"U5.j.P
+ 246, 164, 24, 137, 222, 248, 14, 1, 197, 191, 122, 54, // ..........z6
+ 82, 61, 83, 81, 35, 143, 126, 138, 101, 71, 158, 114, // R=SQ#.~.eG.r
+ 205, 244, 19, 104, 103, 96, 38, 155, 173, 21, 6, 105, // ...hg`&....i
+ 174, 90, 132, 181, 60, 238, 47, 204, 136, 207, 199, 134, // .Z..<./.....
+ 34, 193, 49, 57, 128, 57, 149, 99, 124, 221, 128, 187, // ".19.9.c|...
+ 144, 250, 196, 246, 76, 230, 173, 180, 155, 207, 14, 100, // ....L......d
+ 93, 41, 137, 243, 60, 207, 114, 210, 232, 224, 69, 82, // ])..<.r...ER
+ 43, 123, 122, 28, 221, 102, 37, 164, 111, 23, 94, 179, // +{z..f%.o.^.
+ 231, 173, 216, 246, 12, 181, 180, 53, 16, 199, 173, 104, // .......5...h
+ 123, 202, 18, 115, 83, 213, 10, 137, 119, 41, 115, 10, // {..sS...w)s.
+ 84, 114, 167, 228, 129, 165, 181, 52, 7, 179, 202, 179, // Tr.....4....
+ 59, 8, 215, 15, 160, 180, 78, 68, 216, 162, 114, 35, // ;.....ND..r#
+ 149, 72, 23, 165, 213, 187, 39, 221, 60, 250, 65, 220, // .H....'.<.A.
+ 55, 130, 99, 127, 64, 217, 150, 30, 251, 224, 70, 185, // 7.c.@.....F.
+ 0, 142, 120, 138, 82, 96, 190, 132, 54, 155, 24, 13, // ..x.R`..6...
+ 231, 78, 124, 107, 224, 11, 78, 241, 84, 35, 58, 47, // .N|k..N.T#:/
+ 126, 41, 171, 33, 181, 141, 69, 97, 72, 205, 251, 104, // ~).!..EaH..h
+ 33, 193, 15, 115, 65, 139, 63, 142, 91, 28, 125, 120, // !..sA.?.[.}x
+ 227, 107, 16, 129, 19, 103, 67, 132, 188, 102, 216, 132, // .k...gC..f..
+ 34, 208, 60, 31, 112, 74, 172, 158, 18, 52, 183, 152, // ".<.pJ...4..
+ 45, 146, 24, 213, 219, 172, 188, 200, 60, 177, 176, 203, // -.......<...
+ 64, 110, 68, 142, 122, 33, 233, 178, 59, 192, 237, 155, // @nD.z!..;...
+ 164, 80, 19, 247, 109, 76, 54, 43, 165, 71, 115, 144, // .P..mL6+.Gs.
+ 32, 230, 251, 192, 227, 202, 210, 189, 130, 240, 59, 0, // .........;.
+ 146, 188, 79, 54, 42, 219, 25, 212, 224, 221, 74, 13, // ..O6*.....J.
+ 32, 199, 148, 239, 115, 227, 75, 7, 225, 222, 153, 208, // ...s.K.....
+ 253, 36, 146, 239, 15, 113, 43, 190, 22, 223, 139, 183, // .$...q+.....
+ 208, 246, 39, 194, 248, 29, 254, 252, 100, 115, 197, 226, // ..'.....ds..
+ 87, 151, 61, 249, 173, 138, 79, 197, 239, 86, 116, 132, // W.=...O..Vt.
+ 6, 62, 243, 62, 78, 253, 16, 209, 232, 58, 170, 92, // .>.>N....:..
+ 89, 171, 187, 98, 183, 66, 139, 183, 101, 9, 196, 123, // Y..b.B..e..{
+ 235, 118, 13, 229, 45, 244, 92, 128, 190, 164, 47, 10, // .v..-...../.
+ 112, 0, 219, 226, 187, 182, 233, 236, 80, 221, 59, 235, // p.......P.;.
+ 175, 40, 124, 174, 66, 116, 170, 16, 194, 97, 194, 199, // .(|.Bt...a..
+ 224, 59, 16, 8, 108, 154, 234, 89, 109, 12, 84, 147, // .;..l..Ym.T.
+ 201, 223, 202, 83, 17, 106, 182, 214, 162, 153, 166, 15, // ...S.j......
+ 181, 119, 42, 44, 44, 0, 244, 31, 96, 39, 94, 210, // .w*,,...`'^.
+ 29, 85, 56, 2, 197, 39, 122, 161, 13, 139, 237, 13, // .U8..'z.....
+ 250, 84, 77, 232, 226, 97, 173, 93, 126, 30, 176, 44, // .TM..a.]~..,
+ 142, 109, 131, 33, 88, 47, 39, 244, 235, 61, 115, 248, // .m.!X/'..=s.
+ 10, 204, 1, 24, 188, 245, 131, 32, 175, 71, 23, 28, // ....... .G..
+ 180, 234, 37, 44, 107, 193, 63, 157, 205, 108, 166, 188, // ..%,k.?..l..
+ 86, 36, 15, 168, 165, 93, 171, 188, 21, 189, 219, 209, // V$...]......
+ 142, 59, 163, 45, 219, 138, 142, 188, 66, 11, 46, 162, // .;.-....B...
+ 210, 169, 133, 158, 197, 115, 46, 171, 14, 68, 221, 50, // .....s...D.2
+ 73, 141, 202, 219, 182, 161, 193, 44, 241, 193, 190, 84, // I......,...T
+ 200, 241, 118, 35, 191, 239, 26, 71, 111, 197, 46, 15, // ..v#...Go...
+ 213, 5, 111, 143, 46, 200, 109, 80, 136, 166, 206, 130, // ..o...mP....
+ 68, 123, 39, 16, 106, 142, 43, 37, 213, 153, 177, 116, // D{'.j.+%...t
+ 183, 204, 151, 245, 75, 84, 194, 216, 184, 242, 10, 47, // ....KT...../
+ 201, 65, 188, 244, 175, 188, 188, 163, 76, 55, 129, 16, // .A......L7..
+ 145, 66, 172, 143, 185, 4, 209, 99, 189, 196, 114, 71, // .B.....c..rG
+ 236, 18, 128, 120, 79, 15, 67, 186, 193, 227, 135, 49, // ...xO.C....1
+ 224, 83, 58, 28, 101, 192, 139, 157, 38, 23, 196, 245, // .S:.e...&...
+ 182, 43, 163, 57, 238, 108, 237, 34, 139, 215, 25, 158, // .+.9.l."....
+ 209, 178, 113, 245, 96, 45, 119, 195, 68, 38, 195, 3, // ..q.`-w.D&..
+ 0, 159, 60, 130, 242, 32, 158, 128, 11, 148, 189, 247, // ..<.. ......
+ 24, 16, 57, 214, 79, 173, 185, 59, 119, 34, 216, 226, // ..9.O..;w"..
+ 237, 207, 249, 184, 103, 172, 114, 158, 107, 98, 191, 11, // ....g.r.kb..
+ 161, 26, 47, 68, 194, 81, 34, 149, 184, 117, 140, 226, // ../D.Q"..u..
+ 180, 90, 216, 76, 211, 100, 93, 203, 126, 241, 31, 47, // .Z.L.d].~../
+ 219, 181, 228, 174, 45, 170, 95, 138, 88, 183, 114, 191, // ....-._.X.r.
+ 199, 207, 79, 209, 99, 152, 54, 159, 198, 164, 21, 178, // ..O.c.6.....
+ 223, 202, 127, 136, 172, 107, 118, 103, 168, 199, 192, 205, // .....kvg....
+ 99, 188, 33, 194, 181, 24, 48, 235, 91, 130, 231, 13, // c.!...0.[...
+ 163, 170, 96, 16, 239, 55, 58, 6, 87, 253, 244, 186, // ..`..7:.W...
+ 129, 187, 39, 184, 7, 94, 93, 240, 171, 128, 174, 241, // ..'..^].....
+ 192, 54, 163, 253, 175, 1, 143, 155, 6, 212, 35, 243, // .6........#.
+ 191, 43, 189, 7, 184, 84, 132, 75, 195, 109, 74, 241, // .+...T.K.mJ.
+ 35, 24, 64, 46, 192, 155, 146, 198, 39, 48, 233, 251, // #.@.....'0..
+ 209, 38, 22, 235, 133, 163, 182, 9, 120, 43, 255, 167, // .&......x+..
+ 27, 169, 224, 27, 112, 124, 109, 83, 77, 44, 26, 122, // ....p|mSM,.z
+ 236, 214, 187, 90, 83, 210, 10, 168, 193, 28, 136, 255, // ...ZS.......
+ 203, 107, 47, 45, 198, 135, 69, 254, 21, 152, 162, 32, // .k/-..E....
+ 139, 96, 69, 3, 105, 232, 174, 237, 22, 111, 224, 155, // .`E.i....o..
+ 126, 42, 198, 215, 77, 104, 151, 149, 181, 216, 21, 234, // ~*..Mh......
+ 141, 154, 239, 110, 62, 90, 39, 246, 168, 129, 161, 254, // ...n>Z'.....
+ 61, 186, 107, 221, 54, 0, 118, 208, 157, 158, 0, 142, // =.k.6.v.....
+ 36, 24, 128, 250, 225, 146, 101, 195, 219, 199, 46, 21, // $.....e.....
+ 153, 158, 71, 173, 77, 33, 14, 173, 21, 115, 161, 35, // ..G.M!...s.#
+ 214, 133, 2, 85, 77, 30, 52, 68, 124, 168, 217, 155, // ...UM.4D|...
+ 46, 47, 118, 89, 250, 131, 226, 110, 60, 153, 215, 254, // ./vY...n<...
+ 197, 107, 5, 229, 41, 41, 89, 210, 164, 181, 143, 106, // .k..))Y....j
+ 200, 34, 238, 221, 229, 46, 94, 174, 147, 96, 109, 188, // ."....^..`m.
+ 7, 234, 156, 87, 231, 196, 58, 190, 193, 1, 148, 153, // ...W..:.....
+ 130, 175, 156, 158, 136, 147, 25, 183, 186, 179, 127, 213, // ............
+ 31, 34, 132, 195, 254, 115, 44, 156, 206, 134, 195, 67, // ."...s,....C
+ 67, 209, 55, 30, 171, 35, 120, 30, 6, 61, 214, 242, // C.7..#x..=..
+ 207, 250, 225, 173, 211, 206, 87, 152, 246, 67, 203, 66, // ......W..C.B
+ 57, 224, 74, 67, 120, 133, 126, 175, 109, 20, 223, 110, // 9.JCx.~.m..n
+ 189, 105, 182, 226, 197, 134, 117, 79, 51, 254, 208, 108, // .i....uO3..l
+ 117, 169, 233, 140, 134, 98, 94, 152, 188, 142, 150, 7, // u....b^.....
+ 118, 107, 147, 19, 63, 13, 6, 63, 33, 230, 105, 70, // vk..?..?!.iF
+ 222, 26, 241, 235, 96, 240, 43, 58, 96, 127, 56, 223, // ....`.+:`.8.
+ 194, 72, 118, 235, 50, 38, 184, 21, 254, 71, 3, 251, // .Hv.2&...G..
+ 26, 12, 194, 237, 132, 16, 69, 251, 222, 54, 1, 120, // ......E..6.x
+ 226, 54, 13, 117, 171, 191, 81, 179, 86, 138, 192, 252, // .6.u..Q.V...
+ 40, 191, 115, 70, 73, 131, 56, 122, 137, 7, 135, 204, // (.sFI.8z....
+ 174, 222, 194, 139, 121, 132, 19, 15, 1, 72, 198, 215, // ....y....H..
+ 242, 22, 143, 99, 221, 170, 214, 137, 126, 27, 12, 126, // ...c....~..~
+ 243, 81, 152, 123, 209, 61, 86, 246, 170, 225, 194, 9, // .Q.{.=V.....
+ 153, 197, 182, 247, 139, 216, 41, 48, 200, 159, 86, 195, // ......)0..V.
+ 162, 250, 253, 158, 178, 151, 185, 186, 221, 169, 194, 188, // ............
+ 214, 201, 38, 194, 165, 191, 201, 163, 13, 94, 201, 176, // ..&......^..
+ 239, 159, 234, 228, 101, 185, 209, 156, 45, 48, 86, 241, // ....e...-0V.
+ 187, 60, 133, 157, 196, 225, 230, 2, 241, 224, 80, 3, // .<........P.
+ 80, 124, 215, 68, 217, 71, 108, 247, 72, 242, 216, 67, // P|.D.Gl.H..C
+ 100, 225, 225, 173, 210, 36, 140, 196, 71, 114, 23, 118, // d....$..Gr.v
+ 196, 176, 158, 251, 30, 115, 222, 74, 186, 246, 39, 189, // .....s.J..'.
+ 27, 146, 181, 178, 188, 209, 46, 252, 181, 204, 168, 186, // ............
+ 55, 210, 214, 117, 101, 218, 147, 10, 61, 140, 176, 230, // 7..ue...=...
+ 86, 85, 113, 43, 180, 255, 62, 24, 252, 110, 51, 131, // VUq+..>..n3.
+ 162, 242, 134, 91, 180, 212, 16, 43, 104, 93, 81, 83, // ...[...+h]QS
+ 132, 142, 158, 238, 205, 246, 133, 179, 149, 79, 99, 26, // .........Oc.
+ 207, 125, 79, 128, 215, 87, 66, 82, 211, 230, 52, 209, // .}O..WBR..4.
+ 99, 87, 89, 69, 133, 240, 217, 27, 104, 240, 114, 112, // cWYE....h.rp
+ 203, 189, 238, 76, 118, 117, 145, 191, 118, 227, 55, 181, // ...Lvu..v.7.
+ 114, 21, 170, 25, 217, 199, 169, 138, 114, 23, 119, 128, // r.......r.w.
+ 49, 23, 123, 56, 94, 28, 233, 88, 165, 237, 165, 48, // 1.{8^..X...0
+ 212, 170, 35, 20, 146, 220, 80, 54, 26, 20, 40, 235, // ..#...P6..(.
+ 19, 192, 137, 182, 15, 251, 187, 160, 193, 103, 132, 141, // .........g..
+ 127, 38, 105, 218, 39, 225, 165, 162, 235, 69, 145, 35, // .&i.'....E.#
+ 93, 92, 33, 6, 45, 253, 109, 235, 159, 77, 154, 107, // ].!.-.m..M.k
+ 141, 237, 96, 252, 101, 71, 227, 230, 45, 99, 218, 211, // ..`.eG..-c..
+ 248, 238, 203, 138, 28, 233, 99, 91, 196, 156, 212, 17, // ......c[....
+ 19, 181, 242, 149, 232, 178, 78, 213, 172, 117, 229, 181, // ......N..u..
+ 110, 45, 220, 245, 191, 75, 19, 122, 91, 100, 14, 8, // n-...K.z[d..
+ 228, 153, 62, 242, 45, 171, 252, 221, 24, 223, 196, 225, // ..>.-.......
+ 131, 98, 167, 192, 51, 121, 58, 206, 234, 71, 254, 152, // .b..3y:..G..
+ 166, 181, 239, 100, 241, 221, 226, 112, 56, 131, 72, 17, // ...d...p8.H.
+ 31, 45, 130, 34, 132, 121, 165, 76, 38, 167, 193, 75, // .-.".y.L&..K
+ 124, 107, 71, 157, 51, 216, 111, 58, 28, 102, 179, 49, // |kG.3.o:.f.1
+ 222, 116, 37, 19, 244, 178, 229, 46, 248, 194, 85, 78, // .t%.......UN
+ 103, 210, 222, 64, 140, 162, 162, 72, 0, 133, 216, 132, // g..@...H....
+ 73, 9, 177, 227, 193, 151, 52, 136, 154, 164, 111, 231, // I.....4...o.
+ 83, 187, 28, 46, 242, 143, 106, 17, 223, 56, 148, 187, // S.....j..8..
+ 97, 191, 31, 192, 36, 204, 51, 71, 219, 109, 122, 207, // a...$.3G.mz.
+ 118, 226, 12, 79, 184, 131, 19, 78, 251, 125, 114, 162, // v..O...N.}r.
+ 102, 196, 230, 164, 216, 114, 46, 118, 248, 152, 210, 194, // f....r.v....
+ 254, 18, 244, 237, 52, 123, 254, 18, 142, 79, 15, 49, // ....4{...O.1
+ 101, 14, 42, 216, 141, 220, 85, 23, 0, 225, 65, 124, // e.*...U...A|
+ 210, 244, 70, 232, 93, 180, 173, 217, 251, 188, 193, 0, // ..F.].......
+ 159, 52, 230, 108, 108, 240, 94, 185, 13, 104, 84, 253, // .4.ll.^..hT.
+ 52, 88, 1, 227, 50, 235, 154, 27, 128, 7, 186, 0, // 4X..2.......
+ 78, 91, 165, 185, 218, 94, 15, 225, 32, 124, 107, 221, // N[...^.. |k.
+ 148, 222, 202, 188, 35, 213, 32, 24, 205, 37, 28, 44, // ....#. ..%.,
+ 195, 159, 68, 162, 7, 177, 107, 141, 198, 167, 38, 244, // ..D...k...&.
+ 208, 18, 214, 203, 101, 94, 63, 238, 251, 215, 63, 139, // ....e^?...?.
+ 255, 250, 167, 254, 191, 74, 174, 182, 169, 109, 35, 8, // .....J...m#.
+ 255, 149, 88, 241, 16, 9, 31, 182, 33, 161, 31, 100, // ..X.....!..d
+ 20, 77, 201, 27, 52, 166, 100, 220, 16, 62, 56, 142, // .M..4.d..>8.
+ 71, 181, 101, 44, 144, 79, 174, 36, 211, 16, 172, 254, // G.e,.O.$....
+ 246, 238, 238, 189, 202, 40, 51, 237, 76, 2, 247, 174, // .....(3.L...
+ 187, 189, 189, 221, 187, 221, 103, 129, 31, 91, 149, 104, // ......g..[.h
+ 247, 110, 8, 226, 232, 133, 137, 88, 52, 200, 87, 150, // .n.....X4.W.
+ 123, 228, 165, 148, 67, 228, 112, 121, 148, 149, 47, 169, // {...C.py../.
+ 18, 102, 112, 228, 249, 71, 162, 133, 211, 237, 118, 209, // .fp..G....v.
+ 85, 147, 131, 124, 82, 99, 188, 130, 102, 125, 221, 2, // U..|Rc..f}..
+ 106, 90, 186, 234, 152, 245, 25, 92, 236, 224, 11, 211, // jZ..........
+ 215, 193, 49, 70, 252, 228, 219, 109, 11, 142, 47, 110, // ..1F...m../n
+ 61, 6, 56, 169, 79, 77, 161, 97, 142, 15, 155, 105, // =.8.OM.a...i
+ 240, 11, 25, 104, 76, 5, 12, 174, 42, 60, 162, 68, // ...hL...*<.D
+ 69, 102, 136, 244, 132, 27, 76, 52, 112, 108, 138, 10, // Ef....L4pl..
+ 77, 76, 97, 3, 71, 114, 227, 166, 158, 167, 89, 124, // MLa.Gr....Y|
+ 6, 29, 102, 39, 124, 156, 78, 84, 159, 25, 244, 129, // ..f'|.NT....
+ 205, 130, 146, 49, 92, 85, 169, 99, 232, 156, 16, 74, // ...1.U.c...J
+ 52, 116, 113, 0, 160, 116, 2, 79, 233, 224, 165, 231, // 4tq..t.O....
+ 231, 157, 160, 36, 142, 134, 38, 7, 7, 114, 249, 206, // ...$..&..r..
+ 107, 217, 88, 109, 16, 180, 11, 202, 78, 142, 111, 248, // k.Xm....N.o.
+ 44, 44, 17, 255, 27, 226, 150, 137, 222, 47, 156, 23, // ,,......./..
+ 216, 122, 187, 117, 94, 136, 110, 25, 20, 234, 33, 240, // .z.u^.n...!.
+ 123, 48, 12, 80, 9, 227, 10, 2, 61, 240, 49, 136, // {0.P....=.1.
+ 172, 92, 14, 238, 244, 168, 24, 37, 255, 201, 49, 140, // .......%..1.
+ 67, 125, 197, 252, 59, 135, 19, 79, 12, 162, 246, 49, // C}..;..O...1
+ 9, 208, 203, 135, 131, 38, 76, 101, 4, 61, 143, 128, // .....&Le.=..
+ 154, 83, 172, 128, 29, 115, 158, 57, 114, 82, 95, 75, // .S...s.9rR_K
+ 157, 226, 58, 149, 215, 102, 119, 36, 232, 160, 191, 225, // ..:..fw$....
+ 180, 52, 41, 96, 166, 175, 152, 252, 138, 58, 67, 68, // .4)`.....:CD
+ 194, 74, 160, 241, 61, 102, 236, 244, 120, 137, 81, 102, // .J..=f..x.Qf
+ 252, 195, 176, 244, 241, 92, 146, 188, 58, 227, 193, 59, // ........:..;
+ 105, 183, 90, 10, 181, 119, 197, 41, 74, 84, 35, 212, // i.Z..w.)JT#.
+ 249, 255, 14, 87, 253, 84, 55, 217, 0, 37, 123, 110, // ...W.T7..%{n
+ 232, 127, 13, 221, 241, 183, 231, 147, 125, 56, 5, 238, // ........}8..
+ 243, 238, 190, 23, 182, 123, 112, 184, 120, 119, 69, 154, // .....{p.xwE.
+ 146, 144, 249, 240, 93, 184, 199, 102, 123, 123, 25, 66, // ....]..f{{.B
+ 134, 213, 23, 55, 1, 102, 201, 74, 93, 186, 206, 158, // ...7.f.J]...
+ 227, 73, 70, 220, 212, 24, 81, 240, 219, 6, 121, 77, // .IF...Q...yM
+ 182, 12, 16, 199, 60, 158, 199, 179, 108, 30, 95, 141, // ....<...l._.
+ 206, 245, 195, 220, 157, 33, 197, 38, 65, 83, 141, 196, // .....!.&AS..
+ 20, 31, 122, 221, 219, 44, 225, 52, 134, 87, 241, 224, // ..z..,.4.W..
+ 111, 88, 145, 62, 224, 185, 130, 43, 67, 105, 73, 30, // oX.>...+CiI.
+ 101, 205, 240, 81, 112, 17, 149, 75, 88, 210, 119, 87, // e..Qp..KX.wW
+ 29, 19, 166, 36, 60, 250, 222, 251, 131, 226, 36, 26, // ...$<.....$.
+ 20, 2, 217, 80, 142, 11, 196, 72, 251, 2, 35, 93, // ...P...H..#]
+ 76, 186, 179, 101, 148, 255, 90, 186, 125, 105, 60, 90, // L..e..Z.}iE.w... %
+ 140, 24, 210, 79, 188, 77, 55, 209, 10, 46, 113, 101, // ...O.M7...qe
+ 150, 63, 236, 237, 201, 196, 184, 236, 56, 100, 129, 119, // .?......8d.w
+ 38, 77, 101, 174, 21, 108, 138, 39, 138, 149, 161, 35, // &Me..l.'...#
+ 23, 12, 252, 47, 63, 221, 230, 181, 63, 154, 208, 222, // .../?...?...
+ 89, 57, 130, 123, 65, 106, 199, 39, 134, 4, 49, 72, // Y9.{Aj.'..1H
+ 239, 17, 170, 191, 110, 142, 107, 255, 156, 209, 58, 145, // ....n.k...:.
+ 224, 253, 166, 24, 188, 91, 109, 60, 71, 210, 223, 88, // .....[m.K..C.Y
+ 41, 246, 225, 248, 247, 40, 176, 187, 21, 35, 178, 89, // )....(...#.Y
+ 149, 78, 195, 34, 78, 23, 237, 94, 98, 34, 188, 46, // .N."N..^b"..
+ 201, 101, 110, 38, 247, 87, 93, 162, 0, 5, 215, 231, // .en&.W].....
+ 171, 85, 60, 79, 128, 128, 136, 190, 142, 110, 136, 39, // .U
+ 103, 169, 78, 175, 214, 113, 78, 90, 250, 44, 226, 243, // g.N..qNZ.,..
+ 20, 206, 148, 170, 25, 70, 15, 48, 77, 57, 228, 76, // .....F.0M9.L
+ 149, 94, 196, 171, 140, 77, 85, 110, 20, 207, 55, 51, // .^...MUn..73
+ 88, 214, 198, 20, 44, 216, 123, 157, 17, 27, 20, 171, // X...,.{.....
+ 60, 41, 163, 106, 240, 47, 228, 255, 0, 84, 79, 76, // <).j./...TOL
+ 0, 0, 0 // ..
};
static const unsigned char v2[] = {
- 31, 139, 8, 8, 215, 103, 114, 101, 0, 3, 104, 105, // .....gre..hi
+ 31, 139, 8, 8, 34, 120, 156, 101, 0, 3, 104, 105, // ...."x.e..hi
115, 116, 111, 114, 121, 46, 109, 105, 110, 46, 106, 115, // story.min.js
0, 237, 91, 109, 111, 219, 186, 146, 254, 43, 182, 47, // ..[mo....+./
214, 144, 96, 86, 181, 123, 206, 61, 187, 43, 151, 215, // ..`V.{.=.+..
@@ -1019,7 +1021,7 @@ static const unsigned char v2[] = {
239, 191, 0, 255, 82, 202, 232, 45, 58, 0, 0, 0 // ....R..-:..
};
static const unsigned char v3[] = {
- 31, 139, 8, 8, 215, 103, 114, 101, 0, 3, 105, 110, // .....gre..in
+ 31, 139, 8, 8, 34, 120, 156, 101, 0, 3, 105, 110, // ...."x.e..in
100, 101, 120, 46, 104, 116, 109, 108, 0, 125, 83, 75, // dex.html.}SK
115, 211, 48, 16, 190, 247, 87, 44, 186, 232, 64, 45, // s.0...W,..@-
191, 31, 233, 88, 153, 41, 165, 7, 14, 12, 28, 128, // ...X.)......
@@ -1069,7 +1071,7 @@ static const unsigned char v3[] = {
199, 3, 0, 0, 0 // ....
};
static const unsigned char v4[] = {
- 31, 139, 8, 8, 215, 103, 114, 101, 0, 3, 109, 97, // .....gre..ma
+ 31, 139, 8, 8, 42, 114, 157, 101, 0, 3, 109, 97, // ....*r.e..ma
105, 110, 46, 99, 115, 115, 0, 221, 27, 107, 143, 227, // in.css...k..
198, 237, 175, 168, 27, 4, 88, 95, 37, 157, 36, 203, // ......X_%.$.
222, 93, 25, 45, 2, 20, 40, 26, 32, 233, 135, 182, // .].-..(. ...
@@ -1077,988 +1079,987 @@ static const unsigned char v4[] = {
172, 215, 171, 168, 191, 189, 228, 188, 52, 122, 172, 237, // ........4z..
109, 146, 54, 201, 45, 12, 123, 72, 14, 201, 225, 112, // m.6.-.{H...p
56, 228, 204, 220, 199, 15, 191, 51, 234, 144, 38, 71, // 8......3..&G
- 154, 197, 81, 85, 25, 207, 75, 123, 105, 123, 198, 15, // ..QU..K{i{..
- 198, 183, 95, 255, 195, 248, 134, 70, 36, 171, 8, 180, // .._....F$...
- 14, 117, 93, 84, 193, 199, 143, 26, 169, 29, 229, 233, // .u]T........
- 135, 143, 31, 204, 32, 220, 213, 164, 52, 131, 45, 217, // .... ...4.-.
- 229, 37, 105, 183, 249, 139, 85, 209, 87, 154, 237, 131, // .%i...U.W...
- 109, 94, 198, 164, 180, 0, 178, 225, 63, 3, 199, 168, // m^......?...
- 242, 132, 198, 198, 23, 100, 69, 238, 200, 182, 27, 245, // .....dE.....
- 181, 172, 250, 104, 69, 121, 86, 147, 172, 14, 110, 110, // ...hEyV...nn
- 186, 67, 157, 38, 109, 66, 51, 98, 29, 8, 221, 31, // .C.&mB3b....
- 234, 192, 181, 87, 27, 235, 72, 182, 79, 180, 182, 106, // ...W..H.O..j
- 242, 82, 163, 36, 98, 133, 241, 247, 77, 5, 72, 199, // .R.$b...M.H.
- 249, 114, 99, 165, 249, 171, 85, 135, 91, 134, 9, 252, // .rc...U.[...
- 141, 149, 235, 45, 237, 231, 14, 196, 88, 187, 48, 165, // ...-....X.0.
- 201, 41, 248, 26, 36, 150, 198, 115, 88, 154, 127, 33, // .)..$..sX..!
- 201, 51, 169, 105, 20, 154, 85, 152, 85, 86, 69, 74, // .3.i..U.UVEJ
- 186, 19, 164, 36, 172, 155, 146, 0, 168, 174, 97, 112, // ...$......ap
- 85, 112, 19, 61, 187, 238, 141, 121, 83, 85, 142, 123, // Up.=...ySU.{
- 195, 105, 128, 3, 13, 107, 154, 103, 26, 85, 94, 84, // .i...k.g.U^T
- 175, 55, 198, 210, 235, 182, 121, 124, 106, 211, 176, 220, // .7....y|j...
- 211, 44, 112, 54, 250, 168, 104, 118, 0, 57, 117, 119, // .,p6..hv.9uw
- 40, 91, 1, 113, 54, 81, 158, 228, 165, 196, 8, 243, // ([.q6Q......
- 89, 117, 94, 88, 71, 26, 215, 135, 192, 45, 94, 186, // Yu^XG....-^.
- 112, 187, 45, 131, 35, 16, 144, 219, 79, 53, 173, 19, // p.-.#...O5..
- 242, 121, 209, 14, 140, 19, 147, 40, 47, 153, 62, 65, // .y.....(/.>A
- 147, 65, 127, 148, 105, 196, 121, 93, 147, 120, 115, 137, // .A..i.y].xs.
- 160, 59, 184, 230, 193, 51, 15, 75, 243, 224, 155, 135, // .;...3.K....
- 149, 121, 88, 183, 108, 136, 204, 122, 82, 45, 6, 57, // .yX.l..zR-.9
- 14, 7, 17, 182, 67, 213, 199, 130, 36, 221, 214, 172, // ....C...$...
- 234, 50, 207, 246, 173, 206, 100, 155, 39, 160, 70, 23, // .2....d.'.F.
- 229, 49, 49, 159, 182, 177, 89, 148, 4, 38, 34, 45, // .11...Y..&"-
- 90, 125, 182, 26, 10, 147, 156, 229, 85, 17, 70, 196, // Z}......U.F.
- 252, 251, 159, 191, 133, 223, 214, 223, 200, 190, 73, 96, // ..........I`
- 254, 190, 37, 89, 146, 155, 0, 10, 163, 220, 252, 83, // ..%Y.......S
- 158, 129, 187, 133, 149, 249, 13, 221, 18, 46, 222, 64, // ...........@
- 106, 64, 52, 37, 133, 25, 255, 43, 57, 154, 138, 213, // j@4%...+9...
- 166, 31, 159, 75, 210, 174, 74, 195, 36, 209, 198, 124, // ...K..J.$..|
- 239, 124, 217, 85, 13, 104, 221, 20, 26, 244, 110, 245, // .|.U.h....n.
- 229, 96, 42, 157, 77, 145, 87, 148, 13, 180, 36, 9, // .`*.M.W...$.
- 136, 124, 38, 155, 103, 82, 162, 71, 37, 86, 152, 208, // .|&.gR.G%V..
- 61, 26, 0, 240, 97, 130, 204, 96, 177, 212, 117, 158, // =...a..`..u.
- 6, 150, 237, 173, 80, 36, 176, 134, 41, 134, 38, 182, // ....P$..).&.
- 192, 87, 19, 210, 50, 243, 193, 130, 195, 21, 225, 72, // .W..2......H
- 63, 152, 117, 14, 0, 38, 97, 81, 145, 64, 254, 232, // ?.u..&aQ.@..
- 182, 13, 112, 207, 76, 154, 21, 77, 109, 230, 69, 189, // ..p.L..Mm.E.
- 47, 243, 166, 48, 43, 146, 144, 168, 54, 145, 113, 88, // /..0+...6.qX
- 146, 112, 96, 218, 193, 196, 114, 83, 224, 162, 154, 153, // .p`...rS....
- 231, 57, 7, 30, 57, 173, 242, 245, 34, 140, 99, 140, // .9..9...".c.
- 7, 142, 212, 136, 171, 192, 199, 86, 151, 176, 208, 96, // .......V...`
- 245, 167, 65, 150, 103, 164, 251, 84, 159, 10, 242, 7, // ..A.g..T....
- 78, 247, 217, 228, 173, 146, 192, 114, 146, 13, 48, 91, // N......r..0[
- 74, 161, 197, 73, 148, 195, 135, 69, 65, 66, 96, 21, // J..I...EAB`.
- 145, 128, 99, 54, 219, 48, 122, 194, 17, 103, 177, 178, // ..c6.0z..g..
- 23, 51, 188, 142, 160, 105, 184, 39, 92, 112, 192, 34, // .3...i.'.p."
- 199, 46, 143, 154, 170, 4, 101, 219, 188, 169, 113, 136, // ......e...q.
- 65, 216, 212, 185, 64, 130, 227, 209, 236, 25, 102, 49, // A...@.....f1
- 230, 81, 238, 16, 198, 249, 145, 247, 46, 202, 124, 15, // .Q........|.
- 106, 86, 237, 27, 147, 29, 4, 82, 81, 154, 101, 48, // jV.....RQ.e0
- 89, 85, 65, 51, 75, 88, 163, 199, 129, 204, 33, 78, // YUA3KX....!N
- 198, 3, 166, 132, 24, 63, 12, 51, 58, 124, 158, 27, // .....?.3:|..
- 56, 218, 115, 71, 73, 18, 111, 132, 242, 86, 190, 219, // 8.sGI.o..V..
- 129, 233, 2, 203, 131, 112, 209, 139, 225, 44, 180, 69, // .....p...,.E
- 57, 199, 140, 27, 69, 245, 217, 209, 132, 88, 77, 145, // 9...E....XM.
- 228, 97, 108, 93, 52, 61, 250, 139, 90, 232, 85, 147, // .al]4=..Z.U.
- 130, 39, 156, 218, 152, 86, 69, 18, 158, 130, 132, 86, // .'...VE....V
- 96, 133, 26, 60, 124, 155, 228, 209, 211, 191, 154, 188, // `..<|.......
- 38, 102, 28, 155, 113, 98, 238, 232, 30, 66, 172, 57, // &f..qb...B.9
- 9, 61, 230, 161, 52, 11, 12, 6, 42, 126, 118, 108, // .=..4...*~vl
- 156, 48, 182, 41, 196, 76, 200, 158, 100, 113, 219, 123, // .0.).L..dq.{
- 93, 74, 178, 198, 204, 19, 179, 193, 205, 4, 132, 87, // ]J.........W
- 245, 41, 225, 3, 156, 243, 81, 181, 48, 96, 62, 113, // .)....Q.0`>q
- 5, 200, 25, 237, 216, 58, 10, 184, 43, 192, 72, 34, // .....:..+.H"
- 114, 96, 209, 74, 173, 164, 41, 170, 205, 33, 176, 208, // r`.J..)..!..
- 250, 20, 184, 98, 105, 124, 241, 16, 133, 203, 112, 39, // ...bi|....p'
- 89, 205, 115, 185, 134, 193, 167, 50, 79, 250, 101, 34, // Y.s....2O.e"
- 38, 36, 106, 202, 10, 104, 138, 156, 226, 126, 214, 5, // &$j..h...~..
- 96, 113, 140, 33, 177, 68, 196, 100, 23, 54, 9, 132, // `q.!.D.d.6..
- 232, 38, 166, 185, 25, 133, 224, 203, 149, 73, 210, 45, // .&.......I.-
- 137, 77, 186, 43, 195, 148, 152, 52, 221, 155, 249, 246, // .M.+...4....
- 123, 140, 15, 213, 243, 222, 124, 166, 49, 201, 213, 196, // {.....|.1...
- 177, 233, 26, 71, 179, 148, 198, 113, 66, 58, 236, 200, // ...G...qB:..
- 169, 211, 240, 69, 238, 81, 24, 58, 6, 14, 124, 0, // ...E.Q.:..|.
- 98, 146, 125, 86, 28, 153, 143, 65, 6, 17, 224, 146, // b.}V...A....
- 140, 203, 188, 24, 39, 19, 44, 33, 16, 241, 13, 131, // ....'.,!....
- 52, 204, 144, 245, 2, 179, 53, 7, 63, 73, 56, 139, // 4.....5.?I8.
- 40, 16, 123, 73, 79, 218, 131, 20, 85, 153, 215, 208, // (.{IO...U...
- 150, 173, 234, 137, 28, 123, 114, 214, 82, 148, 21, 140, // .....{r.R...
- 22, 121, 185, 122, 243, 36, 155, 69, 152, 1, 206, 232, // .y.z.$.E....
- 27, 39, 213, 160, 25, 172, 178, 215, 28, 2, 188, 33, // .'.........!
- 187, 194, 180, 37, 86, 149, 133, 5, 56, 97, 73, 163, // ...%V...8aI.
- 58, 131, 152, 17, 64, 240, 120, 161, 16, 212, 78, 156, // :...@.x...N.
- 106, 95, 134, 49, 37, 24, 148, 203, 60, 181, 212, 126, // j_.1%...<..~
- 98, 140, 176, 207, 52, 124, 27, 89, 231, 19, 28, 88, // b...4|.Y...X
- 139, 102, 97, 162, 116, 129, 141, 241, 64, 98, 235, 149, // .fa.t...@b..
- 148, 185, 132, 101, 77, 10, 75, 54, 178, 248, 58, 28, // ...eM.K6..:.
- 67, 133, 161, 39, 196, 101, 24, 233, 114, 48, 122, 66, // C..'.e..r0zB
- 148, 195, 184, 163, 67, 120, 40, 18, 174, 225, 20, 47, // ....Cx(..../
- 83, 148, 240, 240, 221, 110, 167, 225, 4, 112, 185, 189, // S....n...p..
- 247, 118, 235, 123, 103, 218, 75, 68, 97, 199, 112, 140, // .v.{g.KDa.p.
- 47, 28, 248, 167, 81, 204, 163, 206, 65, 185, 56, 18, // /...Q...A.8.
- 143, 177, 219, 164, 41, 229, 104, 182, 37, 122, 52, 155, // ....).h.%z4.
- 56, 1, 193, 140, 181, 12, 171, 90, 155, 133, 19, 243, // 8......Z....
- 18, 9, 56, 52, 68, 250, 155, 128, 192, 62, 2, 235, // ..84D....>..
- 72, 205, 5, 166, 150, 26, 182, 34, 5, 13, 101, 3, // H......"..e.
- 215, 133, 84, 90, 170, 32, 150, 203, 80, 47, 5, 156, // ..TZ. ..P/..
- 40, 168, 80, 99, 77, 21, 98, 162, 178, 194, 76, 117, // (.PcM.b...Lu
- 87, 168, 225, 32, 20, 88, 198, 172, 49, 124, 60, 202, // W.. .X..1|<.
- 30, 193, 135, 219, 217, 85, 105, 229, 89, 114, 106, 149, // .....Ui.Yrj.
- 235, 134, 91, 72, 224, 96, 83, 220, 168, 172, 87, 6, // ..[H.`S...W.
- 20, 252, 169, 98, 182, 12, 227, 22, 66, 115, 80, 106, // ...b....BsPj
- 151, 128, 177, 120, 180, 217, 68, 9, 45, 32, 25, 139, // ...x..D.- ..
- 234, 91, 199, 100, 127, 139, 205, 241, 0, 251, 15, 243, // .[.d........
- 103, 220, 6, 142, 101, 88, 200, 36, 74, 184, 103, 103, // g...eX.$J.gg
- 139, 32, 106, 145, 103, 88, 78, 149, 133, 145, 170, 29, // . j.gXN.....
- 194, 120, 244, 26, 19, 98, 160, 27, 19, 178, 224, 103, // .x...b.....g
- 239, 232, 11, 132, 98, 53, 52, 214, 236, 108, 57, 194, // ....b54..l9.
- 233, 152, 59, 91, 102, 144, 237, 36, 167, 4, 83, 65, // ..;[f..$..SA
- 16, 126, 210, 44, 197, 219, 157, 205, 22, 158, 229, 180, // .~.,........
- 124, 1, 194, 64, 120, 138, 9, 16, 145, 107, 2, 40, // |..@x....k.(
- 33, 59, 36, 193, 47, 108, 50, 119, 225, 138, 151, 125, // !;$./l2w...}
- 176, 182, 177, 216, 112, 88, 62, 10, 52, 175, 150, 235, // ....pX>.4...
- 180, 175, 44, 17, 133, 64, 200, 0, 143, 159, 252, 251, // ..,..@......
- 199, 207, 10, 232, 223, 115, 224, 218, 209, 128, 107, 160, // .....s....k.
- 76, 45, 95, 110, 210, 110, 9, 187, 190, 157, 158, 128, // L-_n.n......
- 47, 135, 88, 140, 189, 152, 62, 171, 215, 16, 72, 92, // /.X...>...H.
- 157, 4, 242, 99, 232, 58, 162, 227, 64, 70, 236, 13, // ...c.:..@F..
- 136, 231, 104, 5, 233, 182, 231, 59, 230, 146, 88, 75, // ..h....;..XK
- 137, 98, 150, 177, 239, 20, 194, 31, 32, 196, 40, 202, // .b...... .(.
- 94, 42, 55, 155, 148, 81, 207, 233, 206, 224, 83, 53, // ^*7..Q....S5
- 25, 120, 57, 0, 11, 177, 52, 99, 25, 28, 219, 116, // .x9...4c...t
- 213, 134, 169, 3, 193, 163, 18, 242, 162, 80, 216, 80, // .........P.P
- 189, 6, 24, 13, 214, 217, 251, 18, 178, 87, 137, 193, // .........W..
- 70, 103, 243, 117, 50, 220, 148, 237, 3, 78, 184, 88, // Fg.u2....N.X
- 107, 158, 80, 21, 96, 158, 132, 45, 5, 100, 213, 170, // k.P.`..-.d..
- 210, 220, 147, 84, 235, 30, 38, 65, 187, 6, 138, 41, // ...T..&A...)
- 9, 133, 188, 0, 198, 13, 121, 2, 144, 250, 44, 97, // ......y...,a
- 144, 152, 53, 55, 9, 152, 226, 128, 155, 37, 1, 181, // ..57.....%..
- 88, 67, 117, 124, 62, 116, 246, 17, 220, 71, 173, 211, // XCu|>t...G..
- 163, 229, 186, 162, 229, 73, 211, 29, 97, 194, 68, 192, // .....I..a.D.
- 16, 237, 149, 108, 75, 37, 143, 160, 164, 4, 73, 200, // ...lK%....I.
- 157, 39, 65, 247, 2, 194, 180, 238, 147, 25, 174, 52, // .'A........4
- 132, 231, 84, 203, 114, 60, 159, 17, 163, 117, 97, 222, // ..T.r<...ua.
- 241, 43, 112, 13, 215, 64, 106, 6, 171, 14, 176, 23, // .+p..@j.....
- 61, 89, 142, 105, 203, 95, 173, 6, 199, 33, 64, 45, // =Y.i._...!@-
- 114, 148, 80, 252, 205, 86, 109, 88, 209, 10, 86, 211, // r.P..VmX..V.
- 18, 118, 74, 88, 79, 12, 199, 96, 1, 66, 58, 91, // .vJXO..`.B:[
- 79, 114, 184, 154, 147, 212, 199, 226, 42, 79, 40, 77, // Or......*O(M
- 91, 135, 192, 10, 87, 5, 152, 130, 223, 62, 135, 229, // [...W....>..
- 237, 152, 225, 194, 156, 129, 158, 22, 11, 131, 239, 14, // ............
- 125, 31, 222, 6, 4, 166, 81, 255, 236, 225, 60, 199, // }.....Q...<.
- 18, 240, 239, 70, 112, 100, 196, 54, 32, 189, 3, 79, // ...Fpd.6 ..O
- 188, 36, 230, 187, 49, 6, 250, 116, 163, 193, 76, 19, // .$..1..t..L.
- 64, 180, 150, 78, 179, 154, 210, 40, 175, 24, 208, 233, // @..N...(....
- 118, 58, 253, 150, 236, 116, 154, 218, 233, 52, 182, 19, // v:...t...4..
- 134, 212, 41, 141, 173, 153, 9, 45, 97, 142, 122, 252, // ..)....-a.z.
- 186, 77, 244, 213, 19, 57, 177, 50, 168, 50, 176, 4, // .M...9.2.2..
- 135, 173, 79, 27, 144, 208, 204, 133, 20, 38, 91, 116, // ..O......&[t
- 176, 111, 103, 52, 13, 89, 18, 1, 148, 188, 193, 182, // .og4.Y......
- 97, 104, 26, 110, 101, 96, 196, 13, 75, 131, 102, 59, // ah.ne`..K.f;
- 60, 1, 128, 120, 202, 75, 48, 75, 100, 6, 227, 82, // <..x.K0Kd..R
- 141, 133, 101, 76, 62, 43, 136, 33, 236, 55, 212, 199, // ..eL>+.!.7..
- 5, 51, 11, 0, 155, 52, 171, 96, 235, 135, 42, 187, // .3...4.`..*.
- 190, 117, 77, 8, 136, 16, 125, 32, 153, 113, 119, 37, // .uM...} .qw%
- 78, 108, 223, 213, 59, 223, 213, 155, 116, 101, 97, 5, // Nl..;...tea.
- 168, 120, 124, 137, 41, 102, 73, 56, 10, 222, 17, 114, // .x|.)fI8...r
- 27, 172, 68, 229, 129, 172, 197, 138, 106, 29, 18, 0, // ..D.....j...
- 4, 182, 28, 144, 87, 65, 57, 19, 150, 117, 203, 106, // ....WA9..u.j
- 66, 86, 220, 87, 1, 143, 114, 8, 150, 52, 200, 96, // BV.W..r..4.`
- 66, 161, 241, 136, 8, 179, 141, 78, 194, 65, 157, 141, // B......N.A..
- 7, 188, 116, 119, 146, 36, 170, 41, 20, 145, 100, 123, // ..tw.$.)..d{
- 40, 172, 192, 10, 161, 218, 93, 17, 224, 51, 128, 171, // (.....]..3..
- 218, 47, 176, 225, 178, 74, 157, 15, 211, 98, 228, 108, // ./...J...b.l
- 235, 216, 76, 32, 178, 135, 63, 233, 225, 142, 232, 123, // ..L ..?....{
- 254, 39, 216, 91, 48, 164, 51, 168, 208, 131, 229, 154, // .'.[0.3.....
- 128, 241, 255, 8, 251, 107, 125, 43, 43, 225, 197, 191, // .....k}++...
- 135, 77, 190, 230, 36, 113, 9, 249, 99, 89, 145, 62, // .M..$q..cY.>
- 65, 194, 252, 0, 220, 53, 186, 69, 97, 31, 110, 93, // A....5.Ea.n]
- 195, 50, 122, 63, 30, 118, 90, 44, 22, 163, 20, 168, // .2z?.vZ,....
- 239, 248, 118, 159, 206, 142, 41, 150, 241, 214, 233, 26, // ..v...).....
- 61, 37, 173, 166, 232, 228, 160, 154, 75, 45, 94, 70, // =%......K-^F
- 218, 142, 187, 162, 186, 234, 186, 128, 37, 172, 163, 238, // ........%...
- 103, 122, 130, 117, 73, 178, 27, 120, 32, 2, 6, 14, // gz.uI..x ...
- 40, 40, 74, 82, 71, 7, 157, 70, 128, 58, 91, 86, // ((JRG..F.:[V
- 13, 60, 15, 86, 53, 4, 79, 133, 21, 82, 164, 74, // .<.V5.O..R.J
- 163, 18, 67, 35, 224, 21, 126, 79, 192, 219, 26, 193, // ..C#..~O....
- 105, 40, 0, 162, 170, 200, 182, 203, 38, 139, 96, 209, // i(......&.`.
- 142, 121, 207, 212, 42, 64, 140, 7, 167, 36, 129, 194, // .y..*@...$..
- 6, 50, 2, 179, 239, 203, 224, 138, 129, 36, 128, 12, // .2.......$..
- 31, 15, 59, 9, 158, 90, 50, 11, 227, 33, 65, 83, // ..;..Z2..!AS
- 169, 196, 84, 96, 121, 26, 49, 36, 121, 128, 127, 184, // ..T`y.1$y...
- 49, 72, 146, 100, 63, 230, 49, 100, 145, 78, 100, 44, // 1H.d?.1d.Nd,
- 197, 50, 226, 224, 118, 80, 102, 225, 37, 134, 64, 192, // .2..vPf.%.@.
- 170, 29, 160, 60, 13, 181, 109, 231, 60, 67, 239, 172, // ...<..m..
- 25, 174, 207, 52, 79, 72, 253, 46, 109, 193, 9, 188, // ...4OH..m...
- 37, 204, 217, 202, 63, 195, 151, 133, 190, 235, 237, 10, // %...?.......
- 131, 231, 159, 183, 88, 98, 110, 32, 207, 140, 68, 224, // ....Xbn ..D.
- 194, 236, 64, 130, 248, 14, 94, 96, 25, 39, 64, 226, // ..@...^`.'@.
- 32, 128, 31, 62, 72, 152, 40, 246, 69, 240, 4, 114, // ..>H.(.E..r
- 111, 68, 62, 71, 221, 19, 63, 218, 171, 17, 253, 122, // oD>G..?....z
- 150, 255, 186, 23, 224, 15, 59, 184, 83, 106, 165, 250, // ......;.Sj..
- 136, 183, 59, 171, 187, 170, 119, 10, 44, 5, 36, 142, // ..;...w.,.$.
- 31, 197, 200, 86, 127, 22, 131, 68, 186, 210, 236, 144, // ...V...D....
- 194, 29, 242, 149, 103, 41, 110, 207, 216, 29, 118, 152, // ....g)n...v.
- 167, 215, 200, 39, 34, 248, 206, 49, 233, 34, 55, 148, // ...'"..1."7.
- 226, 164, 25, 190, 63, 246, 25, 147, 43, 226, 245, 128, // ....?...+...
- 216, 157, 165, 150, 217, 90, 145, 224, 97, 192, 208, 146, // .....Z..a...
- 252, 76, 160, 168, 199, 22, 227, 176, 55, 12, 36, 182, // .L......7.$.
- 234, 42, 213, 174, 140, 237, 123, 62, 176, 225, 187, 6, // .*....{>....
- 157, 252, 69, 191, 119, 150, 83, 56, 36, 191, 211, 201, // ..E.w.S8$...
- 43, 157, 251, 12, 115, 126, 64, 129, 36, 120, 191, 62, // +...s~@.$x.>
- 184, 112, 191, 195, 32, 206, 0, 9, 182, 7, 184, 165, // .p.. .......
- 194, 165, 4, 54, 243, 116, 128, 92, 41, 100, 6, 229, // ...6.t..)d..
- 81, 152, 12, 144, 190, 66, 86, 36, 165, 19, 161, 107, // Q....BV$...k
- 68, 55, 69, 65, 202, 40, 172, 200, 248, 26, 88, 33, // D7EA.(....X!
- 240, 160, 50, 100, 22, 93, 143, 31, 129, 244, 131, 31, // ..2d.]......
- 238, 62, 60, 1, 26, 221, 153, 189, 177, 233, 232, 180, // .><.........
- 172, 64, 198, 54, 219, 34, 252, 139, 236, 220, 213, 218, // .@.6."......
- 112, 215, 75, 195, 189, 187, 138, 225, 234, 50, 67, 231, // p.K......2C.
- 206, 112, 93, 223, 112, 189, 251, 107, 24, 94, 30, 240, // .p].p..k.^..
- 221, 202, 184, 95, 193, 152, 175, 225, 118, 119, 145, 27, // ..._....vw..
- 196, 213, 53, 48, 116, 175, 225, 246, 112, 121, 176, 16, // ..50t...py..
- 252, 125, 99, 121, 89, 55, 66, 178, 43, 38, 227, 14, // .}cyY7B.+&..
- 55, 84, 239, 42, 211, 33, 195, 203, 182, 67, 102, 48, // 7T.*.!...Cf0
- 185, 119, 254, 5, 126, 184, 243, 95, 86, 15, 247, 80, // .w..~.._V..P
- 23, 178, 57, 248, 92, 224, 199, 119, 231, 43, 188, 15, // ..9....w.+..
- 57, 162, 247, 221, 95, 210, 80, 238, 247, 151, 221, 207, // 9..._.P.....
- 1, 253, 192, 167, 47, 78, 138, 182, 39, 191, 61, 226, // ..../N..'.=.
- 185, 173, 120, 204, 77, 252, 132, 112, 42, 89, 56, 61, // ..x.M..p*Y8=
- 16, 83, 9, 197, 25, 170, 55, 118, 251, 213, 14, 175, // .S....7v....
- 239, 32, 127, 55, 150, 240, 17, 23, 117, 142, 227, 134, // . .7....u...
- 38, 135, 66, 241, 96, 224, 85, 80, 143, 120, 227, 142, // &.B.`.UP.x..
- 175, 103, 209, 151, 196, 26, 205, 98, 204, 111, 158, 74, // .g.....b.o.J
- 234, 103, 138, 111, 94, 37, 169, 247, 33, 253, 97, 214, // .g.o^%..!.a.
- 228, 214, 210, 84, 215, 140, 218, 137, 152, 118, 117, 57, // ...T.....vu9
- 139, 231, 40, 37, 21, 165, 141, 12, 227, 128, 170, 238, // ..(%........
- 10, 149, 94, 234, 70, 0, 110, 62, 180, 215, 136, 240, // ..^.F.n>....
- 175, 177, 206, 144, 207, 155, 38, 26, 48, 61, 111, 34, // ......&.0=o"
- 220, 9, 167, 179, 232, 233, 179, 232, 196, 103, 38, 203, // .........g&.
- 59, 51, 89, 155, 255, 133, 205, 25, 161, 88, 77, 51, // ;3Y......XM3
- 183, 208, 67, 134, 236, 14, 110, 97, 56, 236, 111, 86, // ..C...na8.oV
- 37, 86, 137, 46, 230, 113, 98, 84, 147, 235, 236, 51, // %V...qbT...3
- 50, 216, 105, 201, 25, 65, 99, 73, 114, 114, 248, 168, // 2.i..AcIrr..
- 76, 254, 237, 94, 233, 188, 243, 230, 155, 24, 77, 179, // L..^......M.
- 103, 39, 5, 252, 146, 205, 135, 110, 246, 251, 115, 226, // g'.....n..s.
- 206, 26, 113, 155, 64, 109, 162, 143, 79, 133, 199, 81, // ..q.@m..O..Q
- 7, 22, 40, 153, 216, 143, 35, 89, 125, 136, 212, 219, // ..(...#Y}...
- 242, 222, 98, 192, 213, 177, 157, 21, 94, 44, 39, 120, // ..b.....^,'x
- 38, 202, 191, 250, 241, 225, 219, 0, 77, 215, 254, 85, // &.......M..U
- 128, 6, 148, 239, 1, 52, 144, 122, 9, 160, 193, 250, // .....4.z....
- 55, 0, 26, 144, 223, 254, 107, 0, 121, 191, 175, 131, // 7.....k.y...
- 240, 102, 95, 107, 107, 111, 25, 228, 149, 4, 187, 190, // .f_kko......
- 110, 251, 159, 86, 1, 52, 192, 248, 20, 48, 59, 153, // n..V.4...0;.
- 227, 98, 207, 212, 143, 33, 204, 209, 235, 82, 1, 5, // .b...!...R..
- 83, 36, 236, 121, 233, 19, 49, 133, 173, 204, 222, 169, // S$.y..1.....
- 205, 254, 254, 130, 219, 204, 148, 47, 217, 212, 139, 4, // ......./....
- 14, 223, 252, 127, 181, 250, 69, 107, 115, 141, 205, 106, // ......Eks..j
- 154, 162, 183, 238, 154, 76, 92, 43, 52, 91, 26, 89, // .....L.+4[.Y
- 91, 242, 74, 73, 121, 107, 251, 38, 68, 28, 207, 116, // [.JIyk.&D..t
- 23, 122, 151, 184, 17, 207, 132, 109, 119, 85, 233, 30, // .z.....mwU..
- 98, 225, 107, 220, 57, 11, 0, 252, 103, 147, 201, 44, // b.k.9...g..,
- 85, 253, 124, 206, 249, 211, 42, 46, 155, 236, 136, 107, // U.|...*....k
- 150, 204, 211, 169, 150, 111, 81, 45, 129, 138, 64, 253, // .....oQ-..@.
- 5, 43, 28, 95, 164, 182, 239, 87, 82, 244, 127, 79, // .+._...WR..O
- 103, 167, 239, 171, 189, 127, 124, 12, 6, 85, 217, 204, // g.....|..U..
- 11, 203, 159, 160, 78, 59, 39, 239, 39, 22, 117, 192, // ....N;'.'.u.
- 195, 249, 199, 64, 158, 154, 66, 98, 30, 48, 208, 181, // ...@..Bb.0..
- 135, 92, 171, 7, 72, 209, 157, 115, 199, 156, 189, 4, // ....H..s....
- 81, 121, 190, 79, 128, 231, 63, 136, 3, 63, 247, 130, // Qy.O..?..?..
- 132, 65, 245, 173, 11, 249, 49, 53, 184, 206, 91, 86, // .A....15..[V
- 206, 87, 241, 190, 170, 126, 102, 143, 187, 31, 3, 249, // .W...~f.....
- 56, 26, 31, 186, 4, 12, 166, 30, 123, 99, 126, 41, // 8.......{c~)
- 254, 135, 10, 123, 252, 55, 122, 71, 205, 110, 37, 4, // ...{.7zG.n%.
- 23, 158, 51, 137, 254, 191, 228, 132, 230, 221, 169, 204, // ..3.........
- 149, 137, 244, 127, 147, 255, 201, 23, 201, 143, 129, 184, // ............
- 15, 207, 242, 26, 35, 123, 126, 132, 20, 127, 252, 92, // ....#{~.....
- 89, 195, 233, 61, 229, 226, 193, 245, 169, 186, 92, 233, // Y..=........
- 222, 15, 184, 70, 177, 48, 117, 222, 242, 238, 129, 28, // ...F.0u.....
- 121, 13, 241, 110, 57, 87, 220, 71, 244, 130, 134, 222, // y..n9W.G....
- 62, 20, 245, 163, 28, 254, 43, 60, 183, 11, 141, 91, // >.....+<...[
- 124, 66, 197, 239, 188, 214, 62, 212, 116, 139, 214, 174, // |B....>.t...
- 210, 199, 64, 123, 143, 241, 230, 195, 153, 9, 157, 57, // ..@{.......9
- 1, 253, 218, 95, 125, 204, 12, 104, 106, 11, 121, 139, // ..._}..hj.y.
- 63, 32, 125, 235, 29, 205, 230, 55, 96, 144, 107, 30, // ? }....7`.k.
- 117, 244, 116, 111, 63, 236, 64, 154, 162, 63, 123, 151, // u.to?.@..?{.
- 103, 183, 51, 174, 121, 183, 190, 103, 174, 153, 194, 138, // g.3.y..g....
- 248, 17, 175, 97, 134, 221, 223, 251, 34, 102, 70, 47, // ...a...."fF/
- 215, 241, 124, 166, 88, 178, 127, 12, 134, 175, 49, 197, // ..|.X.....1.
- 51, 76, 68, 28, 44, 191, 29, 28, 183, 35, 240, 104, // 3LD.,....#.h
- 21, 47, 173, 118, 217, 140, 48, 254, 156, 100, 61, 125, // ./.v..0..d=}
- 78, 98, 143, 31, 160, 200, 99, 110, 38, 247, 231, 184, // Nb....cn&...
- 188, 236, 254, 3, 183, 232, 20, 14, 252, 57, 0, 0, 0 // .........9..
+ 154, 197, 81, 85, 25, 207, 75, 123, 105, 175, 140, 31, // ..QU..K{i...
+ 140, 111, 191, 254, 135, 241, 13, 141, 72, 86, 17, 104, // .o......HV.h
+ 29, 234, 186, 168, 130, 143, 31, 53, 82, 59, 202, 211, // .......5R;..
+ 15, 31, 63, 152, 65, 184, 171, 73, 105, 6, 91, 178, // ..?.A..Ii.[.
+ 203, 75, 210, 110, 243, 23, 171, 162, 175, 52, 219, 7, // .K.n.....4..
+ 219, 188, 140, 73, 105, 1, 100, 195, 127, 6, 142, 81, // ...Ii.d....Q
+ 229, 9, 141, 141, 47, 200, 138, 220, 145, 109, 55, 234, // ..../....m7.
+ 107, 89, 245, 209, 138, 242, 172, 38, 89, 29, 220, 220, // kY.....&Y...
+ 116, 135, 58, 77, 218, 132, 102, 196, 58, 16, 186, 63, // t.:M..f.:..?
+ 212, 129, 107, 175, 54, 214, 145, 108, 159, 104, 109, 213, // ..k.6..l.hm.
+ 228, 165, 70, 73, 196, 10, 227, 239, 155, 10, 144, 142, // ..FI........
+ 243, 229, 198, 74, 243, 87, 171, 14, 183, 12, 19, 248, // ...J.W......
+ 27, 43, 215, 91, 218, 207, 29, 136, 177, 118, 97, 74, // .+.[.....vaJ
+ 147, 83, 240, 53, 72, 44, 141, 231, 176, 52, 255, 66, // .S.5H,...4.B
+ 146, 103, 82, 211, 40, 52, 171, 48, 171, 172, 138, 148, // .gR.(4.0....
+ 116, 39, 72, 73, 88, 55, 37, 1, 80, 93, 195, 224, // t'HIX7%.P]..
+ 170, 224, 38, 122, 118, 221, 27, 243, 166, 170, 28, 247, // ..&zv.......
+ 134, 211, 0, 7, 26, 214, 52, 207, 52, 170, 188, 168, // ......4.4...
+ 94, 111, 140, 165, 215, 109, 243, 248, 212, 166, 97, 185, // ^o...m....a.
+ 167, 89, 224, 108, 244, 81, 209, 236, 0, 114, 234, 238, // .Y.l.Q...r..
+ 80, 182, 2, 226, 108, 162, 60, 201, 75, 137, 17, 230, // P...l.<.K...
+ 179, 234, 188, 176, 142, 52, 174, 15, 129, 91, 188, 116, // .....4...[.t
+ 225, 118, 91, 6, 71, 32, 32, 183, 159, 106, 90, 39, // .v[.G ..jZ'
+ 228, 243, 162, 29, 24, 39, 38, 81, 94, 50, 125, 130, // .....'&Q^2}.
+ 38, 131, 254, 40, 211, 136, 243, 186, 38, 241, 230, 18, // &..(....&...
+ 65, 119, 112, 205, 131, 103, 30, 150, 230, 193, 55, 15, // Awp..g....7.
+ 43, 243, 176, 110, 217, 16, 153, 245, 164, 90, 12, 114, // +..n.....Z.r
+ 28, 14, 34, 108, 135, 170, 143, 5, 73, 186, 173, 89, // .."l....I..Y
+ 213, 101, 158, 237, 91, 157, 201, 54, 79, 64, 141, 46, // .e..[..6O@..
+ 202, 99, 98, 62, 109, 99, 179, 40, 9, 76, 68, 90, // .cb>mc.(.LDZ
+ 180, 250, 108, 53, 20, 38, 57, 203, 171, 34, 140, 136, // ..l5.&9.."..
+ 249, 247, 63, 127, 11, 191, 173, 191, 145, 125, 147, 192, // ..?......}..
+ 252, 125, 75, 178, 36, 55, 1, 20, 70, 185, 249, 167, // .}K.$7..F...
+ 60, 3, 119, 11, 43, 243, 27, 186, 37, 92, 188, 129, // <.w.+...%...
+ 212, 128, 104, 74, 10, 51, 254, 87, 114, 52, 21, 171, // ..hJ.3.Wr4..
+ 77, 63, 62, 151, 164, 93, 149, 134, 73, 162, 141, 249, // M?>..]..I...
+ 222, 249, 178, 171, 26, 208, 186, 41, 52, 232, 221, 234, // .......)4...
+ 203, 193, 84, 58, 155, 34, 175, 40, 27, 104, 73, 18, // ..T:.".(.hI.
+ 16, 249, 76, 54, 207, 164, 68, 143, 74, 172, 48, 161, // ..L6..D.J.0.
+ 123, 52, 0, 224, 195, 4, 153, 193, 98, 169, 235, 60, // {4......b..<
+ 13, 44, 219, 91, 161, 72, 96, 13, 83, 12, 77, 108, // .,.[.H`.S.Ml
+ 129, 175, 38, 164, 101, 230, 131, 5, 135, 43, 194, 145, // ..&.e....+..
+ 126, 48, 235, 28, 0, 76, 194, 162, 34, 129, 252, 209, // ~0...L.."...
+ 109, 27, 224, 158, 153, 52, 43, 154, 218, 204, 139, 122, // m....4+....z
+ 95, 230, 77, 97, 86, 36, 33, 81, 109, 34, 227, 176, // _.MaV$!Qm"..
+ 36, 225, 192, 180, 131, 137, 157, 120, 252, 0, 59, 227, // $......x..;.
+ 235, 3, 60, 55, 36, 46, 201, 25, 47, 153, 115, 255, // ..<7$.../.s.
+ 145, 203, 171, 149, 82, 132, 113, 140, 209, 196, 145, 227, // ....R.q.....
+ 225, 3, 224, 150, 169, 75, 88, 166, 16, 59, 210, 32, // .....KX..;.
+ 203, 51, 210, 125, 170, 79, 5, 249, 3, 167, 251, 108, // .3.}.O.....l
+ 242, 86, 73, 64, 65, 217, 0, 163, 167, 20, 90, 156, // .VI@A.....Z.
+ 68, 45, 151, 176, 40, 72, 8, 172, 34, 18, 112, 204, // D-..(H..".p.
+ 102, 27, 70, 79, 104, 175, 44, 86, 214, 102, 211, 166, // f.FOh.,V.f..
+ 35, 104, 26, 238, 9, 23, 28, 176, 184, 179, 203, 163, // #h..........
+ 166, 42, 65, 217, 54, 111, 106, 28, 98, 16, 54, 117, // .*A.6oj.b.6u
+ 46, 144, 224, 182, 52, 123, 6, 31, 136, 121, 140, 60, // ....4{...y.<
+ 132, 113, 126, 228, 189, 139, 50, 223, 131, 154, 85, 251, // .q~...2...U.
+ 134, 171, 4, 129, 84, 148, 102, 25, 76, 117, 85, 208, // ....T.f.LuU.
+ 204, 18, 214, 232, 113, 32, 115, 136, 147, 209, 132, 41, // ....q s....)
+ 33, 198, 15, 195, 140, 14, 159, 231, 6, 142, 246, 220, // !...........
+ 81, 146, 196, 27, 161, 188, 149, 239, 118, 96, 186, 192, // Q.......v`..
+ 242, 32, 216, 244, 98, 56, 11, 109, 73, 207, 49, 227, // . ..b8.mI.1.
+ 70, 81, 125, 118, 52, 33, 86, 83, 36, 121, 24, 91, // FQ}v4!VS$y.[
+ 23, 77, 143, 254, 162, 194, 68, 213, 164, 224, 9, 167, // .M....D.....
+ 54, 166, 85, 145, 132, 167, 32, 161, 21, 88, 161, 134, // 6.U... ..X..
+ 245, 177, 77, 242, 232, 233, 95, 77, 94, 19, 51, 142, // ..M..._M^.3.
+ 205, 56, 49, 119, 116, 15, 238, 106, 78, 2, 151, 121, // .81wt..jN..y
+ 40, 205, 2, 67, 137, 138, 190, 29, 27, 39, 140, 109, // (..C.....'.m
+ 10, 49, 19, 178, 39, 89, 220, 246, 94, 151, 146, 172, // .1..'Y..^...
+ 49, 243, 196, 108, 112, 43, 2, 225, 85, 125, 74, 248, // 1..lp+..U}J.
+ 0, 231, 124, 52, 134, 249, 202, 247, 90, 119, 181, 206, // ..|4....Zw..
+ 96, 130, 113, 73, 200, 41, 238, 216, 178, 12, 184, 111, // `.qI.).....o
+ 192, 208, 34, 114, 96, 193, 79, 45, 204, 41, 170, 205, // .."r`.O-.)..
+ 33, 78, 209, 250, 20, 184, 98, 173, 124, 241, 16, 133, // !N....b.|...
+ 203, 112, 39, 89, 205, 115, 185, 134, 193, 167, 50, 79, // .p'Y.s....2O
+ 250, 117, 35, 102, 40, 106, 202, 10, 104, 138, 156, 226, // .u#f(j..h...
+ 246, 216, 5, 48, 5, 24, 146, 98, 137, 136, 201, 46, // ...0...b....
+ 108, 18, 136, 248, 77, 76, 115, 51, 10, 193, 185, 43, // l...MLs3...+
+ 147, 164, 91, 18, 155, 116, 87, 134, 41, 49, 105, 186, // ..[..tW.)1i.
+ 55, 243, 237, 247, 24, 110, 170, 231, 189, 249, 76, 99, // 7....n....Lc
+ 146, 171, 153, 100, 243, 55, 14, 142, 41, 141, 227, 132, // ...d.7..)...
+ 116, 216, 145, 83, 167, 225, 139, 220, 242, 48, 150, 12, // t..S.....0..
+ 60, 250, 0, 196, 36, 251, 172, 56, 50, 167, 131, 132, // <...$..82...
+ 36, 192, 53, 26, 151, 121, 49, 206, 77, 88, 126, 33, // $.5..y1.MX~!
+ 194, 37, 198, 124, 152, 33, 235, 5, 166, 111, 14, 126, // .%.|.!...o.~
+ 146, 112, 22, 98, 32, 148, 147, 158, 180, 7, 41, 170, // .p.b .....).
+ 50, 175, 161, 45, 91, 213, 19, 57, 246, 228, 172, 165, // 2..-[..9....
+ 40, 43, 24, 45, 242, 114, 245, 230, 73, 54, 139, 48, // (+.-.r..I6.0
+ 3, 156, 209, 55, 78, 170, 65, 51, 88, 118, 175, 57, // ...7N.A3Xv.9
+ 236, 23, 134, 236, 10, 211, 150, 88, 85, 22, 22, 224, // .......XU...
+ 149, 37, 141, 234, 12, 130, 72, 0, 209, 228, 133, 66, // .%....H....B
+ 148, 59, 113, 170, 125, 25, 198, 148, 96, 60, 47, 243, // .;q.}...`..md.
+ 79, 112, 96, 45, 154, 133, 137, 210, 5, 246, 217, 3, // Op`-........
+ 137, 173, 87, 82, 230, 18, 150, 53, 41, 172, 225, 200, // ..WR...5)...
+ 226, 11, 115, 12, 21, 134, 158, 16, 151, 97, 164, 203, // ..s......a..
+ 193, 112, 10, 97, 15, 3, 145, 14, 225, 177, 73, 184, // .p.a......I.
+ 134, 83, 188, 76, 81, 194, 195, 119, 187, 157, 134, 19, // .S.LQ..w....
+ 192, 229, 246, 222, 219, 173, 239, 157, 105, 47, 17, 150, // ........i/..
+ 29, 195, 49, 190, 112, 224, 159, 70, 49, 143, 58, 7, // ..1.p..F1.:.
+ 229, 226, 72, 60, 198, 110, 147, 166, 148, 163, 217, 150, // ..H<.n......
+ 232, 209, 108, 226, 4, 4, 19, 224, 50, 172, 106, 109, // ..l.....2.jm
+ 22, 78, 204, 75, 36, 224, 208, 16, 233, 111, 2, 2, // .N.K$....o..
+ 27, 11, 172, 35, 53, 23, 184, 111, 107, 216, 138, 20, // ...#5..ok...
+ 52, 148, 13, 92, 23, 82, 105, 169, 130, 88, 46, 67, // 4....Ri..X.C
+ 189, 20, 112, 162, 160, 66, 141, 53, 85, 136, 137, 202, // ..p..B.5U...
+ 10, 51, 213, 93, 161, 134, 131, 80, 96, 25, 179, 198, // .3.]...P`...
+ 240, 241, 40, 123, 4, 31, 110, 103, 87, 165, 149, 103, // ..({..ngW..g
+ 201, 169, 85, 174, 27, 110, 33, 31, 132, 93, 114, 163, // ..U..n!..]r.
+ 146, 104, 25, 80, 240, 167, 138, 217, 50, 174, 91, 8, // .h.P....2.[.
+ 205, 65, 169, 93, 2, 198, 226, 209, 102, 19, 37, 180, // .A.]....f.%.
+ 128, 220, 46, 170, 111, 29, 147, 253, 45, 54, 199, 3, // ....o...-6..
+ 108, 72, 204, 159, 113, 95, 56, 150, 97, 33, 115, 50, // lH..q_8.a!s2
+ 225, 158, 157, 45, 130, 168, 69, 158, 97, 57, 85, 22, // ...-..E.a9U.
+ 70, 170, 118, 8, 227, 209, 107, 76, 136, 129, 110, 76, // F.v...kL..nL
+ 200, 130, 159, 189, 163, 47, 16, 138, 213, 208, 88, 179, // ...../....X.
+ 179, 229, 8, 167, 99, 238, 108, 153, 144, 182, 147, 20, // ....c.l.....
+ 21, 76, 5, 65, 248, 73, 179, 20, 111, 119, 54, 91, // .L.A.I..ow6[
+ 120, 150, 211, 242, 5, 8, 3, 225, 25, 43, 64, 68, // x........+@D
+ 234, 10, 160, 132, 236, 144, 4, 191, 176, 201, 220, 133, // ............
+ 43, 94, 246, 193, 218, 198, 218, 197, 97, 233, 45, 208, // +^......a.-.
+ 188, 90, 174, 211, 190, 178, 188, 22, 2, 33, 3, 60, // .Z.......!.<
+ 126, 242, 239, 31, 63, 43, 160, 127, 207, 129, 107, 71, // ~...?+....kG
+ 3, 174, 129, 50, 181, 124, 185, 107, 187, 37, 164, 1, // ...2.|.k.%..
+ 118, 122, 2, 190, 28, 98, 49, 246, 98, 250, 172, 94, // vz...b1.b..^
+ 67, 32, 113, 117, 18, 72, 183, 161, 235, 136, 142, 3, // C qu.H......
+ 25, 177, 55, 32, 158, 163, 21, 164, 219, 158, 239, 152, // ..7 ........
+ 75, 98, 45, 37, 138, 89, 198, 190, 83, 8, 127, 128, // Kb-%.Y..S...
+ 16, 163, 40, 123, 169, 220, 108, 82, 70, 61, 167, 59, // ..({..lRF=.;
+ 131, 79, 213, 100, 224, 229, 0, 44, 196, 210, 140, 165, // .O.d...,....
+ 116, 108, 211, 85, 27, 166, 14, 4, 143, 74, 200, 139, // tl.U.....J..
+ 66, 97, 67, 245, 26, 96, 52, 88, 103, 239, 75, 72, // BaC..`4Xg.KH
+ 103, 37, 6, 27, 157, 205, 215, 201, 112, 83, 182, 15, // g%......pS..
+ 56, 225, 98, 173, 121, 66, 85, 128, 121, 18, 182, 20, // 8.b.yBU.y...
+ 144, 85, 171, 42, 125, 79, 82, 173, 123, 152, 4, 237, // .U.*}OR.{...
+ 26, 168, 205, 36, 20, 242, 2, 24, 55, 228, 9, 64, // ...$....7..@
+ 234, 179, 132, 65, 98, 214, 220, 36, 96, 138, 3, 110, // ...Ab..$`..n
+ 150, 4, 212, 98, 13, 213, 241, 249, 208, 217, 71, 112, // ...b......Gp
+ 31, 181, 78, 143, 150, 235, 138, 150, 39, 77, 119, 132, // ..N.....'Mw.
+ 9, 19, 1, 67, 180, 87, 178, 45, 149, 60, 130, 146, // ...C.W.-.<..
+ 18, 36, 33, 119, 158, 4, 221, 11, 8, 211, 186, 79, // .$!w.......O
+ 102, 184, 210, 16, 158, 83, 45, 203, 241, 124, 70, 140, // f....S-..|F.
+ 214, 133, 121, 199, 175, 192, 53, 92, 3, 169, 25, 172, // ..y...5.....
+ 58, 192, 94, 244, 100, 57, 166, 45, 127, 181, 26, 28, // :.^.d9.-....
+ 135, 0, 197, 201, 81, 66, 241, 55, 91, 181, 97, 69, // ....QB.7[.aE
+ 43, 88, 77, 75, 216, 41, 97, 61, 49, 28, 131, 5, // +XMK.)a=1...
+ 8, 233, 108, 61, 201, 225, 106, 78, 82, 31, 139, 171, // ..l=..jNR...
+ 60, 161, 52, 109, 29, 2, 43, 92, 85, 100, 10, 126, // <.4m..+.Ud.~
+ 11, 181, 226, 237, 152, 225, 194, 156, 129, 158, 22, 11, // ............
+ 131, 239, 14, 125, 31, 222, 6, 4, 166, 81, 255, 236, // ...}.....Q..
+ 225, 60, 199, 18, 240, 239, 70, 112, 100, 196, 54, 32, // .<....Fpd.6
+ 189, 3, 79, 188, 36, 230, 187, 49, 6, 250, 116, 163, // ..O.$..1..t.
+ 193, 76, 19, 64, 180, 150, 78, 179, 154, 210, 40, 175, // .L.@..N...(.
+ 24, 208, 233, 118, 58, 253, 150, 236, 116, 154, 218, 233, // ...v:...t...
+ 52, 182, 19, 134, 212, 41, 141, 173, 153, 9, 45, 97, // 4....)....-a
+ 142, 122, 252, 186, 77, 244, 213, 19, 57, 177, 50, 168, // .z..M...9.2.
+ 50, 176, 38, 135, 173, 79, 27, 144, 208, 204, 133, 20, // 2.&..O......
+ 38, 91, 116, 176, 111, 103, 52, 13, 89, 18, 1, 148, // &[t.og4.Y...
+ 188, 193, 182, 97, 104, 26, 110, 101, 96, 196, 13, 75, // ...ah.ne`..K
+ 131, 102, 59, 60, 18, 128, 120, 202, 75, 48, 75, 100, // .f;<..x.K0Kd
+ 6, 227, 82, 141, 133, 101, 76, 62, 43, 136, 33, 236, // ..R..eL>+.!.
+ 55, 20, 204, 5, 51, 11, 0, 155, 52, 171, 96, 235, // 7...3...4.`.
+ 135, 178, 187, 190, 117, 77, 8, 136, 16, 125, 32, 153, // ....uM...} .
+ 113, 119, 37, 78, 108, 223, 213, 59, 223, 213, 155, 116, // qw%Nl..;...t
+ 101, 97, 5, 168, 120, 124, 137, 41, 102, 73, 56, 10, // ea..x|.)fI8.
+ 222, 17, 114, 27, 172, 68, 229, 249, 174, 197, 170, 108, // ..r..D.....l
+ 29, 18, 0, 4, 182, 28, 144, 87, 65, 57, 19, 150, // .......WA9..
+ 117, 203, 106, 66, 86, 237, 87, 1, 143, 114, 8, 150, // u.jBV.W..r..
+ 52, 200, 96, 66, 161, 241, 136, 8, 179, 141, 78, 194, // 4.`B......N.
+ 65, 157, 141, 231, 197, 116, 119, 146, 36, 170, 41, 20, // A....tw.$.).
+ 145, 100, 123, 40, 172, 192, 10, 161, 218, 93, 17, 224, // .d{(.....]..
+ 51, 128, 171, 218, 47, 176, 225, 178, 74, 157, 15, 211, // 3.../...J...
+ 98, 228, 108, 235, 216, 76, 32, 178, 135, 63, 233, 225, // b.l..L ..?..
+ 142, 232, 123, 254, 39, 216, 91, 48, 164, 51, 168, 208, // ..{.'.[0.3..
+ 131, 229, 154, 128, 241, 255, 8, 251, 107, 125, 43, 43, // ........k}++
+ 225, 197, 191, 135, 77, 190, 230, 36, 113, 9, 249, 99, // ....M..$q..c
+ 89, 145, 62, 65, 194, 252, 0, 220, 53, 186, 69, 97, // Y.>A....5.Ea
+ 31, 110, 93, 195, 50, 122, 63, 30, 118, 90, 44, 22, // .n].2z?.vZ,.
+ 163, 20, 168, 239, 248, 118, 159, 206, 142, 41, 150, 241, // .....v...)..
+ 214, 233, 26, 61, 37, 173, 166, 232, 228, 220, 155, 75, // ...=%......K
+ 45, 94, 70, 218, 142, 187, 162, 186, 234, 246, 129, 37, // -^F........%
+ 172, 163, 238, 103, 122, 130, 117, 73, 178, 27, 120, 32, // ...gz.uI..x
+ 2, 6, 14, 40, 40, 74, 82, 71, 7, 157, 70, 128, // ...((JRG..F.
+ 58, 91, 86, 13, 60, 15, 86, 53, 4, 79, 133, 21, // :[V.<.V5.O..
+ 82, 164, 74, 163, 18, 67, 35, 224, 21, 126, 79, 192, // R.J..C#..~O.
+ 219, 26, 193, 105, 40, 0, 162, 170, 200, 182, 203, 38, // ...i(......&
+ 139, 96, 209, 142, 121, 207, 212, 42, 64, 140, 39, 169, // .`..y..*@.'.
+ 36, 129, 194, 6, 50, 2, 179, 239, 203, 224, 138, 129, // $...2.......
+ 36, 128, 12, 31, 79, 63, 9, 30, 99, 50, 11, 227, // $...O?..c2..
+ 33, 65, 83, 169, 196, 84, 96, 121, 26, 49, 36, 121, // !AS..T`y.1$y
+ 128, 127, 184, 49, 72, 146, 100, 63, 230, 49, 100, 145, // ...1H.d?.1d.
+ 78, 100, 44, 197, 50, 226, 224, 118, 80, 102, 225, 157, // Nd,.2..vPf..
+ 136, 64, 192, 170, 29, 160, 60, 13, 181, 109, 231, 60, // .@....<..m.<
+ 67, 239, 172, 212, 102, 149, 205, 20, 175, 228, 242, 82, // C...f......R
+ 103, 74, 128, 229, 175, 229, 57, 206, 224, 192, 169, 63, // gJ....9....?
+ 123, 27, 156, 226, 151, 251, 237, 173, 231, 61, 24, 222, // {........=..
+ 210, 133, 207, 234, 163, 242, 204, 97, 55, 244, 75, 157, // .......a7.K.
+ 251, 242, 29, 220, 29, 224, 238, 46, 225, 243, 112, 5, // ..........p.
+ 247, 18, 236, 254, 30, 213, 87, 190, 225, 57, 30, 126, // ......W..9.~
+ 174, 96, 206, 54, 192, 34, 44, 33, 190, 182, 3, 86, // .`.6.",!...V
+ 236, 112, 4, 200, 246, 120, 6, 65, 172, 181, 82, 96, // .p...x.A..R`
+ 175, 11, 31, 159, 201, 163, 2, 203, 59, 227, 225, 97, // ........;..a
+ 100, 185, 253, 64, 244, 158, 91, 204, 189, 158, 167, 231, // d..@..[.....
+ 131, 181, 124, 24, 152, 191, 190, 196, 213, 123, 7, 215, // ..|......{..
+ 217, 89, 30, 115, 69, 251, 191, 71, 85, 180, 191, 183, // .Y.sE..GU...
+ 198, 207, 25, 166, 60, 37, 122, 151, 5, 64, 79, 127, // ....<%z..@O.
+ 5, 159, 135, 139, 108, 87, 239, 224, 122, 111, 120, 43, // ....lW..zox+
+ 7, 62, 222, 25, 174, 207, 52, 79, 72, 253, 46, 109, // .>....4OH..m
+ 193, 9, 188, 37, 204, 217, 202, 63, 195, 151, 133, 190, // ...%...?....
+ 235, 237, 10, 131, 231, 159, 183, 88, 98, 110, 32, 207, // .......Xbn .
+ 140, 68, 224, 194, 236, 64, 130, 248, 14, 94, 96, 25, // .D...@...^`.
+ 39, 64, 226, 32, 128, 31, 62, 72, 152, 40, 246, 69, // '@. ..>H.(.E
+ 240, 4, 114, 111, 68, 62, 71, 221, 19, 63, 218, 171, // ..roD>G..?..
+ 17, 253, 122, 150, 255, 186, 23, 224, 15, 59, 184, 83, // ..z......;.S
+ 106, 165, 250, 136, 183, 59, 171, 187, 170, 119, 10, 44, // j....;...w.,
+ 5, 36, 142, 31, 197, 200, 86, 127, 22, 131, 68, 186, // .$....V...D.
+ 210, 236, 144, 194, 29, 242, 149, 103, 41, 110, 207, 216, // .......g)n..
+ 29, 118, 152, 167, 215, 200, 39, 34, 248, 206, 49, 233, // .v....'"..1.
+ 34, 55, 148, 226, 164, 25, 190, 63, 246, 25, 147, 43, // "7.....?...+
+ 226, 245, 128, 216, 157, 165, 150, 217, 90, 145, 224, 97, // ........Z..a
+ 192, 208, 146, 252, 76, 160, 168, 199, 22, 227, 176, 55, // ....L......7
+ 12, 36, 182, 234, 42, 213, 110, 160, 237, 123, 62, 176, // .$..*.n..{>.
+ 225, 51, 9, 157, 252, 69, 191, 198, 150, 83, 56, 36, // .3...E...S8$
+ 191, 211, 201, 43, 157, 251, 12, 115, 126, 64, 129, 36, // ...+...s~@.$
+ 120, 93, 63, 184, 191, 191, 195, 32, 206, 0, 9, 182, // x]?.... ....
+ 7, 184, 165, 194, 165, 4, 54, 243, 116, 128, 92, 41, // ......6.t..)
+ 100, 6, 229, 81, 152, 12, 144, 190, 66, 86, 36, 165, // d..Q....BV$.
+ 19, 161, 107, 68, 55, 69, 65, 202, 40, 172, 200, 248, // ..kD7EA.(...
+ 94, 88, 33, 240, 160, 50, 100, 22, 93, 143, 223, 148, // ^X!..2d.]...
+ 244, 131, 31, 238, 62, 60, 1, 26, 221, 153, 189, 177, // ....><......
+ 233, 232, 180, 172, 64, 198, 54, 219, 34, 252, 139, 236, // ....@.6."...
+ 220, 213, 218, 112, 215, 75, 195, 189, 187, 138, 225, 234, // ...p.K......
+ 50, 67, 231, 206, 112, 93, 223, 112, 189, 251, 107, 24, // 2C..p].p..k.
+ 94, 30, 240, 221, 202, 184, 95, 193, 152, 175, 225, 118, // ^....._....v
+ 119, 145, 27, 196, 213, 53, 48, 116, 175, 225, 246, 112, // w....50t...p
+ 121, 176, 16, 252, 125, 99, 121, 89, 55, 66, 178, 43, // y...}cyY7B.+
+ 38, 227, 14, 55, 84, 239, 42, 211, 33, 195, 203, 182, // &..7T.*.!...
+ 67, 102, 48, 185, 119, 254, 5, 126, 184, 243, 95, 86, // Cf0.w..~.._V
+ 15, 247, 80, 23, 178, 57, 248, 92, 224, 199, 119, 231, // ..P..9....w.
+ 43, 188, 15, 57, 162, 247, 221, 95, 210, 80, 238, 247, // +..9..._.P..
+ 151, 221, 207, 1, 253, 192, 167, 47, 78, 138, 182, 39, // ......./N..'
+ 191, 61, 226, 185, 173, 120, 204, 77, 252, 132, 112, 42, // .=...x.M..p*
+ 89, 56, 61, 16, 83, 9, 197, 25, 170, 55, 118, 251, // Y8=.S....7v.
+ 213, 14, 175, 239, 32, 127, 55, 150, 240, 17, 23, 117, // .... .7....u
+ 142, 227, 134, 38, 135, 66, 241, 96, 224, 85, 80, 143, // ...&.B.`.UP.
+ 120, 227, 142, 175, 103, 209, 151, 196, 26, 205, 98, 204, // x...g.....b.
+ 111, 158, 74, 234, 103, 138, 111, 94, 37, 169, 7, 35, // o.J.g.o^%..#
+ 253, 97, 214, 228, 214, 210, 84, 215, 140, 218, 137, 152, // .a....T.....
+ 118, 117, 57, 139, 231, 40, 37, 21, 165, 141, 12, 227, // vu9..(%.....
+ 128, 170, 238, 10, 149, 94, 234, 70, 0, 110, 62, 180, // .....^.F.n>.
+ 215, 136, 240, 175, 177, 206, 144, 207, 155, 38, 26, 48, // .........&.0
+ 61, 111, 34, 220, 9, 167, 179, 232, 233, 179, 232, 196, // =o".........
+ 103, 38, 203, 59, 51, 89, 155, 255, 133, 205, 25, 161, // g&.;3Y......
+ 88, 77, 51, 183, 208, 67, 134, 236, 14, 110, 97, 56, // XM3..C...na8
+ 236, 111, 86, 37, 86, 137, 46, 230, 113, 98, 84, 147, // .oV%V...qbT.
+ 235, 236, 51, 50, 216, 105, 201, 25, 65, 99, 73, 114, // ..32.i..AcIr
+ 114, 248, 168, 76, 254, 237, 94, 233, 188, 243, 230, 155, // r..L..^.....
+ 24, 77, 179, 103, 39, 5, 252, 146, 205, 135, 110, 246, // .M.g'.....n.
+ 251, 115, 226, 206, 26, 113, 155, 64, 109, 162, 143, 79, // .s...q.@m..O
+ 133, 199, 81, 7, 22, 40, 153, 216, 143, 35, 89, 125, // ..Q..(...#Y}
+ 136, 212, 219, 242, 222, 98, 192, 213, 177, 157, 21, 94, // .....b.....^
+ 44, 39, 120, 38, 202, 191, 250, 241, 225, 219, 0, 77, // ,'x&.......M
+ 215, 254, 85, 128, 6, 148, 239, 1, 52, 144, 122, 9, // ..U.....4.z.
+ 160, 193, 250, 55, 0, 26, 144, 223, 254, 107, 0, 121, // ...7.....k.y
+ 191, 175, 131, 240, 102, 95, 107, 107, 111, 25, 228, 149, // ....f_kko...
+ 4, 187, 190, 110, 251, 159, 86, 1, 52, 192, 248, 20, // ...n..V.4...
+ 48, 59, 153, 227, 98, 207, 212, 143, 33, 204, 209, 99, // 0;..b...!..c
+ 85, 1, 5, 83, 36, 236, 181, 234, 19, 49, 133, 173, // U..S$....1..
+ 204, 222, 169, 205, 254, 254, 130, 219, 204, 148, 79, 219, // ..........O.
+ 212, 139, 4, 14, 223, 252, 127, 181, 250, 69, 107, 115, // .........Eks
+ 141, 205, 106, 154, 162, 183, 238, 154, 76, 92, 43, 52, // ..j.....L.+4
+ 91, 26, 89, 91, 242, 74, 73, 121, 107, 251, 38, 68, // [.Y[.JIyk.&D
+ 28, 207, 116, 23, 122, 151, 184, 17, 175, 142, 109, 119, // ..t.z.....mw
+ 85, 233, 30, 98, 225, 227, 222, 57, 11, 0, 252, 103, // U..b...9...g
+ 147, 201, 44, 85, 253, 124, 206, 249, 211, 42, 46, 155, // ..,U.|...*..
+ 236, 136, 107, 150, 204, 211, 169, 150, 111, 81, 45, 129, // ..k.....oQ-.
+ 138, 64, 253, 5, 43, 28, 159, 168, 182, 239, 87, 82, // .@..+.....WR
+ 244, 127, 79, 103, 167, 239, 171, 189, 127, 124, 12, 6, // ..Og.....|..
+ 85, 217, 204, 11, 203, 159, 160, 78, 59, 39, 239, 39, // U......N;'.'
+ 22, 117, 192, 195, 249, 199, 64, 158, 154, 66, 98, 30, // .u....@..Bb.
+ 48, 208, 181, 135, 92, 171, 7, 72, 209, 157, 115, 199, // 0......H..s.
+ 156, 189, 4, 81, 121, 190, 79, 128, 231, 63, 136, 3, // ...Qy.O..?..
+ 63, 247, 130, 132, 65, 245, 173, 11, 249, 49, 53, 184, // ?...A....15.
+ 206, 91, 86, 206, 87, 241, 190, 170, 126, 102, 175, 189, // .[V.W...~f..
+ 31, 3, 249, 90, 26, 31, 186, 4, 12, 166, 94, 127, // ...Z......^.
+ 99, 126, 41, 254, 195, 11, 123, 252, 55, 122, 88, 205, // c~)...{.7zX.
+ 110, 37, 4, 23, 158, 51, 137, 254, 191, 228, 132, 230, // n%...3......
+ 221, 169, 204, 149, 137, 244, 127, 147, 255, 201, 23, 201, // ............
+ 143, 129, 184, 15, 207, 242, 26, 35, 123, 126, 132, 20, // .......#{~..
+ 127, 252, 92, 89, 195, 233, 61, 229, 226, 193, 245, 169, // ...Y..=.....
+ 186, 92, 233, 222, 15, 184, 70, 177, 48, 117, 222, 242, // ......F.0u..
+ 238, 129, 28, 121, 13, 241, 110, 57, 87, 220, 71, 244, // ...y..n9W.G.
+ 130, 134, 222, 62, 20, 245, 163, 28, 254, 43, 60, 183, // ...>.....+<.
+ 11, 141, 91, 124, 66, 197, 239, 188, 214, 62, 212, 116, // ..[|B....>.t
+ 139, 214, 174, 210, 199, 64, 123, 143, 241, 230, 195, 153, // .....@{.....
+ 9, 157, 57, 1, 253, 218, 95, 125, 204, 12, 104, 106, // ..9..._}..hj
+ 11, 121, 139, 63, 32, 125, 235, 29, 205, 230, 55, 96, // .y.? }....7`
+ 144, 107, 30, 117, 244, 116, 111, 63, 236, 64, 154, 162, // .k.u.to?.@..
+ 63, 123, 151, 103, 183, 51, 174, 121, 183, 190, 103, 174, // ?{.g.3.y..g.
+ 153, 194, 138, 248, 17, 175, 97, 134, 221, 223, 251, 34, // ......a...."
+ 102, 70, 47, 215, 241, 124, 166, 88, 178, 127, 12, 134, // fF/..|.X....
+ 175, 49, 197, 51, 76, 68, 28, 44, 191, 29, 28, 183, // .1.3LD.,....
+ 35, 240, 104, 21, 47, 173, 118, 217, 140, 48, 254, 156, // #.h./.v..0..
+ 100, 61, 125, 78, 98, 143, 31, 160, 200, 99, 110, 38, // d=}Nb....cn&
+ 247, 231, 184, 188, 236, 254, 3, 115, 125, 126, 192, 75, // .......s}~.K
+ 58, 0, 0, 0 // :..
};
static const unsigned char v5[] = {
- 31, 139, 8, 8, 238, 54, 136, 101, 0, 3, 109, 97, // .....6.e..ma
- 105, 110, 46, 106, 115, 0, 221, 124, 251, 119, 219, 70, // in.js..|.w.F
- 150, 230, 239, 254, 43, 170, 217, 217, 33, 181, 33, 32, // ....+...!.!
- 188, 73, 202, 150, 250, 184, 157, 228, 200, 115, 236, 164, // .I.......s..
- 215, 118, 123, 103, 215, 235, 77, 32, 18, 34, 25, 131, // .v{g..M ."..
- 4, 7, 0, 245, 136, 154, 255, 251, 124, 223, 173, 194, // ........|...
- 139, 162, 100, 103, 58, 57, 167, 79, 18, 153, 44, 212, // ..dg:9.O..,.
- 227, 214, 173, 251, 46, 212, 45, 30, 31, 43, 245, 253, // ......-..+..
- 15, 239, 190, 61, 81, 207, 255, 246, 82, 77, 227, 52, // ...=Q...RM.4
- 45, 212, 106, 91, 148, 170, 40, 227, 188, 84, 215, 203, // -.j[..(..T..
- 114, 161, 250, 241, 102, 121, 220, 87, 203, 181, 202, 242, // r...fy.W....
- 89, 146, 171, 50, 83, 69, 146, 95, 37, 170, 92, 36, // Y..2SE._%..$
- 42, 222, 108, 84, 92, 170, 120, 125, 171, 254, 254, 230, // *.lT..x}....
- 229, 147, 39, 253, 109, 145, 96, 112, 190, 156, 150, 253, // ..'.m.`p....
- 167, 79, 150, 171, 77, 6, 48, 119, 106, 49, 84, 121, // .O..M.0wj1Ty
- 178, 198, 232, 161, 66, 135, 183, 101, 92, 38, 82, 250, // ....B..e.&R.
- 246, 242, 50, 153, 150, 82, 124, 147, 92, 14, 213, 162, // ..2..R|.....
- 92, 165, 67, 245, 38, 219, 150, 152, 104, 167, 46, 243, // ..C.&...h...
- 108, 165, 84, 223, 62, 190, 216, 174, 103, 105, 98, 255, // l.T.>...gib.
- 92, 0, 232, 147, 105, 182, 6, 134, 47, 249, 165, 78, // ....i.../..N
- 213, 221, 19, 165, 166, 217, 252, 68, 109, 242, 108, 131, // .......Dm.l.
- 138, 51, 1, 242, 211, 179, 226, 106, 174, 166, 105, 92, // .3.....j..i.
- 20, 167, 95, 221, 73, 147, 45, 79, 59, 117, 179, 74, // .._.I.-O;u.J
- 215, 197, 105, 111, 81, 150, 155, 147, 227, 227, 235, 235, // ..ioQ.......
- 107, 251, 218, 183, 179, 124, 126, 236, 57, 142, 115, 140, // k....|~.9.s.
- 97, 61, 117, 185, 76, 211, 211, 222, 58, 91, 39, 61, // a=u.L...:['=
- 117, 181, 76, 174, 255, 154, 221, 156, 246, 28, 229, 40, // u.L........(
- 47, 192, 95, 143, 11, 204, 62, 37, 214, 245, 114, 86, // /._...>%..rV
- 46, 78, 123, 174, 29, 86, 85, 167, 189, 233, 54, 199, // .N{..VU...6.
- 74, 203, 23, 89, 154, 229, 189, 51, 245, 108, 19, 131, // J..Y...3.l..
- 132, 166, 127, 186, 92, 39, 211, 120, 115, 218, 203, 51, // .....'.xs..3
- 172, 167, 215, 174, 254, 57, 91, 174, 235, 250, 217, 105, // .....9[....i
- 239, 245, 196, 14, 39, 129, 242, 237, 73, 48, 181, 157, // ....'...I0..
- 137, 101, 135, 129, 103, 135, 145, 133, 103, 229, 218, 174, // .e..g...g...
- 203, 194, 2, 53, 19, 127, 106, 135, 33, 48, 115, 109, // ...5..j.!0sm
- 199, 179, 253, 201, 88, 90, 209, 152, 218, 158, 235, 227, // ....XZ......
- 193, 27, 187, 0, 16, 249, 182, 63, 10, 108, 223, 245, // .......?.l..
- 237, 104, 28, 217, 81, 16, 218, 227, 145, 237, 160, 202, // .h..Q.......
- 9, 108, 55, 64, 113, 236, 219, 158, 103, 187, 222, 200, // .l7@q...g...
- 246, 61, 84, 77, 34, 123, 228, 217, 94, 56, 34, 224, // .=TM"{..^8".
- 81, 136, 134, 32, 5, 48, 119, 100, 217, 65, 24, 197, // Q.. .0wd.A..
- 152, 196, 11, 149, 254, 4, 93, 48, 163, 63, 178, 131, // ......]0.?..
- 9, 187, 76, 34, 133, 129, 193, 232, 94, 31, 203, 246, // ..L"....^...
- 34, 60, 6, 190, 155, 90, 0, 234, 248, 246, 216, 27, // "<...Z......
- 77, 81, 59, 193, 212, 1, 224, 250, 99, 59, 114, 125, // MQ;.....c;r}
- 22, 176, 128, 137, 23, 3, 133, 112, 162, 244, 39, 1, // .......p..'.
- 56, 10, 8, 133, 24, 225, 56, 192, 114, 52, 182, 93, // 8.....8.r4.]
- 140, 0, 110, 1, 168, 196, 169, 29, 7, 171, 242, 198, // ..n.........
- 83, 59, 192, 10, 252, 208, 14, 253, 192, 158, 132, 65, // S;.........A
- 53, 45, 103, 245, 64, 160, 7, 176, 195, 18, 162, 9, // 5-g.@.......
- 214, 32, 216, 85, 11, 197, 100, 126, 24, 90, 152, 9, // . .U..d~.Z..
- 120, 141, 80, 112, 70, 30, 145, 31, 69, 164, 8, 48, // x.PpF...E..0
- 4, 129, 228, 195, 44, 144, 20, 28, 115, 16, 150, 224, // ....,...s...
- 142, 49, 38, 28, 99, 234, 9, 6, 70, 65, 96, 143, // .1&.c...FA`.
- 163, 73, 106, 213, 124, 225, 66, 192, 229, 128, 189, 34, // .Ij.|.B...."
- 112, 140, 40, 8, 235, 220, 133, 69, 206, 6, 232, 64, // p.(....E...@
- 214, 114, 62, 207, 34, 111, 173, 138, 243, 26, 138, 165, // .r>."o......
- 185, 11, 48, 17, 219, 71, 160, 161, 239, 162, 4, 14, // ..0..G......
- 203, 124, 22, 120, 76, 20, 61, 37, 31, 21, 138, 22, // .|.xL.=%....
- 185, 76, 28, 61, 46, 108, 130, 190, 88, 19, 89, 173, // .L.=.l..X.Y.
- 23, 102, 9, 175, 53, 13, 14, 242, 90, 83, 202, 34, // .f..5...ZS."
- 187, 133, 162, 35, 235, 48, 69, 65, 119, 75, 179, 155, // ...#.0EAwK..
- 172, 33, 54, 152, 22, 253, 57, 89, 128, 122, 80, 24, // .!6...9Y.zP.
- 236, 182, 185, 126, 205, 237, 137, 79, 76, 249, 41, 220, // ...~...OL.).
- 182, 132, 219, 100, 54, 23, 55, 38, 19, 198, 154, 9, // ...d6.7&....
- 122, 136, 150, 34, 129, 59, 62, 40, 108, 50, 123, 250, // z..".;>(l2{.
- 24, 138, 20, 91, 75, 120, 206, 229, 70, 194, 113, 48, // ...[Kx..F.q0
- 60, 34, 191, 49, 19, 233, 225, 169, 134, 42, 194, 125, // <".1.....*.}
- 104, 12, 85, 6, 53, 14, 84, 72, 147, 115, 12, 134, // h.U.5.TH.s..
- 179, 0, 37, 10, 199, 30, 33, 134, 134, 1, 224, 56, // ..%...!....8
- 32, 7, 154, 85, 191, 244, 212, 241, 63, 97, 18, 92, // ..U....?a..
- 160, 238, 197, 190, 242, 169, 238, 174, 21, 225, 75, 63, // ..........K?
- 56, 46, 202, 6, 56, 13, 216, 217, 79, 67, 24, 197, // 8...8...OC..
- 229, 250, 50, 251, 163, 89, 69, 112, 140, 12, 228, 103, // ..2..YEp...g
- 10, 70, 128, 205, 142, 23, 211, 6, 140, 42, 134, 210, // .F.......*..
- 212, 141, 67, 15, 26, 50, 114, 168, 235, 99, 63, 106, // ..C..2r..c?j
- 117, 112, 170, 14, 126, 61, 220, 125, 237, 185, 164, 235, // up..~=.}....
- 68, 77, 52, 93, 221, 49, 190, 245, 19, 0, 226, 225, // DM4].1......
- 151, 149, 53, 177, 40, 15, 11, 200, 219, 248, 138, 31, // ..5.(.......
- 231, 174, 247, 126, 12, 36, 238, 17, 253, 34, 75, 203, // ...~.$..."K.
- 63, 26, 209, 185, 116, 5, 77, 13, 83, 215, 177, 67, // ?...t.M.S..C
- 75, 168, 255, 202, 133, 98, 224, 105, 65, 42, 188, 154, // K....b.iA*..
- 176, 135, 231, 74, 63, 79, 186, 158, 115, 208, 61, 234, // ...J?O..s.=.
- 44, 178, 85, 242, 71, 163, 142, 39, 18, 233, 165, 99, // ,.U.G..'...c
- 250, 26, 139, 159, 48, 90, 129, 248, 179, 9, 77, 77, // ....0Z....MM
- 232, 85, 197, 112, 226, 42, 231, 85, 69, 166, 215, 129, // .U.p.*.UE...
- 29, 42, 18, 238, 10, 116, 132, 65, 154, 194, 189, 69, // .*...t.A...E
- 104, 12, 157, 64, 181, 237, 148, 124, 158, 75, 71, 11, // h..@...|.KG.
- 46, 100, 132, 142, 86, 213, 209, 106, 117, 209, 229, 5, // .d..V..ju...
- 209, 153, 178, 93, 98, 2, 212, 236, 3, 124, 239, 185, // ...]b....|..
- 139, 64, 38, 108, 247, 178, 154, 110, 26, 208, 123, 206, // .@&l...n..{.
- 248, 154, 220, 5, 99, 133, 203, 45, 102, 42, 225, 102, // ....c..-f*.f
- 17, 95, 253, 225, 184, 9, 39, 16, 42, 202, 238, 123, // ._....'.*..{
- 150, 68, 202, 3, 210, 96, 132, 106, 214, 188, 103, 219, // .D...`.j..g.
- 10, 182, 225, 220, 29, 63, 23, 214, 203, 7, 77, 133, // .....?....M.
- 231, 176, 20, 93, 185, 222, 94, 3, 108, 136, 180, 157, // ...]..^.l...
- 71, 123, 13, 90, 177, 198, 239, 247, 235, 35, 193, 96, // G{.Z.....#.`
- 129, 5, 114, 166, 133, 53, 185, 103, 101, 226, 188, 240, // ..r..5.ge...
- 255, 104, 164, 23, 106, 68, 178, 112, 16, 218, 88, 29, // .h..jD.p..X.
- 79, 30, 86, 150, 240, 37, 4, 129, 228, 185, 75, 143, // O.V..%....K.
- 29, 246, 4, 151, 219, 245, 180, 92, 102, 107, 245, 46, // ........fk..
- 185, 41, 223, 199, 233, 54, 25, 220, 93, 241, 107, 136, // .)...6..].k.
- 205, 74, 121, 185, 30, 170, 217, 178, 136, 47, 210, 100, // .Jy....../.d
- 54, 84, 155, 52, 158, 38, 139, 44, 149, 237, 72, 121, // 6T.4.&.,..Hy
- 187, 65, 159, 120, 54, 203, 214, 111, 150, 243, 69, 105, // .A.x6..o..Ei
- 202, 175, 146, 75, 22, 203, 18, 93, 86, 75, 12, 95, // ...K...]VK._
- 197, 55, 0, 85, 38, 27, 20, 183, 105, 185, 59, 50, // .7.U&...i.;2
- 27, 15, 110, 69, 62, 92, 204, 101, 154, 191, 206, 63, // ..nE>..e...?
- 98, 67, 82, 109, 112, 6, 253, 139, 185, 117, 189, 88, // bCRmp....u.X
- 150, 73, 255, 232, 41, 250, 214, 219, 157, 193, 224, 136, // .I..).......
- 76, 187, 83, 203, 75, 53, 224, 252, 234, 244, 84, 245, // L.S.K5....T.
- 215, 219, 213, 69, 146, 247, 143, 212, 116, 145, 76, 63, // ...E....t.L?
- 1, 247, 193, 215, 50, 241, 215, 50, 243, 215, 178, 152, // ....2..2....
- 163, 167, 106, 55, 84, 31, 62, 10, 60, 34, 163, 254, // ..j7T.>.<"..
- 241, 15, 12, 117, 251, 26, 41, 121, 114, 159, 214, 120, // ...u..)yr..x
- 85, 144, 128, 84, 69, 159, 65, 179, 152, 43, 189, 4, // U..TE.A..+..
- 165, 49, 223, 199, 86, 9, 118, 232, 173, 254, 237, 223, // .1..V.v.....
- 212, 149, 122, 70, 42, 28, 181, 186, 230, 201, 204, 114, // ..zF*......r
- 29, 7, 14, 143, 155, 66, 121, 132, 52, 117, 198, 198, // .....By.4u..
- 55, 122, 236, 25, 231, 251, 210, 177, 187, 6, 253, 21, // 7z..........
- 240, 230, 34, 237, 85, 92, 78, 23, 131, 227, 255, 111, // ..".U.N....o
- 127, 253, 255, 236, 129, 253, 245, 209, 241, 81, 211, 105, // .........Q.i
- 182, 156, 47, 75, 238, 3, 87, 234, 47, 106, 245, 193, // ../K..W./j..
- 253, 104, 167, 201, 122, 14, 9, 60, 81, 78, 211, 43, // .h..z..w.@...
- 204, 250, 149, 128, 253, 122, 176, 129, 162, 38, 223, 165, // .....z...&..
- 89, 92, 14, 64, 238, 99, 225, 210, 145, 93, 102, 223, // Y..@.c...]f.
- 45, 111, 146, 217, 64, 227, 110, 134, 236, 42, 94, 92, // -o..@.n..*^.
- 174, 7, 87, 13, 41, 14, 99, 33, 104, 202, 12, 186, // ..W.).c!h...
- 244, 63, 31, 134, 156, 39, 229, 54, 95, 107, 19, 241, // .?...'.6_k..
- 228, 217, 108, 121, 101, 108, 68, 239, 50, 77, 110, 212, // ..lyelD.2Mn.
- 181, 117, 185, 77, 83, 5, 182, 175, 10, 107, 10, 53, // .u.MS....k.5
- 198, 190, 91, 116, 50, 153, 25, 246, 168, 98, 17, 207, // ..[t2....b..
- 178, 107, 171, 88, 169, 175, 238, 46, 230, 187, 222, 25, // .k.X........
- 128, 126, 117, 87, 107, 9, 121, 108, 236, 207, 38, 94, // .~uWk.yl..&^
- 87, 192, 151, 107, 234, 184, 37, 115, 92, 102, 235, 210, // W..k..%s.f..
- 90, 103, 249, 10, 146, 88, 230, 16, 68, 40, 135, 218, // Zg...X..D(..
- 220, 90, 110, 45, 0, 10, 66, 81, 164, 168, 22, 177, // .Zn-..BQ....
- 232, 32, 99, 186, 204, 243, 248, 214, 242, 209, 184, 185, // . c.........
- 177, 60, 85, 66, 201, 117, 85, 136, 42, 121, 186, 41, // .[.7.R...Qh.
- 143, 127, 168, 62, 71, 245, 119, 181, 89, 64, 83, 85, // ...>G.w.Y@SU
- 220, 105, 242, 162, 70, 190, 13, 99, 32, 136, 168, 225, // .i..F..c ...
- 215, 142, 186, 128, 50, 62, 119, 20, 109, 22, 227, 155, // ....2>w.m...
- 157, 146, 126, 149, 164, 161, 178, 42, 238, 148, 109, 219, // ..~....*..m.
- 192, 13, 198, 68, 195, 50, 52, 18, 114, 118, 169, 195, // ...D.24.rv..
- 149, 128, 208, 21, 7, 12, 119, 72, 69, 80, 11, 36, // ......wHEP.$
- 67, 196, 181, 79, 129, 17, 137, 210, 88, 180, 147, 166, // C..O....X...
- 37, 64, 203, 101, 54, 221, 22, 39, 217, 182, 20, 118, // %@.e6..'...v
- 208, 190, 215, 43, 62, 129, 225, 46, 178, 28, 149, 165, // ...+>.......
- 21, 167, 105, 118, 141, 9, 235, 54, 48, 68, 96, 144, // ..iv...60D`.
- 31, 117, 101, 135, 236, 189, 246, 172, 244, 56, 205, 211, // .ue......8..
- 14, 230, 185, 17, 18, 49, 171, 191, 129, 148, 164, 191, // .....1......
- 137, 148, 168, 236, 42, 201, 47, 83, 10, 244, 52, 207, // ....*./S..4.
- 210, 148, 62, 233, 54, 133, 27, 3, 55, 181, 123, 59, // ..>.6...7.{;
- 81, 161, 243, 63, 158, 214, 210, 36, 232, 215, 226, 36, // Q..?...$...$
- 223, 79, 187, 46, 231, 109, 146, 194, 170, 31, 116, 58, // .O...m....t:
- 217, 134, 61, 138, 198, 251, 116, 252, 70, 153, 189, 92, // ..=...t.F...
- 151, 208, 226, 27, 90, 164, 27, 106, 184, 216, 11, 84, // ....Z..j...T
- 14, 96, 47, 255, 210, 121, 58, 81, 55, 143, 152, 51, // .`/..y:Q7..3
- 109, 54, 4, 222, 96, 207, 152, 29, 29, 176, 2, 133, // m6..`.......
- 96, 124, 88, 86, 13, 107, 140, 232, 85, 146, 216, 230, // `|XV.k..U...
- 142, 177, 11, 141, 56, 186, 45, 82, 71, 135, 133, 174, // ....8.-RG...
- 146, 236, 71, 132, 175, 119, 80, 23, 181, 32, 25, 58, // ..G..wP.. .:
- 194, 19, 108, 6, 87, 77, 196, 163, 171, 27, 117, 253, // ..l.WM....u.
- 224, 124, 220, 41, 189, 56, 129, 194, 10, 146, 85, 235, // .|.).8....U.
- 241, 25, 43, 220, 143, 154, 151, 71, 15, 49, 243, 122, // ..+....G.1.z
- 9, 103, 115, 128, 153, 29, 206, 129, 92, 233, 114, 250, // .gs.......r.
- 105, 143, 254, 127, 50, 78, 186, 238, 118, 49, 71, 143, // i...2N..v1G.
- 63, 233, 106, 240, 147, 190, 239, 2, 69, 18, 169, 15, // ?.j.....E...
- 142, 246, 43, 45, 163, 247, 107, 70, 149, 121, 119, 84, // ..+-..kF.ywT
- 153, 199, 107, 45, 247, 55, 86, 40, 227, 218, 53, 122, // ..k-.7V(..5z
- 100, 151, 191, 23, 219, 178, 196, 90, 196, 228, 245, 244, // d......Z....
- 67, 175, 194, 89, 51, 155, 165, 93, 215, 16, 181, 149, // C..Y3..]....
- 113, 97, 69, 48, 62, 174, 171, 77, 79, 177, 200, 151, // qaE0>..MO...
- 235, 79, 150, 163, 12, 211, 54, 8, 221, 90, 142, 66, // .O....6..Z.B
- 75, 138, 81, 65, 175, 42, 8, 142, 144, 96, 40, 168, // K.QA.*...`(.
- 146, 242, 146, 244, 181, 166, 12, 19, 11, 53, 219, 230, // .........5..
- 177, 60, 99, 233, 42, 137, 139, 196, 130, 250, 65, 98, // ..28.*...
- 55, 130, 245, 158, 191, 137, 62, 48, 168, 217, 204, 26, // 7.....>0....
- 92, 52, 214, 109, 68, 164, 223, 80, 249, 4, 164, 85, // .4.mD..P...U
- 236, 190, 177, 22, 215, 152, 46, 175, 160, 22, 144, 142, // ............
- 36, 47, 81, 172, 53, 227, 23, 16, 240, 160, 115, 140, // $/Q.5.....s.
- 47, 138, 44, 221, 150, 244, 146, 152, 143, 174, 174, 177, // /.,.........
- 169, 201, 90, 148, 35, 160, 106, 68, 164, 190, 174, 214, // ..Z.#.jD....
- 103, 202, 120, 220, 88, 81, 239, 160, 73, 110, 239, 119, // g.x.XQ..In.w
- 160, 34, 93, 229, 131, 95, 156, 146, 183, 65, 3, 17, // ."].._...A..
- 19, 9, 160, 46, 168, 61, 116, 227, 45, 228, 195, 64, // .....=t.-..@
- 198, 62, 205, 18, 21, 172, 119, 1, 58, 38, 168, 157, // .>....w.:&..
- 121, 58, 223, 119, 229, 172, 18, 7, 238, 234, 175, 11, // y:.w........
- 236, 115, 62, 233, 98, 37, 99, 237, 168, 64, 156, 57, // .s>.b%c..@.9
- 3, 153, 218, 197, 115, 63, 210, 114, 253, 18, 111, 24, // ....s?.r..o.
- 172, 247, 240, 182, 130, 186, 254, 65, 127, 37, 68, 108, // .......A.%Dl
- 117, 187, 223, 177, 14, 215, 58, 189, 196, 56, 100, 159, // u.....:..8d.
- 106, 211, 128, 226, 137, 41, 94, 198, 203, 180, 182, 13, // j....)^.....
- 58, 242, 139, 148, 233, 220, 55, 190, 54, 73, 214, 98, // :.....7.6I.b
- 87, 37, 250, 100, 21, 95, 218, 176, 66, 219, 138, 214, // W%.d._..B...
- 44, 199, 199, 15, 33, 183, 74, 45, 31, 176, 157, 122, // ,...!.J-...z
- 63, 91, 114, 3, 177, 143, 229, 166, 234, 222, 49, 168, // ?[r.......1.
- 218, 181, 183, 60, 255, 4, 59, 80, 56, 109, 86, 192, // ...<..;P8mV.
- 83, 111, 30, 2, 98, 216, 187, 42, 171, 77, 74, 39, // So..b..*.MJ'
- 124, 224, 54, 246, 236, 249, 250, 150, 2, 45, 185, 14, // |.6......-..
- 177, 130, 35, 248, 164, 166, 136, 24, 215, 136, 226, 248, // ..#.........
- 38, 84, 149, 139, 101, 193, 247, 163, 137, 189, 55, 207, // &T..e.....7.
- 227, 75, 13, 180, 70, 60, 202, 145, 131, 62, 73, 123, // .K..F<...>I{
- 130, 202, 44, 236, 246, 226, 118, 26, 218, 67, 110, 171, // ..,...v..Cn.
- 18, 224, 213, 172, 17, 224, 238, 171, 0, 237, 57, 187, // ..........9.
- 155, 226, 251, 209, 246, 30, 138, 85, 252, 108, 102, 44, // .......U.lf,
- 114, 43, 91, 167, 183, 189, 179, 23, 68, 164, 138, 85, // r+[.....D..U
- 247, 7, 212, 239, 161, 123, 38, 106, 222, 127, 167, 204, // .....{&j....
- 191, 234, 157, 115, 231, 245, 241, 129, 56, 125, 31, 188, // ...s....8}..
- 50, 111, 152, 249, 202, 56, 178, 189, 49, 223, 10, 183, // 2o...8..1...
- 207, 0, 229, 188, 156, 39, 254, 78, 244, 106, 44, 233, // .....'.N.j,.
- 18, 78, 202, 211, 59, 143, 47, 213, 91, 29, 93, 167, // .N..;./.[.].
- 233, 231, 242, 224, 15, 133, 244, 193, 126, 150, 238, 167, // ........~...
- 135, 56, 210, 207, 234, 246, 51, 19, 91, 21, 64, 153, // .8....3.[.@.
- 187, 70, 240, 151, 61, 53, 57, 32, 63, 247, 5, 170, // .F..=59 ?...
- 253, 216, 122, 168, 139, 85, 100, 187, 23, 168, 106, 39, // ..z..Ud...j'
- 241, 42, 155, 211, 45, 254, 134, 103, 4, 29, 30, 50, // .*..-..g...2
- 137, 193, 199, 118, 101, 150, 92, 22, 103, 207, 228, 29, // ...ve...g...
- 202, 153, 157, 166, 22, 226, 25, 203, 189, 35, 107, 79, // .........#kO
- 40, 78, 79, 245, 27, 255, 147, 63, 3, 138, 41, 91, // (NO....?..)[
- 43, 200, 102, 158, 46, 241, 117, 226, 214, 149, 250, 213, // +.f...u.....
- 11, 236, 193, 230, 230, 41, 20, 90, 3, 124, 118, 172, // .....).Z.|v.
- 193, 207, 213, 18, 236, 126, 21, 223, 38, 249, 143, 94, // .....~..&..^
- 79, 205, 226, 50, 182, 214, 241, 42, 49, 117, 202, 235, // O..2...*1u..
- 117, 251, 184, 214, 161, 94, 46, 122, 137, 232, 24, 225, // u....^.z....
- 172, 176, 53, 39, 63, 158, 29, 121, 67, 215, 30, 243, // ..5'?..yC...
- 100, 119, 226, 62, 71, 76, 55, 30, 202, 135, 131, 255, // dw.>GL7.....
- 221, 161, 139, 63, 199, 14, 198, 231, 65, 236, 218, 65, // ...?....A..A
- 48, 148, 15, 105, 178, 92, 38, 40, 60, 183, 163, 9, // 0..i..&(<...
- 254, 76, 111, 207, 30, 163, 11, 36, 207, 118, 153, 32, // .Lo....$.v.
- 16, 219, 99, 64, 118, 77, 127, 219, 101, 18, 195, 248, // ..c@vM..e...
- 125, 104, 135, 163, 152, 137, 56, 227, 145, 25, 102, 51, // }h....8...f3
- 117, 99, 28, 157, 7, 246, 200, 127, 63, 130, 240, 160, // uc......?...
- 57, 194, 159, 52, 59, 67, 121, 224, 97, 96, 64, 136, // 9..4;Cy.a`@.
- 33, 254, 234, 6, 64, 28, 243, 116, 42, 8, 159, 119, // !...@..t*..w
- 134, 240, 112, 209, 31, 250, 67, 123, 20, 225, 175, 174, // ..p...C{....
- 20, 4, 99, 219, 155, 224, 79, 87, 18, 77, 252, 227, // ..c...OW.M..
- 186, 38, 250, 67, 87, 203, 226, 206, 153, 91, 244, 158, // .&.CW....[..
- 196, 33, 93, 70, 67, 249, 208, 40, 7, 67, 30, 109, // .!]FC..(.C.m
- 185, 238, 189, 134, 134, 160, 255, 183, 119, 252, 40, 229, // ........w.(.
- 73, 86, 77, 220, 247, 238, 125, 194, 131, 27, 2, 235, // IVM...}.....
- 252, 224, 244, 152, 28, 172, 121, 207, 68, 169, 251, 24, // ......y.D...
- 96, 0, 22, 10, 244, 1, 35, 238, 46, 204, 229, 88, // `.....#....X
- 127, 148, 98, 213, 182, 27, 183, 168, 131, 106, 168, 185, // ..b......j..
- 27, 180, 168, 200, 170, 192, 14, 70, 21, 71, 106, 194, // .......F.Gj.
- 187, 150, 126, 56, 103, 46, 82, 197, 206, 134, 248, 150, // ..~8g.R.....
- 102, 75, 116, 78, 182, 180, 25, 205, 22, 118, 123, 15, // fKtN.....v{.
- 78, 182, 69, 3, 140, 116, 67, 144, 1, 88, 137, 208, // N.E..tC..X..
- 52, 18, 197, 22, 223, 118, 221, 97, 87, 246, 28, 189, // 4....v.aW...
- 10, 33, 240, 241, 220, 252, 147, 99, 177, 167, 198, 12, // .!.....c....
- 188, 206, 102, 23, 219, 226, 160, 49, 120, 34, 214, 0, // ..f....1x"..
- 78, 161, 64, 92, 194, 67, 61, 183, 247, 223, 182, 13, // N.@..C=.....
- 210, 229, 228, 134, 222, 243, 80, 71, 119, 50, 153, 28, // ......PGw2..
- 75, 43, 186, 194, 128, 108, 110, 122, 234, 214, 124, 119, // K+...lnz..|w
- 204, 74, 20, 122, 202, 157, 48, 40, 208, 54, 197, 248, // .J.z..0(.6..
- 70, 122, 173, 227, 105, 81, 244, 206, 148, 189, 186, 248, // Fz..iQ......
- 177, 40, 29, 109, 98, 254, 252, 93, 48, 129, 31, 123, // .(.mb..]0..{
- 186, 51, 213, 110, 85, 253, 226, 133, 211, 170, 246, 76, // .3.nU......L
- 181, 227, 63, 247, 252, 73, 93, 237, 155, 106, 215, 157, // ..?..I]..j..
- 120, 47, 190, 67, 117, 101, 119, 158, 192, 154, 212, 33, // x/.Cuew....!
- 29, 253, 144, 217, 60, 12, 28, 101, 121, 94, 120, 68, // ....<..ey^xD
- 244, 218, 242, 172, 81, 50, 210, 60, 6, 83, 135, 190, // ....Q2.<.S..
- 7, 110, 77, 29, 203, 143, 236, 208, 242, 93, 43, 138, // .nM......]+.
- 96, 8, 192, 78, 95, 74, 83, 203, 31, 219, 62, 196, // `..N_JS...>.
- 128, 53, 67, 40, 97, 164, 75, 210, 230, 12, 57, 104, // .5C(a.K...9h
- 232, 187, 242, 56, 172, 27, 212, 11, 55, 28, 19, 52, // ...8....7..4
- 38, 128, 28, 232, 105, 66, 140, 29, 182, 166, 236, 29, // &...iB......
- 31, 66, 173, 54, 113, 35, 78, 23, 186, 118, 132, 89, // .B.6q#N..v.Y
- 120, 176, 205, 100, 142, 16, 53, 246, 216, 226, 135, 148, // x..d..5.....
- 166, 22, 91, 128, 156, 84, 179, 131, 85, 119, 192, 138, // ..[..T..Uw..
- 164, 177, 174, 109, 198, 2, 61, 200, 238, 104, 232, 73, // ...m..=..h.I
- 181, 153, 138, 89, 129, 195, 214, 180, 143, 163, 55, 161, // ...Y......7.
- 170, 123, 35, 223, 14, 127, 23, 244, 198, 68, 198, 11, // .{#......D..
- 70, 64, 210, 76, 21, 146, 182, 173, 105, 31, 69, 207, // F@.L....i.E.
- 3, 125, 193, 150, 192, 253, 125, 208, 243, 92, 15, 60, // .}....}....<
- 151, 74, 61, 145, 166, 90, 51, 233, 227, 180, 139, 184, // .J=..Z3.....
- 8, 127, 226, 218, 254, 239, 66, 187, 144, 200, 248, 17, // ......B.....
- 76, 220, 208, 76, 53, 26, 13, 91, 147, 62, 138, 220, // L..L5..[.>..
- 36, 224, 96, 16, 56, 248, 61, 112, 27, 123, 96, 168, // $.`.8.=p.{`.
- 15, 182, 70, 67, 61, 17, 184, 234, 13, 155, 57, 31, // ..FC=.....9.
- 69, 109, 36, 228, 117, 68, 89, 127, 123, 212, 34, 87, // Em$.uDY.{."W
- 36, 139, 180, 147, 137, 188, 49, 9, 214, 204, 169, 81, // $.....1....Q
- 203, 210, 219, 121, 182, 238, 96, 135, 240, 69, 118, 177, // ...y..`..Ev.
- 120, 102, 10, 15, 86, 226, 140, 149, 11, 89, 128, 154, // xf..V....Y..
- 35, 30, 69, 80, 235, 138, 202, 59, 19, 68, 163, 33, // #.EP...;.D.!
- 204, 1, 69, 25, 145, 41, 156, 25, 100, 134, 25, 110, // ..E..)..d..n
- 40, 59, 178, 16, 201, 92, 113, 116, 217, 83, 32, 11, // (;....qt.S .
- 48, 138, 80, 136, 136, 42, 24, 232, 75, 107, 132, 178, // 0.P..*..Kk..
- 99, 3, 154, 75, 203, 227, 72, 45, 41, 234, 75, 188, // c..K..H-).K.
- 59, 17, 123, 228, 201, 12, 52, 56, 190, 59, 86, 61, // ;.{...48.;V=
- 73, 101, 252, 12, 238, 62, 149, 205, 247, 16, 131, 40, // Ie...>.....(
- 55, 128, 163, 197, 72, 192, 240, 3, 41, 133, 92, 71, // 7...H...)..G
- 196, 30, 222, 56, 224, 140, 186, 60, 241, 216, 123, 36, // ...8...<..{$
- 164, 3, 189, 60, 41, 143, 52, 25, 209, 199, 17, 146, // ...<).4.....
- 70, 44, 135, 145, 140, 21, 108, 163, 64, 232, 235, 112, // F,....l.@..p
- 229, 62, 251, 248, 146, 137, 230, 10, 161, 177, 46, 79, // .>.........O
- 108, 170, 51, 38, 108, 143, 107, 247, 221, 137, 250, 18, // l.3&l.k.....
- 250, 143, 5, 109, 10, 146, 98, 230, 52, 148, 0, 60, // ...m..b.4..<
- 84, 35, 177, 196, 40, 142, 132, 232, 232, 193, 132, 99, // T#..(......c
- 41, 67, 141, 3, 95, 202, 50, 165, 63, 33, 122, 40, // )C.._.2.?!z(
- 163, 222, 147, 229, 8, 195, 168, 222, 35, 33, 61, 80, // ........#!=P
- 101, 194, 51, 202, 99, 162, 229, 115, 249, 35, 233, 18, // e.3.c..s.#..
- 145, 66, 35, 192, 0, 19, 61, 53, 34, 15, 125, 136, // .B#...=5".}.
- 84, 164, 70, 196, 8, 98, 255, 69, 11, 32, 220, 145, // T.F..b.E. ..
- 176, 143, 115, 83, 64, 200, 96, 150, 35, 174, 193, 5, // ..sS@.`.#...
- 155, 21, 28, 11, 41, 133, 160, 80, 113, 82, 48, 97, // ....)..PqR0a
- 162, 66, 237, 155, 70, 64, 39, 152, 136, 8, 242, 109, // .B..F@'....m
- 103, 24, 8, 255, 41, 11, 96, 5, 225, 50, 143, 45, // g...).`..2.-
- 20, 138, 58, 194, 33, 135, 182, 139, 139, 192, 80, 22, // ..:.!.....P.
- 67, 89, 155, 207, 117, 98, 205, 20, 49, 93, 246, 176, // CY..ub..1]..
- 184, 47, 194, 31, 170, 77, 123, 67, 178, 187, 65, 40, // ./...M{C..A(
- 101, 191, 18, 167, 177, 172, 196, 163, 101, 247, 125, 45, // e.......e.}-
- 90, 81, 69, 115, 95, 12, 3, 51, 121, 209, 195, 99, // ZQEs_..3y..c
- 189, 167, 121, 33, 182, 12, 30, 120, 44, 226, 76, 126, // ..y!...x,.L~
- 5, 20, 69, 244, 33, 47, 68, 97, 180, 224, 34, 50, // ..E.!/Da.."2
- 27, 137, 56, 249, 50, 191, 39, 48, 81, 134, 184, 106, // ..8.2.'0Q..j
- 129, 166, 55, 30, 163, 255, 23, 173, 99, 236, 11, 110, // ..7.....c..n
- 162, 70, 35, 81, 46, 95, 196, 21, 179, 104, 124, 0, // .F#Q._...h|.
- 83, 187, 126, 208, 140, 240, 125, 214, 123, 174, 212, 11, // S.~...}.{...
- 62, 192, 150, 57, 81, 99, 169, 15, 5, 31, 159, 248, // >..9Qc......
- 251, 196, 88, 75, 79, 36, 24, 135, 34, 109, 98, 18, // ..XKO$.."mb.
- 198, 136, 39, 120, 119, 0, 115, 98, 84, 16, 201, 236, // ..'xw.sbT...
- 88, 103, 48, 230, 154, 199, 2, 75, 218, 31, 92, 131, // Xg0....K....
- 223, 54, 70, 162, 254, 218, 168, 0, 63, 152, 16, 6, // .6F.....?...
- 178, 128, 72, 249, 54, 229, 137, 67, 76, 132, 214, 30, // ..H.6..CL...
- 104, 26, 154, 122, 47, 172, 75, 129, 83, 67, 241, 188, // h..z/.K.SC..
- 86, 25, 244, 8, 68, 140, 0, 125, 34, 171, 215, 51, // V...D..}"..3
- 105, 106, 233, 50, 196, 114, 34, 125, 34, 190, 32, 165, // ij.2.r"}". .
- 12, 72, 253, 97, 43, 239, 155, 212, 50, 79, 58, 66, // .H.a+...2O:B
- 236, 97, 203, 61, 154, 103, 218, 113, 48, 194, 10, 44, // .a.=.g.q0..,
- 47, 176, 2, 24, 120, 196, 230, 52, 240, 212, 112, 136, // /...x..4..p.
- 129, 69, 141, 196, 206, 195, 155, 90, 180, 190, 248, 103, // .E.....Z...g
- 141, 36, 96, 168, 10, 156, 114, 202, 93, 148, 107, 113, // .$`...r.].kq
- 181, 28, 237, 51, 42, 131, 192, 76, 69, 188, 185, 105, // ...3*..LE..i
- 225, 10, 232, 27, 60, 54, 163, 48, 165, 174, 32, 102, // ....<6.0.. f
- 39, 81, 44, 33, 12, 96, 89, 160, 220, 20, 58, 103, // 'Q,!.`Y...:g
- 81, 58, 198, 64, 201, 163, 216, 66, 44, 45, 240, 57, // Q:.@...B,-.9
- 82, 47, 120, 29, 99, 172, 213, 84, 148, 134, 150, 77, // R/x.c..T...M
- 199, 7, 245, 154, 212, 107, 223, 17, 189, 240, 233, 199, // .....k......
- 120, 26, 33, 24, 83, 65, 70, 12, 63, 101, 41, 244, // x.!.SAF.?e).
- 98, 12, 204, 208, 224, 114, 127, 10, 79, 231, 243, 11, // b....r..O...
- 4, 225, 46, 15, 109, 88, 9, 43, 133, 60, 158, 66, // ....mX.+.<.B
- 61, 90, 92, 102, 222, 201, 114, 44, 23, 130, 62, 37, // =Z.f..r,..>%
- 109, 92, 65, 116, 34, 240, 209, 29, 221, 166, 36, 155, // m.At".....$.
- 163, 215, 207, 2, 130, 42, 252, 217, 163, 23, 112, 31, // .....*....p.
- 226, 0, 2, 126, 58, 162, 165, 66, 140, 22, 190, 143, // ...~:..B....
- 51, 110, 60, 209, 50, 147, 90, 161, 8, 18, 215, 71, // 3n<.2.Z....G
- 190, 129, 104, 22, 215, 134, 10, 32, 102, 73, 125, 197, // ..h.... fI}.
- 67, 241, 16, 196, 143, 50, 9, 30, 22, 255, 13, 222, // C....2......
- 141, 52, 227, 160, 123, 154, 113, 100, 14, 2, 4, 144, // .4..{.qd....
- 192, 162, 133, 225, 28, 0, 54, 226, 29, 4, 68, 231, // ......6...D.
- 246, 120, 193, 201, 83, 33, 30, 236, 244, 232, 28, 136, // .x..S!......
- 255, 2, 182, 96, 79, 9, 229, 82, 7, 72, 111, 75, // ...`O..R.HoK
- 161, 184, 79, 248, 127, 150, 238, 178, 133, 31, 97, 129, // ..O.......a.
- 24, 206, 127, 18, 206, 112, 147, 0, 226, 195, 172, 200, // .....p......
- 157, 13, 20, 38, 47, 104, 209, 140, 29, 100, 52, 39, // ...&/h...d4'
- 65, 148, 104, 174, 70, 250, 81, 190, 4, 35, 177, 131, // A.h.F.Q..#..
- 8, 12, 68, 161, 120, 39, 134, 244, 24, 91, 62, 209, // ..D.x'...[>.
- 133, 44, 79, 45, 145, 126, 135, 143, 48, 18, 246, 200, // .,O-.~..0...
- 242, 124, 32, 31, 164, 33, 69, 31, 19, 159, 7, 238, // .| ..!E.....
- 228, 85, 224, 104, 231, 22, 146, 124, 163, 20, 40, 90, // .U.h...|..(Z
- 244, 116, 83, 79, 200, 62, 161, 20, 15, 233, 153, 60, // .tSO.>.....<
- 135, 95, 149, 250, 200, 12, 244, 61, 158, 15, 169, 8, // ._.....=....
- 166, 232, 105, 5, 34, 227, 156, 5, 203, 20, 229, 65, // ..i."......A
- 124, 244, 34, 24, 69, 70, 119, 192, 207, 145, 246, 91, // |.".EFw....[
- 147, 97, 11, 121, 245, 58, 208, 123, 42, 74, 162, 250, // .a.y.:.{*J..
- 141, 84, 231, 215, 112, 80, 61, 168, 58, 129, 248, 95, // .T..pP=.:.._
- 173, 58, 129, 54, 122, 218, 142, 52, 8, 63, 202, 162, // .:.6z..4.?..
- 208, 151, 144, 131, 74, 183, 32, 181, 166, 124, 237, 16, // ....J. ..|..
- 72, 32, 133, 133, 209, 138, 112, 93, 129, 152, 40, 172, // H ....p]..(.
- 139, 86, 24, 146, 77, 171, 72, 91, 21, 77, 5, 73, // .V..M.H[.M.I
- 7, 154, 229, 89, 20, 118, 190, 158, 177, 52, 145, 132, // ...Y.v...4..
- 155, 162, 52, 98, 163, 70, 2, 0, 248, 248, 11, 170, // ..4b.F......
- 160, 47, 19, 209, 89, 161, 219, 136, 123, 89, 110, 54, // ./..Y...{Yn6
- 125, 145, 198, 128, 171, 148, 165, 122, 92, 127, 52, 165, // }......z..4.
- 17, 228, 204, 161, 124, 79, 200, 57, 126, 147, 88, 96, // ....|O.9~.X`
- 116, 8, 124, 72, 17, 146, 119, 162, 166, 100, 187, 140, // t.|H..w..d..
- 27, 89, 100, 43, 200, 27, 9, 90, 41, 107, 241, 45, // .Yd+...Z)k.-
- 169, 193, 41, 184, 106, 209, 47, 44, 156, 115, 33, 193, // ..).j./,.s!.
- 47, 143, 82, 41, 130, 33, 162, 93, 245, 57, 152, 123, // /.R).!.].9.{
- 0, 135, 60, 176, 52, 186, 20, 47, 166, 219, 51, 252, // ..<.4../..3.
- 52, 181, 36, 129, 197, 69, 162, 16, 200, 63, 143, 236, // 4.$..E...?..
- 247, 41, 51, 129, 52, 251, 138, 109, 36, 157, 59, 17, // .)3.4..m$.;.
- 193, 144, 22, 200, 57, 105, 26, 8, 209, 100, 63, 32, // ....9i...d?
- 178, 14, 86, 135, 66, 159, 177, 120, 153, 80, 182, 17, // ..V.B..x.P..
- 92, 153, 80, 10, 106, 49, 17, 201, 225, 91, 35, 190, // ..P.j1...[#.
- 11, 160, 122, 242, 219, 23, 42, 211, 139, 184, 162, 37, // ..z...*....%
- 19, 139, 108, 96, 160, 181, 32, 3, 39, 21, 6, 212, // ..l`.. .'...
- 8, 71, 172, 228, 200, 10, 174, 40, 126, 11, 171, 90, // .G.....(~..Z
- 167, 216, 62, 79, 48, 28, 99, 168, 39, 0, 3, 97, // ..>O0.c.'..a
- 82, 40, 232, 186, 226, 255, 56, 57, 255, 185, 129, 240, // R(....89....
- 208, 19, 114, 145, 27, 90, 94, 135, 188, 44, 104, 57, // ..r..Z^..,h9
- 218, 54, 251, 188, 160, 48, 13, 228, 155, 86, 209, 179, // .6...0...V..
- 100, 63, 34, 133, 72, 40, 41, 27, 44, 172, 156, 85, // d?".H().,..U
- 156, 123, 68, 162, 136, 94, 9, 177, 73, 98, 234, 48, // .{D..^..Ib.0
- 191, 80, 31, 138, 61, 199, 80, 182, 135, 186, 0, 242, // .P..=.P.....
- 58, 98, 194, 168, 113, 178, 241, 162, 56, 162, 240, 34, // :b..q...8.."
- 114, 36, 98, 128, 178, 69, 67, 195, 86, 137, 238, 106, // r$b..EC.V..j
- 22, 139, 32, 28, 207, 249, 97, 94, 145, 53, 39, 219, // .. ...a^.5'.
- 231, 73, 60, 75, 242, 193, 93, 154, 205, 179, 173, 190, // .I..n-....?
- 93, 29, 237, 186, 135, 118, 114, 208, 30, 56, 205, 121, // ]....vr..8.y
- 215, 179, 175, 238, 244, 89, 163, 220, 92, 104, 31, 54, // .....Y...h.6
- 214, 231, 34, 205, 169, 198, 254, 193, 167, 57, 46, 100, // .."......9.d
- 242, 5, 15, 149, 139, 36, 189, 180, 138, 18, 148, 159, // .....$......
- 46, 84, 58, 63, 209, 245, 209, 193, 35, 213, 60, 1, // .T:?....#.<.
- 42, 203, 171, 164, 117, 22, 199, 83, 128, 214, 89, 202, // *...u..S..Y.
- 99, 89, 65, 245, 148, 7, 102, 217, 59, 24, 235, 156, // cYA...f.;...
- 45, 182, 214, 63, 75, 174, 146, 52, 219, 48, 151, 151, // -..?K..4.0..
- 231, 139, 175, 179, 245, 60, 227, 209, 253, 171, 229, 69, // .....<.....E
- 30, 231, 183, 221, 35, 158, 22, 46, 230, 220, 18, 19, // ....#.......
- 235, 244, 51, 20, 22, 26, 145, 107, 107, 115, 35, 245, // ..3....kks#.
- 77, 238, 224, 193, 99, 179, 46, 104, 57, 168, 3, 23, // M...c..h9...
- 154, 215, 193, 45, 38, 184, 14, 185, 240, 43, 78, 152, // ...-&....+N.
- 154, 100, 52, 35, 7, 119, 219, 60, 213, 234, 209, 201, // .d4#.w.<....
- 2, 249, 62, 190, 122, 197, 243, 212, 83, 85, 103, 75, // ..>.z...SUgK
- 233, 172, 168, 133, 164, 69, 97, 208, 238, 168, 121, 29, // .....Ea...y.
- 173, 41, 96, 38, 142, 165, 207, 105, 239, 207, 95, 221, // .)`&...i.._.
- 177, 176, 107, 229, 235, 241, 153, 137, 105, 24, 110, 146, // ..k.....i.n.
- 42, 53, 193, 67, 147, 228, 91, 231, 10, 205, 243, 108, // *5.C..[....l
- 187, 105, 142, 172, 235, 140, 177, 214, 73, 232, 253, 188, // .i......I...
- 34, 115, 54, 106, 6, 239, 180, 228, 104, 238, 251, 237, // "s6j....h...
- 83, 214, 77, 149, 97, 12, 174, 167, 176, 30, 76, 8, // S.M.a.....L.
- 136, 186, 217, 63, 109, 241, 223, 75, 192, 137, 152, 98, // ...?m..K...b
- 217, 171, 9, 222, 202, 225, 17, 106, 215, 84, 255, 233, // .......j.T..
- 209, 20, 126, 160, 123, 181, 204, 210, 164, 148, 52, 151, // ..~.{.....4.
- 69, 97, 113, 17, 105, 124, 219, 42, 90, 16, 190, 117, // Eaq.i|.*Z..u
- 55, 253, 165, 115, 230, 104, 181, 155, 196, 84, 124, 145, // 7..s.h...T|.
- 177, 233, 192, 184, 228, 157, 3, 99, 225, 210, 228, 146, // .......c....
- 217, 32, 23, 25, 236, 199, 74, 91, 188, 200, 249, 8, // . ....J[....
- 51, 52, 242, 154, 131, 233, 42, 239, 191, 3, 165, 157, // 34....*.....
- 195, 205, 180, 200, 58, 69, 227, 86, 167, 112, 232, 124, // ....:E.V.p.|
- 109, 72, 155, 117, 219, 25, 167, 205, 166, 216, 203, 110, // mH.u.......n
- 150, 207, 78, 229, 204, 221, 214, 163, 43, 132, 14, 39, // ..N.....+..'
- 158, 212, 25, 39, 43, 40, 25, 153, 125, 91, 171, 250, // ...'+(..}[..
- 189, 190, 212, 23, 85, 167, 196, 30, 180, 23, 34, 5, // ....U.....".
- 77, 254, 215, 77, 218, 182, 11, 97, 215, 46, 238, 233, // M..M...a....
- 34, 89, 192, 87, 107, 255, 39, 219, 230, 234, 175, 88, // "Y.Wk.'....X
- 207, 236, 203, 172, 99, 181, 130, 54, 104, 163, 126, 240, // ....c..6h.~.
- 31, 20, 174, 211, 222, 55, 113, 177, 184, 200, 226, 124, // .....7q....|
- 214, 19, 53, 60, 173, 140, 50, 175, 101, 238, 140, 190, // ..5<..2.e...
- 29, 247, 168, 87, 104, 162, 114, 54, 103, 214, 7, 160, // ...Wh.r6g...
- 153, 68, 212, 98, 15, 216, 52, 155, 215, 176, 138, 186, // .D.b..4.....
- 203, 125, 152, 15, 152, 150, 198, 182, 124, 99, 76, 103, // .}......|cLg
- 254, 125, 86, 38, 131, 59, 147, 105, 182, 88, 166, 179, // .}V&.;.i.X..
- 60, 89, 127, 206, 253, 10, 105, 54, 134, 153, 222, 61, // .)...
- 120, 207, 186, 102, 160, 113, 78, 76, 116, 186, 136, 139, // x..f.qNLt...
- 101, 97, 125, 240, 157, 205, 205, 71, 90, 19, 102, 190, // ea}....GZ.f.
- 212, 98, 211, 74, 171, 137, 76, 14, 107, 43, 67, 160, // .b.J..L.k+C.
- 131, 65, 215, 162, 212, 84, 97, 50, 94, 178, 111, 168, // .A...Ta2^.o.
- 169, 13, 3, 194, 150, 132, 219, 254, 145, 93, 108, 210, // .........]l.
- 101, 57, 232, 219, 40, 118, 115, 231, 91, 57, 50, 43, // e9..(vs.[92+
- 6, 31, 76, 166, 185, 50, 169, 241, 59, 3, 169, 38, // ..L..2..;..&
- 246, 99, 46, 224, 117, 188, 92, 15, 238, 246, 18, 88, // .c..u......X
- 211, 248, 42, 249, 187, 184, 4, 196, 11, 230, 161, 123, // ..*........{
- 55, 174, 156, 242, 136, 208, 229, 203, 222, 104, 108, 35, // 7........hl#
- 94, 119, 156, 147, 208, 241, 244, 37, 176, 227, 227, 95, // ^w.....%..._
- 13, 8, 187, 26, 135, 96, 78, 92, 167, 6, 211, 6, // .....`N.....
- 242, 114, 214, 192, 120, 57, 235, 128, 112, 59, 157, 201, // .r..x9..p;..
- 187, 55, 137, 190, 208, 247, 214, 60, 116, 186, 59, 237, // .7.....w.
- 109, 24, 182, 181, 161, 190, 100, 115, 117, 116, 84, 141, // m.....dsutT.
- 47, 53, 233, 78, 212, 62, 117, 201, 148, 19, 165, 89, // /5.N.>u....Y
- 179, 198, 212, 5, 19, 169, 133, 145, 58, 145, 249, 136, // ........:...
- 169, 160, 59, 147, 241, 156, 19, 124, 110, 255, 92, 48, // ..;....|n..0
- 105, 244, 72, 58, 180, 26, 218, 164, 219, 91, 55, 118, // i.H:.....[7v
- 26, 204, 150, 29, 42, 239, 232, 168, 77, 125, 206, 203, // ....*...M}..
- 132, 232, 15, 2, 235, 131, 63, 84, 125, 255, 68, 189, // ......?T}.D.
- 65, 240, 161, 94, 111, 211, 114, 185, 73, 19, 117, 14, // A..^o.r.I.u.
- 43, 1, 48, 168, 157, 47, 11, 216, 171, 162, 255, 81, // +.0../.....Q
- 175, 234, 67, 128, 238, 193, 126, 247, 151, 146, 210, 127, // ..C...~.....
- 175, 243, 241, 177, 250, 16, 161, 127, 116, 162, 254, 119, // ........t..w
- 78, 143, 253, 22, 48, 15, 64, 175, 129, 187, 236, 237, // N...0.@.....
- 214, 221, 191, 4, 29, 162, 31, 84, 248, 195, 172, 45, // .......T...-
- 167, 64, 231, 27, 221, 254, 177, 181, 106, 16, 10, 52, // .@......j..4
- 38, 177, 219, 185, 238, 224, 44, 76, 78, 19, 5, 0, // &.....,LN...
- 227, 239, 229, 118, 164, 202, 46, 41, 20, 122, 54, 165, // ...v...).z6.
- 111, 53, 205, 170, 4, 93, 173, 163, 131, 231, 57, 130, // o5...]....9.
- 12, 1, 97, 51, 3, 0, 42, 109, 243, 58, 178, 72, // ..a3..*m.:.H
- 198, 209, 83, 1, 246, 222, 136, 208, 47, 73, 158, 89, // ..S...../I.Y
- 236, 132, 8, 39, 230, 48, 1, 101, 252, 78, 163, 199, // ...'.0.e.N..
- 2, 236, 169, 186, 255, 31, 64, 61, 95, 207, 216, 83, // ......@=_..S
- 126, 47, 105, 221, 198, 177, 208, 121, 239, 143, 249, 49, // ~/i....y...1
- 137, 71, 186, 247, 38, 244, 78, 40, 80, 171, 217, 73, // .G..&.N(P..I
- 171, 242, 254, 238, 143, 87, 231, 240, 140, 8, 221, 186, // .....W......
- 173, 238, 108, 213, 87, 59, 171, 72, 172, 19, 253, 28, // ..l.W;.H....
- 242, 127, 244, 62, 169, 220, 224, 219, 110, 224, 117, 166, // ...>....n.u.
- 113, 145, 220, 223, 66, 238, 221, 255, 170, 114, 127, 189, // q...B....r..
- 218, 89, 234, 109, 7, 124, 5, 185, 162, 96, 160, 10, // .Y.m.|...`..
- 68, 173, 15, 7, 54, 178, 29, 22, 40, 95, 178, 118, // D...6...(_.v
- 78, 243, 192, 118, 206, 4, 70, 77, 124, 87, 109, 8, // N..v..FM|Wm.
- 219, 251, 184, 175, 238, 76, 40, 211, 132, 54, 180, 46, // .....L(..6..
- 234, 239, 111, 94, 245, 234, 187, 101, 149, 249, 217, 233, // ..o^...e....
- 187, 94, 250, 114, 104, 181, 35, 54, 109, 34, 4, 59, // .^.rh.#6m".;
- 179, 131, 238, 36, 252, 29, 152, 195, 88, 233, 202, 214, // ...$....X...
- 52, 51, 117, 109, 206, 161, 249, 186, 6, 190, 51, 171, // 43um......3.
- 150, 175, 94, 235, 66, 59, 111, 54, 166, 233, 178, 72, // ..^.B;o6...H
- 0, 119, 134, 72, 140, 119, 87, 123, 33, 118, 124, 188, // .w.H.wW{!v|.
- 185, 138, 2, 194, 158, 199, 17, 213, 196, 120, 249, 205, // .........x..
- 30, 45, 94, 206, 30, 36, 197, 203, 217, 65, 156, 100, // .-^..$...A.d
- 102, 215, 76, 236, 133, 126, 23, 75, 87, 217, 182, 146, // f.L..~.KW...
- 218, 207, 160, 67, 91, 223, 54, 41, 45, 188, 140, 27, // ...C[.6)-...
- 56, 136, 152, 105, 123, 24, 179, 138, 36, 81, 24, 250, // 8..i{...$Q..
- 97, 23, 55, 135, 184, 153, 250, 199, 177, 171, 144, 130, // a.7.........
- 140, 111, 215, 45, 166, 26, 47, 209, 96, 214, 88, 181, // .o.-../.`.X.
- 71, 201, 228, 122, 225, 1, 50, 185, 222, 103, 17, 209, // G..z..2..g..
- 55, 24, 139, 163, 161, 74, 236, 57, 70, 168, 44, 87, // 7....J.9F.,W
- 238, 208, 27, 250, 189, 238, 237, 230, 226, 16, 177, 140, // ............
- 153, 212, 164, 186, 55, 187, 33, 196, 52, 101, 162, 24, // ....7.!.4e..
- 13, 50, 55, 227, 110, 68, 47, 91, 61, 69, 220, 152, // .27.nD/[=E..
- 203, 206, 91, 191, 148, 232, 239, 62, 131, 238, 119, 198, // ..[....>..w.
- 174, 55, 216, 17, 212, 33, 220, 216, 179, 195, 68, 125, // .7...!....D}
- 61, 173, 87, 221, 181, 53, 67, 139, 238, 140, 109, 147, // =.W..5C...m.
- 122, 1, 171, 176, 42, 177, 155, 215, 155, 4, 222, 91, // z...*......[
- 134, 109, 128, 29, 131, 169, 227, 213, 5, 125, 203, 167, // .m.......}..
- 155, 99, 255, 213, 157, 190, 245, 181, 235, 110, 118, 248, // .c.......nv.
- 115, 63, 221, 12, 109, 134, 57, 245, 170, 190, 197, 195, // s?..m.9.....
- 182, 76, 186, 188, 218, 123, 205, 242, 207, 88, 174, 77, // .L...{...X.M
- 158, 236, 141, 105, 223, 219, 110, 191, 161, 168, 55, 211, // ...i..n...7.
- 178, 25, 230, 53, 136, 133, 21, 5, 12, 250, 171, 16, // ...5........
- 112, 119, 16, 177, 207, 190, 0, 50, 59, 188, 123, 59, // pw.....2;.{;
- 0, 83, 175, 195, 104, 243, 208, 9, 44, 247, 238, 3, // .S..h...,...
- 125, 224, 175, 201, 32, 32, 66, 224, 160, 199, 212, 143, // }... B.....
- 143, 141, 170, 46, 56, 157, 42, 115, 225, 172, 9, 59, // ....8.*s...;
- 43, 12, 142, 231, 73, 217, 191, 23, 125, 61, 22, 150, // +...I...}=..
- 213, 107, 202, 143, 246, 238, 0, 153, 233, 204, 117, 156, // .k........u.
- 26, 139, 213, 39, 17, 83, 96, 241, 73, 162, 226, 171, // ...'.S`.I...
- 125, 64, 114, 193, 251, 135, 139, 159, 1, 195, 6, 183, // }@r.........
- 150, 115, 238, 152, 134, 234, 6, 209, 240, 135, 79, 31, // .s........O.
- 79, 212, 213, 142, 129, 158, 106, 133, 217, 164, 70, 29, // O.....j...F.
- 102, 31, 90, 21, 10, 253, 95, 21, 76, 87, 35, 127, // f.Z..._.LW#.
- 93, 136, 218, 176, 129, 212, 104, 119, 208, 164, 208, 100, // ].....hw...d
- 144, 123, 123, 205, 4, 38, 154, 233, 183, 238, 89, 165, // .{{..&....Y.
- 217, 252, 7, 173, 159, 140, 95, 63, 56, 136, 253, 190, // ......_?8...
- 209, 183, 217, 16, 240, 33, 124, 196, 243, 183, 121, 158, // .....!|...y.
- 229, 242, 228, 225, 233, 37, 118, 213, 242, 192, 48, 241, // .....%v...0.
- 155, 228, 98, 59, 239, 127, 252, 248, 232, 203, 176, 47, // ..b;......./
- 13, 149, 76, 184, 0, 19, 92, 175, 173, 249, 117, 130, // ..L.......u.
- 175, 238, 218, 119, 220, 160, 218, 212, 234, 166, 35, 232, // ...w......#.
- 25, 151, 219, 66, 111, 144, 169, 91, 221, 214, 85, 82, // ...Bo..[..UR
- 20, 177, 190, 68, 159, 21, 52, 98, 205, 165, 199, 134, // ...D..4b....
- 142, 34, 194, 180, 78, 63, 237, 158, 252, 75, 199, 108, // ."..N?...K.l
- 255, 235, 221, 59, 245, 93, 150, 95, 199, 57, 67, 248, // ...;.]._.9C.
- 207, 71, 107, 161, 250, 50, 195, 117, 192, 252, 127, 187, // .Gk..2.u....
- 166, 40, 232, 41, 47, 235, 41, 91, 158, 221, 200, 150, // .(.)/.)[....
- 189, 250, 207, 178, 252, 49, 89, 155, 223, 233, 168, 188, // .....1Y.....
- 131, 81, 192, 65, 191, 221, 220, 111, 60, 132, 185, 37, // .Q.A...o<..%
- 126, 252, 8, 6, 50, 245, 91, 254, 174, 105, 190, 23, // ~...2.[..i..
- 248, 117, 166, 150, 95, 62, 205, 127, 220, 182, 3, 193, // .u.._>......
- 238, 236, 77, 143, 254, 209, 238, 243, 83, 190, 203, 54, // ..M.....S..6
- 203, 169, 122, 243, 31, 15, 77, 88, 178, 253, 199, 252, // ..z...MX....
- 230, 161, 233, 170, 246, 95, 49, 217, 187, 207, 76, 86, // ....._1...LV
- 126, 102, 178, 114, 111, 178, 95, 225, 91, 123, 103, 15, // ~f.ro._.[{g.
- 121, 82, 106, 81, 215, 147, 234, 154, 42, 234, 163, 61, // yRjQ....*..=
- 108, 222, 56, 182, 78, 43, 218, 30, 106, 79, 157, 246, // l.8.N+..jO..
- 222, 55, 183, 223, 222, 139, 240, 39, 136, 139, 55, 197, // .7.....'..7.
- 178, 232, 122, 199, 234, 183, 5, 226, 52, 169, 111, 218, // ..z.....4.o.
- 1, 235, 206, 235, 200, 93, 123, 241, 141, 67, 222, 147, // .....]{..C..
- 95, 80, 17, 33, 183, 174, 53, 166, 129, 119, 85, 185, // _P.!..5..wU.
- 15, 124, 247, 31, 74, 136, 9, 11, 159, 228, 183, 178, // .|..J.......
- 9, 168, 161, 196, 213, 118, 73, 226, 108, 117, 29, 163, // .....vI.lu..
- 180, 157, 78, 1, 128, 47, 135, 111, 149, 220, 110, 204, // ..N../.o..n.
- 179, 57, 252, 225, 108, 200, 223, 229, 77, 150, 0, 153, // .9..l...M...
- 195, 171, 175, 183, 113, 90, 131, 65, 192, 199, 229, 172, // ....qZ.A....
- 160, 124, 83, 181, 202, 102, 137, 189, 127, 186, 179, 199, // .|S..f......
- 187, 178, 165, 252, 74, 189, 3, 150, 111, 42, 44, 121, // ....J...o*,y
- 33, 238, 34, 161, 39, 156, 233, 223, 255, 69, 152, 100, // !.".'....E.d
- 144, 156, 102, 43, 76, 60, 211, 68, 148, 181, 218, 28, // ..f+L<.D....
- 91, 195, 49, 237, 60, 28, 218, 166, 51, 66, 137, 197, // [.1.<...3B..
- 53, 213, 20, 193, 94, 152, 20, 185, 204, 248, 51, 32, // 5...^.....3
- 164, 26, 207, 23, 226, 242, 228, 87, 97, 251, 108, 138, // .......Wa.l.
- 5, 158, 221, 245, 160, 118, 189, 19, 213, 211, 47, 5, // .....v..../.
- 95, 254, 237, 228, 111, 63, 188, 121, 215, 27, 170, 30, // _...o?.y....
- 2, 109, 212, 127, 255, 247, 215, 40, 47, 103, 117, 145, // .m.....(/gu.
- 113, 140, 126, 184, 23, 254, 124, 70, 182, 254, 165, 76, // q.~...|F...L
- 181, 217, 80, 243, 206, 215, 239, 106, 166, 1, 95, 189, // ..P....j.._.
- 162, 30, 28, 48, 32, 240, 240, 63, 166, 108, 59, 96, // ...0 ..?.l;`
- 60, 234, 182, 254, 189, 168, 189, 254, 197, 38, 236, 178, // <........&..
- 44, 191, 29, 197, 55, 33, 195, 191, 168, 177, 185, 119, // ,...7!.....w
- 229, 238, 249, 102, 211, 126, 69, 181, 23, 18, 111, 205, // ...f.~E...o.
- 107, 236, 123, 111, 176, 143, 187, 111, 171, 59, 9, 7, // k.{o...o.;..
- 157, 227, 246, 206, 48, 243, 195, 11, 143, 70, 68, 203, // ....0....FD.
- 53, 194, 252, 98, 202, 99, 134, 206, 143, 39, 233, 151, // 5..b.c...'..
- 69, 224, 175, 201, 101, 104, 31, 207, 112, 254, 211, 78, // E...eh..p..N
- 42, 130, 33, 63, 250, 235, 44, 137, 93, 59, 15, 98, // *.!?..,.];.b
- 191, 107, 23, 99, 45, 32, 111, 239, 195, 106, 97, 249, // .k.c- o..ja.
- 91, 164, 61, 8, 118, 250, 103, 195, 201, 215, 23, 213, // [.=.v.g.....
- 207, 26, 213, 73, 11, 124, 59, 147, 92, 217, 88, 33, // ...I.|;...X!
- 36, 112, 129, 45, 122, 150, 223, 162, 253, 92, 151, 108, // $p.-z......l
- 144, 8, 164, 57, 143, 139, 133, 169, 25, 28, 233, 31, // ...9........
- 87, 48, 160, 121, 200, 177, 83, 179, 228, 50, 70, 4, // W0.y..S..2F.
- 199, 95, 17, 3, 241, 15, 250, 91, 200, 42, 83, 141, // ._.....[.*S.
- 40, 223, 141, 248, 60, 182, 147, 130, 197, 155, 101, 215, // (...<.....e.
- 118, 182, 78, 179, 120, 86, 239, 99, 244, 143, 165, 15, // v.N.xV.c....
- 22, 3, 136, 20, 182, 240, 179, 108, 186, 93, 241, 183, // .......l.]..
- 1, 24, 217, 131, 233, 255, 5, 64, 207, 243, 250, 183, // .......@....
- 93, 0, 0, 0 // ]..
+ 31, 139, 8, 8, 27, 99, 157, 101, 0, 3, 109, 97, // .....c.e..ma
+ 105, 110, 46, 106, 115, 0, 220, 91, 107, 115, 219, 70, // in.js..[ks.F
+ 150, 253, 238, 95, 209, 195, 201, 142, 168, 13, 27, 66, // ..._.......B
+ 55, 222, 178, 165, 148, 227, 154, 148, 82, 101, 207, 110, // 7.......Re.n
+ 37, 89, 125, 216, 108, 118, 2, 65, 144, 200, 24, 36, // %Y}.lv.A...$
+ 88, 36, 36, 203, 113, 248, 223, 231, 156, 219, 0, 8, // X$$.q.......
+ 82, 148, 54, 59, 147, 124, 73, 153, 6, 27, 183, 95, // R.6;.|I...._
+ 247, 158, 251, 108, 16, 58, 57, 81, 234, 111, 255, 241, // ...l.:9Q.o..
+ 221, 95, 79, 213, 235, 255, 252, 90, 21, 121, 85, 173, // ._O....Z.yU.
+ 213, 252, 110, 221, 168, 117, 147, 175, 26, 245, 97, 214, // ..n..u....a.
+ 76, 213, 81, 190, 156, 157, 28, 169, 217, 66, 213, 171, // L.Q......B..
+ 235, 114, 165, 154, 90, 173, 203, 213, 125, 169, 154, 105, // .r..Z...}..i
+ 169, 242, 229, 82, 229, 141, 202, 23, 31, 213, 127, 125, // ...R.......}
+ 243, 245, 139, 23, 71, 119, 235, 18, 147, 87, 179, 162, // ....Gw...W..
+ 57, 122, 249, 98, 54, 95, 214, 88, 230, 147, 154, 78, // 9z.b6_.X...N
+ 212, 170, 92, 96, 246, 68, 97, 192, 183, 77, 222, 148, // ...`.Da..M..
+ 210, 250, 235, 205, 77, 89, 52, 210, 252, 166, 188, 153, // ....MY4.....
+ 168, 105, 51, 175, 38, 234, 155, 250, 174, 193, 70, 27, // .i3.&.....F.
+ 117, 179, 170, 231, 74, 29, 121, 39, 87, 119, 139, 235, // u...J.y'Ww..
+ 170, 244, 126, 90, 99, 209, 23, 69, 189, 0, 135, 95, // ..~Zc..E..._
+ 243, 75, 157, 169, 79, 47, 148, 42, 234, 219, 83, 181, // .K..O/.*..S.
+ 92, 213, 75, 16, 206, 101, 145, 31, 95, 173, 239, 111, // ..K..e.._..o
+ 85, 81, 229, 235, 245, 217, 103, 159, 164, 203, 147, 187, // UQ....g.....
+ 141, 122, 152, 87, 139, 245, 217, 104, 218, 52, 203, 211, // .z.W...h.4..
+ 147, 147, 15, 31, 62, 120, 31, 2, 175, 94, 221, 158, // ....>x...^..
+ 88, 223, 247, 79, 48, 109, 164, 110, 102, 85, 117, 54, // X..O0m.nfUu6
+ 90, 212, 139, 114, 164, 238, 103, 229, 135, 47, 235, 135, // Z..r..g../..
+ 179, 145, 175, 124, 101, 67, 124, 70, 20, 176, 126, 95, // ...|eC|F..~_
+ 234, 15, 179, 235, 102, 122, 54, 50, 94, 212, 145, 206, // ....fz62^...
+ 70, 197, 221, 10, 146, 54, 111, 234, 170, 94, 141, 206, // F....6o..^..
+ 213, 171, 101, 14, 8, 219, 241, 213, 108, 81, 22, 249, // ..e.....lQ..
+ 242, 108, 180, 170, 33, 207, 104, 72, 254, 169, 158, 45, // .l..!.hH...-
+ 122, 250, 245, 217, 232, 93, 230, 69, 89, 168, 2, 47, // z....].EY../
+ 11, 11, 207, 207, 180, 23, 133, 214, 139, 98, 141, 123, // .........b.{
+ 101, 60, 99, 216, 152, 130, 146, 5, 133, 23, 69, 224, // e...TS......
+ 113, 123, 240, 224, 81, 228, 251, 171, 91, 217, 230, 203, // q{..Q...[...
+ 219, 31, 112, 32, 233, 14, 56, 227, 163, 171, 91, 253, // ..p ..8...[.
+ 97, 58, 107, 202, 163, 227, 151, 24, 219, 31, 119, 198, // a:k.......w.
+ 227, 99, 42, 237, 147, 154, 221, 168, 49, 247, 87, 103, // .c*.....1.Wg
+ 103, 234, 104, 113, 55, 191, 42, 87, 71, 199, 170, 152, // g.hq7.*WG...
+ 150, 197, 123, 240, 62, 254, 92, 54, 254, 92, 118, 254, // ..{.>..6..v.
+ 92, 132, 57, 126, 169, 54, 19, 245, 253, 15, 178, 30, // ..9~.6......
+ 153, 81, 191, 252, 130, 169, 230, 200, 49, 37, 119, 230, // .Q......1%w.
+ 101, 207, 87, 183, 18, 152, 234, 240, 25, 111, 133, 185, // e.W......o..
+ 119, 34, 40, 199, 249, 62, 183, 74, 184, 195, 104, 245, // w"(..>.J..h.
+ 151, 191, 168, 123, 245, 138, 40, 28, 15, 134, 174, 202, // ...{..(.....
+ 107, 109, 124, 31, 9, 143, 135, 66, 185, 133, 53, 237, // km|....B..5.
+ 204, 205, 31, 220, 220, 115, 238, 247, 107, 231, 110, 182, // .....s..k.n.
+ 236, 207, 193, 55, 133, 244, 230, 121, 83, 76, 199, 39, // ...7...ySL.'
+ 255, 235, 125, 254, 63, 222, 216, 251, 252, 248, 228, 120, // ..}.?......x
+ 59, 232, 122, 118, 59, 107, 120, 14, 156, 171, 47, 212, // ;.zv;kx.../.
+ 252, 123, 243, 131, 87, 149, 139, 91, 88, 224, 169, 242, // .{..W..[X...
+ 183, 163, 234, 69, 49, 205, 23, 183, 64, 90, 149, 247, // ...E1...@Z..
+ 2, 190, 176, 89, 149, 13, 248, 35, 205, 195, 121, 247, // ...Y...#..y.
+ 182, 108, 60, 129, 121, 43, 195, 99, 237, 184, 137, 234, // .l<.y+.c....
+ 41, 45, 181, 242, 43, 89, 246, 243, 241, 18, 142, 90, // )-..+Y.....Z
+ 126, 85, 213, 121, 51, 6, 220, 39, 162, 165, 99, 175, // ~U.y3..'..c.
+ 169, 191, 154, 61, 148, 215, 99, 199, 123, 59, 101, 211, // ...=..c.{;e.
+ 233, 226, 102, 49, 190, 223, 66, 113, 152, 11, 97, 83, // ..f1..Bq..aS
+ 118, 112, 173, 127, 127, 122, 229, 85, 217, 220, 173, 22, // vp...z.U....
+ 46, 68, 188, 120, 117, 61, 187, 111, 99, 196, 232, 166, // .D.xu=.oc...
+ 42, 31, 212, 7, 125, 115, 87, 85, 10, 106, 159, 175, // *...}sWU.j..
+ 117, 1, 55, 198, 185, 91, 124, 178, 188, 110, 213, 163, // u.7..[|..n..
+ 214, 211, 252, 186, 254, 160, 215, 115, 245, 217, 167, 171, // .......s....
+ 219, 205, 232, 28, 139, 126, 246, 169, 247, 18, 234, 184, // .....~......
+ 141, 63, 203, 124, 209, 45, 62, 91, 208, 199, 181, 236, // .?.|.->[....
+ 113, 83, 47, 26, 189, 168, 87, 115, 88, 98, 179, 130, // qS/...WsXb..
+ 33, 194, 57, 212, 242, 163, 54, 189, 1, 40, 24, 197, // !.9...6..(..
+ 186, 2, 89, 204, 98, 135, 153, 118, 200, 237, 42, 255, // ..Y.b..v..*.
+ 168, 3, 116, 46, 31, 180, 85, 13, 156, 220, 145, 34, // ..t...U...."
+ 144, 228, 238, 97, 61, 58, 31, 112, 181, 121, 117, 114, // ...a=:.p.yur
+ 114, 254, 163, 128, 250, 106, 182, 88, 222, 53, 226, 232, // r....j.X.5..
+ 8, 140, 130, 229, 47, 191, 168, 35, 206, 58, 218, 244, // ..../..#.:..
+ 97, 1, 93, 93, 115, 227, 224, 5, 69, 190, 91, 197, // a.]]s...E.[.
+ 192, 16, 65, 225, 215, 134, 190, 128, 54, 174, 27, 154, // ..A.....6...
+ 54, 155, 249, 195, 70, 201, 184, 206, 210, 64, 236, 154, // 6...F....@..
+ 27, 229, 121, 30, 120, 67, 48, 113, 107, 181, 24, 9, // ..y.xC0qk...
+ 156, 187, 232, 80, 18, 0, 221, 105, 160, 213, 14, 81, // ...P...i...Q
+ 4, 90, 128, 12, 21, 215, 62, 2, 9, 65, 217, 70, // .Z....>..A.F
+ 180, 211, 109, 79, 136, 158, 155, 186, 184, 91, 159, 214, // ..mO.....[..
+ 119, 141, 168, 131, 241, 189, 151, 248, 20, 129, 123, 93, // w.........{]
+ 175, 64, 108, 116, 94, 85, 245, 7, 108, 216, 247, 65, // .@lt^U..l..A
+ 33, 178, 6, 245, 209, 19, 119, 96, 31, 13, 119, 101, // !.....w`..we
+ 198, 217, 222, 109, 16, 158, 183, 70, 34, 97, 245, 55, // ...m...F"a.7
+ 176, 146, 234, 55, 177, 18, 85, 223, 151, 171, 155, 138, // ...7..U.....
+ 6, 93, 172, 234, 170, 98, 78, 250, 88, 33, 141, 65, // .]...bN.X!.A
+ 155, 46, 189, 157, 170, 200, 255, 183, 151, 189, 53, 9, // ..........5.
+ 251, 189, 57, 201, 247, 203, 221, 148, 243, 109, 89, 33, // ..9......mY!
+ 170, 31, 76, 58, 245, 146, 35, 214, 219, 236, 179, 147, // ..L:..#.....
+ 55, 154, 250, 235, 69, 3, 47, 126, 96, 68, 122, 160, // 7...E./~`Dz.
+ 135, 75, 188, 0, 113, 140, 120, 249, 197, 206, 221, 169, // .K..q.x.....
+ 122, 120, 38, 156, 185, 176, 33, 235, 141, 247, 130, 217, // zx&...!.....
+ 241, 129, 40, 176, 22, 142, 15, 219, 106, 171, 154, 214, // ..(.....j...
+ 244, 58, 75, 28, 106, 167, 141, 11, 91, 115, 52, 3, // .:K.j...[s4.
+ 168, 227, 195, 70, 215, 89, 246, 51, 198, 55, 58, 232, // ...F.Y.3.7:.
+ 139, 206, 144, 90, 28, 145, 9, 150, 227, 251, 109, 197, // ...Z......m.
+ 227, 200, 91, 119, 253, 222, 255, 97, 163, 156, 112, 178, // ..[w...a..p.
+ 10, 9, 132, 213, 249, 241, 57, 9, 230, 7, 167, 203, // ......9.....
+ 227, 167, 148, 249, 97, 134, 100, 115, 64, 153, 59, 154, // ....a.ds@.;.
+ 3, 92, 213, 172, 120, 191, 135, 255, 159, 218, 36, 221, // ....x.....$.
+ 15, 187, 186, 197, 136, 63, 57, 50, 244, 201, 220, 119, // .....?92...w
+ 133, 38, 65, 58, 130, 70, 143, 58, 47, 99, 246, 219, // .&A:.F.:/c..
+ 206, 106, 86, 187, 179, 154, 85, 190, 112, 118, 255, 160, // .jV...U.pv..
+ 35, 153, 55, 164, 184, 153, 187, 250, 189, 186, 107, 26, // #.7.......k.
+ 200, 34, 33, 111, 228, 110, 70, 29, 207, 78, 217, 108, // ."!o.nF..N.l
+ 109, 118, 3, 209, 208, 25, 167, 58, 70, 240, 49, 198, // mv.....:F.1.
+ 133, 158, 245, 116, 53, 91, 188, 215, 190, 106, 149, 182, // ...t5[...j..
+ 68, 233, 54, 72, 20, 206, 82, 90, 23, 180, 93, 67, // D.6H..RZ..]C
+ 120, 132, 5, 195, 65, 149, 180, 103, 196, 87, 23, 44, // x...A..g.W.,
+ 19, 215, 234, 250, 110, 149, 203, 61, 68, 87, 101, 190, // ....n..=DWe.
+ 46, 53, 220, 15, 22, 115, 200, 118, 28, 9, 44, 220, // .5...s.v..,.
+ 130, 5, 247, 53, 194, 222, 116, 218, 181, 104, 107, 164, // ...5..t..hk.
+ 242, 213, 44, 215, 146, 146, 69, 239, 45, 120, 98, 60, // ..,...E.-xb<
+ 46, 224, 200, 128, 233, 236, 250, 186, 68, 209, 137, 240, // ........D...
+ 130, 50, 183, 23, 30, 97, 89, 181, 34, 233, 242, 30, // .2...aY."...
+ 252, 174, 221, 190, 45, 32, 87, 85, 13, 77, 79, 117, // ....- WU.MOu
+ 4, 68, 34, 39, 202, 13, 28, 97, 79, 250, 182, 120, // .D"'...aO..x
+ 106, 179, 101, 203, 230, 46, 235, 91, 20, 158, 20, 127, // j.e....[....
+ 116, 142, 170, 22, 252, 158, 195, 54, 157, 222, 14, 68, // t......6...D
+ 155, 166, 193, 122, 99, 169, 240, 157, 77, 178, 140, 113, // ...zc...M..q
+ 73, 238, 108, 91, 255, 118, 197, 131, 59, 9, 244, 37, // I.l[.v..;..%
+ 132, 67, 12, 37, 68, 55, 97, 96, 240, 79, 77, 17, // .C.%D7a`.OM.
+ 135, 26, 78, 217, 6, 188, 231, 42, 140, 237, 41, 100, // ..N....*..)d
+ 45, 25, 247, 118, 53, 187, 86, 188, 208, 8, 214, 176, // -..v5.V.....
+ 148, 219, 124, 137, 235, 28, 49, 254, 200, 169, 170, 202, // ..|...1.....
+ 175, 202, 106, 167, 62, 217, 137, 242, 93, 16, 217, 77, // ..j.>...]..M
+ 126, 115, 26, 157, 196, 167, 121, 121, 61, 187, 155, 51, // ~s....yy=..3
+ 114, 183, 18, 204, 154, 170, 20, 119, 231, 226, 251, 165, // r......w....
+ 207, 112, 105, 206, 153, 142, 69, 190, 137, 59, 86, 29, // .pi...E..;V.
+ 187, 121, 135, 66, 196, 151, 162, 152, 241, 39, 89, 126, // .y.B.....'Y~
+ 210, 249, 213, 240, 132, 1, 137, 39, 106, 6, 111, 230, // .......'j.o.
+ 207, 30, 55, 184, 23, 163, 159, 168, 41, 147, 143, 220, // ..7.....)...
+ 108, 71, 203, 237, 238, 113, 98, 189, 100, 73, 137, 152, // lG...qb.dI..
+ 242, 45, 26, 59, 71, 138, 155, 188, 90, 15, 3, 76, // .-.;G...Z..L
+ 113, 53, 172, 237, 203, 190, 164, 119, 189, 171, 146, 133, // q5.....w....
+ 113, 23, 171, 190, 232, 90, 99, 102, 147, 5, 172, 118, // q....Zcf...v
+ 91, 231, 114, 36, 50, 52, 85, 94, 187, 91, 175, 96, // [.r$24U^.[.`
+ 209, 141, 131, 10, 45, 160, 219, 97, 80, 255, 182, 220, // ....-..aP...
+ 141, 233, 75, 125, 209, 219, 207, 107, 143, 56, 142, 93, // ..K}...k.8.]
+ 175, 153, 150, 139, 150, 210, 77, 115, 61, 131, 210, 183, // ......Ms=...
+ 47, 118, 255, 228, 192, 58, 110, 65, 131, 0, 195, 176, // /v...:nA....
+ 233, 32, 60, 237, 40, 209, 176, 60, 233, 136, 161, 255, // . <.(..<....
+ 171, 99, 226, 129, 58, 228, 167, 187, 117, 51, 187, 249, // .c..:...u3..
+ 216, 217, 220, 142, 1, 58, 131, 237, 114, 34, 139, 12, // .....:..r"..
+ 38, 64, 216, 47, 190, 58, 227, 20, 75, 92, 151, 243, // &@./.:..K...
+ 217, 21, 106, 33, 71, 29, 70, 6, 87, 71, 59, 217, // ..j!G.F.WG;.
+ 54, 108, 85, 235, 205, 72, 152, 189, 129, 195, 224, 186, // 6lU..H......
+ 25, 4, 234, 226, 234, 96, 129, 74, 111, 162, 141, 108, // .....`.Jo..l
+ 148, 203, 142, 206, 206, 105, 227, 40, 80, 65, 135, 170, // .....i.(PA..
+ 229, 215, 49, 15, 203, 65, 37, 60, 11, 209, 24, 7, // ..1..A%<....
+ 185, 61, 84, 253, 200, 163, 124, 49, 155, 51, 149, 240, // .=T...|1.3..
+ 94, 178, 203, 209, 134, 231, 107, 103, 250, 187, 150, 255, // ^.....kg....
+ 183, 26, 208, 204, 10, 9, 93, 227, 79, 53, 108, 158, // ......].O5l.
+ 242, 209, 222, 235, 117, 185, 99, 195, 66, 185, 106, 22, // ....u.c.B.j.
+ 206, 120, 191, 41, 111, 198, 52, 184, 129, 229, 202, 79, // .x.)o.4....O
+ 123, 103, 195, 84, 134, 52, 136, 122, 41, 47, 102, 13, // {g.T.4.z)/f.
+ 10, 11, 181, 158, 159, 14, 187, 246, 8, 64, 126, 152, // .........@~.
+ 48, 235, 253, 149, 252, 126, 37, 150, 138, 123, 83, 135, // 0....~%..{S.
+ 185, 246, 123, 30, 240, 97, 148, 223, 173, 118, 253, 12, // ..{..a...v..
+ 220, 237, 29, 218, 123, 47, 27, 28, 155, 191, 91, 161, // ....{/....[.
+ 230, 194, 161, 188, 191, 159, 205, 75, 68, 241, 177, 43, // .......KD..+
+ 10, 122, 12, 224, 89, 93, 219, 107, 159, 150, 120, 206, // .z..Y].k..x.
+ 39, 159, 236, 25, 31, 79, 148, 129, 117, 187, 131, 96, // '....O..u..`
+ 127, 230, 223, 86, 31, 152, 180, 61, 204, 182, 188, 56, // ...V...=...8
+ 174, 135, 140, 200, 184, 137, 10, 184, 144, 115, 177, 199, // .........s..
+ 193, 90, 82, 99, 53, 187, 135, 91, 192, 58, 202, 85, // .ZRc5..[.:.U
+ 131, 102, 239, 25, 63, 3, 192, 131, 201, 49, 191, 90, // .f..?....1.Z
+ 215, 213, 93, 195, 44, 137, 253, 152, 234, 182, 49, 181, // ..].,.....1.
+ 92, 136, 115, 132, 116, 141, 152, 232, 59, 178, 251, 77, // ..s.t...;..M
+ 25, 183, 75, 29, 143, 14, 134, 228, 225, 121, 7, 46, // ..K......y..
+ 178, 235, 124, 200, 139, 5, 117, 27, 110, 87, 196, 70, // ..|...u.nW.F
+ 178, 208, 238, 82, 123, 236, 230, 119, 176, 143, 118, 101, // ...R{..w..ve
+ 156, 211, 180, 184, 96, 127, 10, 112, 53, 65, 159, 204, // ....`..p5A..
+ 171, 219, 253, 84, 78, 146, 36, 112, 227, 190, 174, 112, // ...TN.$p...p
+ 206, 121, 239, 154, 157, 141, 13, 171, 2, 73, 230, 44, // .y.......I.,
+ 100, 250, 20, 207, 243, 200, 32, 245, 75, 189, 209, 114, // d..... .K..r
+ 189, 199, 183, 14, 123, 250, 147, 249, 74, 64, 28, 12, // ....{...J@..
+ 123, 60, 176, 47, 215, 118, 70, 73, 112, 168, 223, 247, // {<./.vFIp...
+ 161, 1, 205, 211, 182, 121, 147, 207, 170, 62, 54, 184, // .....y...>6.
+ 202, 47, 86, 237, 224, 163, 54, 215, 150, 229, 66, 226, // ./V...6...B.
+ 170, 84, 159, 36, 241, 161, 13, 9, 46, 86, 12, 118, // .T.$.....V.v
+ 57, 57, 121, 138, 185, 121, 165, 3, 172, 237, 247, 231, // 99y..y......
+ 217, 134, 7, 136, 125, 46, 151, 221, 240, 157, 128, 234, // ....}.......
+ 82, 251, 32, 243, 103, 56, 129, 34, 105, 147, 128, 76, // R. .g8."i..L
+ 189, 124, 106, 145, 86, 189, 243, 166, 59, 164, 236, 148, // .|j.V...;...
+ 15, 60, 198, 158, 191, 94, 124, 164, 65, 203, 187, 14, // .<...^|.A...
+ 185, 66, 34, 120, 175, 10, 84, 140, 11, 84, 113, 124, // .B"x..T..Tq|
+ 18, 170, 154, 233, 108, 205, 231, 163, 165, 183, 183, 207, // ....l.......
+ 243, 162, 134, 206, 35, 158, 213, 200, 193, 156, 228, 50, // ....#......2
+ 65, 23, 22, 54, 123, 117, 59, 3, 237, 161, 180, 213, // A..6{u;.....
+ 25, 240, 252, 122, 107, 192, 187, 143, 2, 92, 230, 220, // ...zk.......
+ 61, 20, 63, 174, 182, 247, 88, 236, 234, 231, 118, 199, // =.?...X...v.
+ 245, 74, 215, 139, 234, 227, 232, 252, 13, 25, 233, 106, // .J.........j
+ 213, 253, 9, 253, 115, 232, 81, 91, 53, 239, 63, 83, // ....s.Q[5.?S
+ 230, 167, 123, 230, 188, 243, 248, 248, 64, 157, 190, 191, // ..{.....@...
+ 188, 106, 159, 48, 243, 145, 113, 236, 217, 148, 79, 133, // .j.0..q...O.
+ 135, 191, 1, 202, 239, 229, 252, 197, 223, 143, 223, 166, // ............
+ 242, 186, 132, 95, 241, 215, 59, 203, 135, 234, 131, 129, // ..._..;.....
+ 198, 223, 142, 51, 252, 225, 15, 141, 234, 201, 113, 218, // ...3......q.
+ 141, 115, 83, 124, 25, 167, 119, 199, 181, 27, 235, 110, // .sS|..w....n
+ 65, 217, 187, 103, 240, 231, 61, 55, 57, 96, 63, 143, // A..g..=79`?.
+ 13, 106, 120, 59, 184, 233, 155, 93, 101, 187, 87, 168, // .jx;...]e.W.
+ 186, 36, 241, 182, 190, 101, 90, 252, 13, 127, 35, 216, // .$...eZ...#.
+ 209, 33, 95, 98, 8, 112, 92, 185, 46, 111, 214, 231, // .!_b.p...o..
+ 175, 228, 25, 202, 185, 87, 85, 26, 245, 140, 54, 159, // .....WU...6.
+ 168, 218, 83, 154, 211, 75, 247, 196, 255, 244, 207, 88, // ..S..K.....X
+ 165, 109, 235, 57, 108, 115, 85, 205, 240, 117, 106, 122, // .m.9lsU..ujz
+ 162, 123, 244, 130, 120, 176, 124, 120, 9, 135, 118, 11, // .{..x.|x..v.
+ 190, 58, 113, 203, 223, 170, 25, 212, 253, 54, 255, 88, // .:q......6.X
+ 174, 254, 110, 71, 234, 58, 111, 114, 189, 200, 231, 101, // ..nG.:or...e
+ 75, 83, 118, 180, 59, 198, 232, 67, 163, 12, 70, 137, // KSv.;..C..F.
+ 233, 180, 198, 217, 113, 219, 254, 242, 99, 189, 216, 78, // ....q...c..N
+ 140, 151, 242, 151, 221, 204, 188, 70, 77, 151, 78, 228, // .......FM.N.
+ 226, 227, 159, 153, 24, 124, 124, 47, 76, 47, 194, 220, // .....||/L/..
+ 120, 97, 56, 145, 139, 116, 105, 195, 23, 20, 94, 123, // xa8..ti...^{
+ 113, 134, 79, 59, 218, 122, 41, 134, 192, 242, 60, 195, // q.O;.z)...<.
+ 23, 4, 114, 47, 197, 202, 166, 29, 239, 25, 190, 196, // ..r/........
+ 144, 94, 70, 94, 148, 228, 124, 17, 39, 77, 218, 105, // .^F^..|.'M.i
+ 30, 95, 221, 72, 227, 139, 208, 75, 130, 203, 4, 198, // ._.H...K....
+ 131, 238, 24, 31, 233, 246, 39, 114, 195, 31, 3, 67, // ......'r...C
+ 174, 24, 225, 211, 119, 96, 197, 148, 191, 78, 133, 209, // ....w`...N..
+ 235, 157, 41, 252, 113, 49, 152, 4, 19, 47, 137, 241, // ..).q1.../..
+ 233, 137, 194, 96, 238, 217, 12, 31, 71, 36, 155, 248, // ...`....G$..
+ 79, 185, 50, 119, 113, 100, 17, 238, 130, 239, 22, 93, // O.2wqd.....]
+ 18, 28, 226, 146, 76, 228, 226, 88, 14, 39, 252, 105, // ....L..X.'.i
+ 203, 152, 71, 29, 91, 64, 255, 123, 116, 242, 44, 242, // ..G.[@.{t.,.
+ 132, 213, 129, 123, 105, 30, 3, 15, 109, 200, 90, 23, // ...{i...m.Z.
+ 7, 183, 199, 230, 80, 205, 37, 95, 148, 122, 204, 1, // ....P.%_.z..
+ 38, 64, 80, 176, 143, 53, 242, 93, 193, 12, 231, 6, // &@P..5.]....
+ 73, 5, 169, 61, 147, 15, 208, 1, 25, 110, 110, 194, // I..=.....nn.
+ 1, 138, 36, 133, 94, 152, 116, 26, 233, 129, 55, 218, // ..$.^.t...7.
+ 221, 92, 240, 93, 164, 78, 157, 91, 240, 181, 83, 75, // ...].N.[..SK
+ 124, 65, 181, 12, 21, 205, 30, 14, 187, 132, 38, 135, // |A........&.
+ 166, 1, 69, 154, 8, 48, 128, 43, 49, 154, 173, 69, // ..E..0.+1..E
+ 177, 39, 240, 140, 153, 236, 218, 158, 239, 164, 16, 128, // .'..........
+ 79, 110, 219, 255, 242, 179, 216, 203, 54, 12, 188, 171, // On......6...
+ 175, 175, 238, 214, 7, 131, 193, 11, 137, 6, 72, 10, // ..........H.
+ 107, 212, 37, 252, 81, 207, 140, 254, 233, 216, 32, 67, // k.%.Q..... C
+ 78, 31, 152, 61, 15, 13, 52, 89, 150, 157, 72, 47, // N..=..4Y..H/
+ 134, 34, 128, 44, 31, 70, 234, 99, 251, 189, 19, 86, // .".,.F.c...V
+ 226, 200, 42, 147, 177, 40, 112, 49, 165, 205, 141, 204, // ..*..(p1....
+ 90, 39, 197, 122, 61, 58, 87, 222, 252, 234, 239, 235, // Z'.z=:W.....
+ 198, 119, 33, 230, 207, 95, 133, 25, 242, 216, 203, 77, // .w!.._.....M
+ 75, 54, 29, 249, 205, 27, 127, 64, 182, 45, 217, 15, // K6.....@.-..
+ 94, 219, 32, 235, 201, 65, 75, 54, 38, 179, 111, 190, // ^. ..AK6&.o.
+ 2, 185, 139, 59, 47, 16, 77, 250, 146, 142, 121, 168, // ...;/.M...y.
+ 61, 60, 140, 125, 165, 173, 141, 142, 201, 222, 208, 158, // =<.}........
+ 29, 75, 173, 53, 167, 80, 234, 36, 176, 208, 86, 225, // .K.5.P.$..V.
+ 235, 32, 246, 34, 29, 24, 29, 199, 8, 4, 80, 103, // . ."......Pg
+ 32, 173, 66, 7, 169, 23, 192, 12, 72, 153, 192, 9, // .B.....H...
+ 99, 215, 146, 62, 127, 194, 73, 147, 192, 200, 237, 164, // c..>..I.....
+ 239, 80, 111, 76, 148, 114, 105, 108, 0, 59, 112, 219, // .PoL.ril.;p.
+ 68, 152, 59, 25, 108, 57, 58, 57, 196, 90, 31, 226, // D.;.l9:9.Z..
+ 18, 110, 23, 25, 47, 198, 46, 252, 97, 155, 47, 115, // .n../...a./s
+ 68, 160, 120, 169, 230, 69, 90, 133, 102, 15, 152, 19, // D.x..EZ.f...
+ 50, 7, 232, 126, 0, 36, 146, 206, 158, 186, 157, 11, // 2..~.$......
+ 246, 96, 187, 201, 196, 10, 185, 221, 138, 111, 5, 78, // .`.......o.N
+ 6, 219, 62, 207, 94, 70, 87, 183, 73, 224, 69, 191, // ..>.^FW.I.E.
+ 11, 123, 41, 153, 177, 97, 2, 38, 219, 173, 34, 98, // .{)..a.&.."b
+ 59, 216, 246, 89, 246, 44, 240, 133, 90, 66, 243, 251, // ;..Y.,..ZB..
+ 176, 103, 141, 133, 206, 133, 232, 54, 114, 168, 109, 55, // .g.....6r.m7
+ 125, 30, 187, 152, 66, 4, 153, 241, 130, 223, 5, 187, // }...B.......
+ 136, 204, 4, 49, 66, 220, 164, 221, 42, 73, 38, 131, // ...1B...*I&.
+ 77, 159, 101, 46, 11, 57, 25, 0, 135, 191, 7, 111, // M.e..9.....o
+ 169, 133, 66, 3, 168, 53, 158, 184, 141, 160, 85, 59, // ..B..5....U;
+ 217, 238, 249, 44, 107, 137, 192, 235, 139, 179, 254, 246, // ...,k.......
+ 172, 197, 70, 44, 139, 216, 201, 70, 54, 37, 96, 219, // ..F,...F6%`.
+ 61, 29, 107, 117, 245, 241, 182, 94, 236, 112, 135, 242, // =.ku...^.p..
+ 69, 78, 177, 184, 231, 43, 60, 144, 196, 79, 149, 129, // EN...+<..O..
+ 45, 192, 205, 81, 143, 162, 168, 53, 226, 242, 126, 134, // -..Q...5..~.
+ 106, 52, 66, 56, 160, 41, 163, 50, 69, 50, 131, 205, // j4B8.).2E2..
+ 240, 13, 55, 180, 125, 17, 68, 222, 92, 241, 93, 219, // ..7.}.D...].
+ 42, 192, 2, 142, 98, 52, 98, 178, 10, 5, 6, 210, // *...b4b.....
+ 27, 163, 237, 123, 88, 205, 48, 242, 248, 66, 37, 162, // ...{X.0..B%.
+ 129, 212, 187, 153, 196, 35, 43, 59, 48, 224, 4, 38, // .....#+;0..&
+ 85, 35, 121, 149, 241, 255, 224, 61, 160, 179, 5, 22, // U#y....=....
+ 53, 136, 50, 33, 18, 45, 102, 98, 141, 32, 148, 86, // 5.2!.-fb. .V
+ 68, 57, 98, 142, 176, 105, 200, 29, 93, 59, 179, 28, // D9b..i..];..
+ 157, 8, 116, 192, 203, 74, 59, 113, 48, 98, 140, 47, // ..t..J;q0b./
+ 144, 198, 108, 71, 177, 204, 21, 110, 227, 80, 240, 245, // ..lG...n.P..
+ 41, 121, 192, 49, 129, 188, 137, 102, 4, 104, 200, 101, // )y.1...f.h.e
+ 37, 166, 250, 41, 215, 182, 148, 61, 48, 153, 250, 53, // %..)...=0..5
+ 248, 167, 194, 54, 13, 73, 241, 205, 105, 56, 1, 116, // ...6.I..i8.t
+ 168, 18, 137, 196, 104, 38, 2, 58, 70, 240, 133, 99, // ....h&.:F..c
+ 105, 195, 141, 195, 64, 218, 178, 101, 144, 145, 61, 180, // i...@..e..=.
+ 65, 183, 34, 142, 40, 140, 238, 157, 8, 244, 96, 149, // A.".(.....`.
+ 47, 60, 163, 157, 146, 173, 128, 226, 39, 50, 36, 38, // /<......'2$&
+ 66, 9, 214, 128, 18, 173, 74, 168, 195, 0, 38, 21, // B.....J...&.
+ 171, 132, 28, 193, 236, 127, 149, 0, 92, 55, 17, 245, // .........7..
+ 113, 111, 26, 8, 21, 204, 118, 76, 25, 12, 212, 172, // qo....vL....
+ 144, 88, 136, 20, 138, 66, 197, 77, 161, 132, 76, 69, // .X...B.M..LE
+ 46, 55, 37, 96, 39, 204, 196, 4, 249, 180, 51, 10, // .7%`'.....3.
+ 69, 255, 180, 5, 168, 130, 235, 242, 61, 182, 72, 16, // E.......=.H.
+ 245, 69, 67, 62, 99, 23, 133, 192, 84, 54, 35, 145, // .EC>c...T6#.
+ 45, 160, 156, 144, 153, 38, 230, 218, 22, 194, 253, 42, // -....&.....*
+ 254, 225, 218, 140, 55, 132, 221, 132, 145, 180, 131, 206, // ....7.......
+ 156, 82, 145, 196, 50, 178, 7, 129, 51, 173, 184, 195, // .R..2...3...
+ 60, 144, 192, 192, 55, 121, 49, 194, 146, 110, 157, 46, // <...7y1..n..
+ 36, 150, 33, 3, 167, 98, 206, 212, 87, 72, 83, 196, // $.!..b..WHS.
+ 24, 234, 66, 28, 198, 25, 46, 42, 179, 68, 204, 41, // ..B....*.D.)
+ 144, 253, 173, 172, 137, 54, 204, 213, 25, 52, 179, 113, // .....6...4.q
+ 138, 241, 191, 74, 142, 52, 16, 222, 196, 141, 18, 113, // ...J.4.....q
+ 174, 64, 204, 21, 187, 56, 126, 176, 166, 75, 253, 192, // .@...8~..K..
+ 140, 235, 7, 164, 91, 35, 116, 225, 7, 220, 242, 157, // ....[#t.....
+ 168, 84, 232, 145, 240, 19, 144, 255, 128, 28, 59, 235, // .T........;.
+ 137, 133, 227, 72, 172, 77, 66, 66, 138, 122, 130, 127, // ...H.MBB.z..
+ 59, 128, 61, 49, 43, 140, 101, 119, 200, 25, 166, 148, // ;.=1+.ew....
+ 57, 149, 181, 164, 255, 73, 25, 130, 97, 48, 18, 247, // 9....I..a0..
+ 119, 65, 5, 252, 33, 132, 176, 144, 197, 138, 180, 239, // wA..!.......
+ 182, 157, 249, 228, 68, 176, 182, 192, 52, 106, 233, 54, // ....D...4j.6
+ 234, 91, 161, 223, 175, 98, 237, 160, 13, 60, 66, 49, // .[...b...HB..
+ 99, 21, 232, 232, 49, 124, 243, 78, 196, 209, 6, 134, // c...1|.N....
+ 94, 16, 27, 35, 140, 102, 178, 62, 134, 99, 88, 65, // ^..#.f.>.cXA
+ 216, 124, 39, 63, 27, 40, 170, 240, 241, 146, 55, 72, // .|'?.(....7H
+ 31, 146, 0, 66, 94, 125, 241, 82, 1, 99, 192, 239, // ...B^}.R.c..
+ 243, 138, 75, 51, 103, 51, 149, 142, 196, 144, 40, 31, // ..K3g3....(.
+ 245, 6, 208, 52, 101, 3, 1, 140, 105, 161, 119, 58, // ...4e...i.w:
+ 148, 12, 65, 254, 104, 147, 208, 225, 250, 159, 208, 93, // ..A.h......]
+ 226, 20, 7, 223, 115, 138, 163, 114, 80, 32, 0, 2, // ....s..rP ..
+ 205, 8, 195, 61, 176, 88, 194, 191, 65, 64, 117, 238, // ...=.X..A@u.
+ 165, 83, 110, 94, 9, 120, 136, 211, 201, 5, 24, 255, // .Sn^.x......
+ 25, 106, 193, 153, 18, 206, 165, 14, 64, 239, 73, 99, // .j......@.Ic
+ 253, 24, 248, 127, 21, 119, 57, 194, 39, 16, 16, 211, // .....w9.'...
+ 249, 95, 202, 25, 30, 18, 0, 62, 194, 138, 252, 205, // ._.....>....
+ 6, 26, 217, 27, 70, 180, 54, 14, 178, 154, 147, 34, // ....F.6...."
+ 74, 60, 215, 49, 253, 172, 94, 194, 68, 226, 32, 10, // J<.1..^.D. .
+ 3, 113, 40, 254, 77, 12, 241, 72, 117, 64, 118, 97, // .q(.M..Hu@va
+ 203, 133, 22, 235, 247, 121, 139, 32, 225, 37, 218, 6, // .....y. .%..
+ 96, 62, 172, 34, 154, 62, 54, 190, 8, 77, 246, 54, // `>.".>6..M.6
+ 244, 93, 114, 139, 8, 95, 82, 129, 69, 205, 76, 87, // .]r.._R.E.LW
+ 88, 129, 61, 163, 21, 79, 152, 153, 172, 207, 175, 206, // X.=..O......
+ 125, 100, 7, 230, 30, 27, 192, 42, 194, 2, 35, 117, // }d.....*..#u
+ 40, 54, 206, 93, 32, 166, 56, 15, 234, 163, 55, 97, // (6.] .8...7a
+ 18, 183, 190, 3, 125, 38, 46, 111, 101, 147, 1, 243, // ....}&.oe...
+ 234, 93, 232, 206, 84, 180, 68, 245, 27, 185, 206, 255, // .]..T.D.....
+ 71, 131, 234, 73, 215, 9, 37, 255, 58, 215, 9, 93, // G..I..%.:..]
+ 208, 115, 113, 100, 203, 240, 179, 42, 138, 2, 41, 57, // .sqd...*..)9
+ 232, 116, 83, 162, 85, 240, 177, 67, 40, 133, 20, 4, // .tS.U..C(...
+ 99, 20, 161, 92, 161, 132, 40, 200, 197, 40, 12, 203, // c.....(..(..
+ 102, 84, 100, 172, 138, 11, 97, 210, 135, 103, 89, 77, // fTd...a..gYM
+ 99, 231, 227, 25, 237, 64, 18, 109, 138, 211, 72, 140, // c....@.m..H.
+ 74, 100, 1, 240, 19, 76, 233, 130, 129, 108, 196, 100, // Jd...L...l.d
+ 133, 97, 9, 207, 178, 60, 108, 6, 98, 141, 33, 165, // .a...u...4
+ 47, 190, 110, 207, 242, 179, 165, 18, 2, 77, 33, 209, // /.n......M!.
+ 8, 229, 191, 165, 250, 3, 218, 76, 40, 221, 129, 98, // .......L(..b
+ 31, 161, 51, 153, 24, 134, 244, 192, 206, 137, 105, 40, // ..3.......i(
+ 160, 201, 121, 64, 108, 29, 170, 142, 4, 159, 84, 178, // ..y@l.....T.
+ 76, 36, 199, 8, 74, 38, 72, 193, 45, 50, 177, 28, // L$..J&H.-2..
+ 62, 53, 226, 179, 0, 186, 39, 191, 3, 65, 153, 89, // >5....'..A.Y
+ 196, 136, 151, 100, 154, 106, 96, 161, 53, 165, 2, 179, // ...d.j`.5...
+ 142, 3, 122, 132, 47, 81, 50, 209, 225, 61, 205, 111, // ..z./Q2..=.o
+ 170, 59, 57, 37, 246, 89, 225, 48, 197, 84, 43, 11, // .;9%.Y.0.T+.
+ 134, 162, 164, 72, 216, 53, 146, 255, 184, 57, 255, 155, // ...H.5...9..
+ 80, 116, 104, 5, 46, 106, 195, 217, 235, 132, 127, 44, // Pth..j.....,
+ 168, 125, 23, 155, 3, 254, 129, 66, 17, 202, 55, 163, // .}.....B..7.
+ 162, 213, 114, 30, 145, 70, 44, 72, 202, 1, 11, 146, // ..r..F,H....
+ 147, 196, 189, 19, 130, 34, 126, 37, 96, 19, 98, 250, // ....."~%`.b.
+ 48, 191, 64, 143, 36, 158, 99, 42, 251, 35, 215, 0, // 0.@.$.c*.#..
+ 188, 190, 132, 48, 122, 156, 28, 188, 104, 142, 104, 188, // ...0z...h.h.
+ 137, 125, 169, 24, 224, 108, 241, 63, 154, 185, 218, 222, // .}...l.?....
+ 198, 109, 36, 252, 189, 191, 130, 231, 6, 176, 13, 248, // .m$.........
+ 221, 177, 91, 184, 77, 129, 189, 102, 23, 155, 98, 55, // ..[.M..f..b7
+ 219, 38, 217, 182, 7, 35, 216, 202, 22, 99, 171, 43, // .&...#...c.+
+ 91, 174, 36, 59, 113, 13, 253, 247, 206, 67, 82, 124, // [.$;q....CR|
+ 145, 101, 59, 193, 221, 1, 187, 31, 178, 146, 69, 14, // .e;.......E.
+ 135, 67, 114, 56, 195, 121, 134, 13, 53, 172, 194, 186, // .Cr8.y..5...
+ 211, 67, 44, 38, 66, 123, 134, 63, 234, 136, 204, 68, // .C,&B{.?...D
+ 182, 223, 114, 207, 231, 113, 109, 23, 70, 179, 104, 45, // ..r..qm.F.h-
+ 19, 82, 101, 96, 248, 118, 30, 61, 222, 6, 62, 159, // .Re`.v.=..>.
+ 120, 120, 55, 47, 42, 218, 125, 16, 93, 107, 162, 136, // xx7/*.}.]k..
+ 105, 48, 253, 188, 101, 105, 180, 106, 118, 216, 223, 205, // i0..ei.jv...
+ 241, 249, 183, 247, 236, 233, 209, 193, 76, 77, 16, 40, // ........LM.(
+ 237, 33, 36, 111, 232, 35, 52, 92, 93, 133, 205, 111, // .!$o.#4.]..o
+ 122, 213, 204, 198, 79, 121, 84, 109, 63, 180, 136, 115, // z...OyTm?..s
+ 170, 189, 144, 170, 0, 65, 170, 150, 0, 214, 3, 210, // .....A......
+ 198, 137, 211, 230, 216, 151, 175, 14, 7, 163, 76, 240, // ..........L.
+ 73, 3, 221, 44, 137, 72, 44, 222, 191, 54, 245, 204, // I..,.H,..6..
+ 13, 218, 137, 64, 251, 121, 199, 196, 187, 190, 63, 219, // ...@.y....?.
+ 201, 88, 163, 200, 92, 176, 131, 141, 58, 46, 98, 162, // .X......:.b.
+ 26, 197, 192, 167, 10, 23, 2, 124, 129, 160, 114, 194, // .......|..r.
+ 195, 135, 102, 146, 146, 228, 167, 115, 22, 206, 70, 242, // ..f....s..F.
+ 247, 97, 105, 72, 53, 230, 196, 74, 176, 225, 86, 44, // .aiH5..J..V,
+ 14, 81, 0, 43, 150, 114, 12, 21, 164, 155, 44, 105, // .Q.+.r....,i
+ 165, 16, 24, 115, 98, 139, 86, 255, 125, 190, 225, 97, // ...sb.V.}..a
+ 180, 2, 150, 23, 241, 197, 247, 209, 114, 22, 33, 116, // ........r.!t
+ 255, 46, 152, 196, 94, 188, 117, 67, 60, 22, 47, 42, // ....^.uC<./*
+ 110, 73, 13, 75, 248, 25, 61, 204, 37, 35, 143, 205, // nI.K..=.%#..
+ 213, 147, 248, 221, 96, 7, 75, 195, 102, 46, 105, 17, // ....`.K.f.i.
+ 168, 163, 81, 48, 199, 193, 214, 32, 116, 59, 24, 133, // ..Q0... t;..
+ 23, 68, 152, 12, 24, 77, 205, 131, 221, 58, 14, 229, // .D...M...:..
+ 242, 112, 80, 32, 215, 222, 230, 29, 226, 169, 23, 76, // .pP .......L
+ 163, 165, 36, 42, 106, 46, 96, 81, 84, 41, 171, 155, // ..$*j.`QT)..
+ 227, 104, 41, 1, 213, 176, 39, 202, 92, 84, 190, 62, // .h)...'..T.>
+ 219, 225, 33, 179, 240, 122, 120, 7, 48, 141, 170, 43, // ..!..zx.0..+
+ 80, 165, 20, 248, 64, 129, 124, 53, 86, 104, 22, 71, // P...@.|5Vh.G
+ 235, 149, 9, 89, 107, 196, 152, 21, 9, 221, 199, 21, // ...Yk.......
+ 169, 216, 168, 170, 156, 201, 153, 35, 71, 191, 111, 71, // .......#G.oG
+ 89, 87, 57, 194, 152, 70, 61, 36, 237, 1, 64, 192, // YW9..F=$..@.
+ 208, 69, 255, 216, 211, 191, 0, 192, 25, 2, 98, 89, // .E........bY
+ 209, 2, 183, 48, 60, 66, 218, 90, 234, 127, 28, 133, // ...0...
+ 197, 232, 150, 75, 165, 58, 227, 235, 40, 229, 181, 157, // ...K.:..(...
+ 66, 154, 205, 131, 208, 143, 249, 242, 212, 246, 43, 68, // B.........+D
+ 179, 82, 131, 217, 219, 27, 244, 18, 117, 109, 134, 229, // .R......um..
+ 4, 82, 180, 184, 165, 33, 207, 90, 15, 160, 218, 156, // .R...!.Z....
+ 0, 116, 154, 120, 73, 144, 52, 199, 253, 206, 234, 233, // .t.xI.4.....
+ 30, 218, 4, 200, 23, 61, 109, 44, 88, 205, 80, 97, // .....=m,X.Pa
+ 88, 45, 132, 128, 195, 129, 171, 81, 180, 84, 0, 198, // X-.....Q.T..
+ 227, 69, 69, 141, 213, 80, 3, 109, 1, 184, 173, 214, // .EE..P.m....
+ 91, 201, 42, 12, 210, 90, 181, 69, 143, 46, 118, 222, // [.*..Z.E..v.
+ 194, 200, 44, 96, 124, 0, 76, 179, 81, 208, 248, 76, // ..,`|.L.Q..L
+ 81, 210, 194, 62, 182, 5, 188, 247, 130, 101, 109, 87, // Q..>.....emW
+ 0, 176, 134, 222, 134, 127, 20, 91, 2, 217, 11, 234, // .......[....
+ 197, 205, 141, 75, 167, 8, 17, 118, 113, 216, 59, 252, // ...K...vq.;.
+ 182, 69, 246, 122, 167, 51, 26, 116, 122, 50, 9, 172, // .E.z.3.tz2..
+ 221, 126, 49, 33, 242, 106, 58, 32, 51, 234, 118, 52, // .~1!.j: 3.v4
+ 25, 155, 200, 149, 111, 104, 92, 249, 14, 137, 174, 83, // ....oh.....S
+ 24, 99, 119, 195, 101, 66, 223, 173, 122, 113, 138, 119, // .cw.eB..zq.w
+ 236, 226, 2, 103, 158, 136, 194, 2, 15, 157, 184, 204, // ...g........
+ 117, 28, 70, 150, 235, 5, 17, 147, 165, 175, 229, 243, // u.F.........
+ 97, 70, 32, 96, 81, 242, 13, 61, 56, 197, 250, 118, // aF `Q..=8..v
+ 49, 250, 111, 201, 167, 57, 224, 79, 84, 248, 209, 249, // 1.o..9.OT...
+ 201, 109, 33, 135, 20, 170, 218, 49, 79, 86, 244, 36, // .m!....1OV.$
+ 115, 28, 110, 212, 139, 219, 5, 244, 192, 66, 30, 242, // s.n......B..
+ 39, 62, 213, 192, 195, 154, 85, 11, 37, 49, 235, 186, // '>....U.%1..
+ 117, 168, 226, 7, 88, 103, 53, 113, 117, 204, 66, 152, // u...Xg5qu.B.
+ 28, 109, 84, 172, 178, 134, 2, 79, 46, 120, 58, 143, // .mT....O.x:.
+ 124, 218, 153, 87, 81, 146, 86, 27, 164, 158, 253, 237, // |..WQ.V.....
+ 136, 253, 116, 251, 225, 186, 133, 219, 99, 150, 179, 224, // ..t.....c...
+ 97, 91, 203, 177, 198, 164, 54, 70, 204, 76, 133, 192, // a[....6F.L..
+ 87, 111, 24, 211, 152, 207, 70, 76, 15, 154, 170, 32, // Wo....FL...
+ 71, 101, 196, 100, 118, 156, 68, 159, 119, 204, 106, 104, // Ge.dv.D.w.jh
+ 216, 171, 65, 39, 217, 108, 234, 245, 188, 126, 42, 69, // ..A'.l...~*E
+ 55, 98, 69, 233, 98, 80, 70, 76, 14, 205, 146, 154, // 7bE.bPFL....
+ 78, 0, 164, 22, 3, 41, 129, 204, 117, 64, 65, 51, // N....)..u@A3
+ 133, 120, 142, 65, 62, 110, 253, 153, 0, 52, 90, 23, // .x.A>n...4Z.
+ 5, 172, 15, 182, 232, 10, 253, 38, 79, 3, 104, 217, // .......&O.h.
+ 6, 235, 213, 235, 182, 244, 209, 46, 0, 209, 99, 65, // ..........cA
+ 107, 220, 111, 176, 106, 127, 196, 110, 200, 248, 96, 239, // k.o.j..n..`.
+ 215, 97, 26, 172, 66, 206, 222, 146, 150, 32, 50, 244, // .a..B.... 2.
+ 235, 44, 72, 72, 95, 37, 213, 123, 217, 171, 241, 57, // .,HH_%.{...9
+ 21, 63, 47, 22, 191, 18, 144, 254, 189, 194, 237, 54, // .?/........6
+ 27, 15, 169, 252, 112, 196, 126, 139, 177, 99, 223, 18, // ....p.~..c..
+ 205, 18, 234, 154, 120, 23, 165, 187, 186, 248, 115, 216, // ....x.....s.
+ 1, 251, 231, 57, 255, 164, 214, 130, 41, 177, 115, 41, // ...9....).s)
+ 191, 223, 91, 189, 38, 65, 145, 140, 33, 108, 27, 235, // ..[.&A..!l..
+ 78, 35, 75, 42, 199, 88, 1, 196, 241, 181, 200, 142, // N#K*.X......
+ 100, 209, 3, 38, 133, 108, 141, 201, 172, 38, 63, 7, // d..&.l...&?.
+ 232, 202, 53, 90, 123, 21, 147, 145, 33, 72, 180, 128, // ..5Z{...!H..
+ 0, 160, 37, 221, 66, 58, 178, 152, 25, 245, 239, 4, // ..%.B:......
+ 177, 95, 213, 20, 250, 155, 199, 81, 19, 133, 200, 194, // ._.....Q....
+ 241, 80, 77, 144, 82, 251, 142, 89, 199, 130, 216, 119, // .PM.R..Y...w
+ 108, 255, 31, 145, 122, 181, 244, 81, 82, 220, 151, 180, // l...z..QR...
+ 180, 121, 76, 36, 238, 253, 216, 62, 38, 236, 17, 55, // .yL$...>&..7
+ 111, 66, 122, 66, 231, 108, 225, 143, 172, 31, 247, 189, // oBzB.l......
+ 63, 164, 206, 209, 59, 89, 232, 205, 109, 158, 179, 165, // ?...;Y..m...
+ 83, 59, 115, 75, 204, 177, 126, 202, 246, 63, 236, 62, // S;sK..~..?.>
+ 161, 200, 224, 91, 175, 104, 215, 153, 122, 9, 223, 119, // ...[.h..z..w
+ 33, 11, 249, 95, 57, 246, 183, 167, 55, 75, 233, 118, // !.._9...7K.v
+ 208, 94, 129, 81, 97, 164, 160, 18, 178, 90, 15, 27, // .^.Qa....Z..
+ 54, 194, 29, 22, 84, 158, 211, 119, 52, 115, 192, 157, // 6...T..w4s..
+ 83, 134, 145, 177, 239, 114, 135, 208, 246, 227, 206, 118, // S....r.....v
+ 202, 148, 49, 166, 13, 180, 11, 251, 120, 243, 174, 162, // ..1.....x...
+ 115, 203, 114, 245, 147, 201, 92, 47, 153, 28, 154, 123, // s.r..../...{
+ 196, 234, 155, 152, 4, 153, 242, 160, 29, 192, 95, 73, // .........._I
+ 27, 74, 75, 231, 186, 198, 180, 228, 234, 156, 178, 246, // .JK.........
+ 92, 5, 239, 180, 42, 231, 87, 197, 74, 104, 71, 102, // ....*.W.JhGf
+ 99, 24, 6, 9, 39, 186, 62, 89, 98, 200, 93, 173, // c...'.>Yb.].
+ 12, 200, 227, 67, 230, 42, 61, 144, 217, 115, 156, 81, // ...C.*=..s.Q
+ 41, 140, 171, 203, 130, 44, 174, 252, 131, 162, 184, 242, // )....,......
+ 75, 121, 18, 45, 119, 85, 195, 189, 65, 223, 229, 178, // Ky.-wU..A...
+ 203, 90, 45, 38, 126, 61, 193, 14, 116, 189, 173, 82, // .Z-&~=..t..R
+ 44, 190, 212, 54, 80, 202, 152, 250, 118, 152, 179, 92, // ,..6P...v...
+ 36, 195, 193, 160, 63, 112, 121, 235, 128, 55, 245, 251, // $...?py..7..
+ 113, 238, 114, 166, 104, 142, 175, 151, 214, 160, 170, 93, // q.r.h......]
+ 194, 112, 102, 180, 218, 81, 49, 117, 123, 131, 18, 49, // .pf..Q1u{..1
+ 117, 123, 39, 25, 145, 25, 140, 73, 189, 193, 120, 107, // u{'....I..xk
+ 70, 53, 88, 20, 179, 110, 163, 215, 232, 87, 220, 236, // F5X..n...W..
+ 230, 164, 76, 88, 74, 77, 74, 81, 237, 181, 174, 4, // ..LXJMJQ....
+ 49, 13, 1, 20, 131, 66, 134, 51, 222, 29, 98, 151, // 1....B.3..b.
+ 205, 223, 134, 112, 204, 133, 231, 45, 15, 37, 170, 217, // ...p...-.%..
+ 9, 118, 223, 40, 189, 110, 184, 3, 169, 50, 222, 80, // .v.(.n...2.P
+ 210, 25, 68, 153, 158, 86, 201, 115, 109, 85, 213, 196, // ..D..V.smU..
+ 109, 209, 86, 169, 19, 210, 10, 139, 148, 188, 121, 233, // m.V.......y.
+ 36, 32, 111, 153, 116, 3, 233, 49, 82, 117, 72, 93, // $ o.t..1RuH]
+ 144, 89, 62, 46, 198, 254, 108, 39, 179, 190, 50, 215, // .Y>...l'..2.
+ 217, 193, 117, 63, 46, 66, 27, 102, 142, 238, 213, 107, // ..u?.B.f...k
+ 122, 89, 167, 220, 29, 171, 194, 49, 203, 127, 163, 185, // zY.....1....
+ 86, 49, 47, 212, 177, 243, 182, 237, 19, 10, 237, 76, // V1/........L
+ 11, 103, 24, 105, 16, 243, 230, 240, 28, 70, 127, 110, // .g.i.....F.n
+ 2, 102, 165, 140, 157, 60, 0, 82, 30, 222, 158, 7, // .f...<.R....
+ 160, 126, 151, 102, 180, 122, 113, 12, 203, 66, 62, 208, // .~.f.zq..B>.
+ 24, 183, 201, 144, 65, 68, 134, 131, 172, 163, 95, 143, // ....AD...._.
+ 213, 202, 19, 156, 46, 152, 74, 56, 51, 102, 103, 206, // ......J83fg.
+ 65, 123, 198, 211, 234, 158, 245, 117, 204, 44, 211, 125, // A{.....u.,.}
+ 138, 235, 133, 28, 32, 213, 156, 74, 199, 209, 92, 44, // .... ..J...,
+ 62, 139, 105, 74, 92, 124, 22, 86, 241, 166, 72, 72, // >.iJ.|.V..HH
+ 36, 120, 127, 152, 252, 73, 52, 90, 52, 90, 193, 12, // $x...I4Z4Z..
+ 30, 83, 131, 61, 145, 53, 60, 254, 124, 63, 98, 155, // .S.=.5<.|?b.
+ 12, 134, 30, 179, 204, 108, 72, 67, 155, 217, 101, 189, // .....lHC..e.
+ 162, 135, 234, 139, 140, 233, 188, 230, 203, 76, 84, 51, // .........LT3
+ 12, 144, 134, 93, 64, 138, 66, 138, 65, 228, 237, 153, // ...]@.B.A...
+ 6, 148, 53, 83, 181, 242, 172, 194, 104, 246, 65, 174, // ..5S....h.A.
+ 79, 216, 175, 227, 14, 217, 126, 151, 50, 155, 141, 12, // O.....~.2...
+ 62, 50, 31, 233, 253, 117, 28, 71, 177, 120, 235, 209, // >2...u.G.x..
+ 219, 21, 121, 213, 226, 5, 102, 226, 37, 159, 172, 103, // ..y...f.%..g
+ 213, 251, 251, 163, 135, 97, 207, 53, 149, 148, 185, 64, // .....a.5...@
+ 42, 88, 247, 205, 220, 78, 112, 182, 179, 115, 220, 104, // *X...Np..s.h
+ 105, 99, 85, 155, 130, 36, 79, 47, 93, 39, 210, 65, // icU..$O/]'.A
+ 198, 218, 114, 191, 46, 120, 146, 120, 50, 137, 62, 74, // ..r..x.x2.>J
+ 160, 196, 76, 210, 163, 145, 163, 152, 194, 208, 78, 127, // ..L.......N.
+ 100, 95, 125, 209, 54, 219, 47, 119, 119, 236, 77, 20, // d_}.6./ww.M.
+ 63, 122, 49, 76, 248, 211, 214, 218, 128, 61, 79, 113, // ?z1L.....=Oq
+ 149, 168, 255, 215, 75, 76, 5, 217, 228, 131, 110, 210, // ....KL....n.
+ 218, 217, 213, 220, 106, 45, 254, 74, 211, 79, 124, 169, // ....j-.J.O|.
+ 238, 233, 200, 119, 7, 181, 0, 107, 85, 251, 115, 213, // ...w...kU.s.
+ 236, 16, 42, 75, 188, 125, 132, 3, 209, 244, 45, 238, // ..*K.}....-.
+ 53, 141, 11, 134, 159, 211, 180, 184, 249, 52, 254, 180, // 5........4..
+ 182, 13, 65, 183, 117, 83, 162, 90, 207, 78, 55, 121, // ..A.uS.Z.N7y
+ 23, 173, 130, 41, 187, 249, 253, 80, 131, 41, 190, 127, // ...)...P.)..
+ 138, 159, 14, 53, 151, 127, 127, 65, 99, 119, 39, 26, // ...5...Acw'.
+ 75, 79, 52, 150, 22, 26, 123, 193, 222, 90, 249, 225, // KO4...{..Z..
+ 208, 78, 138, 85, 228, 238, 164, 242, 151, 220, 234, 131, // .N.U........
+ 62, 52, 39, 142, 86, 180, 194, 222, 161, 10, 203, 169, // >4'.V.......
+ 112, 222, 108, 159, 222, 139, 201, 207, 201, 46, 94, 37, // p.l.......^%
+ 65, 226, 238, 142, 249, 221, 2, 94, 200, 117, 166, 29, // A......^.u..
+ 113, 237, 28, 71, 102, 118, 231, 205, 134, 92, 152, 191, // q..Gfv......
+ 36, 69, 50, 185, 229, 175, 74, 53, 32, 87, 21, 126, // $E2...J5 W.~
+ 224, 221, 239, 76, 8, 147, 52, 60, 143, 183, 194, 9, // ...L..4<....
+ 208, 84, 188, 220, 93, 18, 118, 54, 123, 244, 232, 105, // .T..].v6{..i
+ 61, 157, 18, 1, 28, 14, 111, 153, 200, 110, 140, 163, // =.....o..n..
+ 25, 237, 135, 126, 3, 247, 242, 242, 128, 72, 198, 180, // ...~.....H..
+ 171, 47, 215, 94, 168, 201, 144, 193, 135, 238, 44, 104, // ./.^......,h
+ 241, 77, 217, 34, 242, 121, 171, 24, 221, 41, 140, 93, // .M.".y...).]
+ 106, 45, 126, 198, 238, 136, 203, 155, 156, 75, 36, 196, // j-~......K$.
+ 77, 56, 118, 66, 95, 222, 255, 75, 102, 146, 98, 114, // M8vB_..Kf.br
+ 26, 45, 168, 97, 95, 10, 81, 244, 181, 133, 186, 154, // .-.a_.Q.....
+ 142, 250, 142, 224, 208, 58, 244, 65, 197, 19, 91, 147, // .....:.A..[.
+ 150, 8, 249, 194, 144, 200, 67, 132, 107, 64, 32, 53, // ......C.k@ 5
+ 196, 23, 188, 116, 244, 34, 110, 191, 159, 82, 7, 127, // ...t."n..R..
+ 216, 85, 104, 217, 85, 70, 172, 34, 15, 5, 175, 126, // .Uh.UF."...~
+ 30, 253, 252, 225, 230, 174, 210, 96, 21, 50, 180, 233, // .......`.2..
+ 247, 235, 143, 239, 233, 57, 240, 245, 35, 236, 24, 249, // .....9..#...
+ 178, 103, 254, 156, 152, 91, 95, 148, 170, 86, 14, 53, // .g...[_..V.5
+ 114, 190, 254, 175, 106, 154, 232, 179, 119, 88, 7, 37, // r...j...wX.%
+ 10, 132, 118, 248, 79, 33, 190, 149, 40, 15, 253, 173, // ..v.O!..(...
+ 186, 103, 181, 235, 27, 155, 200, 203, 106, 246, 109, 43, // .g......j.m+
+ 222, 152, 12, 95, 168, 178, 217, 75, 185, 123, 181, 90, // ..._...K.{.Z
+ 217, 71, 84, 5, 147, 120, 173, 142, 177, 247, 78, 176, // .GT..x....N.
+ 219, 238, 105, 181, 3, 56, 112, 194, 237, 78, 53, 117, // ..i..8p..N5u
+ 241, 194, 81, 139, 40, 88, 146, 153, 159, 76, 17, 102, // ..Q.(X...L.f
+ 112, 46, 79, 146, 135, 69, 52, 190, 10, 203, 96, 135, // p.O..E4...`.
+ 103, 208, 254, 133, 3, 69, 80, 226, 167, 242, 18, 37, // g....EP....%
+ 145, 217, 56, 136, 98, 81, 151, 99, 57, 65, 110, 247, // ..8.bQ.c9An.
+ 105, 89, 92, 254, 47, 96, 15, 130, 59, 121, 109, 56, // iY../`..;ym8
+ 198, 245, 199, 252, 90, 35, 13, 90, 192, 233, 12, 223, // ....Z#.Z....
+ 180, 168, 135, 52, 3, 231, 228, 162, 71, 241, 150, 190, // ...4....G...
+ 191, 149, 79, 45, 18, 17, 137, 230, 173, 151, 204, 213, // ..O-........
+ 47, 181, 186, 188, 92, 65, 145, 70, 144, 35, 99, 62, // /....A.F.#c>
+ 127, 240, 200, 130, 195, 45, 98, 36, 252, 210, 253, 150, // .....-b$....
+ 230, 42, 160, 70, 152, 223, 102, 250, 28, 243, 164, 72, // .*.F..f....H
+ 227, 249, 209, 99, 43, 90, 134, 145, 231, 107, 63, 70, // ...c+Z...k?F
+ 94, 150, 94, 155, 215, 104, 74, 145, 11, 239, 71, 211, // ^.^..hJ...G.
+ 245, 2, 119, 3, 192, 178, 167, 65, 255, 7, 64, 207, // ..w....A..@.
+ 243, 250, 183, 93, 0, 0, 0 // ...]..
};
static const unsigned char v6[] = {
45, 45, 45, 45, 45, 66, 69, 71, 73, 78, 32, 67, // -----BEGIN C
@@ -2125,13 +2126,13 @@ static const struct packed_file {
size_t size;
time_t mtime;
} packed_files[] = {
- {"/web_root/bundle.js.gz", v1, sizeof(v1), 1701996503},
- {"/web_root/history.min.js.gz", v2, sizeof(v2), 1701996503},
- {"/web_root/index.html.gz", v3, sizeof(v3), 1701996503},
- {"/web_root/main.css.gz", v4, sizeof(v4), 1701996503},
- {"/web_root/main.js.gz", v5, sizeof(v5), 1703425774},
- {"/certs/server_cert.pem", v6, sizeof(v6), 1692695603},
- {"/certs/server_key.pem", v7, sizeof(v7), 1692695603},
+ {"/web_root/bundle.js.gz", v1, sizeof(v1), 1704753186},
+ {"/web_root/history.min.js.gz", v2, sizeof(v2), 1704753186},
+ {"/web_root/index.html.gz", v3, sizeof(v3), 1704753186},
+ {"/web_root/main.css.gz", v4, sizeof(v4), 1704817194},
+ {"/web_root/main.js.gz", v5, sizeof(v5), 1704813339},
+ {"/certs/server_cert.pem", v6, sizeof(v6), 1701210506},
+ {"/certs/server_key.pem", v7, sizeof(v7), 1701210506},
{NULL, NULL, 0, 0}
};
diff --git a/examples/modbus-dashboard/web_root/main.css b/examples/modbus-dashboard/web_root/main.css
index 8a757d00..f5b15ec3 100644
--- a/examples/modbus-dashboard/web_root/main.css
+++ b/examples/modbus-dashboard/web_root/main.css
@@ -1 +1 @@
-/*! tailwindcss v3.3.2 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter var,Helvetica,sans-serif;font-feature-settings:"cv11","ss01";font-variation-settings:"opsz" 32}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.bottom-0{bottom:0}.left-0{left:0}.right-auto{right:auto}.top-0{top:0}.z-10{z-index:10}.z-\[48\]{z-index:48}.z-\[60\]{z-index:60}.m-4{margin:1rem}.my-0{margin-top:0;margin-bottom:0}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.mb-1{margin-bottom:.25rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.mr-2{margin-right:.5rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.h-10{height:2.5rem}.h-12{height:3rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-full{height:100%}.max-h-64{max-height:16rem}.min-h-screen{min-height:100vh}.w-0{width:0}.w-11{width:2.75rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-72{width:18rem}.w-full{width:100%}.max-w-sm{max-width:24rem}.flex-1{flex:1 1 0%}.flex-shrink-0,.shrink-0{flex-shrink:0}.grow-0{flex-grow:0}.basis-\[30px\]{flex-basis:30px}.-translate-x-full{--tw-translate-x:-100%}.-translate-x-full,.translate-x-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x:0px}.translate-x-5{--tw-translate-x:1.25rem}.translate-x-5,.translate-y-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y:0px}.translate-y-2{--tw-translate-y:0.5rem}.transform,.translate-y-2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-pointer{cursor:pointer}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.place-content-end{place-content:end}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-center{justify-content:center}.gap-2{gap:.5rem}.gap-4{gap:1rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-6{row-gap:1.5rem}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px*var(--tw-divide-y-reverse))}.self-start{align-self:flex-start}.self-stretch{align-self:stretch}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-scroll{overflow:scroll}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;white-space:nowrap}.text-ellipsis,.truncate{text-overflow:ellipsis}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity))}.border-transparent{border-color:#0000}.bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity))}.bg-slate-100{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.bg-slate-50{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}.bg-violet-100{--tw-bg-opacity:1;background-color:rgb(237 233 254/var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.p-2{padding:.5rem}.p-4{padding:1rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.pl-72{padding-left:18rem}.pt-0{padding-top:0}.pt-0\.5{padding-top:.125rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.leading-6{line-height:1.5rem}.text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity))}.text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}.text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity))}.text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.opacity-0{opacity:0}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-sm{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-0,.ring-1{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-black{--tw-ring-opacity:1;--tw-ring-color:rgb(0 0 0/var(--tw-ring-opacity))}.ring-opacity-5{--tw-ring-opacity:0.05}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.placeholder\:text-gray-400::-moz-placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.placeholder\:text-gray-400::placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.hover\:bg-blue-500:hover{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity))}.hover\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.hover\:text-blue-600:hover{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity))}.hover\:text-gray-500:hover{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.focus\:outline-none:focus{outline:2px solid #0000;outline-offset:2px}.focus\:ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-blue-400:disabled{--tw-bg-opacity:1;background-color:rgb(96 165 250/var(--tw-bg-opacity))}.disabled\:bg-gray-100:disabled{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.disabled\:text-gray-500:disabled{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}@media (min-width:640px){.sm\:translate-x-0{--tw-translate-x:0px}.sm\:translate-x-0,.sm\:translate-x-2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.sm\:translate-x-2{--tw-translate-x:0.5rem}.sm\:translate-y-0{--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.sm\:items-start{align-items:flex-start}.sm\:items-end{align-items:flex-end}.sm\:p-6{padding:1.5rem}}@media (min-width:768px){.md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.lg\:block{display:block}.lg\:h-4{height:1rem}.lg\:w-px{width:1px}.lg\:gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.lg\:bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}}
\ No newline at end of file
+/*! tailwindcss v3.3.5 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter var,Helvetica,sans-serif;font-feature-settings:"cv11","ss01";font-variation-settings:"opsz" 32}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.bottom-0{bottom:0}.left-0{left:0}.right-auto{right:auto}.top-0{top:0}.z-10{z-index:10}.z-\[48\]{z-index:48}.z-\[60\]{z-index:60}.m-4{margin:1rem}.my-0{margin-top:0;margin-bottom:0}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.mb-1{margin-bottom:.25rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.mr-2{margin-right:.5rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.h-10{height:2.5rem}.h-12{height:3rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-full{height:100%}.max-h-64{max-height:16rem}.min-h-screen{min-height:100vh}.w-0{width:0}.w-11{width:2.75rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-72{width:18rem}.w-full{width:100%}.max-w-sm{max-width:24rem}.flex-1{flex:1 1 0%}.flex-shrink-0,.shrink-0{flex-shrink:0}.grow-0{flex-grow:0}.basis-\[30px\]{flex-basis:30px}.-translate-x-full{--tw-translate-x:-100%}.-translate-x-full,.translate-x-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x:0px}.translate-x-5{--tw-translate-x:1.25rem}.translate-x-5,.translate-y-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y:0px}.translate-y-2{--tw-translate-y:0.5rem}.transform,.translate-y-2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-pointer{cursor:pointer}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.place-content-end{place-content:end}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-center{justify-content:center}.gap-2{gap:.5rem}.gap-4{gap:1rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-6{row-gap:1.5rem}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px*var(--tw-divide-y-reverse))}.self-start{align-self:flex-start}.self-stretch{align-self:stretch}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-scroll{overflow:scroll}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;white-space:nowrap}.text-ellipsis,.truncate{text-overflow:ellipsis}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity))}.border-transparent{border-color:#0000}.bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity))}.bg-slate-100{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.bg-slate-50{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}.bg-violet-100{--tw-bg-opacity:1;background-color:rgb(237 233 254/var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.p-2{padding:.5rem}.p-4{padding:1rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.pl-72{padding-left:18rem}.pt-0{padding-top:0}.pt-0\.5{padding-top:.125rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.leading-6{line-height:1.5rem}.text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity))}.text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}.text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity))}.text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.opacity-0{opacity:0}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-sm{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-0,.ring-1{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-black{--tw-ring-opacity:1;--tw-ring-color:rgb(0 0 0/var(--tw-ring-opacity))}.ring-opacity-5{--tw-ring-opacity:0.05}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.placeholder\:text-gray-400::-moz-placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.placeholder\:text-gray-400::placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.hover\:bg-blue-500:hover{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity))}.hover\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.hover\:text-blue-600:hover{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity))}.hover\:text-gray-500:hover{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.focus\:outline-none:focus{outline:2px solid #0000;outline-offset:2px}.focus\:ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-blue-400:disabled{--tw-bg-opacity:1;background-color:rgb(96 165 250/var(--tw-bg-opacity))}.disabled\:bg-gray-100:disabled{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.disabled\:text-gray-500:disabled{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}@media (min-width:640px){.sm\:translate-x-0{--tw-translate-x:0px}.sm\:translate-x-0,.sm\:translate-x-2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.sm\:translate-x-2{--tw-translate-x:0.5rem}.sm\:translate-y-0{--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.sm\:items-start{align-items:flex-start}.sm\:items-end{align-items:flex-end}.sm\:p-6{padding:1.5rem}}@media (min-width:768px){.md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.lg\:block{display:block}.lg\:h-4{height:1rem}.lg\:w-px{width:1px}.lg\:gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.lg\:bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}}
\ No newline at end of file
diff --git a/examples/mqtt-client-aws-iot/main.c b/examples/mqtt-client-aws-iot/main.c
index 808c6445..62f4b85c 100644
--- a/examples/mqtt-client-aws-iot/main.c
+++ b/examples/mqtt-client-aws-iot/main.c
@@ -38,7 +38,7 @@ static int s_qos = 1;
#include "mongoose.h"
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_OPEN) {
// c->is_hexdumping = 1;
} else if (ev == MG_EV_CONNECT) {
@@ -84,7 +84,7 @@ static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
if (ev == MG_EV_ERROR || ev == MG_EV_CLOSE) {
MG_INFO(("Got event %d, stopping...", ev));
- *(bool *) fn_data = true; // Signal that we're done
+ *(bool *) c->fn_data = true; // Signal that we're done
}
}
diff --git a/examples/mqtt-client/main.c b/examples/mqtt-client/main.c
index c715de98..1012ca4f 100644
--- a/examples/mqtt-client/main.c
+++ b/examples/mqtt-client/main.c
@@ -24,7 +24,7 @@ static void signal_handler(int signo) {
s_signo = signo;
}
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_OPEN) {
MG_INFO(("%lu CREATED", c->id));
// c->is_hexdumping = 1;
@@ -65,7 +65,6 @@ static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
MG_INFO(("%lu CLOSED", c->id));
s_conn = NULL; // Mark that we're closed
}
- (void) fn_data;
}
// Timer function - recreate client connection if it is closed
diff --git a/examples/mqtt-dashboard/device/net.c b/examples/mqtt-dashboard/device/net.c
index f86bbcd9..2fec222b 100644
--- a/examples/mqtt-dashboard/device/net.c
+++ b/examples/mqtt-dashboard/device/net.c
@@ -190,7 +190,7 @@ static void rpc_ota_upload(struct mg_rpc_req *r) {
}
}
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_OPEN) {
MG_INFO(("%lu CREATED", c->id));
// c->is_hexdumping = 1;
@@ -223,7 +223,6 @@ static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
MG_INFO(("%lu CLOSED", c->id));
s_conn = NULL; // Mark that we're closed
}
- (void) fn_data;
}
// Timer function - recreate client connection if it is closed
diff --git a/examples/mqtt-over-ws-client/main.c b/examples/mqtt-over-ws-client/main.c
index c9d0008b..74d2633b 100644
--- a/examples/mqtt-over-ws-client/main.c
+++ b/examples/mqtt-over-ws-client/main.c
@@ -20,7 +20,7 @@ static const char *s_url =
static const char *s_topic = "mg/test";
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_ERROR) {
// On error, log error message
MG_ERROR(("%p %s", c->fd, (char *) ev_data));
@@ -89,7 +89,7 @@ static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
}
if (ev == MG_EV_ERROR || ev == MG_EV_CLOSE) {
- *(bool *) fn_data = true; // Signal that we're done
+ *(bool *) c->fn_data = true; // Signal that we're done
}
}
diff --git a/examples/mqtt-server/main.c b/examples/mqtt-server/main.c
index 0b96ece4..77835e5f 100644
--- a/examples/mqtt-server/main.c
+++ b/examples/mqtt-server/main.c
@@ -53,7 +53,7 @@ size_t mg_mqtt_next_unsub(struct mg_mqtt_message *msg, struct mg_str *topic,
}
// Event handler function
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_MQTT_CMD) {
struct mg_mqtt_message *mm = (struct mg_mqtt_message *) ev_data;
MG_DEBUG(("cmd %d qos %d", mm->cmd, mm->qos));
@@ -131,7 +131,6 @@ static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
LIST_DELETE(struct sub, &s_subs, sub);
}
}
- (void) fn_data;
}
int main(void) {
diff --git a/examples/multi-threaded-12m/main.c b/examples/multi-threaded-12m/main.c
index 64f49c1f..63bdcf52 100644
--- a/examples/multi-threaded-12m/main.c
+++ b/examples/multi-threaded-12m/main.c
@@ -43,7 +43,7 @@ static void *thread_function(void *param) {
}
// HTTP request callback
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_OPEN && c->is_listening) {
// Start worker thread
struct thread_data *data = calloc(1, sizeof(*data)); // Worker owns it
@@ -75,7 +75,6 @@ static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
mg_ws_send(wc, data->ptr, data->len, WEBSOCKET_OP_TEXT);
}
}
- (void) fn_data;
}
int main(void) {
diff --git a/examples/multi-threaded/main.c b/examples/multi-threaded/main.c
index 83ba42d0..b220cfa5 100644
--- a/examples/multi-threaded/main.c
+++ b/examples/multi-threaded/main.c
@@ -39,7 +39,7 @@ static void *thread_function(void *param) {
}
// HTTP request callback
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_HTTP_MSG) {
struct mg_http_message *hm = (struct mg_http_message *) ev_data;
if (mg_http_match_uri(hm, "/fast")) {
@@ -58,7 +58,6 @@ static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
struct mg_str *data = (struct mg_str *) ev_data;
mg_http_reply(c, 200, "", "Result: %.*s\n", data->len, data->ptr);
}
- (void) fn_data;
}
int main(void) {
diff --git a/examples/nxp/rt1020-evk-make-baremetal-builtin/main.c b/examples/nxp/rt1020-evk-make-baremetal-builtin/main.c
index e41e5cd0..e44b248c 100644
--- a/examples/nxp/rt1020-evk-make-baremetal-builtin/main.c
+++ b/examples/nxp/rt1020-evk-make-baremetal-builtin/main.c
@@ -32,8 +32,8 @@ static void timer_fn(void *arg) {
}
#ifndef RUNINFLASH
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
- struct mg_tcpip_if *ifp = (struct mg_tcpip_if *) fn_data;
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
+ struct mg_tcpip_if *ifp = (struct mg_tcpip_if *) c->fn_data;
if (ev == MG_EV_HTTP_MSG) {
struct mg_http_message *hm = (struct mg_http_message *) ev_data;
if (mg_http_match_uri(hm, "/api/hello")) { // Request to /api/hello
diff --git a/examples/nxp/rt1020-evk-make-freertos-builtin/main.c b/examples/nxp/rt1020-evk-make-freertos-builtin/main.c
index 0cf3bd02..ea7bd3a3 100644
--- a/examples/nxp/rt1020-evk-make-freertos-builtin/main.c
+++ b/examples/nxp/rt1020-evk-make-freertos-builtin/main.c
@@ -21,8 +21,8 @@ static void timer_fn(void *arg) {
ifp->ndrop, ifp->nerr));
}
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
- struct mg_tcpip_if *ifp = (struct mg_tcpip_if *) fn_data;
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
+ struct mg_tcpip_if *ifp = (struct mg_tcpip_if *) c->fn_data;
if (ev == MG_EV_HTTP_MSG) {
struct mg_http_message *hm = (struct mg_http_message *) ev_data;
if (mg_http_match_uri(hm, "/api/hello")) { // Request to /api/hello
diff --git a/examples/rp2040/pico-rmii/main.c b/examples/rp2040/pico-rmii/main.c
index 3c2ed5a3..f41eb814 100644
--- a/examples/rp2040/pico-rmii/main.c
+++ b/examples/rp2040/pico-rmii/main.c
@@ -10,7 +10,7 @@
#define CLKREFPIN 20 // either 20 or 22
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_HTTP_MSG) {
mg_http_reply(c, 200, "", "ok\n");
}
diff --git a/examples/smtp-client/main.c b/examples/smtp-client/main.c
index fa7e7354..4c2f34ac 100644
--- a/examples/smtp-client/main.c
+++ b/examples/smtp-client/main.c
@@ -13,7 +13,7 @@ static bool s_quit;
enum { EHLO, STARTTLS, STARTTLS_WAIT, AUTH, FROM, TO, DATA, BODY, QUIT, END };
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
uint8_t *state = (uint8_t *) c->data;
if (ev == MG_EV_OPEN) {
// c->is_hexdumping = 1;
@@ -69,7 +69,7 @@ static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
MG_INFO(("TLS handshake done! Sending EHLO again"));
mg_printf(c, "EHLO myname\r\n");
}
- (void) fn_data, (void) ev_data;
+ (void) ev_data;
}
int main(void) {
diff --git a/examples/sntp-time-sync/main.c b/examples/sntp-time-sync/main.c
index 8e89e8d2..27801ac0 100644
--- a/examples/sntp-time-sync/main.c
+++ b/examples/sntp-time-sync/main.c
@@ -23,7 +23,7 @@ time_t my_time(time_t *tp) {
}
// SNTP client callback
-static void sfn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void sfn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_SNTP_TIME) {
int64_t t = *(int64_t *) ev_data;
MG_INFO(("Got SNTP time: %lld ms from epoch", t));
@@ -31,7 +31,7 @@ static void sfn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
} else if (ev == MG_EV_CLOSE) {
s_sntp_conn = NULL;
}
- (void) fn_data, (void) c;
+ (void) c;
}
// Called every 5 seconds. Increase that for production case.
diff --git a/examples/socks5-server/main.c b/examples/socks5-server/main.c
index bcdc862d..f673147a 100644
--- a/examples/socks5-server/main.c
+++ b/examples/socks5-server/main.c
@@ -79,14 +79,13 @@ static void exchange(struct mg_connection *c) {
}
}
-static void fn2(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void fn2(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_READ) {
exchange(c);
} else if (ev == MG_EV_CLOSE) {
disband(c);
}
(void) ev_data;
- (void) fn_data;
}
// Request, https://www.ietf.org/rfc/rfc1928.txt paragraph 4
@@ -149,7 +148,7 @@ static void request(struct mg_connection *c) {
c->data[0] = STATE_ESTABLISHED; // Mark ourselves as connected
}
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_READ) {
// We use the first label byte as a state
if (c->data[0] == STATE_HANDSHAKE) handshake(c);
@@ -158,7 +157,6 @@ static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
} else if (ev == MG_EV_CLOSE) {
disband(c);
}
- (void) fn_data;
(void) ev_data;
}
diff --git a/examples/stm32/nucleo-f429zi-make-baremetal-builtin-rndis/main.c b/examples/stm32/nucleo-f429zi-make-baremetal-builtin-rndis/main.c
index 228c90e3..dce94871 100644
--- a/examples/stm32/nucleo-f429zi-make-baremetal-builtin-rndis/main.c
+++ b/examples/stm32/nucleo-f429zi-make-baremetal-builtin-rndis/main.c
@@ -63,7 +63,7 @@ static bool usb_up(struct mg_tcpip_if *ifp) {
return tud_inited() && tud_ready() && tud_connected();
}
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_HTTP_MSG) {
struct mg_http_message *hm = (struct mg_http_message *) ev_data;
if (mg_http_match_uri(hm, "/api/debug")) {
@@ -74,7 +74,6 @@ static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
mg_http_reply(c, 200, "", "hi\n");
}
}
- (void) fn_data;
}
int main(void) {
diff --git a/examples/stm32/nucleo-f746zg-make-baremetal-builtin-rndis/main.c b/examples/stm32/nucleo-f746zg-make-baremetal-builtin-rndis/main.c
index 228c90e3..dce94871 100644
--- a/examples/stm32/nucleo-f746zg-make-baremetal-builtin-rndis/main.c
+++ b/examples/stm32/nucleo-f746zg-make-baremetal-builtin-rndis/main.c
@@ -63,7 +63,7 @@ static bool usb_up(struct mg_tcpip_if *ifp) {
return tud_inited() && tud_ready() && tud_connected();
}
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_HTTP_MSG) {
struct mg_http_message *hm = (struct mg_http_message *) ev_data;
if (mg_http_match_uri(hm, "/api/debug")) {
@@ -74,7 +74,6 @@ static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
mg_http_reply(c, 200, "", "hi\n");
}
}
- (void) fn_data;
}
int main(void) {
diff --git a/examples/stm32/nucleo-g031-make-baremetal-builtin/main.c b/examples/stm32/nucleo-g031-make-baremetal-builtin/main.c
index 4a0292b9..7a4be44c 100644
--- a/examples/stm32/nucleo-g031-make-baremetal-builtin/main.c
+++ b/examples/stm32/nucleo-g031-make-baremetal-builtin/main.c
@@ -42,8 +42,8 @@ static void timer_fn(void *arg) {
ifp->nerr));
}
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
- struct mg_tcpip_if *ifp = (struct mg_tcpip_if *) fn_data;
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
+ struct mg_tcpip_if *ifp = (struct mg_tcpip_if *) c->fn_data;
if (ev == MG_EV_HTTP_MSG) {
struct mg_http_message *hm = (struct mg_http_message *) ev_data;
if (mg_http_match_uri(hm, "/api/hello")) { // Request to /api/hello
diff --git a/examples/tcp/main.c b/examples/tcp/main.c
index e5175288..58938f64 100644
--- a/examples/tcp/main.c
+++ b/examples/tcp/main.c
@@ -13,8 +13,8 @@ static struct c_res_s {
} c_res;
// CLIENT event handler
-static void cfn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
- int *i = &((struct c_res_s *) fn_data)->i;
+static void cfn(struct mg_connection *c, int ev, void *ev_data) {
+ int *i = &((struct c_res_s *) c->fn_data)->i;
if (ev == MG_EV_OPEN) {
MG_INFO(("CLIENT has been initialized"));
} else if (ev == MG_EV_CONNECT) {
@@ -33,7 +33,7 @@ static void cfn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
} else if (ev == MG_EV_CLOSE) {
MG_INFO(("CLIENT disconnected"));
// signal we are done
- ((struct c_res_s *) fn_data)->c = NULL;
+ ((struct c_res_s *) c->fn_data)->c = NULL;
} else if (ev == MG_EV_ERROR) {
MG_INFO(("CLIENT error: %s", (char *) ev_data));
} else if (ev == MG_EV_POLL && *i != 0) {
@@ -51,7 +51,7 @@ static void cfn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
}
// SERVER event handler
-static void sfn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void sfn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_OPEN && c->is_listening == 1) {
MG_INFO(("SERVER is listening"));
} else if (ev == MG_EV_ACCEPT) {
@@ -72,7 +72,6 @@ static void sfn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
} else if (ev == MG_EV_ERROR) {
MG_INFO(("SERVER error: %s", (char *) ev_data));
}
- (void) fn_data;
}
// Timer function - recreate client connection if it is closed
diff --git a/examples/ti/ek-tm4c1294xl-make-baremetal-builtin-rndis/main.c b/examples/ti/ek-tm4c1294xl-make-baremetal-builtin-rndis/main.c
index c8ce33e3..750f4831 100644
--- a/examples/ti/ek-tm4c1294xl-make-baremetal-builtin-rndis/main.c
+++ b/examples/ti/ek-tm4c1294xl-make-baremetal-builtin-rndis/main.c
@@ -61,7 +61,7 @@ static bool usb_up(struct mg_tcpip_if *ifp) {
return tud_inited() && tud_ready() && tud_connected();
}
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_HTTP_MSG) {
struct mg_http_message *hm = (struct mg_http_message *) ev_data;
if (mg_http_match_uri(hm, "/api/debug")) {
@@ -72,7 +72,6 @@ static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
mg_http_reply(c, 200, "", "hi\n");
}
}
- (void) fn_data;
}
int main(void) {
diff --git a/examples/timers/main.c b/examples/timers/main.c
index 53f2acaa..656427ea 100644
--- a/examples/timers/main.c
+++ b/examples/timers/main.c
@@ -11,7 +11,7 @@ static const char *s_listen_on = "http://localhost:8000";
static const char *s_web_root = "web_root";
// This RESTful server implements the following endpoints:
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_HTTP_MSG) {
struct mg_http_message *hm = (struct mg_http_message *) ev_data;
if (mg_http_match_uri(hm, "/websocket")) {
@@ -28,7 +28,6 @@ static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
mg_ws_send(c, wm->data.ptr, wm->data.len, WEBSOCKET_OP_TEXT);
mg_iobuf_del(&c->recv, 0, c->recv.len);
}
- (void) fn_data;
}
static void timer_fn(void *arg) {
diff --git a/examples/uart-bridge/main.c b/examples/uart-bridge/main.c
index 378087d4..fa45c54a 100644
--- a/examples/uart-bridge/main.c
+++ b/examples/uart-bridge/main.c
@@ -4,7 +4,7 @@
#include "mongoose.h"
const char *s_listening_url = "http://0.0.0.0:8000";
-void uart_bridge_fn(struct mg_connection *, int, void *, void *);
+void uart_bridge_fn(struct mg_connection *, int, void *);
int main(void) {
struct mg_mgr mgr;
diff --git a/examples/uart-bridge/net.c b/examples/uart-bridge/net.c
index 91b7aecc..4984d8a9 100644
--- a/examples/uart-bridge/net.c
+++ b/examples/uart-bridge/net.c
@@ -64,24 +64,23 @@ void config_write(struct mg_str config) {
#endif
// Event handler for a connected Websocket client
-static void ws_fn(struct mg_connection *c, int ev, void *evd, void *fnd) {
+static void ws_fn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_HTTP_MSG) {
- mg_ws_upgrade(c, evd, NULL);
+ mg_ws_upgrade(c, ev_data, NULL);
} else if (ev == MG_EV_WS_OPEN) {
// c->is_hexdumping = 1;
c->data[0] = 'W'; // When WS handhake is done, mark us as WS client
} else if (ev == MG_EV_WS_MSG) {
- struct mg_ws_message *wm = (struct mg_ws_message *) evd;
+ struct mg_ws_message *wm = (struct mg_ws_message *) ev_data;
uart_write(wm->data.ptr, wm->data.len); // Send to UART
c->recv.len = 0; // Discard received data
} else if (ev == MG_EV_CLOSE) {
if (c->is_listening) s_state.websocket.c = NULL;
}
- (void) fnd;
}
// Event handler for a connected TCP client
-static void tcp_fn(struct mg_connection *c, int ev, void *evd, void *fnd) {
+static void tcp_fn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_ACCEPT) {
// c->is_hexdumping = 1;
c->data[0] = 'T'; // When client is connected, mark us as TCP client
@@ -91,7 +90,7 @@ static void tcp_fn(struct mg_connection *c, int ev, void *evd, void *fnd) {
} else if (ev == MG_EV_CLOSE) {
if (c->is_listening) s_state.tcp.c = NULL;
}
- (void) fnd, (void) evd;
+ (void) ev_data;
}
// Extract topic name from the MQTT address
@@ -102,7 +101,7 @@ static struct mg_str mqtt_topic(const char *name, const char *dflt) {
}
// Event handler for MQTT connection
-static void mq_fn(struct mg_connection *c, int ev, void *evd, void *fnd) {
+static void mq_fn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_OPEN) {
// c->is_hexdumping = 1;
} else if (ev == MG_EV_MQTT_OPEN) {
@@ -113,12 +112,11 @@ static void mq_fn(struct mg_connection *c, int ev, void *evd, void *fnd) {
sub_opts.qos = 1;
mg_mqtt_sub(c, &sub_opts); // Subscribe to RX topic
} else if (ev == MG_EV_MQTT_MSG) {
- struct mg_mqtt_message *mm = evd; // MQTT message
+ struct mg_mqtt_message *mm = ev_data; // MQTT message
uart_write(mm->data.ptr, mm->data.len); // Send to UART
} else if (ev == MG_EV_CLOSE) {
s_state.mqtt.c = NULL;
}
- (void) fnd, (void) evd;
}
// Software timer with a frequency close to the scheduling time slot
diff --git a/examples/udp-ssdp-search/main.c b/examples/udp-ssdp-search/main.c
index 4315ddab..70e0c293 100644
--- a/examples/udp-ssdp-search/main.c
+++ b/examples/udp-ssdp-search/main.c
@@ -5,8 +5,8 @@
static const char *s_ssdp_url = "udp://239.255.255.250:1900";
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
- MG_DEBUG(("%p got event: %d %p %p", c, ev, ev_data, fn_data));
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
+ MG_DEBUG(("%p got event: %d %p", c, ev, ev_data));
if (ev == MG_EV_OPEN) {
// c->is_hexdumping = 1;
} else if (ev == MG_EV_RESOLVE) {
diff --git a/examples/video-stream/main.c b/examples/video-stream/main.c
index 441386c9..5bd731d5 100644
--- a/examples/video-stream/main.c
+++ b/examples/video-stream/main.c
@@ -6,7 +6,7 @@
// HTTP request handler function. It implements the following endpoints:
// /api/video1 - hangs forever, returns MJPEG video stream
// all other URI - serves web_root/ directory
-static void cb(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void cb(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_HTTP_MSG) {
struct mg_http_message *hm = (struct mg_http_message *) ev_data;
if (mg_http_match_uri(hm, "/api/video1")) {
@@ -22,7 +22,6 @@ static void cb(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
mg_http_serve_dir(c, ev_data, &opts);
}
}
- (void) fn_data;
}
// The image stream is simulated by sending MJPEG frames specified by the
diff --git a/examples/wch/ch32v307-make-baremetal-builtin/main.c b/examples/wch/ch32v307-make-baremetal-builtin/main.c
index 981634c5..571744b3 100644
--- a/examples/wch/ch32v307-make-baremetal-builtin/main.c
+++ b/examples/wch/ch32v307-make-baremetal-builtin/main.c
@@ -59,7 +59,7 @@ void SysTick_Init(void) {
}
// https://mongoose.ws/documentation/#2-minute-integration-guide
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_HTTP_MSG) {
struct mg_http_message *hm = (struct mg_http_message *) ev_data;
mg_http_reply(c, 200, "", "ok %p %p\r\n", hm, fn_data);
diff --git a/examples/websocket-client/main.c b/examples/websocket-client/main.c
index bc21ea7c..6ef87067 100644
--- a/examples/websocket-client/main.c
+++ b/examples/websocket-client/main.c
@@ -10,7 +10,7 @@
static const char *s_url = "ws://localhost:8000/websocket";
// Print websocket response and signal that we're done
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_OPEN) {
c->is_hexdumping = 1;
} else if (ev == MG_EV_ERROR) {
@@ -26,7 +26,7 @@ static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
}
if (ev == MG_EV_ERROR || ev == MG_EV_CLOSE || ev == MG_EV_WS_MSG) {
- *(bool *) fn_data = true; // Signal that we're done
+ *(bool *) c->fn_data = true; // Signal that we're done
}
}
diff --git a/examples/websocket-server/main.c b/examples/websocket-server/main.c
index cacd2662..3c96c488 100644
--- a/examples/websocket-server/main.c
+++ b/examples/websocket-server/main.c
@@ -12,7 +12,7 @@ static const char *s_web_root = ".";
// /websocket - upgrade to Websocket, and implement websocket echo server
// /rest - respond with JSON string {"result": 123}
// any other URI serves static files from s_web_root
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_OPEN) {
// c->is_hexdumping = 1;
} else if (ev == MG_EV_HTTP_MSG) {
@@ -34,7 +34,6 @@ static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
struct mg_ws_message *wm = (struct mg_ws_message *) ev_data;
mg_ws_send(c, wm->data.ptr, wm->data.len, WEBSOCKET_OP_TEXT);
}
- (void) fn_data;
}
int main(void) {
diff --git a/examples/webui-login/main.c b/examples/webui-login/main.c
index 99d50a30..0704fb70 100644
--- a/examples/webui-login/main.c
+++ b/examples/webui-login/main.c
@@ -43,7 +43,7 @@ static struct user *getuser(struct mg_http_message *hm) {
return NULL;
}
-void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+void fn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_HTTP_MSG) {
struct mg_http_message *hm = (struct mg_http_message *) ev_data;
struct user *u = getuser(hm);
@@ -63,7 +63,6 @@ void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
mg_http_serve_dir(c, ev_data, &opts);
}
}
- (void) fn_data;
}
int main(void) {
diff --git a/examples/webui-plain/main.c b/examples/webui-plain/main.c
index 96825ad9..c126798e 100644
--- a/examples/webui-plain/main.c
+++ b/examples/webui-plain/main.c
@@ -29,7 +29,7 @@ static void update_config(struct mg_str json, const char *path, char **value) {
}
}
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_OPEN && c->is_listening) {
s_config.url = strdup(MQTT_SERVER);
s_config.pub = strdup(MQTT_PUBLISH_TOPIC);
@@ -52,7 +52,6 @@ static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
mg_http_serve_dir(c, ev_data, &opts);
}
}
- (void) fn_data;
}
int main(void) {
diff --git a/examples/webui-push-rest/main.c b/examples/webui-push-rest/main.c
index 5c67a2ce..0ef3b731 100644
--- a/examples/webui-push-rest/main.c
+++ b/examples/webui-push-rest/main.c
@@ -37,7 +37,7 @@ static size_t printdata(mg_pfn_t out, void *ptr, va_list *ap) {
(void) ap;
}
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_HTTP_MSG) {
struct mg_http_message *hm = ev_data;
if (mg_http_match_uri(hm, "/api/data")) {
@@ -58,7 +58,6 @@ static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
mg_http_serve_dir(c, hm, &opts);
}
}
- (void) fn_data;
}
static void timer_fn(void *arg) {
diff --git a/examples/webui-push-ws/main.c b/examples/webui-push-ws/main.c
index cf6226df..f66fdcdb 100644
--- a/examples/webui-push-ws/main.c
+++ b/examples/webui-push-ws/main.c
@@ -10,7 +10,7 @@
static const char *s_listen_on = "http://localhost:8000";
static const char *s_web_root = "web_root";
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_HTTP_MSG) {
struct mg_http_message *hm = (struct mg_http_message *) ev_data;
if (mg_http_match_uri(hm, "/api/watch")) {
@@ -21,7 +21,6 @@ static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
mg_http_serve_dir(c, ev_data, &opts);
}
}
- (void) fn_data;
}
// Push to all watchers
diff --git a/examples/webui-rest/main.c b/examples/webui-rest/main.c
index 155bcf9c..43177703 100644
--- a/examples/webui-rest/main.c
+++ b/examples/webui-rest/main.c
@@ -13,7 +13,7 @@
static const char *s_http_addr = "http://localhost:8000"; // HTTP port
static const char *s_root_dir = "web_root";
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_HTTP_MSG) {
struct mg_http_message *hm = (struct mg_http_message *) ev_data;
if (mg_http_match_uri(hm, "/api/f1")) {
@@ -34,7 +34,6 @@ static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
mg_http_serve_dir(c, hm, &opts);
}
}
- (void) fn_data;
}
int main(void) {
diff --git a/examples/wifi-router-dashboard/net.c b/examples/wifi-router-dashboard/net.c
index d88a574d..7591fcae 100644
--- a/examples/wifi-router-dashboard/net.c
+++ b/examples/wifi-router-dashboard/net.c
@@ -109,7 +109,7 @@ static int event_next(int no, struct event *e) {
// SNTP connection event handler. When we get a response from an SNTP server,
// adjust s_boot_timestamp. We'll get a valid time from that point on
-static void sfn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void sfn(struct mg_connection *c, int ev, void *ev_data) {
uint64_t *expiration_time = (uint64_t *) c->data;
if (ev == MG_EV_OPEN) {
*expiration_time = mg_millis() + 3000; // Store expiration time in 3s
@@ -120,7 +120,6 @@ static void sfn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
} else if (ev == MG_EV_POLL) {
if (mg_millis() > *expiration_time) c->is_closing = 1;
}
- (void) fn_data;
}
static void timer_sntp_fn(void *param) { // SNTP timer function. Sync up time
@@ -271,9 +270,9 @@ static void handle_dhcp_get(struct mg_connection *c) {
}
// HTTP request handler function
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_ACCEPT) {
- if (fn_data != NULL) { // TLS
+ if (c->fn_data != NULL) { // TLS
struct mg_tls_opts opts = {0};
opts.cert = mg_str(s_tls_cert);
opts.key = mg_str(s_tls_key);
@@ -316,7 +315,6 @@ static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
hm->method.ptr, (int) hm->uri.len, hm->uri.ptr, (int) 3,
&c->send.buf[9]));
}
- (void) fn_data;
}
void web_init(struct mg_mgr *mgr) {
diff --git a/examples/zephyr/http-client/src/main.c b/examples/zephyr/http-client/src/main.c
index 9f786aac..a2c77df5 100644
--- a/examples/zephyr/http-client/src/main.c
+++ b/examples/zephyr/http-client/src/main.c
@@ -14,7 +14,7 @@ static int s_connected = 0;
static bool done = false;
// Print HTTP response and signal that we're done
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_OPEN) {
// Connection created. Store connect expiration time in c->data
*(int64_t *) c->data = mg_millis() + s_timeout_ms;
@@ -49,9 +49,9 @@ static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
struct mg_http_message *hm = (struct mg_http_message *) ev_data;
MG_INFO(("%.*s", (int) hm->message.len, hm->message.ptr));
c->is_draining = 1; // Tell mongoose to close this connection
- *(bool *) fn_data = true; // Tell event loop to stop
+ *(bool *) c->fn_data = true; // Tell event loop to stop
} else if (ev == MG_EV_ERROR) {
- *(bool *) fn_data = true; // Error, tell event loop to stop
+ *(bool *) c->fn_data = true; // Error, tell event loop to stop
}
}
@@ -63,7 +63,7 @@ time_t ourtime(time_t *tp) {
}
// SNTP callback. Modifies s_boot_timestamp, to make ourtime() correct
-static void sfn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void sfn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_SNTP_TIME) {
int64_t t = *(int64_t *) ev_data;
MG_INFO(("Got SNTP time: %lld ms from epoch", t));
diff --git a/examples/zephyr/http-server/src/main.c b/examples/zephyr/http-server/src/main.c
index 6f250f5a..b306fdb0 100644
--- a/examples/zephyr/http-server/src/main.c
+++ b/examples/zephyr/http-server/src/main.c
@@ -11,8 +11,8 @@ static time_t s_boot_timestamp = 0;
static struct mg_connection *s_sntp_conn = NULL;
// Event handler for the listening HTTP/HTTPS connection.
-static void wcb(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
- if (ev == MG_EV_ACCEPT && fn_data != NULL) {
+static void wcb(struct mg_connection *c, int ev, void *ev_data) {
+ if (ev == MG_EV_ACCEPT && c->fn_data != NULL) {
struct mg_tls_opts opts = {.cert = s_ssl_cert, .key = s_ssl_key};
mg_tls_init(c, &opts);
} else if (ev == MG_EV_HTTP_MSG) {
@@ -49,7 +49,7 @@ time_t ourtime(time_t *tp) {
}
// SNTP callback. Modifies s_boot_timestamp, to make ourtime() correct
-static void sfn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void sfn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_SNTP_TIME) {
int64_t t = *(int64_t *) ev_data;
MG_INFO(("Got SNTP time: %lld ms from epoch", t));
diff --git a/examples/zephyr/mqtt-aws-client/src/main.c b/examples/zephyr/mqtt-aws-client/src/main.c
index 606b433f..2d88bdeb 100644
--- a/examples/zephyr/mqtt-aws-client/src/main.c
+++ b/examples/zephyr/mqtt-aws-client/src/main.c
@@ -16,7 +16,7 @@ static const char *s_tx_topic = "d/tx";
static int s_qos = 1;
static int s_connected = 0;
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_OPEN) {
// c->is_hexdumping = 1;
} else if (ev == MG_EV_ERROR) {
@@ -67,7 +67,7 @@ time_t ourtime(time_t *tp) {
}
// SNTP callback. Modifies s_boot_timestamp, to make ourtime() correct
-static void sfn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void sfn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_SNTP_TIME) {
int64_t t = *(int64_t *) ev_data;
MG_INFO(("Got SNTP time: %lld ms from epoch", t));
diff --git a/examples/zephyr/websocket-server/src/main.c b/examples/zephyr/websocket-server/src/main.c
index ee9aa69c..ecf5d0e9 100644
--- a/examples/zephyr/websocket-server/src/main.c
+++ b/examples/zephyr/websocket-server/src/main.c
@@ -13,10 +13,10 @@ static struct mg_connection *s_sntp_conn = NULL;
// This RESTful server implements the following endpoints:
// /websocket - upgrade to Websocket, and implement websocket echo server
// /api/rest - respond with JSON string {"result": 123}
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_OPEN) {
c->is_hexdumping = 1;
- } else if (ev == MG_EV_ACCEPT && fn_data != NULL) {
+ } else if (ev == MG_EV_ACCEPT && c->fn_data != NULL) {
struct mg_tls_opts opts = {.cert = s_ssl_cert, .key = s_ssl_key};
mg_tls_init(c, &opts);
} else if (ev == MG_EV_HTTP_MSG) {
@@ -35,7 +35,6 @@ static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
MG_INFO(("Got wm: %p, data: %p, %d = %*.s", wm, wm->data.ptr, wm->data.len, wm->data.len, wm->data.ptr));
mg_ws_send(c, wm->data.ptr, wm->data.len, WEBSOCKET_OP_TEXT);
}
- (void) fn_data;
}
// example system time()-like function
@@ -46,7 +45,7 @@ time_t ourtime(time_t *tp) {
}
// SNTP callback. Modifies s_boot_timestamp, to make ourtime() correct
-static void sfn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void sfn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_SNTP_TIME) {
int64_t t = *(int64_t *) ev_data;
MG_INFO(("Got SNTP time: %lld ms from epoch", t));
diff --git a/mongoose.c b/mongoose.c
index b892772c..b3d8d1cd 100644
--- a/mongoose.c
+++ b/mongoose.c
@@ -852,8 +852,7 @@ bool mg_dns_parse(const uint8_t *buf, size_t len, struct mg_dns_message *dm) {
return true;
}
-static void dns_cb(struct mg_connection *c, int ev, void *ev_data,
- void *fn_data) {
+static void dns_cb(struct mg_connection *c, int ev, void *ev_data) {
struct dns_data *d, *tmp;
struct dns_data **head = (struct dns_data **) &c->mgr->active_dns_requests;
if (ev == MG_EV_POLL) {
@@ -907,7 +906,6 @@ static void dns_cb(struct mg_connection *c, int ev, void *ev_data,
mg_dns_free(head, d);
}
}
- (void) fn_data;
}
static bool mg_dns_send(struct mg_connection *c, const struct mg_str *name,
@@ -1006,8 +1004,8 @@ void mg_call(struct mg_connection *c, int ev, void *ev_data) {
// Run user-defined handler first, in order to give it an ability
// to intercept processing (e.g. clean input buffer) before the
// protocol handler kicks in
- if (c->fn != NULL) c->fn(c, ev, ev_data, c->fn_data);
- if (c->pfn != NULL) c->pfn(c, ev, ev_data, c->pfn_data);
+ if (c->fn != NULL) c->fn(c, ev, ev_data);
+ if (c->pfn != NULL) c->pfn(c, ev, ev_data);
}
void mg_error(struct mg_connection *c, const char *fmt, ...) {
@@ -1018,7 +1016,7 @@ void mg_error(struct mg_connection *c, const char *fmt, ...) {
va_end(ap);
MG_ERROR(("%lu %ld %s", c->id, c->fd, buf));
c->is_closing = 1; // Set is_closing before sending MG_EV_CALL
- mg_call(c, MG_EV_ERROR, buf); // Let user handler to override it
+ mg_call(c, MG_EV_ERROR, buf); // Let user handler override it
}
#ifdef MG_ENABLE_LINES
@@ -2286,7 +2284,7 @@ void mg_http_reply(struct mg_connection *c, int code, const char *headers,
c->is_resp = 0;
}
-static void http_cb(struct mg_connection *, int, void *, void *);
+static void http_cb(struct mg_connection *, int, void *);
static void restore_http_cb(struct mg_connection *c) {
mg_fs_close((struct mg_fd *) c->pfn_data);
c->pfn_data = NULL;
@@ -2300,10 +2298,9 @@ char *mg_http_etag(char *buf, size_t len, size_t size, time_t mtime) {
return buf;
}
-static void static_cb(struct mg_connection *c, int ev, void *ev_data,
- void *fn_data) {
+static void static_cb(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_WRITE || ev == MG_EV_POLL) {
- struct mg_fd *fd = (struct mg_fd *) fn_data;
+ struct mg_fd *fd = (struct mg_fd *) c->pfn_data;
// Read to send IO buffer directly, avoid extra on-stack buffer
size_t n, max = MG_IO_SIZE, space;
size_t *cl = (size_t *) &c->data[(sizeof(c->data) - sizeof(size_t)) /
@@ -2828,7 +2825,7 @@ static int skip_chunk(const char *buf, int len, int *pl, int *dl) {
return i + 2 + n + 2;
}
-static void http_cb(struct mg_connection *c, int ev, void *evd, void *fnd) {
+static void http_cb(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_READ || ev == MG_EV_CLOSE) {
struct mg_http_message hm;
size_t ofs = 0; // Parsing offset
@@ -2890,10 +2887,10 @@ static void http_cb(struct mg_connection *c, int ev, void *evd, void *fnd) {
}
if (ofs > 0) mg_iobuf_del(&c->recv, 0, ofs); // Delete processed data
}
- (void) evd, (void) fnd;
+ (void) ev_data;
}
-static void mg_hfn(struct mg_connection *c, int ev, void *ev_data, void *fnd) {
+static void mg_hfn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_HTTP_MSG) {
struct mg_http_message *hm = (struct mg_http_message *) ev_data;
if (mg_http_match_uri(hm, "/quit")) {
@@ -2908,7 +2905,7 @@ static void mg_hfn(struct mg_connection *c, int ev, void *ev_data, void *fnd) {
mg_http_reply(c, 200, "", "hi\n");
}
} else if (ev == MG_EV_CLOSE) {
- if (c->data[0] == 'X') *(bool *) fnd = true;
+ if (c->data[0] == 'X') *(bool *) c->fn_data = true;
}
}
@@ -4062,7 +4059,8 @@ int mg_mqtt_parse(const uint8_t *buf, size_t len, uint8_t version,
}
if (p > end) return MQTT_MALFORMED;
if (version == 5 && p + 2 < end) {
- len_len = (uint32_t) decode_varint(p, (size_t) (end - p), &m->props_size);
+ len_len =
+ (uint32_t) decode_varint(p, (size_t) (end - p), &m->props_size);
if (!len_len) return MQTT_MALFORMED;
m->props_start = (size_t) (p + len_len - buf);
p += len_len + m->props_size;
@@ -4078,8 +4076,7 @@ int mg_mqtt_parse(const uint8_t *buf, size_t len, uint8_t version,
return MQTT_OK;
}
-static void mqtt_cb(struct mg_connection *c, int ev, void *ev_data,
- void *fn_data) {
+static void mqtt_cb(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_READ) {
for (;;) {
uint8_t version = c->is_mqtt5 ? 5 : 4;
@@ -4147,7 +4144,6 @@ static void mqtt_cb(struct mg_connection *c, int ev, void *ev_data,
}
}
(void) ev_data;
- (void) fn_data;
}
void mg_mqtt_ping(struct mg_connection *nc) {
@@ -4191,289 +4187,6 @@ struct mg_connection *mg_mqtt_listen(struct mg_mgr *mgr, const char *url,
return c;
}
-#ifdef MG_ENABLE_LINES
-#line 1 "src/net.c"
-#endif
-
-
-
-
-
-
-
-
-
-size_t mg_vprintf(struct mg_connection *c, const char *fmt, va_list *ap) {
- size_t old = c->send.len;
- mg_vxprintf(mg_pfn_iobuf, &c->send, fmt, ap);
- return c->send.len - old;
-}
-
-size_t mg_printf(struct mg_connection *c, const char *fmt, ...) {
- size_t len = 0;
- va_list ap;
- va_start(ap, fmt);
- len = mg_vprintf(c, fmt, &ap);
- va_end(ap);
- return len;
-}
-
-static bool mg_atonl(struct mg_str str, struct mg_addr *addr) {
- uint32_t localhost = mg_htonl(0x7f000001);
- if (mg_vcasecmp(&str, "localhost") != 0) return false;
- memcpy(addr->ip, &localhost, sizeof(uint32_t));
- addr->is_ip6 = false;
- return true;
-}
-
-static bool mg_atone(struct mg_str str, struct mg_addr *addr) {
- if (str.len > 0) return false;
- memset(addr->ip, 0, sizeof(addr->ip));
- addr->is_ip6 = false;
- return true;
-}
-
-static bool mg_aton4(struct mg_str str, struct mg_addr *addr) {
- uint8_t data[4] = {0, 0, 0, 0};
- size_t i, num_dots = 0;
- for (i = 0; i < str.len; i++) {
- if (str.ptr[i] >= '0' && str.ptr[i] <= '9') {
- int octet = data[num_dots] * 10 + (str.ptr[i] - '0');
- if (octet > 255) return false;
- data[num_dots] = (uint8_t) octet;
- } else if (str.ptr[i] == '.') {
- if (num_dots >= 3 || i == 0 || str.ptr[i - 1] == '.') return false;
- num_dots++;
- } else {
- return false;
- }
- }
- if (num_dots != 3 || str.ptr[i - 1] == '.') return false;
- memcpy(&addr->ip, data, sizeof(data));
- addr->is_ip6 = false;
- return true;
-}
-
-static bool mg_v4mapped(struct mg_str str, struct mg_addr *addr) {
- int i;
- uint32_t ipv4;
- if (str.len < 14) return false;
- if (str.ptr[0] != ':' || str.ptr[1] != ':' || str.ptr[6] != ':') return false;
- for (i = 2; i < 6; i++) {
- if (str.ptr[i] != 'f' && str.ptr[i] != 'F') return false;
- }
- // struct mg_str s = mg_str_n(&str.ptr[7], str.len - 7);
- if (!mg_aton4(mg_str_n(&str.ptr[7], str.len - 7), addr)) return false;
- memcpy(&ipv4, addr->ip, sizeof(ipv4));
- memset(addr->ip, 0, sizeof(addr->ip));
- addr->ip[10] = addr->ip[11] = 255;
- memcpy(&addr->ip[12], &ipv4, 4);
- addr->is_ip6 = true;
- return true;
-}
-
-static bool mg_aton6(struct mg_str str, struct mg_addr *addr) {
- size_t i, j = 0, n = 0, dc = 42;
- addr->scope_id = 0;
- if (str.len > 2 && str.ptr[0] == '[') str.ptr++, str.len -= 2;
- if (mg_v4mapped(str, addr)) return true;
- for (i = 0; i < str.len; i++) {
- if ((str.ptr[i] >= '0' && str.ptr[i] <= '9') ||
- (str.ptr[i] >= 'a' && str.ptr[i] <= 'f') ||
- (str.ptr[i] >= 'A' && str.ptr[i] <= 'F')) {
- unsigned long val;
- if (i > j + 3) return false;
- // MG_DEBUG(("%lu %lu [%.*s]", i, j, (int) (i - j + 1), &str.ptr[j]));
- val = mg_unhexn(&str.ptr[j], i - j + 1);
- addr->ip[n] = (uint8_t) ((val >> 8) & 255);
- addr->ip[n + 1] = (uint8_t) (val & 255);
- } else if (str.ptr[i] == ':') {
- j = i + 1;
- if (i > 0 && str.ptr[i - 1] == ':') {
- dc = n; // Double colon
- if (i > 1 && str.ptr[i - 2] == ':') return false;
- } else if (i > 0) {
- n += 2;
- }
- if (n > 14) return false;
- addr->ip[n] = addr->ip[n + 1] = 0; // For trailing ::
- } else if (str.ptr[i] == '%') { // Scope ID
- for (i = i + 1; i < str.len; i++) {
- if (str.ptr[i] < '0' || str.ptr[i] > '9') return false;
- addr->scope_id = (uint8_t) (addr->scope_id * 10);
- addr->scope_id = (uint8_t) (addr->scope_id + (str.ptr[i] - '0'));
- }
- } else {
- return false;
- }
- }
- if (n < 14 && dc == 42) return false;
- if (n < 14) {
- memmove(&addr->ip[dc + (14 - n)], &addr->ip[dc], n - dc + 2);
- memset(&addr->ip[dc], 0, 14 - n);
- }
-
- addr->is_ip6 = true;
- return true;
-}
-
-bool mg_aton(struct mg_str str, struct mg_addr *addr) {
- // MG_INFO(("[%.*s]", (int) str.len, str.ptr));
- return mg_atone(str, addr) || mg_atonl(str, addr) || mg_aton4(str, addr) ||
- mg_aton6(str, addr);
-}
-
-struct mg_connection *mg_alloc_conn(struct mg_mgr *mgr) {
- struct mg_connection *c =
- (struct mg_connection *) calloc(1, sizeof(*c) + mgr->extraconnsize);
- if (c != NULL) {
- c->mgr = mgr;
- c->send.align = c->recv.align = c->rtls.align = MG_IO_SIZE;
- c->id = ++mgr->nextid;
- MG_PROF_INIT(c);
- }
- return c;
-}
-
-void mg_close_conn(struct mg_connection *c) {
- mg_resolve_cancel(c); // Close any pending DNS query
- LIST_DELETE(struct mg_connection, &c->mgr->conns, c);
- if (c == c->mgr->dns4.c) c->mgr->dns4.c = NULL;
- if (c == c->mgr->dns6.c) c->mgr->dns6.c = NULL;
- // Order of operations is important. `MG_EV_CLOSE` event must be fired
- // before we deallocate received data, see #1331
- mg_call(c, MG_EV_CLOSE, NULL);
- MG_DEBUG(("%lu %ld closed", c->id, c->fd));
- MG_PROF_DUMP(c);
- MG_PROF_FREE(c);
-
- mg_tls_free(c);
- mg_iobuf_free(&c->recv);
- mg_iobuf_free(&c->send);
- mg_iobuf_free(&c->rtls);
- mg_bzero((unsigned char *) c, sizeof(*c));
- free(c);
-}
-
-struct mg_connection *mg_connect(struct mg_mgr *mgr, const char *url,
- mg_event_handler_t fn, void *fn_data) {
- struct mg_connection *c = NULL;
- if (url == NULL || url[0] == '\0') {
- MG_ERROR(("null url"));
- } else if ((c = mg_alloc_conn(mgr)) == NULL) {
- MG_ERROR(("OOM"));
- } else {
- LIST_ADD_HEAD(struct mg_connection, &mgr->conns, c);
- c->is_udp = (strncmp(url, "udp:", 4) == 0);
- c->fd = (void *) (size_t) MG_INVALID_SOCKET;
- c->fn = fn;
- c->is_client = true;
- c->fn_data = fn_data;
- MG_DEBUG(("%lu %ld %s", c->id, c->fd, url));
- mg_call(c, MG_EV_OPEN, (void *) url);
- mg_resolve(c, url);
- }
- return c;
-}
-
-struct mg_connection *mg_listen(struct mg_mgr *mgr, const char *url,
- mg_event_handler_t fn, void *fn_data) {
- struct mg_connection *c = NULL;
- if ((c = mg_alloc_conn(mgr)) == NULL) {
- MG_ERROR(("OOM %s", url));
- } else if (!mg_open_listener(c, url)) {
- MG_ERROR(("Failed: %s, errno %d", url, errno));
- MG_PROF_FREE(c);
- free(c);
- c = NULL;
- } else {
- c->is_listening = 1;
- c->is_udp = strncmp(url, "udp:", 4) == 0;
- LIST_ADD_HEAD(struct mg_connection, &mgr->conns, c);
- c->fn = fn;
- c->fn_data = fn_data;
- mg_call(c, MG_EV_OPEN, NULL);
- if (mg_url_is_ssl(url)) c->is_tls = 1; // Accepted connection must
- MG_DEBUG(("%lu %ld %s", c->id, c->fd, url));
- }
- return c;
-}
-
-struct mg_connection *mg_wrapfd(struct mg_mgr *mgr, int fd,
- mg_event_handler_t fn, void *fn_data) {
- struct mg_connection *c = mg_alloc_conn(mgr);
- if (c != NULL) {
- c->fd = (void *) (size_t) fd;
- c->fn = fn;
- c->fn_data = fn_data;
- MG_EPOLL_ADD(c);
- mg_call(c, MG_EV_OPEN, NULL);
- LIST_ADD_HEAD(struct mg_connection, &mgr->conns, c);
- }
- return c;
-}
-
-struct mg_timer *mg_timer_add(struct mg_mgr *mgr, uint64_t milliseconds,
- unsigned flags, void (*fn)(void *), void *arg) {
- struct mg_timer *t = (struct mg_timer *) calloc(1, sizeof(*t));
- if (t != NULL) {
- mg_timer_init(&mgr->timers, t, milliseconds, flags, fn, arg);
- t->id = mgr->timerid++;
- }
- return t;
-}
-
-long mg_io_recv(struct mg_connection *c, void *buf, size_t len) {
- if (c->rtls.len == 0) return MG_IO_WAIT;
- if (len > c->rtls.len) len = c->rtls.len;
- memcpy(buf, c->rtls.buf, len);
- mg_iobuf_del(&c->rtls, 0, len);
- return (long) len;
-}
-
-void mg_mgr_free(struct mg_mgr *mgr) {
- struct mg_connection *c;
- struct mg_timer *tmp, *t = mgr->timers;
- while (t != NULL) tmp = t->next, free(t), t = tmp;
- mgr->timers = NULL; // Important. Next call to poll won't touch timers
- for (c = mgr->conns; c != NULL; c = c->next) c->is_closing = 1;
- mg_mgr_poll(mgr, 0);
-#if MG_ENABLE_FREERTOS_TCP
- FreeRTOS_DeleteSocketSet(mgr->ss);
-#endif
- MG_DEBUG(("All connections closed"));
-#if MG_ENABLE_EPOLL
- if (mgr->epoll_fd >= 0) close(mgr->epoll_fd), mgr->epoll_fd = -1;
-#endif
- mg_tls_ctx_free(mgr);
-}
-
-void mg_mgr_init(struct mg_mgr *mgr) {
- memset(mgr, 0, sizeof(*mgr));
-#if MG_ENABLE_EPOLL
- if ((mgr->epoll_fd = epoll_create1(EPOLL_CLOEXEC)) < 0)
- MG_ERROR(("epoll_create1 errno %d", errno));
-#else
- mgr->epoll_fd = -1;
-#endif
-#if MG_ARCH == MG_ARCH_WIN32 && MG_ENABLE_WINSOCK
- // clang-format off
- { WSADATA data; WSAStartup(MAKEWORD(2, 2), &data); }
- // clang-format on
-#elif MG_ENABLE_FREERTOS_TCP
- mgr->ss = FreeRTOS_CreateSocketSet();
-#elif defined(__unix) || defined(__unix__) || defined(__APPLE__)
- // Ignore SIGPIPE signal, so if client cancels the request, it
- // won't kill the whole process.
- signal(SIGPIPE, SIG_IGN);
-#endif
- mgr->pipe = MG_INVALID_SOCKET;
- mgr->dnstimeout = 3000;
- mgr->dns4.url = "udp://8.8.8.8:53";
- mgr->dns6.url = "udp://[2001:4860:4860::8888]:53";
- mg_tls_ctx_init(mgr);
-}
-
#ifdef MG_ENABLE_LINES
#line 1 "src/net_builtin.c"
#endif
@@ -5583,6 +5296,289 @@ bool mg_send(struct mg_connection *c, const void *buf, size_t len) {
}
#endif // MG_ENABLE_TCPIP
+#ifdef MG_ENABLE_LINES
+#line 1 "src/net.c"
+#endif
+
+
+
+
+
+
+
+
+
+size_t mg_vprintf(struct mg_connection *c, const char *fmt, va_list *ap) {
+ size_t old = c->send.len;
+ mg_vxprintf(mg_pfn_iobuf, &c->send, fmt, ap);
+ return c->send.len - old;
+}
+
+size_t mg_printf(struct mg_connection *c, const char *fmt, ...) {
+ size_t len = 0;
+ va_list ap;
+ va_start(ap, fmt);
+ len = mg_vprintf(c, fmt, &ap);
+ va_end(ap);
+ return len;
+}
+
+static bool mg_atonl(struct mg_str str, struct mg_addr *addr) {
+ uint32_t localhost = mg_htonl(0x7f000001);
+ if (mg_vcasecmp(&str, "localhost") != 0) return false;
+ memcpy(addr->ip, &localhost, sizeof(uint32_t));
+ addr->is_ip6 = false;
+ return true;
+}
+
+static bool mg_atone(struct mg_str str, struct mg_addr *addr) {
+ if (str.len > 0) return false;
+ memset(addr->ip, 0, sizeof(addr->ip));
+ addr->is_ip6 = false;
+ return true;
+}
+
+static bool mg_aton4(struct mg_str str, struct mg_addr *addr) {
+ uint8_t data[4] = {0, 0, 0, 0};
+ size_t i, num_dots = 0;
+ for (i = 0; i < str.len; i++) {
+ if (str.ptr[i] >= '0' && str.ptr[i] <= '9') {
+ int octet = data[num_dots] * 10 + (str.ptr[i] - '0');
+ if (octet > 255) return false;
+ data[num_dots] = (uint8_t) octet;
+ } else if (str.ptr[i] == '.') {
+ if (num_dots >= 3 || i == 0 || str.ptr[i - 1] == '.') return false;
+ num_dots++;
+ } else {
+ return false;
+ }
+ }
+ if (num_dots != 3 || str.ptr[i - 1] == '.') return false;
+ memcpy(&addr->ip, data, sizeof(data));
+ addr->is_ip6 = false;
+ return true;
+}
+
+static bool mg_v4mapped(struct mg_str str, struct mg_addr *addr) {
+ int i;
+ uint32_t ipv4;
+ if (str.len < 14) return false;
+ if (str.ptr[0] != ':' || str.ptr[1] != ':' || str.ptr[6] != ':') return false;
+ for (i = 2; i < 6; i++) {
+ if (str.ptr[i] != 'f' && str.ptr[i] != 'F') return false;
+ }
+ // struct mg_str s = mg_str_n(&str.ptr[7], str.len - 7);
+ if (!mg_aton4(mg_str_n(&str.ptr[7], str.len - 7), addr)) return false;
+ memcpy(&ipv4, addr->ip, sizeof(ipv4));
+ memset(addr->ip, 0, sizeof(addr->ip));
+ addr->ip[10] = addr->ip[11] = 255;
+ memcpy(&addr->ip[12], &ipv4, 4);
+ addr->is_ip6 = true;
+ return true;
+}
+
+static bool mg_aton6(struct mg_str str, struct mg_addr *addr) {
+ size_t i, j = 0, n = 0, dc = 42;
+ addr->scope_id = 0;
+ if (str.len > 2 && str.ptr[0] == '[') str.ptr++, str.len -= 2;
+ if (mg_v4mapped(str, addr)) return true;
+ for (i = 0; i < str.len; i++) {
+ if ((str.ptr[i] >= '0' && str.ptr[i] <= '9') ||
+ (str.ptr[i] >= 'a' && str.ptr[i] <= 'f') ||
+ (str.ptr[i] >= 'A' && str.ptr[i] <= 'F')) {
+ unsigned long val;
+ if (i > j + 3) return false;
+ // MG_DEBUG(("%lu %lu [%.*s]", i, j, (int) (i - j + 1), &str.ptr[j]));
+ val = mg_unhexn(&str.ptr[j], i - j + 1);
+ addr->ip[n] = (uint8_t) ((val >> 8) & 255);
+ addr->ip[n + 1] = (uint8_t) (val & 255);
+ } else if (str.ptr[i] == ':') {
+ j = i + 1;
+ if (i > 0 && str.ptr[i - 1] == ':') {
+ dc = n; // Double colon
+ if (i > 1 && str.ptr[i - 2] == ':') return false;
+ } else if (i > 0) {
+ n += 2;
+ }
+ if (n > 14) return false;
+ addr->ip[n] = addr->ip[n + 1] = 0; // For trailing ::
+ } else if (str.ptr[i] == '%') { // Scope ID
+ for (i = i + 1; i < str.len; i++) {
+ if (str.ptr[i] < '0' || str.ptr[i] > '9') return false;
+ addr->scope_id = (uint8_t) (addr->scope_id * 10);
+ addr->scope_id = (uint8_t) (addr->scope_id + (str.ptr[i] - '0'));
+ }
+ } else {
+ return false;
+ }
+ }
+ if (n < 14 && dc == 42) return false;
+ if (n < 14) {
+ memmove(&addr->ip[dc + (14 - n)], &addr->ip[dc], n - dc + 2);
+ memset(&addr->ip[dc], 0, 14 - n);
+ }
+
+ addr->is_ip6 = true;
+ return true;
+}
+
+bool mg_aton(struct mg_str str, struct mg_addr *addr) {
+ // MG_INFO(("[%.*s]", (int) str.len, str.ptr));
+ return mg_atone(str, addr) || mg_atonl(str, addr) || mg_aton4(str, addr) ||
+ mg_aton6(str, addr);
+}
+
+struct mg_connection *mg_alloc_conn(struct mg_mgr *mgr) {
+ struct mg_connection *c =
+ (struct mg_connection *) calloc(1, sizeof(*c) + mgr->extraconnsize);
+ if (c != NULL) {
+ c->mgr = mgr;
+ c->send.align = c->recv.align = c->rtls.align = MG_IO_SIZE;
+ c->id = ++mgr->nextid;
+ MG_PROF_INIT(c);
+ }
+ return c;
+}
+
+void mg_close_conn(struct mg_connection *c) {
+ mg_resolve_cancel(c); // Close any pending DNS query
+ LIST_DELETE(struct mg_connection, &c->mgr->conns, c);
+ if (c == c->mgr->dns4.c) c->mgr->dns4.c = NULL;
+ if (c == c->mgr->dns6.c) c->mgr->dns6.c = NULL;
+ // Order of operations is important. `MG_EV_CLOSE` event must be fired
+ // before we deallocate received data, see #1331
+ mg_call(c, MG_EV_CLOSE, NULL);
+ MG_DEBUG(("%lu %ld closed", c->id, c->fd));
+ MG_PROF_DUMP(c);
+ MG_PROF_FREE(c);
+
+ mg_tls_free(c);
+ mg_iobuf_free(&c->recv);
+ mg_iobuf_free(&c->send);
+ mg_iobuf_free(&c->rtls);
+ mg_bzero((unsigned char *) c, sizeof(*c));
+ free(c);
+}
+
+struct mg_connection *mg_connect(struct mg_mgr *mgr, const char *url,
+ mg_event_handler_t fn, void *fn_data) {
+ struct mg_connection *c = NULL;
+ if (url == NULL || url[0] == '\0') {
+ MG_ERROR(("null url"));
+ } else if ((c = mg_alloc_conn(mgr)) == NULL) {
+ MG_ERROR(("OOM"));
+ } else {
+ LIST_ADD_HEAD(struct mg_connection, &mgr->conns, c);
+ c->is_udp = (strncmp(url, "udp:", 4) == 0);
+ c->fd = (void *) (size_t) MG_INVALID_SOCKET;
+ c->fn = fn;
+ c->is_client = true;
+ c->fn_data = fn_data;
+ MG_DEBUG(("%lu %ld %s", c->id, c->fd, url));
+ mg_call(c, MG_EV_OPEN, (void *) url);
+ mg_resolve(c, url);
+ }
+ return c;
+}
+
+struct mg_connection *mg_listen(struct mg_mgr *mgr, const char *url,
+ mg_event_handler_t fn, void *fn_data) {
+ struct mg_connection *c = NULL;
+ if ((c = mg_alloc_conn(mgr)) == NULL) {
+ MG_ERROR(("OOM %s", url));
+ } else if (!mg_open_listener(c, url)) {
+ MG_ERROR(("Failed: %s, errno %d", url, errno));
+ MG_PROF_FREE(c);
+ free(c);
+ c = NULL;
+ } else {
+ c->is_listening = 1;
+ c->is_udp = strncmp(url, "udp:", 4) == 0;
+ LIST_ADD_HEAD(struct mg_connection, &mgr->conns, c);
+ c->fn = fn;
+ c->fn_data = fn_data;
+ mg_call(c, MG_EV_OPEN, NULL);
+ if (mg_url_is_ssl(url)) c->is_tls = 1; // Accepted connection must
+ MG_DEBUG(("%lu %ld %s", c->id, c->fd, url));
+ }
+ return c;
+}
+
+struct mg_connection *mg_wrapfd(struct mg_mgr *mgr, int fd,
+ mg_event_handler_t fn, void *fn_data) {
+ struct mg_connection *c = mg_alloc_conn(mgr);
+ if (c != NULL) {
+ c->fd = (void *) (size_t) fd;
+ c->fn = fn;
+ c->fn_data = fn_data;
+ MG_EPOLL_ADD(c);
+ mg_call(c, MG_EV_OPEN, NULL);
+ LIST_ADD_HEAD(struct mg_connection, &mgr->conns, c);
+ }
+ return c;
+}
+
+struct mg_timer *mg_timer_add(struct mg_mgr *mgr, uint64_t milliseconds,
+ unsigned flags, void (*fn)(void *), void *arg) {
+ struct mg_timer *t = (struct mg_timer *) calloc(1, sizeof(*t));
+ if (t != NULL) {
+ mg_timer_init(&mgr->timers, t, milliseconds, flags, fn, arg);
+ t->id = mgr->timerid++;
+ }
+ return t;
+}
+
+long mg_io_recv(struct mg_connection *c, void *buf, size_t len) {
+ if (c->rtls.len == 0) return MG_IO_WAIT;
+ if (len > c->rtls.len) len = c->rtls.len;
+ memcpy(buf, c->rtls.buf, len);
+ mg_iobuf_del(&c->rtls, 0, len);
+ return (long) len;
+}
+
+void mg_mgr_free(struct mg_mgr *mgr) {
+ struct mg_connection *c;
+ struct mg_timer *tmp, *t = mgr->timers;
+ while (t != NULL) tmp = t->next, free(t), t = tmp;
+ mgr->timers = NULL; // Important. Next call to poll won't touch timers
+ for (c = mgr->conns; c != NULL; c = c->next) c->is_closing = 1;
+ mg_mgr_poll(mgr, 0);
+#if MG_ENABLE_FREERTOS_TCP
+ FreeRTOS_DeleteSocketSet(mgr->ss);
+#endif
+ MG_DEBUG(("All connections closed"));
+#if MG_ENABLE_EPOLL
+ if (mgr->epoll_fd >= 0) close(mgr->epoll_fd), mgr->epoll_fd = -1;
+#endif
+ mg_tls_ctx_free(mgr);
+}
+
+void mg_mgr_init(struct mg_mgr *mgr) {
+ memset(mgr, 0, sizeof(*mgr));
+#if MG_ENABLE_EPOLL
+ if ((mgr->epoll_fd = epoll_create1(EPOLL_CLOEXEC)) < 0)
+ MG_ERROR(("epoll_create1 errno %d", errno));
+#else
+ mgr->epoll_fd = -1;
+#endif
+#if MG_ARCH == MG_ARCH_WIN32 && MG_ENABLE_WINSOCK
+ // clang-format off
+ { WSADATA data; WSAStartup(MAKEWORD(2, 2), &data); }
+ // clang-format on
+#elif MG_ENABLE_FREERTOS_TCP
+ mgr->ss = FreeRTOS_CreateSocketSet();
+#elif defined(__unix) || defined(__unix__) || defined(__APPLE__)
+ // Ignore SIGPIPE signal, so if client cancels the request, it
+ // won't kill the whole process.
+ signal(SIGPIPE, SIG_IGN);
+#endif
+ mgr->pipe = MG_INVALID_SOCKET;
+ mgr->dnstimeout = 3000;
+ mgr->dns4.url = "udp://8.8.8.8:53";
+ mgr->dns6.url = "udp://[2001:4860:4860::8888]:53";
+ mg_tls_ctx_init(mgr);
+}
+
#ifdef MG_ENABLE_LINES
#line 1 "src/ota_dummy.c"
#endif
@@ -6630,7 +6626,7 @@ int64_t mg_sntp_parse(const unsigned char *buf, size_t len) {
return res;
}
-static void sntp_cb(struct mg_connection *c, int ev, void *evd, void *fnd) {
+static void sntp_cb(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_READ) {
int64_t milliseconds = mg_sntp_parse(c->recv.buf, c->recv.len);
if (milliseconds > 0) {
@@ -6644,8 +6640,7 @@ static void sntp_cb(struct mg_connection *c, int ev, void *evd, void *fnd) {
mg_sntp_request(c);
} else if (ev == MG_EV_CLOSE) {
}
- (void) fnd;
- (void) evd;
+ (void) ev_data;
}
void mg_sntp_request(struct mg_connection *c) {
@@ -7296,7 +7291,7 @@ static bool mg_socketpair(MG_SOCKET_TYPE sp[2], union usa usa[2]) {
}
// mg_wakeup() event handler
-static void wufn(struct mg_connection *c, int ev, void *evd, void *fnd) {
+static void wufn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_READ) {
unsigned long *id = (unsigned long *) c->recv.buf;
// MG_INFO(("Got data"));
@@ -7316,7 +7311,7 @@ static void wufn(struct mg_connection *c, int ev, void *evd, void *fnd) {
closesocket(c->mgr->pipe); // When we're closing, close the other
c->mgr->pipe = MG_INVALID_SOCKET; // side of the socketpair, too
}
- (void) evd, (void) fnd;
+ (void) ev_data;
}
bool mg_wakeup_init(struct mg_mgr *mgr) {
@@ -13736,8 +13731,7 @@ static bool mg_ws_client_handshake(struct mg_connection *c) {
return false; // Continue event handler
}
-static void mg_ws_cb(struct mg_connection *c, int ev, void *ev_data,
- void *fn_data) {
+static void mg_ws_cb(struct mg_connection *c, int ev, void *ev_data) {
struct ws_msg msg;
size_t ofs = (size_t) c->pfn_data;
@@ -13803,7 +13797,6 @@ static void mg_ws_cb(struct mg_connection *c, int ev, void *ev_data,
}
}
}
- (void) fn_data;
(void) ev_data;
}
diff --git a/mongoose.h b/mongoose.h
index ca54a243..aa4b815d 100644
--- a/mongoose.h
+++ b/mongoose.h
@@ -2096,7 +2096,7 @@ typedef uint64_t uECC_word_t;
struct mg_connection;
typedef void (*mg_event_handler_t)(struct mg_connection *, int ev,
- void *ev_data, void *fn_data);
+ void *ev_data);
void mg_call(struct mg_connection *c, int ev, void *ev_data);
void mg_error(struct mg_connection *c, const char *fmt, ...);
diff --git a/src/dns.c b/src/dns.c
index 675f20de..0df92881 100644
--- a/src/dns.c
+++ b/src/dns.c
@@ -134,8 +134,7 @@ bool mg_dns_parse(const uint8_t *buf, size_t len, struct mg_dns_message *dm) {
return true;
}
-static void dns_cb(struct mg_connection *c, int ev, void *ev_data,
- void *fn_data) {
+static void dns_cb(struct mg_connection *c, int ev, void *ev_data) {
struct dns_data *d, *tmp;
struct dns_data **head = (struct dns_data **) &c->mgr->active_dns_requests;
if (ev == MG_EV_POLL) {
@@ -189,7 +188,6 @@ static void dns_cb(struct mg_connection *c, int ev, void *ev_data,
mg_dns_free(head, d);
}
}
- (void) fn_data;
}
static bool mg_dns_send(struct mg_connection *c, const struct mg_str *name,
diff --git a/src/event.c b/src/event.c
index b50d246a..e6217f40 100644
--- a/src/event.c
+++ b/src/event.c
@@ -19,8 +19,8 @@ void mg_call(struct mg_connection *c, int ev, void *ev_data) {
// Run user-defined handler first, in order to give it an ability
// to intercept processing (e.g. clean input buffer) before the
// protocol handler kicks in
- if (c->fn != NULL) c->fn(c, ev, ev_data, c->fn_data);
- if (c->pfn != NULL) c->pfn(c, ev, ev_data, c->pfn_data);
+ if (c->fn != NULL) c->fn(c, ev, ev_data);
+ if (c->pfn != NULL) c->pfn(c, ev, ev_data);
}
void mg_error(struct mg_connection *c, const char *fmt, ...) {
@@ -31,5 +31,5 @@ void mg_error(struct mg_connection *c, const char *fmt, ...) {
va_end(ap);
MG_ERROR(("%lu %ld %s", c->id, c->fd, buf));
c->is_closing = 1; // Set is_closing before sending MG_EV_CALL
- mg_call(c, MG_EV_ERROR, buf); // Let user handler to override it
+ mg_call(c, MG_EV_ERROR, buf); // Let user handler override it
}
diff --git a/src/event.h b/src/event.h
index 8fb521d5..12414379 100644
--- a/src/event.h
+++ b/src/event.h
@@ -2,7 +2,7 @@
struct mg_connection;
typedef void (*mg_event_handler_t)(struct mg_connection *, int ev,
- void *ev_data, void *fn_data);
+ void *ev_data);
void mg_call(struct mg_connection *c, int ev, void *ev_data);
void mg_error(struct mg_connection *c, const char *fmt, ...);
diff --git a/src/http.c b/src/http.c
index c9488683..16608089 100644
--- a/src/http.c
+++ b/src/http.c
@@ -1,7 +1,7 @@
+#include "http.h"
#include "arch.h"
#include "base64.h"
#include "fmt.h"
-#include "http.h"
#include "json.h"
#include "log.h"
#include "net.h"
@@ -431,7 +431,7 @@ void mg_http_reply(struct mg_connection *c, int code, const char *headers,
c->is_resp = 0;
}
-static void http_cb(struct mg_connection *, int, void *, void *);
+static void http_cb(struct mg_connection *, int, void *);
static void restore_http_cb(struct mg_connection *c) {
mg_fs_close((struct mg_fd *) c->pfn_data);
c->pfn_data = NULL;
@@ -445,10 +445,9 @@ char *mg_http_etag(char *buf, size_t len, size_t size, time_t mtime) {
return buf;
}
-static void static_cb(struct mg_connection *c, int ev, void *ev_data,
- void *fn_data) {
+static void static_cb(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_WRITE || ev == MG_EV_POLL) {
- struct mg_fd *fd = (struct mg_fd *) fn_data;
+ struct mg_fd *fd = (struct mg_fd *) c->pfn_data;
// Read to send IO buffer directly, avoid extra on-stack buffer
size_t n, max = MG_IO_SIZE, space;
size_t *cl = (size_t *) &c->data[(sizeof(c->data) - sizeof(size_t)) /
@@ -973,7 +972,7 @@ static int skip_chunk(const char *buf, int len, int *pl, int *dl) {
return i + 2 + n + 2;
}
-static void http_cb(struct mg_connection *c, int ev, void *evd, void *fnd) {
+static void http_cb(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_READ || ev == MG_EV_CLOSE) {
struct mg_http_message hm;
size_t ofs = 0; // Parsing offset
@@ -1035,10 +1034,10 @@ static void http_cb(struct mg_connection *c, int ev, void *evd, void *fnd) {
}
if (ofs > 0) mg_iobuf_del(&c->recv, 0, ofs); // Delete processed data
}
- (void) evd, (void) fnd;
+ (void) ev_data;
}
-static void mg_hfn(struct mg_connection *c, int ev, void *ev_data, void *fnd) {
+static void mg_hfn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_HTTP_MSG) {
struct mg_http_message *hm = (struct mg_http_message *) ev_data;
if (mg_http_match_uri(hm, "/quit")) {
@@ -1053,7 +1052,7 @@ static void mg_hfn(struct mg_connection *c, int ev, void *ev_data, void *fnd) {
mg_http_reply(c, 200, "", "hi\n");
}
} else if (ev == MG_EV_CLOSE) {
- if (c->data[0] == 'X') *(bool *) fnd = true;
+ if (c->data[0] == 'X') *(bool *) c->fn_data = true;
}
}
diff --git a/src/mqtt.c b/src/mqtt.c
index 5301f586..8531424b 100644
--- a/src/mqtt.c
+++ b/src/mqtt.c
@@ -410,7 +410,8 @@ int mg_mqtt_parse(const uint8_t *buf, size_t len, uint8_t version,
}
if (p > end) return MQTT_MALFORMED;
if (version == 5 && p + 2 < end) {
- len_len = (uint32_t) decode_varint(p, (size_t) (end - p), &m->props_size);
+ len_len =
+ (uint32_t) decode_varint(p, (size_t) (end - p), &m->props_size);
if (!len_len) return MQTT_MALFORMED;
m->props_start = (size_t) (p + len_len - buf);
p += len_len + m->props_size;
@@ -426,8 +427,7 @@ int mg_mqtt_parse(const uint8_t *buf, size_t len, uint8_t version,
return MQTT_OK;
}
-static void mqtt_cb(struct mg_connection *c, int ev, void *ev_data,
- void *fn_data) {
+static void mqtt_cb(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_READ) {
for (;;) {
uint8_t version = c->is_mqtt5 ? 5 : 4;
@@ -495,7 +495,6 @@ static void mqtt_cb(struct mg_connection *c, int ev, void *ev_data,
}
}
(void) ev_data;
- (void) fn_data;
}
void mg_mqtt_ping(struct mg_connection *nc) {
diff --git a/src/sntp.c b/src/sntp.c
index 046ac6b5..b3f2962c 100644
--- a/src/sntp.c
+++ b/src/sntp.c
@@ -38,7 +38,7 @@ int64_t mg_sntp_parse(const unsigned char *buf, size_t len) {
return res;
}
-static void sntp_cb(struct mg_connection *c, int ev, void *evd, void *fnd) {
+static void sntp_cb(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_READ) {
int64_t milliseconds = mg_sntp_parse(c->recv.buf, c->recv.len);
if (milliseconds > 0) {
@@ -52,8 +52,7 @@ static void sntp_cb(struct mg_connection *c, int ev, void *evd, void *fnd) {
mg_sntp_request(c);
} else if (ev == MG_EV_CLOSE) {
}
- (void) fnd;
- (void) evd;
+ (void) ev_data;
}
void mg_sntp_request(struct mg_connection *c) {
diff --git a/src/sock.c b/src/sock.c
index 4823caec..6d98dd2a 100644
--- a/src/sock.c
+++ b/src/sock.c
@@ -620,7 +620,7 @@ static bool mg_socketpair(MG_SOCKET_TYPE sp[2], union usa usa[2]) {
}
// mg_wakeup() event handler
-static void wufn(struct mg_connection *c, int ev, void *evd, void *fnd) {
+static void wufn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_READ) {
unsigned long *id = (unsigned long *) c->recv.buf;
// MG_INFO(("Got data"));
@@ -640,7 +640,7 @@ static void wufn(struct mg_connection *c, int ev, void *evd, void *fnd) {
closesocket(c->mgr->pipe); // When we're closing, close the other
c->mgr->pipe = MG_INVALID_SOCKET; // side of the socketpair, too
}
- (void) evd, (void) fnd;
+ (void) ev_data;
}
bool mg_wakeup_init(struct mg_mgr *mgr) {
diff --git a/src/ws.c b/src/ws.c
index 38f904db..7fc8b116 100644
--- a/src/ws.c
+++ b/src/ws.c
@@ -163,8 +163,7 @@ static bool mg_ws_client_handshake(struct mg_connection *c) {
return false; // Continue event handler
}
-static void mg_ws_cb(struct mg_connection *c, int ev, void *ev_data,
- void *fn_data) {
+static void mg_ws_cb(struct mg_connection *c, int ev, void *ev_data) {
struct ws_msg msg;
size_t ofs = (size_t) c->pfn_data;
@@ -230,7 +229,6 @@ static void mg_ws_cb(struct mg_connection *c, int ev, void *ev_data,
}
}
}
- (void) fn_data;
(void) ev_data;
}
diff --git a/test/fuzz.c b/test/fuzz.c
index a0eb8d5a..5301c147 100644
--- a/test/fuzz.c
+++ b/test/fuzz.c
@@ -14,12 +14,11 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *, size_t);
int LLVMFuzzerTestOneInput(const uint8_t *, size_t);
#endif
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
struct mg_http_serve_opts opts = {.root_dir = "."};
if (ev == MG_EV_HTTP_MSG) {
mg_http_serve_dir(c, (struct mg_http_message *) ev_data, &opts);
}
- (void) fn_data;
}
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
@@ -110,7 +109,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
const char *url = "http://localhost:12345";
struct mg_connection *c = mg_http_connect(&mgr, url, fn, NULL);
mg_iobuf_add(&c->recv, 0, data, size);
- c->pfn(c, MG_EV_READ, NULL, NULL);
+ c->pfn(c, MG_EV_READ, NULL); // manually invoke protocol event handler
mg_mgr_free(&mgr);
free(pkt);
diff --git a/test/mip_tap_test.c b/test/mip_tap_test.c
index dcb8a93a..4fd1e3ef 100644
--- a/test/mip_tap_test.c
+++ b/test/mip_tap_test.c
@@ -59,18 +59,16 @@ struct Post_reply {
};
char *fetch(struct mg_mgr *mgr, const char *url, const char *post_data);
-static void f_http_fetch_query(struct mg_connection *c, int ev, void *ev_data,
- void *fn_data);
+static void f_http_fetch_query(struct mg_connection *c, int ev, void *ev_data);
int get_response_code(char *); // Returns HTTP status code from full char* msg
-static void f_http_fetch_query(struct mg_connection *c, int ev, void *ev_data,
- void *fn_data) {
+static void f_http_fetch_query(struct mg_connection *c, int ev, void *ev_data) {
static char *http_response = 0;
static bool http_response_allocated =
0; // So that we will update out parameter
unsigned int http_responses_received = 0;
struct Post_reply *post_reply_l;
- post_reply_l = (struct Post_reply *) fn_data;
+ post_reply_l = (struct Post_reply *) c->fn_data;
if (ev == MG_EV_CONNECT) {
mg_printf(c, post_reply_l->post);
@@ -159,8 +157,7 @@ static void test_http_fetch(struct mg_mgr *mgr) {
static struct mg_connection *s_conn;
static char s_topic[16];
-static void mqtt_fn(struct mg_connection *c, int ev, void *ev_data,
- void *fn_data) {
+static void mqtt_fn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_MQTT_OPEN) {
// MQTT connect is successful
struct mg_mqtt_opts sub_opts;
@@ -180,7 +177,7 @@ static void mqtt_fn(struct mg_connection *c, int ev, void *ev_data,
ASSERT(0);
if (mm->data.len != 2 || strcmp(mm->data.ptr, "hi")) ASSERT(0);
mg_mqtt_disconnect(c, NULL);
- *(bool *) fn_data = true;
+ *(bool *) c->fn_data = true;
} else if (ev == MG_EV_CLOSE) {
s_conn = NULL;
}
diff --git a/test/mip_test.c b/test/mip_test.c
index 5e2dcdd9..a143b999 100644
--- a/test/mip_test.c
+++ b/test/mip_test.c
@@ -30,25 +30,25 @@ static void test_statechange(void) {
onstatechange(&iface);
}
-static void ph(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
- if (ev == MG_EV_POLL) ++(*(int *) fn_data);
+static void ph(struct mg_connection *c, int ev, void *ev_data) {
+ if (ev == MG_EV_POLL) ++(*(int *) c->fn_data);
(void) c, (void) ev_data;
}
-static void fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
- (void) c, (void) ev, (void) ev_data, (void) fn_data;
+static void fn(struct mg_connection *c, int ev, void *ev_data) {
+ (void) c, (void) ev, (void) ev_data;
}
-static void frag_recv_fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void frag_recv_fn(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_ERROR) {
if (s_sent_fragment) {
ASSERT(strcmp((char*) ev_data, "Received fragmented packet") == 0);
}
}
- (void) c, (void) ev_data, (void) fn_data;
+ (void) c, (void) ev_data;
}
-static void frag_send_fn(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void frag_send_fn(struct mg_connection *c, int ev, void *ev_data) {
static bool s_sent;
static int s_seg_sizes[] = {416, 416, 368};
if (ev == MG_EV_POLL) {
@@ -60,7 +60,7 @@ static void frag_send_fn(struct mg_connection *c, int ev, void *ev_data, void *f
// Checking TCP segment sizes (ev_data points to the TCP payload length)
ASSERT(*(int *) ev_data == s_seg_sizes[s_seg_sent++]);
}
- (void) c, (void) ev_data, (void) fn_data;
+ (void) c, (void) ev_data;
}
static void test_poll(void) {
diff --git a/test/unit_test.c b/test/unit_test.c
index 79d1315a..a219b2a3 100644
--- a/test/unit_test.c
+++ b/test/unit_test.c
@@ -344,10 +344,10 @@ static void test_iobuf(void) {
mg_iobuf_free(&io);
}
-static void sntp_cb(struct mg_connection *c, int ev, void *evd, void *fnd) {
+static void sntp_cb(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_SNTP_TIME) {
- int64_t received = *(int64_t *) evd;
- *(int64_t *) fnd = received;
+ int64_t received = *(int64_t *) ev_data;
+ *(int64_t *) c->fn_data = received;
MG_DEBUG(("got time: %lld", received));
#if MG_ARCH == MG_ARCH_UNIX
struct timeval tv = {0, 0};
@@ -409,16 +409,16 @@ struct mqtt_data {
#define flags_released (1 << 3)
#define flags_completed (1 << 4)
-static void mqtt_cb(struct mg_connection *c, int ev, void *evd, void *fnd) {
- struct mqtt_data *test_data = (struct mqtt_data *) fnd;
+static void mqtt_cb(struct mg_connection *c, int ev, void *ev_data) {
+ struct mqtt_data *test_data = (struct mqtt_data *) c->fn_data;
char *buf = test_data->msg;
if (ev == MG_EV_MQTT_OPEN) {
- buf[0] = *(int *) evd == 0 ? 'X' : 'Y';
+ buf[0] = *(int *) ev_data == 0 ? 'X' : 'Y';
} else if (ev == MG_EV_CLOSE) {
buf[0] = 0;
} else if (ev == MG_EV_MQTT_CMD) {
- struct mg_mqtt_message *mm = (struct mg_mqtt_message *) evd;
+ struct mg_mqtt_message *mm = (struct mg_mqtt_message *) ev_data;
if (mm->cmd == MQTT_CMD_SUBACK) {
test_data->flags = flags_subscribed;
} else if (mm->cmd == MQTT_CMD_PUBACK) { // here we assume the broker
@@ -431,7 +431,7 @@ static void mqtt_cb(struct mg_connection *c, int ev, void *evd, void *fnd) {
test_data->flags |= flags_completed;
}
} else if (ev == MG_EV_MQTT_MSG) {
- struct mg_mqtt_message *mm = (struct mg_mqtt_message *) evd;
+ struct mg_mqtt_message *mm = (struct mg_mqtt_message *) ev_data;
snprintf(test_data->topic, test_data->topicsize, "%.*s",
(int) mm->topic.len, mm->topic.ptr);
snprintf(buf + 1, test_data->msgsize - 2, "%.*s", (int) mm->data.len,
@@ -686,8 +686,8 @@ static void test_mqtt(void) {
test_mqtt_ver(5);
}
-static void eh1(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
- struct mg_tls_opts *topts = (struct mg_tls_opts *) fn_data;
+static void eh1(struct mg_connection *c, int ev, void *ev_data) {
+ struct mg_tls_opts *topts = (struct mg_tls_opts *) c->fn_data;
if (ev == MG_EV_ACCEPT && topts != NULL) mg_tls_init(c, topts);
if (ev == MG_EV_HTTP_MSG) {
struct mg_http_message *hm = (struct mg_http_message *) ev_data;
@@ -751,7 +751,6 @@ static void eh1(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
struct mg_ws_message *wm = (struct mg_ws_message *) ev_data;
mg_ws_send(c, wm->data.ptr, wm->data.len, WEBSOCKET_OP_BINARY);
}
- (void) fn_data;
}
struct fetch_data {
@@ -759,8 +758,8 @@ struct fetch_data {
int code, closed;
};
-static void fcb(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
- struct fetch_data *fd = (struct fetch_data *) fn_data;
+static void fcb(struct mg_connection *c, int ev, void *ev_data) {
+ struct fetch_data *fd = (struct fetch_data *) c->fn_data;
if (ev == MG_EV_HTTP_MSG) {
struct mg_http_message *hm = (struct mg_http_message *) ev_data;
snprintf(fd->buf, FETCH_BUF_SIZE, "%.*s", (int) hm->message.len,
@@ -827,8 +826,8 @@ static bool cmpheader(const char *buf, const char *name, const char *value) {
return h != NULL && mg_strcmp(*h, mg_str(value)) == 0;
}
-static void wcb(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
- int *p = (int *) fn_data;
+static void wcb(struct mg_connection *c, int ev, void *ev_data) {
+ int *p = (int *) c->fn_data;
if (ev == MG_EV_WS_OPEN) {
struct mg_http_message *hm = (struct mg_http_message *) ev_data;
struct mg_str *wsproto = mg_http_get_header(hm, "Sec-WebSocket-Protocol");
@@ -848,7 +847,7 @@ static void wcb(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
}
}
-static void ew2(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void ew2(struct mg_connection *c, int ev, void *ev_data) {
size_t size = 65 * 1024 + 737;
if (ev == MG_EV_WS_OPEN) {
char *msg = (char *) calloc(1, size + 1);
@@ -866,7 +865,7 @@ static void ew2(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
if (wm->data.ptr[i] != 'A') ok = 0;
}
ASSERT(ok == 1);
- *(int *) fn_data = 1;
+ *(int *) c->fn_data = 1;
}
}
}
@@ -897,10 +896,10 @@ static void test_ws(void) {
ASSERT(mgr.conns == NULL);
}
-static void eh9(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void eh9(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_ERROR) {
ASSERT(!strcmp((char *) ev_data, "socket error"));
- *(int *) fn_data = 7;
+ *(int *) c->fn_data = 7;
}
(void) c;
}
@@ -1166,7 +1165,7 @@ static void test_http_server(void) {
ASSERT(mgr.conns == NULL);
}
-static void h4(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void h4(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_HTTP_MSG) {
struct mg_http_message *hm = (struct mg_http_message *) ev_data;
MG_INFO(("[%.*s %.*s] message len %d", (int) hm->method.len, hm->method.ptr,
@@ -1190,7 +1189,6 @@ static void h4(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
mg_http_serve_dir(c, hm, &opts);
}
}
- (void) fn_data;
}
static void test_http_404(void) {
@@ -1242,8 +1240,8 @@ static void test_tls(void) {
#endif
}
-static void f3(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
- int *ok = (int *) fn_data;
+static void f3(struct mg_connection *c, int ev, void *ev_data) {
+ int *ok = (int *) c->fn_data;
// MG_INFO(("%d", ev));
if (ev == MG_EV_CONNECT) {
// c->is_hexdumping = 1;
@@ -1358,27 +1356,27 @@ static void test_host_validation(void) {
#endif
}
-static void f4(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void f4(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_HTTP_MSG) {
struct mg_http_message *hm = (struct mg_http_message *) ev_data;
mg_printf(c, "HTTP/1.0 200 OK\n\n%.*s/%s", (int) hm->uri.len, hm->uri.ptr,
"abcdef");
- strcat((char *) fn_data, "m");
+ strcat((char *) c->fn_data, "m");
c->is_draining = 1;
} else if (ev == MG_EV_CLOSE) {
- strcat((char *) fn_data, "c");
+ strcat((char *) c->fn_data, "c");
}
}
-static void f4c(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void f4c(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_CONNECT) {
mg_printf(c, "GET /foo/bar HTTP/1.0\n\n");
} else if (ev == MG_EV_HTTP_MSG) {
struct mg_http_message *hm = (struct mg_http_message *) ev_data;
ASSERT(mg_strcmp(hm->body, mg_str("/foo/bar/abcdef")) == 0);
- strcat((char *) fn_data, "m");
+ strcat((char *) c->fn_data, "m");
} else if (ev == MG_EV_CLOSE) {
- strcat((char *) fn_data, "c");
+ strcat((char *) c->fn_data, "c");
}
}
@@ -1398,11 +1396,11 @@ static void test_http_no_content_length(void) {
ASSERT(mgr.conns == NULL);
}
-static void f5(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void f5(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_HTTP_MSG) {
struct mg_http_message *hm = (struct mg_http_message *) ev_data;
mg_http_reply(c, 200, "", "%.*s", (int) hm->uri.len, hm->uri.ptr);
- (*(int *) fn_data)++;
+ (*(int *) c->fn_data)++;
}
}
@@ -1616,7 +1614,7 @@ static void test_http_parse(void) {
}
}
-static void ehr(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void ehr(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_HTTP_MSG) {
struct mg_http_message *hm = (struct mg_http_message *) ev_data;
struct mg_http_serve_opts opts;
@@ -1624,7 +1622,6 @@ static void ehr(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
opts.root_dir = "./test/data";
mg_http_serve_dir(c, hm, &opts);
}
- (void) fn_data;
}
static void test_http_range(void) {
@@ -2109,10 +2106,10 @@ static void test_str(void) {
}
}
-static void fn1(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void fn1(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_ERROR) {
- free(*(char **) fn_data); // See #2263
- *(char **) fn_data = mg_mprintf("%s", (char *) ev_data);
+ free(*(char **) c->fn_data); // See #2263
+ *(char **) c->fn_data = mg_mprintf("%s", (char *) ev_data);
}
(void) c;
}
@@ -2329,7 +2326,7 @@ static void test_crc32(void) {
ASSERT(mg_crc32(mg_crc32(0, "ab", 2), "c", 1) == 891568578);
}
-static void us(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void us(struct mg_connection *c, int ev, void *ev_data) {
struct mg_http_message *hm = (struct mg_http_message *) ev_data;
if (ev == MG_EV_HTTP_MSG && mg_http_match_uri(hm, "/upload")) {
MG_DEBUG(("Got all %lu bytes!", (unsigned long) hm->body.len));
@@ -2340,11 +2337,10 @@ static void us(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
} else if (ev == MG_EV_HTTP_MSG) {
mg_http_reply(c, 200, "", "ok\n");
}
- (void) fn_data;
}
-static void uc(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
- const char **s = (const char **) fn_data;
+static void uc(struct mg_connection *c, int ev, void *ev_data) {
+ const char **s = (const char **) c->fn_data;
if (ev == MG_EV_OPEN) {
// c->is_hexdumping = 1;
} else if (ev == MG_EV_CONNECT) {
@@ -2360,7 +2356,6 @@ static void uc(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
ASSERT(mg_strcmp(hm->body, mg_str(*s)) == 0);
*s = NULL;
}
- (void) fn_data;
}
static void test_http_upload(void) {
@@ -2380,7 +2375,7 @@ static void test_http_upload(void) {
#define LONG_CHUNK "chunk with length taking up more than two hex digits"
-static void eX(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void eX(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_HTTP_MSG) {
mg_printf(c, "HTTP/1.1 200 OK\r\nTransfer-Encoding: chunked\r\n\r\n");
c->data[0] = 1;
@@ -2398,10 +2393,10 @@ static void eX(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
c->data[0] = 0;
}
}
- (void) ev_data, (void) fn_data;
+ (void) ev_data;
}
-static void eY(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void eY(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_HTTP_MSG) {
mg_printf(c, "HTTP/1.1 200 OK\r\nContent-Length: 4\r\n\r\n");
c->data[0] = 1;
@@ -2411,19 +2406,19 @@ static void eY(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
if (c->data[0] == 12) mg_send(c, "bc", 2);
if (c->data[0] == 30) mg_send(c, "d", 1), c->is_resp = 0, c->data[0] = 0;
}
- (void) ev_data, (void) fn_data;
+ (void) ev_data;
}
-static void eZ(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void eZ(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_HTTP_MSG) {
mg_http_reply(c, 200, "", "abcd");
}
- (void) ev_data, (void) fn_data;
+ (void) ev_data;
}
// Do not delete chunks as they arrive
-static void eh4(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
- uint32_t *crc = (uint32_t *) fn_data;
+static void eh4(struct mg_connection *c, int ev, void *ev_data) {
+ uint32_t *crc = (uint32_t *) c->fn_data;
if (ev == MG_EV_HTTP_MSG) {
struct mg_http_message *hm = (struct mg_http_message *) ev_data;
*crc = mg_crc32(*crc, hm->body.ptr, hm->body.len);
@@ -2486,8 +2481,8 @@ struct stream_status {
};
// Consume recv buffer after letting it reach MG_MAX_RECV_SIZE
-static void eh8(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
- struct stream_status *status = (struct stream_status *) fn_data;
+static void eh8(struct mg_connection *c, int ev, void *ev_data) {
+ struct stream_status *status = (struct stream_status *) c->fn_data;
if (c->is_listening) return;
ASSERT(c->recv.len <= MG_MAX_RECV_SIZE);
@@ -2523,19 +2518,17 @@ static void eh8(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
}
// Toggle c->is_full to prevent max_recv_buf_size reached read errors
-static void eh10(struct mg_connection *c, int ev, void *ev_data,
- void *fn_data) {
+static void eh10(struct mg_connection *c, int ev, void *ev_data) {
if (c->recv.len >= MG_MAX_RECV_SIZE && ev == MG_EV_READ) c->is_full = true;
- eh8(c, ev, ev_data, fn_data);
+ eh8(c, ev, ev_data);
if (c->recv.len < MG_MAX_RECV_SIZE && ev == MG_EV_POLL) c->is_full = false;
}
// Send buffer larger than MG_MAX_RECV_SIZE to server
-static void eh11(struct mg_connection *c, int ev, void *ev_data,
- void *fn_data) {
- struct stream_status *status = (struct stream_status *) fn_data;
+static void eh11(struct mg_connection *c, int ev, void *ev_data) {
+ struct stream_status *status = (struct stream_status *) c->fn_data;
if (ev == MG_EV_CONNECT) {
size_t len = MG_MAX_RECV_SIZE * 2;
struct mg_iobuf buf = {NULL, 0, 0, 0};
@@ -2548,7 +2541,6 @@ static void eh11(struct mg_connection *c, int ev, void *ev_data,
mg_iobuf_free(&buf);
}
(void) ev_data;
- (void) fn_data;
}
static void test_http_stream_buffer(void) {
@@ -2601,7 +2593,7 @@ static void test_multipart(void) {
ASSERT(mg_http_next_multipart(mg_str(s), ofs, &part) == 0);
}
-static void eh7(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void eh7(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_HTTP_MSG) {
struct mg_http_message *hm = (struct mg_http_message *) ev_data;
struct mg_http_serve_opts sopts;
@@ -2610,7 +2602,6 @@ static void eh7(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
sopts.fs = &mg_fs_packed;
mg_http_serve_dir(c, hm, &sopts);
}
- (void) fn_data;
}
static void test_packed(void) {
@@ -2655,14 +2646,14 @@ int send(int sock, const void *buf, size_t len, int flags) {
}
#endif
-static void u1(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void u1(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_CONNECT) {
- ((int *) fn_data)[0] += 1;
+ ((int *) c->fn_data)[0] += 1;
mg_send(c, "hi", 2);
} else if (ev == MG_EV_WRITE) {
- ((int *) fn_data)[0] += 100;
+ ((int *) c->fn_data)[0] += 100;
} else if (ev == MG_EV_READ) {
- ((int *) fn_data)[0] += 10;
+ ((int *) c->fn_data)[0] += 10;
mg_iobuf_free(&c->recv);
}
(void) ev_data;
@@ -2698,7 +2689,7 @@ static void test_check_ip_acl(void) {
-1); // not yet supported
}
-static void w3(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void w3(struct mg_connection *c, int ev, void *ev_data) {
// MG_INFO(("ev %d", ev));
if (ev == MG_EV_WS_OPEN) {
char buf[8192];
@@ -2711,20 +2702,20 @@ static void w3(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
} else if (ev == MG_EV_WS_MSG) {
struct mg_ws_message *wm = (struct mg_ws_message *) ev_data;
ASSERT(mg_strcmp(wm->data, mg_str("lebowski")) == 0);
- ((int *) fn_data)[0]++;
+ ((int *) c->fn_data)[0]++;
} else if (ev == MG_EV_CLOSE) {
- ((int *) fn_data)[0] += 10;
+ ((int *) c->fn_data)[0] += 10;
}
}
-static void w2(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void w2(struct mg_connection *c, int ev, void *ev_data) {
struct mg_str msg = mg_str_n("lebowski", 8);
if (ev == MG_EV_HTTP_MSG) {
mg_ws_upgrade(c, (struct mg_http_message *) ev_data, NULL);
} else if (ev == MG_EV_WS_OPEN) {
mg_ws_send(c, "x", 1, WEBSOCKET_OP_PONG);
} else if (ev == MG_EV_POLL && c->is_websocket) {
- size_t ofs, n = (size_t) fn_data;
+ size_t ofs, n = (size_t) c->fn_data;
if (n < msg.len) {
// Send "msg" char by char using fragmented frames
// mg_ws_send() sets the FIN flag in the WS header. Clean it
@@ -2771,7 +2762,7 @@ static void test_ws_fragmentation(void) {
ASSERT(mgr.conns == NULL);
}
-static void h7(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
+static void h7(struct mg_connection *c, int ev, void *ev_data) {
if (ev == MG_EV_HTTP_MSG) {
struct mg_http_message *hm = (struct mg_http_message *) ev_data;
struct mg_http_serve_opts opts;
@@ -2779,7 +2770,6 @@ static void h7(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
opts.root_dir = "./test/data,/foo=./src";
mg_http_serve_dir(c, hm, &opts);
}
- (void) fn_data;
}
static void test_rewrites(void) {
@@ -3111,8 +3101,8 @@ static void test_rpc(void) {
ASSERT(head == NULL);
}
-static void ph(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {
- if (ev == MG_EV_POLL) ++(*(int *) fn_data);
+static void ph(struct mg_connection *c, int ev, void *ev_data) {
+ if (ev == MG_EV_POLL) ++(*(int *) c->fn_data);
(void) c, (void) ev_data;
}