From 75496b8b005bdfd520e7c44e33fa218089d61c8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Hru=C5=A1ka?= Date: Sat, 9 Sep 2017 19:13:21 +0200 Subject: [PATCH] Added content from old ESPTerm repo @ b8ed46cbea0b88730a2a6bad8375790158110910 --- .gitignore | 10 + _debug_replacements.php | 86 +++ _env.php.example | 3 + _pages.php | 50 ++ base.php | 186 +++++ build_html.php | 50 ++ css/.gitkeep | 0 dump_js_lang.php | 23 + favicon.ico | Bin 0 -> 318 bytes fontello/.gitignore | 1 + fontello/fontello.zip | Bin 0 -> 58847 bytes fontello/unpack.sh | 93 +++ img/adapter.jpg.orig | Bin 0 -> 18599 bytes img/cvut.svg | 5 + img/loader.gif | Bin 0 -> 2608 bytes img/vt100.jpg | Bin 0 -> 11088 bytes img/vt100.jpg.orig | Bin 0 -> 18503 bytes index.php | 50 ++ js/.gitkeep | 0 jssrc/appcommon.js | 189 +++++ jssrc/chibi.js | 703 ++++++++++++++++++ jssrc/keymaster.js | 310 ++++++++ jssrc/lang.js | 8 + jssrc/modal.js | 44 ++ jssrc/notif.js | 32 + jssrc/term.js | 6 + jssrc/term_conn.js | 134 ++++ jssrc/term_input.js | 262 +++++++ jssrc/term_screen.js | 378 ++++++++++ jssrc/term_upload.js | 146 ++++ jssrc/utils.js | 161 ++++ jssrc/wifi.js | 163 ++++ lang/en.php | 180 +++++ packjs.sh | 14 + pages/_cfg_menu.php | 20 + pages/_head.php | 36 + pages/_tail.php | 13 + pages/about.php | 69 ++ pages/cfg_network.php | 98 +++ pages/cfg_system.php | 90 +++ pages/cfg_term.php | 203 +++++ pages/cfg_wifi.php | 123 +++ pages/cfg_wifi_conn.php | 89 +++ pages/help.php | 20 + pages/help/charsets.php | 80 ++ pages/help/cmd_cursor.php | 199 +++++ pages/help/cmd_screen.php | 63 ++ pages/help/cmd_system.php | 103 +++ pages/help/input.php | 254 +++++++ pages/help/nomenclature.php | 84 +++ pages/help/screen_behavior.php | 17 + pages/help/sgr_colors.php | 65 ++ pages/help/sgr_styles.php | 26 + pages/help/troubleshooting.php | 33 + pages/term.php | 93 +++ sass/_fontello.scss | 108 +++ sass/_grid-settings.scss | 17 + sass/_normalize.scss | 439 +++++++++++ sass/_utils.scss | 55 ++ sass/app.scss | 57 ++ sass/form/_buttons.scss | 58 ++ sass/form/_fancy_button_mixins.scss | 58 ++ sass/form/_form_elements.scss | 82 ++ sass/form/_form_layout.scss | 204 +++++ sass/form/_index.scss | 13 + sass/form/_select.scss | 52 ++ sass/layout/_base.scss | 41 + sass/layout/_box.scss | 179 +++++ sass/layout/_content.scss | 60 ++ sass/layout/_index.scss | 9 + sass/layout/_loader.scss | 18 + sass/layout/_menu.scss | 111 +++ sass/layout/_modal.scss | 95 +++ sass/layout/_outer-wrap.scss | 22 + .../bourbon/_bourbon-deprecated-upcoming.scss | 411 ++++++++++ sass/lib/bourbon/_bourbon.scss | 87 +++ sass/lib/bourbon/addons/_border-color.scss | 26 + sass/lib/bourbon/addons/_border-radius.scss | 48 ++ sass/lib/bourbon/addons/_border-style.scss | 25 + sass/lib/bourbon/addons/_border-width.scss | 25 + sass/lib/bourbon/addons/_buttons.scss | 64 ++ sass/lib/bourbon/addons/_clearfix.scss | 25 + sass/lib/bourbon/addons/_ellipsis.scss | 30 + sass/lib/bourbon/addons/_font-stacks.scss | 31 + sass/lib/bourbon/addons/_hide-text.scss | 27 + sass/lib/bourbon/addons/_margin.scss | 26 + sass/lib/bourbon/addons/_padding.scss | 26 + sass/lib/bourbon/addons/_position.scss | 48 ++ sass/lib/bourbon/addons/_prefixer.scss | 66 ++ sass/lib/bourbon/addons/_retina-image.scss | 25 + sass/lib/bourbon/addons/_size.scss | 51 ++ sass/lib/bourbon/addons/_text-inputs.scss | 113 +++ .../lib/bourbon/addons/_timing-functions.scss | 34 + sass/lib/bourbon/addons/_triangle.scss | 63 ++ sass/lib/bourbon/addons/_word-wrap.scss | 29 + sass/lib/bourbon/css3/_animation.scss | 43 ++ sass/lib/bourbon/css3/_appearance.scss | 3 + .../bourbon/css3/_backface-visibility.scss | 3 + sass/lib/bourbon/css3/_background-image.scss | 42 ++ sass/lib/bourbon/css3/_background.scss | 55 ++ sass/lib/bourbon/css3/_border-image.scss | 59 ++ sass/lib/bourbon/css3/_calc.scss | 4 + sass/lib/bourbon/css3/_columns.scss | 47 ++ sass/lib/bourbon/css3/_filter.scss | 4 + sass/lib/bourbon/css3/_flex-box.scss | 287 +++++++ sass/lib/bourbon/css3/_font-face.scss | 24 + .../bourbon/css3/_font-feature-settings.scss | 4 + sass/lib/bourbon/css3/_hidpi-media-query.scss | 10 + sass/lib/bourbon/css3/_hyphens.scss | 4 + sass/lib/bourbon/css3/_image-rendering.scss | 14 + sass/lib/bourbon/css3/_keyframes.scss | 36 + sass/lib/bourbon/css3/_linear-gradient.scss | 38 + sass/lib/bourbon/css3/_perspective.scss | 8 + sass/lib/bourbon/css3/_placeholder.scss | 8 + sass/lib/bourbon/css3/_radial-gradient.scss | 39 + sass/lib/bourbon/css3/_selection.scss | 42 ++ sass/lib/bourbon/css3/_text-decoration.scss | 19 + sass/lib/bourbon/css3/_transform.scss | 15 + sass/lib/bourbon/css3/_transition.scss | 71 ++ sass/lib/bourbon/css3/_user-select.scss | 3 + .../lib/bourbon/functions/_assign-inputs.scss | 11 + .../bourbon/functions/_contains-falsy.scss | 20 + sass/lib/bourbon/functions/_contains.scss | 26 + sass/lib/bourbon/functions/_is-length.scss | 11 + sass/lib/bourbon/functions/_is-light.scss | 21 + sass/lib/bourbon/functions/_is-number.scss | 11 + sass/lib/bourbon/functions/_is-size.scss | 13 + .../lib/bourbon/functions/_modular-scale.scss | 69 ++ sass/lib/bourbon/functions/_px-to-em.scss | 13 + sass/lib/bourbon/functions/_px-to-rem.scss | 15 + sass/lib/bourbon/functions/_shade.scss | 24 + sass/lib/bourbon/functions/_strip-units.scss | 17 + sass/lib/bourbon/functions/_tint.scss | 24 + .../functions/_transition-property-name.scss | 22 + sass/lib/bourbon/functions/_unpack.scss | 27 + sass/lib/bourbon/helpers/_convert-units.scss | 21 + .../bourbon/helpers/_directional-values.scss | 96 +++ .../helpers/_font-source-declaration.scss | 43 ++ .../helpers/_gradient-positions-parser.scss | 13 + .../bourbon/helpers/_linear-angle-parser.scss | 25 + .../helpers/_linear-gradient-parser.scss | 41 + .../helpers/_linear-positions-parser.scss | 61 ++ .../helpers/_linear-side-corner-parser.scss | 31 + .../bourbon/helpers/_radial-arg-parser.scss | 69 ++ .../helpers/_radial-gradient-parser.scss | 50 ++ .../helpers/_radial-positions-parser.scss | 18 + .../bourbon/helpers/_render-gradients.scss | 26 + .../bourbon/helpers/_shape-size-stripper.scss | 10 + sass/lib/bourbon/helpers/_str-to-num.scss | 50 ++ .../lib/bourbon/settings/_asset-pipeline.scss | 7 + sass/lib/bourbon/settings/_prefixer.scss | 9 + sass/lib/bourbon/settings/_px-to-em.scss | 1 + sass/lib/neat/_neat-helpers.scss | 8 + sass/lib/neat/_neat.scss | 23 + sass/lib/neat/functions/_new-breakpoint.scss | 49 ++ sass/lib/neat/functions/_private.scss | 114 +++ sass/lib/neat/grid/_box-sizing.scss | 15 + sass/lib/neat/grid/_direction-context.scss | 33 + sass/lib/neat/grid/_display-context.scss | 28 + sass/lib/neat/grid/_fill-parent.scss | 22 + sass/lib/neat/grid/_media.scss | 92 +++ sass/lib/neat/grid/_omega.scss | 87 +++ sass/lib/neat/grid/_outer-container.scss | 38 + sass/lib/neat/grid/_pad.scss | 25 + sass/lib/neat/grid/_private.scss | 35 + sass/lib/neat/grid/_row.scss | 52 ++ sass/lib/neat/grid/_shift.scss | 50 ++ sass/lib/neat/grid/_span-columns.scss | 94 +++ sass/lib/neat/grid/_to-deprecate.scss | 97 +++ sass/lib/neat/grid/_visual-grid.scss | 42 ++ sass/lib/neat/settings/_disable-warnings.scss | 13 + sass/lib/neat/settings/_grid.scss | 51 ++ sass/lib/neat/settings/_visual-grid.scss | 27 + sass/pages/_about.scss | 128 ++++ sass/pages/_term.scss | 315 ++++++++ sass/pages/_wifi.scss | 186 +++++ sass/utils/_background-tiling.scss | 68 ++ sass/utils/_index.scss | 3 + sass/utils/_misc.scss | 34 + sass/utils/_pointer.scss | 26 + server.sh | 3 + 181 files changed, 11558 insertions(+) create mode 100644 .gitignore create mode 100644 _debug_replacements.php create mode 100644 _env.php.example create mode 100644 _pages.php create mode 100644 base.php create mode 100755 build_html.php create mode 100644 css/.gitkeep create mode 100755 dump_js_lang.php create mode 100644 favicon.ico create mode 100644 fontello/.gitignore create mode 100644 fontello/fontello.zip create mode 100755 fontello/unpack.sh create mode 100644 img/adapter.jpg.orig create mode 100755 img/cvut.svg create mode 100755 img/loader.gif create mode 100644 img/vt100.jpg create mode 100644 img/vt100.jpg.orig create mode 100644 index.php create mode 100644 js/.gitkeep create mode 100644 jssrc/appcommon.js create mode 100755 jssrc/chibi.js create mode 100644 jssrc/keymaster.js create mode 100644 jssrc/lang.js create mode 100644 jssrc/modal.js create mode 100644 jssrc/notif.js create mode 100644 jssrc/term.js create mode 100644 jssrc/term_conn.js create mode 100644 jssrc/term_input.js create mode 100644 jssrc/term_screen.js create mode 100644 jssrc/term_upload.js create mode 100755 jssrc/utils.js create mode 100644 jssrc/wifi.js create mode 100644 lang/en.php create mode 100755 packjs.sh create mode 100644 pages/_cfg_menu.php create mode 100644 pages/_head.php create mode 100644 pages/_tail.php create mode 100644 pages/about.php create mode 100644 pages/cfg_network.php create mode 100644 pages/cfg_system.php create mode 100644 pages/cfg_term.php create mode 100644 pages/cfg_wifi.php create mode 100755 pages/cfg_wifi_conn.php create mode 100644 pages/help.php create mode 100644 pages/help/charsets.php create mode 100644 pages/help/cmd_cursor.php create mode 100644 pages/help/cmd_screen.php create mode 100644 pages/help/cmd_system.php create mode 100644 pages/help/input.php create mode 100644 pages/help/nomenclature.php create mode 100644 pages/help/screen_behavior.php create mode 100644 pages/help/sgr_colors.php create mode 100644 pages/help/sgr_styles.php create mode 100644 pages/help/troubleshooting.php create mode 100644 pages/term.php create mode 100644 sass/_fontello.scss create mode 100755 sass/_grid-settings.scss create mode 100755 sass/_normalize.scss create mode 100755 sass/_utils.scss create mode 100755 sass/app.scss create mode 100755 sass/form/_buttons.scss create mode 100755 sass/form/_fancy_button_mixins.scss create mode 100755 sass/form/_form_elements.scss create mode 100755 sass/form/_form_layout.scss create mode 100755 sass/form/_index.scss create mode 100755 sass/form/_select.scss create mode 100755 sass/layout/_base.scss create mode 100755 sass/layout/_box.scss create mode 100755 sass/layout/_content.scss create mode 100755 sass/layout/_index.scss create mode 100644 sass/layout/_loader.scss create mode 100755 sass/layout/_menu.scss create mode 100755 sass/layout/_modal.scss create mode 100755 sass/layout/_outer-wrap.scss create mode 100755 sass/lib/bourbon/_bourbon-deprecated-upcoming.scss create mode 100755 sass/lib/bourbon/_bourbon.scss create mode 100755 sass/lib/bourbon/addons/_border-color.scss create mode 100755 sass/lib/bourbon/addons/_border-radius.scss create mode 100755 sass/lib/bourbon/addons/_border-style.scss create mode 100755 sass/lib/bourbon/addons/_border-width.scss create mode 100755 sass/lib/bourbon/addons/_buttons.scss create mode 100755 sass/lib/bourbon/addons/_clearfix.scss create mode 100755 sass/lib/bourbon/addons/_ellipsis.scss create mode 100755 sass/lib/bourbon/addons/_font-stacks.scss create mode 100755 sass/lib/bourbon/addons/_hide-text.scss create mode 100755 sass/lib/bourbon/addons/_margin.scss create mode 100755 sass/lib/bourbon/addons/_padding.scss create mode 100755 sass/lib/bourbon/addons/_position.scss create mode 100755 sass/lib/bourbon/addons/_prefixer.scss create mode 100755 sass/lib/bourbon/addons/_retina-image.scss create mode 100755 sass/lib/bourbon/addons/_size.scss create mode 100755 sass/lib/bourbon/addons/_text-inputs.scss create mode 100755 sass/lib/bourbon/addons/_timing-functions.scss create mode 100755 sass/lib/bourbon/addons/_triangle.scss create mode 100755 sass/lib/bourbon/addons/_word-wrap.scss create mode 100755 sass/lib/bourbon/css3/_animation.scss create mode 100755 sass/lib/bourbon/css3/_appearance.scss create mode 100755 sass/lib/bourbon/css3/_backface-visibility.scss create mode 100755 sass/lib/bourbon/css3/_background-image.scss create mode 100755 sass/lib/bourbon/css3/_background.scss create mode 100755 sass/lib/bourbon/css3/_border-image.scss create mode 100755 sass/lib/bourbon/css3/_calc.scss create mode 100755 sass/lib/bourbon/css3/_columns.scss create mode 100755 sass/lib/bourbon/css3/_filter.scss create mode 100755 sass/lib/bourbon/css3/_flex-box.scss create mode 100755 sass/lib/bourbon/css3/_font-face.scss create mode 100755 sass/lib/bourbon/css3/_font-feature-settings.scss create mode 100755 sass/lib/bourbon/css3/_hidpi-media-query.scss create mode 100755 sass/lib/bourbon/css3/_hyphens.scss create mode 100755 sass/lib/bourbon/css3/_image-rendering.scss create mode 100755 sass/lib/bourbon/css3/_keyframes.scss create mode 100755 sass/lib/bourbon/css3/_linear-gradient.scss create mode 100755 sass/lib/bourbon/css3/_perspective.scss create mode 100755 sass/lib/bourbon/css3/_placeholder.scss create mode 100755 sass/lib/bourbon/css3/_radial-gradient.scss create mode 100755 sass/lib/bourbon/css3/_selection.scss create mode 100755 sass/lib/bourbon/css3/_text-decoration.scss create mode 100755 sass/lib/bourbon/css3/_transform.scss create mode 100755 sass/lib/bourbon/css3/_transition.scss create mode 100755 sass/lib/bourbon/css3/_user-select.scss create mode 100755 sass/lib/bourbon/functions/_assign-inputs.scss create mode 100755 sass/lib/bourbon/functions/_contains-falsy.scss create mode 100755 sass/lib/bourbon/functions/_contains.scss create mode 100755 sass/lib/bourbon/functions/_is-length.scss create mode 100755 sass/lib/bourbon/functions/_is-light.scss create mode 100755 sass/lib/bourbon/functions/_is-number.scss create mode 100755 sass/lib/bourbon/functions/_is-size.scss create mode 100755 sass/lib/bourbon/functions/_modular-scale.scss create mode 100755 sass/lib/bourbon/functions/_px-to-em.scss create mode 100755 sass/lib/bourbon/functions/_px-to-rem.scss create mode 100755 sass/lib/bourbon/functions/_shade.scss create mode 100755 sass/lib/bourbon/functions/_strip-units.scss create mode 100755 sass/lib/bourbon/functions/_tint.scss create mode 100755 sass/lib/bourbon/functions/_transition-property-name.scss create mode 100755 sass/lib/bourbon/functions/_unpack.scss create mode 100755 sass/lib/bourbon/helpers/_convert-units.scss create mode 100755 sass/lib/bourbon/helpers/_directional-values.scss create mode 100755 sass/lib/bourbon/helpers/_font-source-declaration.scss create mode 100755 sass/lib/bourbon/helpers/_gradient-positions-parser.scss create mode 100755 sass/lib/bourbon/helpers/_linear-angle-parser.scss create mode 100755 sass/lib/bourbon/helpers/_linear-gradient-parser.scss create mode 100755 sass/lib/bourbon/helpers/_linear-positions-parser.scss create mode 100755 sass/lib/bourbon/helpers/_linear-side-corner-parser.scss create mode 100755 sass/lib/bourbon/helpers/_radial-arg-parser.scss create mode 100755 sass/lib/bourbon/helpers/_radial-gradient-parser.scss create mode 100755 sass/lib/bourbon/helpers/_radial-positions-parser.scss create mode 100755 sass/lib/bourbon/helpers/_render-gradients.scss create mode 100755 sass/lib/bourbon/helpers/_shape-size-stripper.scss create mode 100755 sass/lib/bourbon/helpers/_str-to-num.scss create mode 100755 sass/lib/bourbon/settings/_asset-pipeline.scss create mode 100755 sass/lib/bourbon/settings/_prefixer.scss create mode 100755 sass/lib/bourbon/settings/_px-to-em.scss create mode 100755 sass/lib/neat/_neat-helpers.scss create mode 100755 sass/lib/neat/_neat.scss create mode 100755 sass/lib/neat/functions/_new-breakpoint.scss create mode 100755 sass/lib/neat/functions/_private.scss create mode 100755 sass/lib/neat/grid/_box-sizing.scss create mode 100755 sass/lib/neat/grid/_direction-context.scss create mode 100755 sass/lib/neat/grid/_display-context.scss create mode 100755 sass/lib/neat/grid/_fill-parent.scss create mode 100755 sass/lib/neat/grid/_media.scss create mode 100755 sass/lib/neat/grid/_omega.scss create mode 100755 sass/lib/neat/grid/_outer-container.scss create mode 100755 sass/lib/neat/grid/_pad.scss create mode 100755 sass/lib/neat/grid/_private.scss create mode 100755 sass/lib/neat/grid/_row.scss create mode 100755 sass/lib/neat/grid/_shift.scss create mode 100755 sass/lib/neat/grid/_span-columns.scss create mode 100755 sass/lib/neat/grid/_to-deprecate.scss create mode 100755 sass/lib/neat/grid/_visual-grid.scss create mode 100755 sass/lib/neat/settings/_disable-warnings.scss create mode 100755 sass/lib/neat/settings/_grid.scss create mode 100755 sass/lib/neat/settings/_visual-grid.scss create mode 100644 sass/pages/_about.scss create mode 100755 sass/pages/_term.scss create mode 100755 sass/pages/_wifi.scss create mode 100755 sass/utils/_background-tiling.scss create mode 100755 sass/utils/_index.scss create mode 100755 sass/utils/_misc.scss create mode 100755 sass/utils/_pointer.scss create mode 100755 server.sh diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..333120f --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +_env.php +js/* +css/* +!.gitkeep +node_modules/ +*.~ +*.bak +.idea +.sass-cache +*.map diff --git a/_debug_replacements.php b/_debug_replacements.php new file mode 100644 index 0000000..1aca8dc --- /dev/null +++ b/_debug_replacements.php @@ -0,0 +1,86 @@ + ESP_DEMO ? 'ESPTerm Web UI Demo' : 'ESPTerm local debug', + + 'btn1' => 'OK', + 'btn2' => 'Cancel', + 'btn3' => '', + 'btn4' => '', + 'btn5' => 'Help', + 'bm1' => '01,'.ord('y'), + 'bm2' => '01,'.ord('n'), + 'bm3' => '', + 'bm4' => '', + 'bm5' => '05', + 'labels_seq' => ESP_DEMO ? 'TESPTerm Web UI DemoOKCancelHelp' : 'TESPTerm local debugOKCancelHelp', + + 'parser_tout_ms' => 10, + 'display_tout_ms' => 15, + 'display_cooldown_ms' => 35, + 'fn_alt_mode' => '1', + + 'opmode' => '2', + 'sta_enable' => '1', + 'ap_enable' => '1', + + 'tpw' => '60', + 'ap_channel' => '7', + 'ap_ssid' => 'TERM-027451', + 'ap_password' => '', + 'ap_hidden' => '0', + + 'sta_ssid' => 'Cisco', + 'sta_password' => 'Passw0rd!', + 'sta_active_ip' => ESP_DEMO ? '192.168.82.66' : '192.168.0.19', + 'sta_active_ssid' => 'Cisco', + + 'vers_fw' => $vers, + 'date' => date('Y-m-d'), + 'time' => date('G:i'), + 'vers_httpd' => '0.4', + 'vers_sdk' => '010502', + 'githubrepo' => 'https://github.com/MightyPork/esp-vt100-firmware', + + 'ap_dhcp_time' => '120', + 'ap_dhcp_start' => '192.168.4.100', + 'ap_dhcp_end' => '192.168.4.200', + 'ap_addr_ip' => '192.168.4.1', + 'ap_addr_mask' => '255.255.255.0', + + 'sta_dhcp_enable' => '1', + 'sta_addr_ip' => '192.168.0.33', + 'sta_addr_mask' => '255.255.255.0', + 'sta_addr_gw' => '192.168.0.1', + + 'sta_mac' => '5c:cf:7f:02:74:51', + 'ap_mac' => '5e:cf:7f:02:74:51', + + 'term_width' => '80', + 'term_height' => '25', + 'default_bg' => '0', + 'default_fg' => '7', + 'show_buttons' => '1', + 'show_config_links' => '1', + + 'uart_baud' => 115200, + 'uart_stopbits' => 1, + 'uart_parity' => 2, + + 'theme' => 0, +]; diff --git a/_env.php.example b/_env.php.example new file mode 100644 index 0000000..4d38f09 --- /dev/null +++ b/_env.php.example @@ -0,0 +1,3 @@ + $key, + 'bodyclass' => $bc, + 'path' => $path, + 'icon' => $icon ? "icn-$icon" : '', + 'label' => tr("menu.$key"), + 'title' => $titleKey ? tr($titleKey) : tr("menu.$key"), + ]; + } +} + +pg('cfg_term', 'cfg', 'terminal', '/cfg/term'); +pg('term_set', 'api', '', '/cfg/term/set'); + +pg('cfg_wifi', 'cfg', 'wifi', '/cfg/wifi'); +pg('cfg_wifi_conn', '', '', '/cfg/wifi/connecting'); +pg('wifi_connstatus', 'api', '', '/cfg/wifi/connstatus'); +pg('wifi_set', 'api', '', '/cfg/wifi/set'); +pg('wifi_scan', 'api', '', '/cfg/wifi/scan'); + +pg('cfg_network', 'cfg', 'network', '/cfg/network'); +pg('network_set', 'api', '', '/cfg/network/set'); + +pg('cfg_system', 'cfg', 'configure', '/cfg/system'); +pg('system_set', 'api', '', '/cfg/system/set'); + +pg('write_defaults', 'api', '', '/cfg/system/write_defaults'); +pg('restore_defaults', 'api', '', '/cfg/system/restore_defaults'); +pg('restore_hard', 'api', '', '/cfg/system/restore_hard'); + +pg('help', 'cfg page-help', 'help', '/help'); +pg('about', 'cfg page-about', 'about', '/about'); +pg('term', 'term', '', '/', 'title.term'); + +pg('reset_screen', 'api', '', '/system/cls', 'title.term'); + +pg('index', 'api', '', '/', ''); + +// ajax API + +return $pages; diff --git a/base.php b/base.php new file mode 100644 index 0000000..ab6ccce --- /dev/null +++ b/base.php @@ -0,0 +1,186 @@ +_env.php.example to _env.php and check the settings inside!"); +} + +require_once __DIR__ . '/_env.php'; + +$prod = defined('STDIN'); +define('DEBUG', !$prod); +$root = DEBUG ? json_encode(ESP_IP) : 'location.host'; +define('JS_WEB_ROOT', $root); + +define('ESP_DEMO', (bool)getenv('ESP_DEMO')); +if (ESP_DEMO) { + define('DEMO_SCREEN', '"S\u0019\u0001Q\u0001\u0017\u0001K\u0001\u0015\u0004\u0003\b\u0001 \u0002P\u0001┌ESPTerm─Demo─\u0002\u0002\u0001\u0003\u0002\u000131\u0003\u0003\u000132\u0003\u0004\u00013\u0002\u0002\u0001\u0003\u0005\u000134\u0003\u0006\u000135\u0003\u0007\u000136\u0003\b\u000137\u0003\t\u000190\u0003\n\u000191\u0003\u000b\u000192\u0003\f\u000193\u0003\r\u000194\u0003\u000e\u000195\u0003\u000f\u000196\u0003\u0010\u000197\u0003\b\u0001─\u0002\r\u0001┐ \u0002\u0015\u0001│ \u00029\u0001│ \u0002\u0004\u0001│\u0002\t\u0001 \u0002\b\u0001│\u0004\u0002\u0001Bold \u0004\u0003\u0001F\u0004\u0003\u0001a\u0004\u0003\u0001i\u0004\u0003\u0001n\u0004\u0003\u0001t\u0004\u0003\u0001 \u0004\u0005\u0001I\u0004\u0005\u0001t\u0004\u0005\u0001a\u0004\u0005\u0001l\u0004\u0005\u0001i\u0004\u0005\u0001c\u0004\u0005\u0001 \u0004\t\u0001U\u0004\t\u0001n\u0004\t\u0001d\u0004\t\u0001e\u0004\t\u0001r\u0004\t\u0001l\u0004\t\u0001i\u0004\t\u0001n\u0004\t\u0001e\u0004\u0001\u0001 \u0004\u0011\u0001B\u0004\u0011\u0001l\u0004\u0011\u0001i\u0004\u0011\u0001n\u0004\u0011\u0001k\u0004\u0011\u0001 \u0001q\u0001\u0001Inverse\u0003\b\u0001 \u0004A\u0001S\u0004A\u0001t\u0004A\u0001r\u0004A\u0001i\u0004A\u0001k\u0004A\u0001e\u0004\u0001\u0001 \u0004!\u0001F\u0004!\u0001r\u0004!\u0001a\u0004!\u0001k\u0004!\u0001t\u0004!\u0001u\u0004!\u0001r\u0004\u0001\u0001 │ \u0002\u0002\u0001─\u0002\u0002\u0001\u0003\n\u0002 \u0002\t\u0001\u0003\b\u0001─\u0002\u0002\u0001 \u0002\u0006\u0001│ \u00029\u0001│ \u0002\u0002\u0001─\u0002\u0002\u0001\u0003\n\u0002 \u0003\u0002\u0002ESP826\u0002\u0002\u0001\u0003\n\u0002 \u0003\b\u0001─\u0002\u0002\u0001 \u0002\u0006\u0001└─\u00029\u0001┤ \u0002\u0002\u0001─\u0002\u0002\u0001\u0003\n\u0002 \u0002\t\u0001\u0003\b\u0001─\u0002\u0002\u0001 \u0002@\u0001│ \u0002\u0002\u0001─\u0002\u0002\u0001\u0003\n\u0002 \u0003\u0002\u0002(@)#\u0002\u0004\u0001\u0003\n\u0002 \u0003\b\u0001─\u0002\u0002\u0001 \u0002\u0007\u0001\u0003O\u0001 This is a static demo of the ESPTerm Web Interface \u0002\u0004\u0001\u0003\b\u0001 \u0002\u0002\u0001│ \u0002\u0002\u0001─\u0002\u0002\u0001\u0003\n\u0002 \u0002\t\u0001\u0003\b\u0001─\u0002\u0002\u0001 \u0002\u0007\u0001\u0003O\u0001 \u00027\u0001\u0003\b\u0001 \u0002\u0002\u0001│ \u0002\u0004\u0001│\u0002\t\u0001 \u0002\t\u0001\u0003O\u0001 Try the links beneath this scre\u0002\u0002\u0001n to browse the menu. \u0003\b\u0001 \u0002\u0002\u0001♦ \u0002\u0016\u0001\u0003O\u0001 \u00027\u0001\u0003\b\u0001 \u0002\u0019\u0001\u0003O\u0001 <°)\u0002\u0003\u0001>< ESPTerm ful\u0002\u0002\u0001y sup\u0002\u0002\u0001orts UTF-8 お は よ ー \u0002\u0002\u0001><(\u0002\u0003\u0001°> \u0003\b\u0001 \u0002\u0019\u0001\u0003O\u0001 \u00027\u0001\u0003\b\u0001 \u0002i\u0001\u0003\u000b\u0001Other interesting features:\u0003\b\u0001 \u0002\u0018\u0001↓ \u0002n\u0001\u0003\u0003\u0001- Almost ful\u0002\u0002\u0001 VT10\u0002\u0002\u0001 emulation \u0003\b\u0001 \u0003\u0006\u0001()\u0003\b\u0001 \u0003\u0006\u0001()\u0003\b\u0001 \u0002\b\u0001Funguje tu čeština! \u0002\u0011\u0001\u0003\u0005\u0001- Xterm-like mouse tracking\u0003\b\u0001 \u0002\u0003\u0001=\u0002\u0002\u0001\u0003\t\u0002°.°\u0003\b\u0001=\u0002\u0002\u0001 \u0003\u0006\u0001<-\u0002\u0003\u0001, \u0003\b\u0001 \u0002$\u0001\u0003\u0004\u0001- File upload utility\u0003\b\u0001 \u0002\n\u0001\'\u0002\u0002\u0001 \'\u0002\u0002\u0001 \u0002\u0002\u0001\u0003\u0006\u0001 \u0002\u0004\u0001mouse\u0003\b\u0001 \u0002!\u0001\u0003\u0002\u0001- User-friendly config interface\u0003\b\u0001 \u00020\u0001\u0003\u000e\u0001-\u0003\u0002\u0001 \u0003\u000e\u0001Advanced WiFi & network set\u0002\u0002\u0001ings\u0003\b\u0001 \u0002\u0011\u0001\u0003\f\u0001Try ESPTerm today!\u0003\b\u0001 \u0002\u000b\u0001- Built-in help page \u0002\u001a\u0001\u0003\u0007\u0001-\u0002\u0002\u0001>\u0003\b\u0001 \u0002\u0002\u0001\u0003\f\u0001Pre-built binaries\u0003\b\u0001 \u0003\f\u0001are\u0003\b\u0001 \u0002\"\u0001\u0003\u0007\u0001link on the About page \u0002\u0002\u0001\u0003\f\u0001available on GitHub! \u0003\b\u0001 \u0002U\u0001"'); + define('DEMO_APS', <<path; + + if (DEBUG) return "/index.php?page=$name"; + if (ESP_DEMO) return "$name.html"; + else return $_pages[$name]->path; +} + +/** URL label for a button */ +function label($name) +{ + global $_pages; + return $_pages[$name]->label; +} + +function e($s) +{ + return htmlspecialchars($s, ENT_HTML5 | ENT_QUOTES); +} + +function je($s) +{ + return htmlspecialchars(json_encode($s), ENT_HTML5); +} + + +function tr($key) +{ + global $_messages; + return isset($_messages[$key]) ? $_messages[$key] : ('??' . $key . '??'); +} + +/** Like eval, but allows */ +function include_str($code) +{ + $tmp = tmpfile(); + $tmpf = stream_get_meta_data($tmp); + $tmpf = $tmpf ['uri']; + fwrite($tmp, $code); + $ret = include($tmpf); + fclose($tmp); + return $ret; +} + +if (!function_exists('utf8')) { + function utf8($num) + { + if($num<=0x7F) return chr($num); + if($num<=0x7FF) return chr(($num>>6)+192).chr(($num&63)+128); + if($num<=0xFFFF) return chr(($num>>12)+224).chr((($num>>6)&63)+128).chr(($num&63)+128); + if($num<=0x1FFFFF) return chr(($num>>18)+240).chr((($num>>12)&63)+128).chr((($num>>6)&63)+128).chr(($num&63)+128); + return ''; + } +} + +if (!function_exists('load_esp_charsets')) { + function load_esp_charsets() { + $chsf = __DIR__ . '/../user/character_sets.h'; + + if (! file_exists($chsf)) { + return [ + '!! ERROR: `../user/character_sets.h` not found !!' => [ + ['65', 'A', '&'], + ], + ]; + } + + $re_table = '/\/\/ %%BEGIN:(.)%%\s*(.*?)\s*\/\/ %%END:\1%%/s'; + preg_match_all($re_table, file_get_contents($chsf), $m_tbl); + + $re_bounds = '/#define CODEPAGE_(.)_BEGIN\s+(\d+)\n#define CODEPAGE_\1_END\s+(\d+)/'; + preg_match_all($re_bounds, file_get_contents($chsf), $m_bounds); + + $cps = []; + + foreach ($m_tbl[2] as $i => $str) { + $name = $m_tbl[1][$i]; + $start = intval($m_bounds[2][$i]); + $table = []; + $str = preg_replace('/,\s*\/\/[^\n]*/', '', $str); + $rows = explode("\n", $str); + $rows = array_map('trim', $rows); + + foreach($rows as $j => $v) { + if (strpos($v, '0x') === 0) { + $v = substr($v, 2); + $v = hexdec($v); + } else { + $v = intval($v); + } + $ascii = $start+$j; + $table[] = [ + $ascii, + chr($ascii), + utf8($v==0? $ascii :$v), + ]; + } + $cps[$name] = $table; + } + return $cps; + } +} + +if (!function_exists('tplSubs')) { + function tplSubs($str, $reps) + { + return preg_replace_callback('/%(j:|js:|h:|html:)?([a-z0-9-_.]+)%/i', function ($m) use ($reps) { + $key = $m[2]; + if (array_key_exists($key, $reps)) { + $val = $reps[$key]; + } else { + $val = ''; + } + switch ($m[1]) { + case 'j:': + case 'js:': + $v = json_encode($val); + return substr($v, 1, strlen($v) - 2); + case 'h:': + case 'html:': + return htmlspecialchars($val); + default: + return $val; + } + }, $str); + } +} diff --git a/build_html.php b/build_html.php new file mode 100755 index 0000000..78f3aea --- /dev/null +++ b/build_html.php @@ -0,0 +1,50 @@ +/Uis'; + $s = preg_replace($pattern, '', $s); + + $pattern = '/(?:(?:\/\*(?:[^*]|(?:\*+[^*\/]))*\*+\/)|(?:(? $p) { + if ($p->bodyclass == 'api') { + if (ESP_DEMO) { + $target = 'term.html'; + echo "Generating: ~$_k.html -> $target\n"; + $s = ""; + } else { + continue; + } + } else { + echo "Generating: $_k ($p->title)\n"; + + $_GET['page'] = $_k; + ob_flush(); // print the message + ob_clean(); // clean up + include(__DIR__ . '/index.php'); + $s = ob_get_contents(); // grab the output + + // remove newlines and comments + // as tests have shown, it saves just a couple kilobytes, + // making it not a very big improvement at the expense of ugly html. + // $s = process_html($s); + ob_clean(); + } // clean up + $of = $dest . $_k . ((in_array($_k, $no_tpl_files)||ESP_DEMO) ? '.html' : '.tpl'); + file_put_contents($of, $s); // write to a file +} + +ob_flush(); diff --git a/css/.gitkeep b/css/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/dump_js_lang.php b/dump_js_lang.php new file mode 100755 index 0000000..ab2f976 --- /dev/null +++ b/dump_js_lang.php @@ -0,0 +1,23 @@ +hA;7@);lRL%|F?JxXD4er88teqGM;<06}_E|mcP!uD%Xo*%?nuzEgc(Vb32c(gqLCjDn_MwxW z-vcK@JPyBNq*xo`6{ z40nO}Q3)0m({c!h^yjUQM$`VEC<%}ygdd4adNu-H$?zaUU8aUzHea}ri=iAc$5*c+ z_g(y8CrQG#;{=l`TbhkG++o;1UXQ}^*b(-Yt9o{&)0++{W6({`SoYT_L`?+5kY!jh zO~nqPLS|B_5@l^5tp~~LjgUf;9NX4!vt5MIWx*j9hgOEMsb3?FG5aP?U2H>SNJ?3|rgEZp5MQzlWu*wCb(KjYSN{-R4KBAS&It6Q>R z+A6No00w#u81mZDVjR|*<*#$Cuk@zz!HB5go#f^F7;&va5yvuMG}1EuBInnwruoB! zzoC;jF`%81+&o(z*sbD`<)%`_tENcR?h|MQ_9N2puN8TSGEi&aeBg9c2O*_N6yD`% zUF;AZ_)K!)+U@|E3SO%I*>Y!(oT8!IS`~)b<&kS1b8%W0PNiho7mL!+ScO}v|IWByMn|DTK@GPq4D2o4730tp62 z_kX12|IIrV&X!j0|HX~xLXQHZI2QDdhzk2}J-DF@>!$qPkqO#4mg%V@Cl0Eah&6ce zA&DWDFg$e134OYlNV2fZ7dDZQD@r_cH(EAeak4+(=B1^a7EE5ovzK>eja!>0MLBa( z%o!X?&hJW)S&9PmK?;?+En25!x3O?_TQ>_oMGL|$;7En!-{Kd(m0RT{%@ZZpN`)YQ4prP-7zQSite!^d;q93wkZ2@2G9Z&fm z!i#NSj4py6^vEXpbqLmj&`FqZ^wjBKQO!7MsBZKjwwF+jz6YeYt*b&`&0` zXcBKj^-v4)r*0(?D@BpvzOQcdgP9G7T3#T7cb?T#1Z^5DhC$WZJU%!{Hm3dEG%nb5yyYp8^-O)Q|qtML6ruOq{^G) zGTE0@O-ocALHBDu_d2}-6@R*l&Pv<{g}5xf-PPhAt9w^~mFD)=hmGf29fh5fw90j~ z$8K&_&lxjKGc~AH#61GZZC`GDh028+$Tk(4CWg+!+siVJReS0R*=wdvD@k7Ice;U0 zcEM|G=FMe#)z3M5ShCe+Cm+}yK4WL`-vL>%4Wa=x_s@o;`_WF-Qy%t0u-@FR;I_cz zZsy;D-9@saZ$8$kNfD+yCM!&DKD&$}_@yDdg0uxbiJsik!R2L6z4{`5uR3FNbqd1Z zM_Uy96E{1LwORyV9@Ej6-EF&%gmLRWzI;|_M$cw$ReNT9yZs3AZ2{4(Zj7B$8`n~8 zdCLPMaFrkIL~F9t#-%esjpMuQ@K(#qDi^oQwB4Z2)GUYX3B&1YgY8D`eU@s5_jX(; zSAk80tTv1OI7_8*UzlbGp+S|mTbYX=eE=)hxz!kfQYK9o8xJ#qWrJMlrlDx z;MHD@*7UA;d-b5Tu$FY6r-oplg*NKqUC#Q6#T9j6A^b0#q$38+-`4j<2pfI=>w=^& zUYSGBLKc&*t-utHRvvrBD}fA~nQmxnKRyzRBQ2Us=p}hBN0T%R6b{i$JFX3c!hL$v z9*+F&I-nzI!R+>k^X0oLsX!-YoqOhSEtbunxxBQMtIfY8&SCmGS6D!4M=lLBF4lbY zGsABrKZ`5uLw!d#UE^7i(;utbKKYq?%p}~|dmH!SOq%EBTo#^Zmw>Z6@#9`r1bve- z>(Ad_hl!^a`x3OUmE{91&q+<3C&(=fCW2nV+j}bXxGO7_tOGXeHrhn>Z}Ha&PZuc%ugEtmIf9kc;ZXsIl);-Fo%!jHK?CVSfzO zJKLKm>ytoEh_-n{JIJT~sz&qvIoWW3`HDG3!QW}m)WF>9xwKVwe!{v|YDdBBu-(UtzHT4!M?R6b=xZIDz&dd<-Xi-(q4rbD;mj9#>!ihndm-w!QF+tDvKh< zCb9f;#}zvcdB$wf=YE*cwQe9wcMm}K%1IHxtESQU;8ykC*!#UlGuUPk!xb67V zeYxGW+j&y;bf`}RaIk6rbbS10(Uy$&>&tnlO%i@KIg>Kao8Lu*9(%3* z4268hrbS-U<$qAI_EmO|nN6PGZ7il}08u@52f2-8n{IPToK;C`v5fnT% z{GDJsG9Wnu=`XntIdHbM;$5DU=UHCN3fnB0L{F`MY`L!8nX2vnCT>^*3#*(7=)y8Z;SX+L-uupnXYF-g z0wr*Y&~KmO+Tn0#t4p7yXmaQ|Xb5BtY%KNV=5uHXI<5o8Z`=dbL|;*BIY4=bGqkKC zqj$h9W8g<1Uf8W=P03Yx@TehT&4xhsAI5y4%_`Aquc}Npg5~FVEAJ32bidjaxWXL$ z=P(;Knf$8WZO7-T+18J|t*_O>Cs%ABJF(NiV2}>!o?nH%iT?K=QnPo*s_RED)1_Y< zGXr=wOBIKpNR1!H=4MCcf=vF0c7>vdGaJlEt?jVuB-g6@erT;a0-2*c??F9;Rc{&2 z{Jrd5gXB!6v3mE+H9Vs=4<90=H+q-eU0Y@%*XA(p6=iPaj(IHz0cuj^%yjFSClc#8 z)tcknlev*Enh6%UvrdN81q5`ymtzL6i=+TUS{Z`xskd8o!=f~_2`xTHb?3=j{~yD& zMlHs1`#5`46ChRKKrXSipUzdBm&VKc%SYhMf>3emdu{jBhNSl%641~j{;u94Cz&i4 zRFSDVTi3CaR-g{QdcWq;#hOX!rmA&luCr9-X zw_qVx&^HHf36=kSbL`OL94Kj|Y4@nbZL_xVx$O6nasW-^qbFp6UC}DHWYVm6nR#W4 zZCvpMpw}ettZI~5lATAm&M_G9JmF2+A$Wc>_slyBs(}{RGEvSJ*=7$MEZj085D`t% zj6U565bzX5O?8Vuwrn~&y!@&ZF__t8s2hB5z$r*q9DfgdT?@YKt0mDSvQuwc(MIJW zu59*QSIKQz+~RCEa=w#SbHaLDN3@wOgwf(fr} z>)Z%7Q341Qw?6hekRDU1sOZqzUUz$)%m%SL&4mi~==#z=>Riq^NnAv?h4Gi&PQ9vO zF3&JaB;Tt7Uk@KI&4$F!^M-cs+aioduF71#8Umo1{IL8*hE_Ig2!uTYEDd;bQ->}# zv!7ACujRy*BsymL{ev%Mm)vM$lQieoN1MGsoOZx>+;m12|2KL2t$*qR{zA1$Dx#la zUPS@E9)8gT@;P>#-emnf^*MC6qV&)8;+~D4B8b-^u*<^#kG5Ypt&uh z<^(Z561(HQC_7XB70mzgP~g*}SA|n}4HsS))va$PL5HN5yXNt}sQ+4r{b7R-c3O~E z#?)Tw;W$=skZ3CjtuDSh_}KPQhuUlz-om@d$)1Lw9{vV1Z+@@o0k6Z;!AsZ zQn_y#YFoi~t@A3na?r@tuyL{->o4Qm^Ugr(qC{y<9pEvV17L6TCNFu%E3xFJ0+IE| z1}iK4=gWS*-P7Hlj@T8)l!6u1`w`>x4DJjsm#JkEURZqaMwHtoJCILX+4@(amp+}M z+7NjspFffp>B3N=p8Hcq1y^g$CEj^FD{>9$)sx7MU3u_APajnIrQ&sT!wgd8UtYCd zd(Muk8CGrLm0y)t5S~pq;Wa^M7)*vU3E9>I+QJ@u9``qHj|aEr<#&|752vp1uK!MG zw7W*(diu}@F{nGtlMH`J?)zdLQuGrTWtw`3q`reJF~bajsE{R^+NC%*nT>;!On zPFyAQcyRZc-3D}AoZWW!l9L!mmAUBeP7oUDa}bVOhh=;%q?sEgQ7R0GZ#k})5hXm? zpB*01%n zTNgY%S0apys$llC?~a*hL4)f@fGT%mH}Q<|DFr53+~UzEdsUs-Uv0CQ^}t#nCHVA} zU!=OeM@>4O^TBB@%+br-#z#r-1m-m{9nrP1kP5DXQDRTN=3f{4mn>B}#NG)|!5H&*_GwsdUJ?Ab786 zq3qm)bni|oTFH>4*4^9CZrh#pXIv{k^_8W2l}>My)_Y%8@wIdkmEOU#nU_rZQ2A?0 z*Q`N}#(L_X=IFl)j`Hx#j1DJ*oSoCBxFh&0BR`aiy0*FJM}9opY+bAar`!DA8afIA zk6yOkjHf_ESpi{~_ahYBk{{X@$Am{em8@oO@by|c*Y@+*Jl5;wX_U60ZilvNY~hTD zo8q`y1uM0+T|X3YY%hnMk*=6IqUh%z^5WNnL}j9Pc03E^E}f2L&uz|)y4Po-2blv= zant29IX{v7T=aw;omJkl7o=sW*$z+q^W{5r%XXBGON|j}FYhsKHv+f=2jHx7FPxQZ z53XO?DQMMH@1J*^U7@XR$@v`Ax>6b?U9y3zOFWInQ5B$g;Fbk9VM^=k zc&6001c7}n=|=Cri$5Ph)@>Je)`p(9fpk7efx^9nCZ>&qLp1iJM9Z@g*S)7rrV0G4 zRY#}#UHJtnYq0r$?1a5QMfoHaG{6V?@{02oWyLQ%5Dt^&WC;f_2(p6n^5_%us#L%D>W2y5O7i&wc*DI2TzGF@^Y*ko zizc;)itQfuW=6nIH~NEU>aNkMF&!g?Ngdq@grB&%ov+nvkU(#h;3o^S(>1O2aYu`K z`z@O;V?Jbult*1o-!&^&w*&g5=Nuc?4+F7heH#;1ZQ5=UTCbjyl($J!0e<_biXLCa z#J==wiGMPln~vW`3M{Rc*z_H?Fh(^ZySwcQT3W~h^^&_0o~v>%!|KdLR`ji8zbY=O zCJUrbmx+w+Hy?FN;z!RK`EiO1Z`>BY@+8+g$&c#*1Be@1+O z%aX(kbMzl>J@-wOYHRflnv$;DBxQ+-H$mYN%7k0yOjRg{EMA-bLh(lPivg5?^nVT! z@c|oCUj`@>ZTA3p)WyIODg0M1AJ%{;>VmQ0MGk7xLrW=j+;YB6FU`HmqYii{nU%)TbUM7 zz|SmO>TNu`@!HbDbdzAG^xrwCayWEWLR}PtZpC!Pu1Sj2obIff)kTkP8$kj`9NCug z8V6|w1gyRo@b+&Vuvy*#v;6em`rr(NEip43BhLN#W?9}FUH|jdGdhyzM~|1nyxusq z=)hOh01|A&;JP>R>68decmxEg_A4yn-}fW}?_{KDDmVwj*LVGA?@7p5jENa00^*^c zP=$j9cdUhx-jrcpEPuP@ArHP4PLLw3#e8?3-S9om5*4}^hgn@UbzU=MI*;~w-V3qS zPB6m8AGbuYYRU7q&dY-k#JPnGdzFY~(l=%qC7kjYv-W350b6?|g*~%7jY-^F) zHh21)_O>)e*q@sY4+=xFX}L$J>9lIzS&H?fc)YlD;B2J5|G?%vPFySgPb=aK+R<2& z&@b1x3t9=I*ji}cq>~W?PPkG=-a(m`@?Y0>k4985U#|Gu1g2KxKDM<@@{zW*R#j4% zWG40`BkQ0%p%8%5%&hv~qm~atISs$2c++wSm!xua^Ag@Wys_7FXH?|t5R}@M#~FH+ z9)4dT1U#sIH-ukCA`D-2-)j2?mH*T^qRYEXUV3CVVzCHfm{?&{+^1N3PVih+*hhh1 z856{zcJB>E>~XAnYQmlTBP=ws5v6upSzKiioa1G5nfk-tXVdGG=i!3kqHXK)$n@H) z=4xyB`t1EwScF8Md+X@Dl8O10+5J$-XJvdM!CnB;rX}q8fK&2Tgi>~h$0uPeXb z58(H&sObw@9JC`Xn9jgoPhNKt@p>1EQb!M{tb7*TyV>*KcRXgb`p&%6-z^2|Bg>d*urfiA$Npo{(zpIZg>TTvQ44ps+%a`Id9u_Q;mW9Z3L)wQfRV-t{HJ!@spHLGQLkQcP}YrD_d zXT>S&XjR#Zcsszs^O3sF!>rdHsyI=MRf>GQ>FA#GlBweL=L_E2kGt|ThGq%Q;d#mx zNSN&6rM1(e!GFSy0c1v8)&jM~pR)WtB`c%SQ)8OvcPi(ss7cj)1d@NQ^S`Z`Oq*Xhj=Xg_sldv~ zwrD(gN-{qtW|x(9nMZT|R3$pbIG>%?d7UsikJ(xbN>T}w0lqF=odEsgYBzGft};C} zdUftL{%ji()$S+Cw3MGp|D222woSmS1D^8V-Zr@L`{oOUIsRyHrzexcO(*tr_h)^2 z%TUOXysYMRD!3f>ZrU>Nv3d&B3UG{@DT5S4 z+B10jRlZR#W#gg&(qIbOwy0-*VGq=9gPgxi*+33PS0pAq&YOOWht3Eo3mc*yz?m{_ zJEP&JTNag1rLFU}2MOWIjin%Wgz*mLTROEF*Gvm}b>#xq6V3W7rFSAx-%7)HzV-RS zt*17_0BD<{pj^Q`9^+biTWa5jF&;NU|9QZ=&gSmE!Mui1@tw%gL#?5-zsGhv1hKsw zchW%NbL3#;VMSB(HvUl{uFR9E@SGzy;v(mc-!0D@@G-^-3`h$9bsi`vz7i4^AZYiRl>)Zs*;8qv>!aH>Qfjahjuia44p7{2$#t%Xq zpfbIq%9gj<6*}vg?!gbD4HwH3a_Jax!{lo0EW9s7Q#jbHv|oR0L=&t_Scl>JXJ1jL z_OT_7>Lf{-)=0e3i{y7LJSTl&??gmVI$oA1!s$T8O>SqaSA!Zaa8jb>8=%e<~q#mKZ8lI>)`36ev~m zyf8Vl=j=dJLWrJrF7J9X*es+v)Yx?_C(}6|JHppb#s?~HqQymCWC-!{N~MGLThAF#{oh?p8(u^42v<;ZN|o&MXnYES8UUT^!;mHa^a^+;idkz75WBsMJbHXD&b%ghqgv7GJjt)(ZijOo3^6fj5RZC z`<$CLWAFRGjT1(_5gllZ)C$`{QbA_kNl7vnJF7|i&W$JDc*Z=nOs?(F0jD;+s^JA@ zAha7z+D$IGtA6Kgd~y6A+kn&!dUliUo6^w9-e|eO3JT28mGUo z-dxM}Zp(4{B-UB>u{gKwWZ%MXDfCSOm4sP0ktA@ZII}E4 z_#H%VZ6Xl04j>7fD&F(QRK;nnh=?dfbe6A#=l3S2RSA{%D)o!tX;Lb%02I*=d&RCJ zou0^|$sZ647)7uh6EI=ws9J|owT<)VDT(jGX;H$lig2IFXW#Fnh_9AJuNBeW%#^qL7&?{O0aD*L#cM{lZVh=HVahiH^d4~G z7p2llxlemFrBaU;v9nQ9N(w97yf8otM?-cVA8DlV8MQi$f5cswujy7tluN_+yb1IK zl~+?uk6_@;(}u2XG#Kssl78jsCGH=wnF>VenI zt5rxEfGfb#tL8W{V!h4r_OTM2p0KG~NU36Kz;uko(~fig+RI?`U0HCWx(qCCEIP}5 zcWzVphJE<*{Oo06-T$0z<7HU}H#$JPzTs)~#kJ|P$8mUxmp;c7g*Pg}(*_5rTi0bs z08kiss-*#Usev4*Zd~E=XIk7?2RSg)o#S;PEwgT+1I7?*Bteg{!N97zn}S99b7SoU zs3Pjj*LOXU3|iY>isvW4fKsgmIhV|WBWAs0%?Xhy)Ix=i^Uk@yIuFCp1hr{Ly>+5o zj8~-D!6vDfUpLM{hAtLb%ju41A~! z|B!5fdu+EWPSq_w%>g71GkfEw&h-Sjhbg5oSPdF%hi5Ud(vemzsSf9HFwd1J-IK^4 z()Bf*Zb^8k;(rcUtP=cs3~9aX5AHDaYEdonHBewIrlYkuUWoRh?M#ctlyxp59x8@m zInu6)^byYib8F~kQ+z@sR@g}Bh_WjO^^AXM+_9H`Kn8@1?k`W7M%ex#BPq)qZgI9e z4KvqZTBSs6MWh*b$Ac#x3yJi9;z1MrbH7Tl6DCGKOzln$o{+)n(11?!Sy>{6)`Wu? zV|GiWGl8Xg)CZIx5T27Ro|3v&qlx!P2tc|NqqU#YBDe^UJ}Z|x3Ro#3Aparq+GpX7 z<~!*(90}-!KS^vX48m23oY3GA6?xvYHA6;h{MSw7+*VdC)f`ldAhxoT;Hwbw(!np; zYv9<+$^@iiv9j}WF)kmEWKAp7Th;8T=6#WL*D`$?6PEiJ=D>jMmemhQ!XeaC*aBuv zxi2xwq=c)l^MTc(0j}v|g{9kwg{{R=*SAp6v%O}-iek^G<(B8r6uUGg-6Cfxs`l3+ zvh@%jFn!7PLxv&8BL1Ldhx9Q=!77)a(1)x*C7om)VqArg%=&>PiC2(8?@;@UG)N-m z!Moa?l&rcjac586(gQ%bSz7r#Seg034K$uVSs+>sgEEvHcu74P82I50$+PW{o(%^~ zpoxCSlxiSUr)J!^pawxh(~PNxaX&y~h0aWvsE^1?8Kg{ebQb`+9W#d^=1Oj2U08l0S=z%1CxS`Il>r%&c5@#42V4rYeqxeXz=V5_z2mFTa z{E+^kt|2<|Go=U~Hi#BFlYH*=)ccr$;p_osNwt;^g*T1{h~FRI;l`@prP<)Ygy9A+ zLZJ?D!4Y2sK825191-lLN(0w;AwNQn@OIKofh4aK4Z!x_(#lOMXrQ7s@G4*60vypZ z+R2AcL_6=D&|QitECmVEeiTGz(_>YpE({BLGO^-O_3EHDg#~NMs#@@X#5vDTDX|`0 zbm;n{d>C3}<2Sw9P+^jYVaeXPLHUqDb=)uHvBOxp8!-#tCMk1!1Gk`#FUhd~Eo_@@SZ&F-bj4Mm#7! z;)8f-J~guloqFHwI$Iw0T_=1Bwv73xCeNQdtZRl2?)LGi-6)k=Vw%cR((CEWmJQu9 z^s?2&bffs$m=y4b$yyJobPl9M9Ub~iI>0^RKpto1iQK9aU;vULSIJ+7X%a{1&|Fs9 z3J7t~E9D93UrQr9*+geLB8}d9Az35?gj6(Wq^76+$6+R_07b&$-<|CkE(c#pxOff_ z55$bGrOB8tirqtSf;+}MZ4eKOcSpO^$h3tvu;-BxMTV?+4Jatpo>4#Q8NXLJ&#mB1 zNGyn5NZO2@<%N9Ge83Kw_n4v3rBs=X#U#PapnMo8;D|V)$)2{Dp>9=<>OpBj(B?8j zFrs|87JUwEu;{d5ibs)(V0rMY#`W*2vRgWhWYK;2|I)kIS9c%*QW;Dn0cib({lljC zOe&2Lu_|MacDK0n4Q*ojAL)*-LpFFF(hjbXBV*L9Rn#0qsIQ?+vF7OygA`&h=8R3# zuAYZdVH!xZ4N^B9sJhi{DXkr`FU34|dvbq$;cNjimp!>sG64bBm37Y_j&h5jhq*^S zzYC{Hy-S=U!&u6FIIlAI3_}FCb?||(7sj~Lx%S7*p0GA(&V2+TDe~oNzMFkWd!y&*2BrZ!Q4@~}s5}S@*p>^#bn91LRpQ{ew zHH18ihERu&k`^Zt-Fy%6vVLuw-(Q1YRI9F~El@oeLCaVDN>M96fc}z+Up4})BTYk| znIR9+=5sJC+FwMemxEps0tDhOcpxAMKU56P!;(H1ymVVhmbp0yhnVugQa;+o@anB^V+Uz=w5{u}hB_f( zOwpme%j~^|EQamh& zE$ri=D%J6%fT2TjNs>Y~A|x`9hz*!)300K$nr8N(45l7F#GJy3Bzg zbGNy{zrC*$=2B0-Xn?#jPEmo|Gzpj(uM;MZ0K_Mr!Wn#hP`mr+=a5hlN;9XRlao;Cnj8&$FW$SJbba>u z?F{nOXG_5fQ7f9thFE#R>!8i1L7B?Fk&hD*U<6PGyeB}o!vr8J$OiCmKse~7;F4d3 z1=r!Phoi|EVxcM7hBMQ!&&5h1iNKu1pgl{)@E(+BfW-o%Ul#o#Zm~lRFqk-CAU0(W z==toTk@ir=5Syv4;E3D5rDeaBqTjPUJg#_&o8=>@jl=5$>xTA91>t~lck?}cTV#gl z3EU_JAzZkju%xLIC9p9m)y&2p=VHtHCdeiq*p&3*g|0f)-)4YL@DsKc$XJeWRMV>2pCyy;LF5_^w9n*T<=` z>_q+SpB*$DHANIc6OteN#P-qa&vWbpJuB9Ze2(eOQjR?yFps4ioPW(?+gkP`_(UAv zI7GRU$%vt}k~hjwu~IfXVQ5+skKryyRL8@1hq9mxQ{2Nd{5Z&hEj4A=4f&V{3r6)_ zPP0d_42oSH_T&5Pw}U)_)uZvp!aHp>J!crg$dU$^^?;M8iK_|WBM7tTkAlx>kQy`j zr3B7{krK4S2a6OE>LA_toB4$A-~bxd@zz{c`?myAl%XMPxEa|8tyuVwl@53(ZdO8S zNFc3%5LGKG&(Bm>L+EsGV#rwF2R>>IJk+nL^cgl5{0#^~SfNDAA{E0VK7yECrs#M< z0toO8ft{Ny*dKB}=;Knllda@BVXhE=_aVJ@R}O=ZMj_?fsS+b(bEAFx+`(?)4}dra zlu#N}jqn!fuVJ(QnaFojkia$AxiCWsc^980S80*603(SINk|kc4iOpSY5>m{OQM22 zqE#Y5+XcHPb5j;G7PtZ4SqkA8>{Jj)kc>ojqu{F>fr+=+%y z_Q@Rs12~Y8B_-hY`A8WHK*`4+;^sB>QA00sbF?CyAikMn3m9ZJDYn)#BOLwlw@gNS z6BooVjV+FT?a#pV4ZGZxqOnf^ckZLaHzho;e@Z6zZ!DRLCiQcq8h^d2UYq@YeF%au(#G6 zF~rX@~Kbi7fGVtP;g#V`f8wXcRq$D0q-8 z$et1WpyHt3AkU|1SnN>kjY6E5-i90H!S0&JNa#+W8+K!i0>&}!eN#eP_Z(&^{bWC2 zWi>hV98f$;LS4;>nHqHlW29EbeArq)BtelwF*+e8DT!9QCNIVKGxTqrP)w0fsITz- z-*zWBg0THV5;gWsBgwe60X5q`0+v`j17M-PNtV{#)D)2SXU~Xw44~(^Ux#PW%npf znZCnV>T&$R?`>X6f7eM7{DVt~HOP+^m8gJcq|3fJD_!u{ep-ncE4R9mQ0OaKdaW?U zev=+1rHn*E-Qf^y7LNjl=ef9Sck9f|f~ZPbK!EW10b?(4_Fs`C3U;osyW8Z-@VLpm z@9(L2@mKwdbFeqFW1Q~ki6W~{-`Pv7Gu+b2ym|g`}G&Lz=-F-^#YFHCq z`grjl=RAtodbw&o$qJFBK*VO?YT2aC6rqvAZ^3*Q`LpTXJ7kmwp#^3nU1hQC>cH@+ z7eU zYURlvheCHe$@=1MroyaFajc!l=Pef4fC?U>t!47MaBg`sN2=xnALcK{(fr48 zxvUQsle@0e?=7#j;4QIkqwUlX@x2s^d~8&+9uxSGLLw1)D8(<5)JRA_fO0knW0mB`crC?Bh56x=5ROp&x+rDTN$QP}g-A&cj) zO#nXa@j6Av_T8C#5623!KJsR6H>;&57AY7lI!I!BT5JKO{iDUy*rBR+)BwFuT7hIeII$k;3N_shOYS$0jKUy&H17`m-hwm2C7+skzzG=!xqikst8mIgR**kLUkO9`q zCe&TBc6WN?q&s**`#=ob&_*R{6SHBu=F z2-nbqr$ zuoVcpp-F!z^h0LLA7OuQ;l1*~tE3q=>~@;Uscq5J)myQJa?xGc8;aZ&E`;P&)jQi? zben(CwR_C)#k#Kxy^x>KoP)#s#bBZYNGGX>gNpi?`6<%G`wBIZs7g3(Py=9R*1-># z5q&g-snKVA!}?XQ!E(rz{VMb6juG9cTRm!56(Kc~MCQUf>%kAUnLe|oBOd*F7JMD~ z?hkmIn?p-574#gUrKv2_pF`^Z92hQMzx?|kin+nS(D4|;B@A23#A1W=Ew;SxeNLt# z35fq{3Vvwvwlts$e%;SDEkug$7L0QkW43;!c(={`Tg?xSV+W=Jy$Ou-5Nw<992FD_ z>vj(u8+#WKS<=R`pHBg1*eYhiU^vko1wX|Drf}b?=w?(B_tjJEpU?(pBnS%hw4EXq zRZH%42?`$lzf&%duL?}_Y6ow98dG2bm_{06AsxT?srMYy>Hx;a=LBmijVjOX%93B% z6*4)Ke*76UTd^kV7P~LW!Rbi%M6cvbQ)z);_jiNlle7NJR_^>4N1`hgq#|5ySdshi zh2;(r=iI~0wBkI&3qd`~K6m$)Ig#9-{B7W0MmefNF7N{3gJv%_d(~js@bs0IJQj=2 z3+fl^3q2;i40wQ7eIV!s6Mora)LMbqQ5^7 zy;sqb32`n8o)GwV{gp8u#Sr|a0mG;QwXc#}fQfl0dI;ki%l1v*wzEYwT&gm-U)e1o zP;SX{s0rJRH0o@nwl=}p8zIZ|YUVH`*Jd+dfBsJA4hmeL3B4?N2ji7J5 zVSs3|LNv$5jQ!gg**Y2J73O`Q@P#dmfry3jn=~8(u}!fjl2@(~u8=j&5-asnF=)Oh z&UDQm;z1gBYkY(+qb0(@ie#K*Pqf+_(+~q-E@5&2U;JHfl+)+aCz~Mm9xC)rK`!ORfX7)ABDgepP00SUA`!@R~iJkQG?7h5wj#l~# zHF@hoRdGowhlJS~e}y08_i;ghK8Wv@*?x6do-IONjZbvIZ!p&p2{=R)&^I+1yD~@~ zFep!Ged4V&g!ZUFt!hlFQ;4ku!p7VAW~boARTQ1j;$(7_7_gT>&vDib>l8?UFo0bg zS>`44apXqoyyKHMIN55B-K90ulHZp-1ihiox9mpRyo}`oRSR1mMt%TD3yX4iXesaV*>7m-@a*F*7KtpL|i z7ST-G0}f`86)cX}U$QQsy8&c}K@Or%2W0Y6YY5Xo0*NXQ6**a@I9T0iR2z>Xn*pAL zm@i7mfo9Q*zcx)uiRq+`G}!F0(K6aTg8aIh-HG5uOf{~}``oBEj8v);(tr?ITc5POZ*FG4A*Zd)ZKbsD zt6L;H1j$wER~GSK)(0v`5pnI}r!c6)B%g9D2r>WXJ`IUtZi$5%jD(P8^a^R7InpCW zzh7RmVShrYe|$C%aS$}!{Ggh(RG2ZFk^6&{)07rTikF{IM=l=8-49Ipn5x+ilN_K_ zQ^x5eC^7q0t$*_ke*KYWupp6CO1_O&T`g~bq3BE55Q1|41RPo{U9aY57kwHAo4GET?AXoHuoQzzYgOss8)=|PUiS*4T z7{m{JoJW`~9f+NAF#hyMHu7I&f-mtOmWgAJNFT9~I(YD_st}H|mX0Mg<+p|B_Cln0 zUVp(7=h*RloCe)Dj=LtW1<+r@-zMw)WPv_IYA~ym&Td#^1JTuB#G-we5X2VPI>h`` z*~`(qsz>6)*OMjpws)q1uU3~a$_CR0nTIr}S0_mKu(|N3pv-ILHIkBFAPGs9;37ma zU}_Vp<(I33NBjwXs&L7^%RDDueB?zZYyo-*F`4dp)@bZCC`1R3upW!dS`Gs0?!37w zs{qj@_#qb7GtBS5F?No@okhWdkCTa=Ol;e>ZQI7gwr$(V#I|kQcK)%m^Y+!-s#WcN zIJfHDy8Y$!t*+Dh^~$r&+?%nTsfK@Z*ppCY*BU~;T|=tdDp7eDsJanrZE>@yBJZ9g z?&g%6g#+s%RQx6A{k?!*dfrA2IGceF{RP+)%2J%P575)6ybtixjS{`tV)$aoH~iCr z{1?#ExDq|*;@F1t7wFbOALmziJdry=*iUD3)ut>-`@qWsDw=fFdJe7^<63COywo|r z!-Kgn0%EpoaVceHU@5j6JE%rx6vf20SY(4@a!f;}4vA87l!Rijj;KdEj{s9#{H=;1 z)~!D~#_xy>;T)$*xt#YIc|#uCnsbzlodpf$-0-p5wXB;YzeTp}g@qc#^U(C))LR~h zM+;&$(x1_1HuT^t1IH-er%kCb%}s#c)ueswXuZI`()U$sRXeGlK%bEZi+a4nqk3?< z_r!Nqk^HhYPSr+}0$plQt!>9jHc!q@PCLo;CroV7U~fE;fR14v$?dt%XDu%tKg?-B zN&pUq^GC}u((`3C&%5&@488$bt?Ya4SAeX?>KLh3PEXXLsJDeD=Sm`$$wY0!DCj|6 zKrO5F@TiH@n!fz??2?3@{R{kG+4kPoaNEe*l*1LD#k&e0aT~xbHoKY#^z>%$S~Uzf{PgmK7+GMO zGrB)E2(_{Lc~qKLlZ8*wa-hFe$}%qoS6pj%7;LKd)g$4GF4(v9%B&P-7-=dUr(<-d zq3=u-V>epmQ#NleU6-%awZd_?GQHYNh{v=%jz~P^zecdkxi^D2%LE@ZR0Eo!%D;6((1?}^%G0k?2!L?aW&gQU-$QDjPe0o`yx5cP>yHH295}SoQ zN4Hgoqmxb^BO>Xn-1SZv{tMk3L%F-t(KA$yNFP5{oR*y%5XOZ;{k}tZJbw9v)uz8> z6FsP(q$cvgL!b{9yNWT1wG1x3nJpRh$upRXIs>8A+$=|idKg~aSWTNM>H-E(|KJ}= z_kDv(CH1xaXju`*uPA_QXN=!`B?xsCsMqCQghyfxIF@aUjr4~1(?Lyb~!hNiTm^Odw%hsz>#<$iKStZ?0 za0YGa`E4(y6{An-k#%NGN`Ic3nC7fKF1?Y!M7C`7)m*GE-9c=+F7WSb<@-cDDi28~Q~8Lqga+}2o`1{OG_H8w&mv@lD=LF; zc*-+CW8}A*Lue@m`AMQlkZd*OUbg6Jl|kol1?AEC!1*~V`ZX_8AWl1>dh zZW0VZJ1p~d!8k%M_;sRjc-S$n_!Os;Vw!un-59s`Dfumvg>6bO-b04(PIx z>cVqzOxhoG4%*g(5j5a3bnQ&OYTdEg%$BA~@4TuC{Rrh-+37!Osw78p81=Ss^=eL$ z(gQM=aS13yS$xRLw1YQ!h30mwO>8%c-8Wb8Za~{CcC$_MWoHFBWS;ufF_vz=VVp4- zI=p;Axn_WMX0zx+i;?xUr&9Wi#cGCxy7Vw%ya&Q8QAYD|n#cu46vE302h8nl0E%no zq|cC94Sm+3>)f&wwlv{_jr-_kF;8oE|(!@IEo?_tgXOvp--zNi6nem6PkSI58-WRr2JH4=(r< zZG9k=C0$d?C-$X+UuQoqC@A49S?gv8$%nG%p{lpd?!pv+g~#?1b_f2C3F zlBiy!vP!nYGLJf9~+ zaU5->rg}91%NjrB+u%){VQU)41y2IZhkO0AaGvP%oYAQYxwS2|Yxr&Wc_&e`n$PMt z#di_epVvt!124(7kO|lbtrTI~cUU>wi}d#)-sk7ku2@3r(lkIASdncU&%=e{{n zTOOqkS$U>h0?N<;P%TmV#rJpo4D?{J0eze$F96Zv$MtH49?N#E0uS#bs_#pcjNw$! z8*s{lQ0e`&dd36;^!B5_;c!%rOV68dDN8_7pca|_Sguv-=le^Z zsiZv%r_MI{@J8*Fpa09L6y@Ie_psNr*U!ylo_$IW2QJ#5L77>|9*m$btKQeknhni; z=TQ+na-#L9qL*9Ww^>L}(4NZ|Q%sQ?y}2I0mt}l>iu(r{M@q2+|Ak$AiWoX3(j!C_ zMz`9Z-QJIbn?6Ywmn@+^%?5ig&~~BB{c#Uf>|8=kx31xA%@N zPWy%F8lA#FKEJn94!i)=lA=N8ruQ5$8RyFK=EfxZ|c{z2$+ifsxxNe4Of!dFr{ zEPnea>wEs(7r<4K0Ts6xCs0{}W{PzTnUh}iUrG@)tAFMVt5oYbtT5}t#eR&W=bEOU zM0|ZLxgGGfci$V5fx~C;CAU)d|Hu)vCOx-yh-q>wU6gBi<&JI}7gBl#u^x-OdQK*2 z7JGP@eW=aX)4eKdJU8|zY2Qv+m;IGTj(oV(UYst<7suFB4ueMuPFsa}6odX}vqX%S zcbLLcdO`yofw4%iSz0<{)<{Y=v%M*n76WwAL5=j;CIFPW&pCvO6cYb|=;SJ0);e=6 zVHh)}hCFGhRcPv-i_G?G{=!{rZqR0olSOT#*nBkUwU2IT$y$`=obZVPhr_WOm5EV| z#wc2NQEEEz#*Oggb5rvbDDqW`CI|3k4UDbseuqKKonzL5hK z$0QRR-(zJ(XaS;8ZGD8A&wYVQ%*xD*f8<}vJ8?$^ISGbr6A+^iqclQ5CBi|Gg${z< zG4X)zp;TTt7TK)nrHe%z-F_-7f1YZeC6yR#=Y&4`*T2r{e73CmB}vJN@K>+dwPjDQKs7?4&V(m$@nr|ZPM}Ce(HOd9 z0jgAG0=0)zEs>)LmS23qqR# zMwt$52x}b^nvOQ@jry(y3_1>Lhc{;KRp|6Io~pSI7L&>N_t|)PmV%RCyKm`DUnqZb%rD(sn`J!*!ZL_Wk@Y&XE|IoDhQYMPiBBeG7c`oGC;%_vE$1#K(FW=k-7a zz5$ldvW@Ls$EGL2w zf7@JPcfqEZWNeiGbxn1{R%9vxmPH?`9@1?eAt5&rzaKjWW&PTzp?6&tSw}Sgrpsmh zCO$5=pW)0A58B_WbAnZ;lRupu<#)xoU_`Hq(4D?|c?NlSDhnW_*XHU8<&pq-dVCR> zFNi)(YTlYx-0Shc;$YQ-!+CTAy}M2Wrch9^j_)=U$mRVdQAyHh4b8o#KlX6-0W^F= zZ3Y(zGd2r@#gLJ&@oV3(c2~g9=f%;V%4}sR^(mfpYB%o_6*I!M@^Rwct_I(4MIi2d zy)F%cuIyLVP*we`pXQKj*jEU$BDS5{``O8R6n||G}#JPrzEnD6Q(+FCZY+e?|xU|7dqi zOl|GyESzm^srUHBI< z8AEPv=bqArbwW9(QH|2+SKTG;a%x|ZHbo&TY$2#4c_@3^X&&xY06x{8G$@&#(uAqe z!9+xQ6iWJhfAo*7dm3nV)X!;7dQu>u@_xlxd=9&?(g~y@hbX4+=^(pYetzFIa)bL; zv_#WylI+HXc)UJ(n(QtojU?ibnFbNyE< z#4#PuJ(YXq`sf>eRbGZy3qR zLJCP4phlFg`PglS`D#=2uvYW<5Gbt5l#W1gI}v%b9*`9?X;jY-$J!ZD2?Z?|iw0ig zpTS}2-cGxSA6NDjWK_yv;Z27Br`~dH(3FG?piE$QOj5UUUXK5*L)OB2MY4YyZ%9dR zhnrz|<6ZwY1_ogXr&uKeY**oEu-^i2IGeAGmv3NIICA*P*w;>thDq$4GB!uZv;>Ll zq5xchY#G#Vur((^%Ixf;X;%Xf&hX7;vsfriLa*K})|Jg_xq zOb>B2U|}X`MJlnr(UVAtx>i%QvV5$xI+tgw0`+u7Cbd>)er2YZ{uQnGV8Ui}`Dckj zdr;8WQaPpi8?Q#OK&Q0h^459$e2t~uWNx4sfJ4!kOs>Gcyi*fkpr{URJC=E$ilVzH zGmeo_NSSYFA_+QCzJVU^ifHfZIXx2^WY*o&(_@!iHLN~jCuogn%B~tA`>HcbxoLt%f`}*q4Wao& z7C9v*s@}W@5z=En=SqBEi~+lXNmtEXU5;qaHeP_n)u?FypM{I9qFOY!X%}ti z-p1I%jiV#33!OpoLgxbM^<=6Uy?22{#;rCAyk=4@^M0aQYITUFwt4=TG+tcsw+FmA zN_H1Jp=sm z-Vg+2^W^Gk>49~go|A`Yi9c*{9Ozq4ZZ_`FPx#l+{W<3qd`9_< zOW1wAkR(GQY#-d`V&o!*&KG`&C^C?`sDjD@jM=ZY{39GxrLIlQiX1NU?jiDnc59j* z2C!F>2Zx1zUNID&9HC0^NJ`l~8*GTc?q`X@sJ&ooMCc}dO-U$B=UY;kToHIN1Q~`1 zO(_B~&qC9#vq{HGHY#N`&k%1a`Uh#|NMBzIyMmy4&NYL^h_q}yIy>ZBNz_1m zTg|%4S4JyddXHLK*=VnUF_gu#E!4D!@RBA*XbcMAA(FION~y>VdSc8a36q?k^Fo|K zI|>m1TZgJKTXK}7{s{lAeuI+Qhc7nlo1ao0?IFqM0h_$QKxsk0MBWmbyFi#5gzr%F zq5)^_AL@FX3v%6nkZx0|h7xy#e*uL3^!!w>Xd_H(c~Jgx$)-*}EFV$sn3G8q;=2aW zId!ElY~64_y1|dixL{hc$MO*&k23JI#+vSelW;76*4kAb?|T2ugPf@f z!g%9*xt1n;UI zj48htd-70vEo~UtVyDM`V)x0R{);v*ZsH0Is=gT7J;zxBcRFsMc&*%#FUH57HX1@k zpnGSi+^8V+(fpdd?_c*v*z4TEYTL={r;eUuFgUnMfQM7!E`Hv@<&wn*s-K>BP`J>^ z9QeuDSXSBA`k5;Be2^2HymY?W*!$uNw};PVkcDA@)zB)kFcMe_4&p{!esJDFi?Yhz z*=#15qJ*^KB3!|&t&?a|V2|eyx}Tr1%GQ)m2T)X?2Bjgr)=c3z0vSZ?Fnk_gPh*{i zRP6iSEK%O$=qT}MfCe=T_7S%M_6ht{{y(~(`aU4Npq{Gy3;d$04%DT8C**^Q2jb=F z3DCCBTsr9zf>YX^mY@!zyH;C^U}(>elLnz4GEhiUW_YjH|uhs`oPM3r0+c9tNP|;ii9jW-3TLAkcjnSHxKh^^= z?tLDR!=ut~r~#pQtUNl(lk85`is=_#5_V@Re63I1npE?}#{4H%Nw&k@>xW)H0* zCqYN4V&V{7_gweREtj4n{a{vzyteJNFMBAXPcb6LS=U!8K<@4+90sv&H0iM4-a8H@bh1e=>HBc#`r&82>*k&`@aNy zYQG!!OaEOTq3Hf^^y2?6^k1A_I#YY+V^1FkomH3JFL(V9*LwW5VeN3BRD{kxIw%_S zBM=RRPk*&n0s-ViLBwJ=OUW%#KB&kcae?>-RB2Vy72(CoVt2CGE2)3m6mgVxgk)9f z$RYrK%OTgeij}UGB_CPy0cG{MMPjHOYbDsD+YX&YWN~72+2Z$ntNU%P*G>EBe?A`Y zqG63oj(R28W*pErEME+X$D(-g?=vbfu9+YY%GuV3V=VPs}X=62ye#aajzzJ z__chIL`W|8E8gxGq)(gO6o1If9_NaOv~( z{`~tTJ(5QN$}h7gyC3tr%%x3?YCm31%*W>fpUm>iE3YU`rzie%KT;8lD@VfJrgpx^ zjjhXne{e5Y0t%F)l#i>;y*3r~3!dNZ&C_1_YdvtE$SprZ?mwsUc($8Ulh1GyD0MK3M$BEZk2m%-Y|+(ixw(D*gm=yP-^+n;Tiou8}F(Y`jDBtuOZFO|4Ay@Se8wVF@@+`FV(@t0N zjKq&P*?eLY84kwF?K_Cje$<+;v-@VFF9N7 zGyQD3t*-w5Ao-M~gV$sKrW&DT%#2*WoC_Sq)$e@!{O;}WzIm9oqLtXF*=kafZ2psE zE#X`9XK{k8SF7F9MLA(YwknrPqkVitX)y)+-K-*HLKfX4L*4E#@W-YbHM?5Sk57!3 zF*lR1X_i-#^XCNi%{1ml?dMkac+MU5&tUgB`JH~x!A{L*d6I$laBCms1oGdgYZKxt z0`3X9hL5$=^~0;nE9@(@XN&KsA{`070i(ZyF|1pSlv)^fm6d3KtVkl&5@+f1k)pBp z{8!ZI-8SHGVtaAAlHdJ+`Bc=7`dEKw}dY*uFd!CP&U7wpvd7ta? z-S7LuI9~uvp5JRfK|lqJ>H^ zu6GjtVV6X{JHsw;T$krCWoPRfX_Iy*m85wvpYBz)GcUb-cba@XPjO#a9$&(Gn=b^l zt)fBncR|hiuU&#QdE8~InUVcP{7|nKOD)Y7&egIm$6n&-$96cGUvD|rI+fM3LJ3B} zl!?+Iv&>Akj>w%#RFyRI@aRd1>1Y=0akl3%WQDYu9lrwKL-6EF6M0(!*=R9<8=Ky# z@U~KMS~#|NnWyI?wg=xmV7@pUXP}SPtJ^i@x7wZ;b0NU4SF1t{dv7O6#{0-Eua}vT4afY^{#AjHbPv*GvBV?FV3u8p`C2XaKPHE3~X zu8B^R#(MTf(&Gb#V4?zJ?)13}5^W#rcBB^4_UxgqKY%#qxipayGsGIEZ# zHVpi%DCCUT)Lsmn|BBa|xwViXt6UYsk<;#kF*XLq6`dDlh&%V*se1sKrVlPh5qR>3 z##6k1%T(Y#xaK-brrqZ!Lig<-r6B3`kiM+7%;O`Lr8d+zZfgjQ{zSLOh$Gx?2=U%nGo{$+A79VpaS7H>jt6hVIw4K zqav(hbIthW!-eH|m`PFvK2Ld;Yy%3(B$ z4ozW%G6OGmgcuc{6#3x(%}Q8*JA!l%qE2Jb`QAonKp*DB=^IF{u^^*W0U_dEsy19t zA4X7rJy6mmem@3o2t9NiAKQ@F!=QE>6|YX8wfPaj|Yd$xM6(iTjS9$eI-X_LE&J?<^>VYA~L}HyQ6nvyo#2pUZ>#&9#v=%8AXyM`+COA1(7t|U- zApzDlLk7hvbK>|Aq|T z!vVAdJA_8bVhdwXm=-W2D6D+MtGKhhxLn)O(>E9fdnV3+@tTL^smNZvhmRB>{8SOZ za{c)3I?;jYyAazF7~%;*A{AHj1~Rh;+m+&+O5(0(<5n^mCTK9EK*Mxn8F1g{)_KB1 zD#N`Da&^=>;Xy4?(+yuKY)Md-t(v;KBX%5`NVjkv2^^HOgpY*1P<-lERGf5(t*@*@ zn_bIPz+^m`n-@S8QSMUp)B(Hn57fPNMxP7Dr9G~BH$kNL^cN?G^gUz7El>0G4v4kg zAz`)=MXA$1BfDVLWPI3BdcHNH?CtW_1$@@MPX}Js`p)B#t~u_rAw5OdekfzAFQmgz zeBWW8evu!~+_`{(>&`X&27ZHDLa1+O?l|Ezj%!%PXa8V8s)WrF3OO0U{93EAE=*RMj;a;H$p!1$tK6{l#>d$IKdeVMXNC)(Z ztQObgm}C;N9+EJ(vAjy!EQ5n_C^bl;%AgyhC63oeVm)x94tWcuFw2}(&h2ZkHV+6_ z-zoSF3#(G|EDff2cGT{#;tCfo4eiY_HZkx}lo$5@Z=gzqFRc``$Dg4{zTxZ*`vJMyMU zk^LE0aT6C>(v_NYWsHY~z^G&7Psy)esq->PB9iYJc{C8P8swqD=@8hbrY|GF-Od-e_rWPNwF9fN zHlW~@vB*CPjjM{0&>AGpi7p{Z)>3`<#?*VYvy9KI3{^c>wd%r@P=*~Y!WpBg zoKqRUlpV{bA|Vew(n;^ot2)C22ZiRp7@$Wb1PKMRuJ{8ENyt&orz;`s=`6j7cm|OI z_3GdLNKDMEN^AnH!{MNSvOo^r1pHQq)Qu^QiDa1%I;~yu0;lt*M9-51ES_~h{z3qq zie(Ilmon0>yhC0P{8#h^^ntPnZ3oQqEz$r>K9%gEYTPW3qbCleAKd%uKlfI&itoxp zC!2)5UI?TT0trm93z&|FEUmN35f0DVZye46v|go~02C&hzoSZ>4iU(Du4=&2Q4t6o zq9Wyw;@@UExa}o0Rb?L&tn|!T(30}>K-gdB>`?T)8fq1ey+(m0k(L>eHJ4jOSRKHm zk_)6${mBdR(^MdmI9b4i;~8%SK%#>PLe9QY1*+;z{=a^!fWL>kgRipv!V4LeWF<01 zsnE<&0)g6exe7KP&x?fLJP+mZiI=Ak*n$1iMVyDy z8!X-fZoZBb=@*IO7VF;=D#y)uu-{QY&m@c)MMA^`{^|w2s?sv1g2~)qnlgZ|ip|ZE zVX?7`QG0Cxn-%V-wZFmKpg+{+i5B@xLMazU9KyX!%(yOoi~1f9LG8&?q{1Y-HAa_U zBsNZ{=sIrx36OzNu`xGp_P)rJ+Mn4h3fq*b5PkwR?jmKcr+1P!+Z}p-6?U}VJ?ai? z#4U2$=4>I(#)M(H;cM_Z80+`pzS&qu#r%+_UL@0Mu;q0u;nn@ApV;H&lYRKdsJ3OX z?H9MT!v46Qa1i(72?S@oJlxa{Ri8oQZhX^T)J@os;qGPat!~s6fZ&7x6t=Y6#PGJVOLd&ntGu_J%mzBmco>KPf(Srg>MiC0$Y}YVT7PtU6pE^&MU- z<}Z1BHJxm!p2R=iN*twA(sNFD&&2l;paA5Wu72c+^+^`|ynkG#9s4D5$N!M5`P7b# z$t481Bh}jo))mlu?uoXwlqbSk4=Nr-uYli`Z3x_~Fz|oXMg}5u!%)Qye_ z6bxZrpLTR@$9bbNx9nTVxcdlkkB_r6yh$eV`Mi5{Kckvad?-MXPed#bEVCf zlg%H)T8O`VPtO}Ambwoze{5qnd8Q9Xm&dPyTU+#4Ai7a{7uVL#UgR@7R_awBZRVYw z?j>DDUG?zoDBxjwhl^{QeUBMxZJ11IWgalM{S#ksXiL1=ltBmSgKbEuXUH@SNj zp9RJkCkSn%=|z%XJ=PkUU&+mlsdc*g?w0R$W~sYOo1&&qQvE8E-r--Ts4vP5Ov!QT z{WpKg4GVhmd=p!Frtk~&_>5J5mr6aHgHku&3*D_ATA$4QiX=f_k-rcK9-8*bMLHP4)!VN z$;VWMr+j--uY4dI+#??v=HxW1st&BD@t=g7x?zguXDroUV1CsQS=aQungPAkqaQm5 z$Mf%Fl+jbQtCoIRSJ%rHzK^x9XCei1^og>o`;3(K;p0Wuom^cVjSNl~D@NvKj$UB- zDI9*M%C0WOZ3={0nmoSxHUs-fn{9!ZDViyoG!Ee(MD?O#^Kt+dezN3{!2#_$Od42x#nNv`Q44 zfRuGggNZ9xYWGR4`$o^KeRP}zM>KhW<({jXa4?jGNVAE>rmE3mmhX-(JqMRimD z7_dhUv!=k^ztqPK)G5=?I-`T3eC5}A2BrS9ZCaYZu8`T1tK>7a_q0t`ZtT56TQOVh z6G;7pc>sqbukEv}g>nJ}fRnR2Q4W$D&wFTF;oI$7Q`m2`lC*Ujg zU(}`l+|pqqvPAP^pdgS~YqHng07g!hG?tZxo%`=uUH{OWXf&e+)|s>WM!j@nPOQY{ zV#`Cfqqrnq``XBK|9-`O#4Kti$}}7XbPF?|o`viEFvRA%+}yL#yk0e8N?8tDekJSX zy41CH#J$%cIJS@u#pWYcF<7*$Etw!^;GdFErFsn;2Y2!MbcZ!}!%~eaXOj&G{E}wa zfTeywU=bMv4lN@PAPSz|g-ePHxc%x}^=ZvtmNupTJmPtuQoMy7l;1+Xj^6*}LaiBX zkxPLhhCP`)GDHNa`Yi~Yg>|mDlGu&QYGWRfn{L2HXW62h3<6of(J22a+_(`w55!O0 z_SX5aNmj@cvP@5TjWLUZ<4q|+LQ1$MUhKW_#x!UU^m(qW_Jk6EddERwKwLJp|LWbW%7cmLE=N)73lZqnz7+NMOFAU<1sGwcLdZxb9a6ReeDKW%T7Mr1W!0 z;`M7mlN@>a4!@>`YH3&`t=zQCL1T^_MfZ<@;ZHwwL&5LYx~N*&+J?Tpf&nW6|0ik$ zjsSQjrSzM=$~Zh$caE(Asj(Hn02L)dBW|1jaf#t(7Rp%*FuTe|1&mD|gXomWzt&fv z4?xL#Fu0B>O}2jv1n!C-5@mO%+CGc6sgZlb9vCv{bKPNxVkTxAi$NO0XH`Fexi1@o zLqU^Pl?%rtE}UaIWng;_56a{5%X%OGuwn*TH}XeX5t8U*&Z0UC9oI2*>X5PDw&d7{qc)b3RO&2s? zUs}(X(F%L1#XMI}Zo7%cmZqf3HvfQe4T9?!7LC;CMc{=`RhZ2=y5H&`rMdlN6?L7s zGa&Hqs|>>lKguiO2TA(tDgKvjX5Cp)s=py6eq%r27r(KSS3;N199|@cF&uYHoD9v! z_+ZX(Y}R3f@dNil_N0mr$f4g!Y@7=+N@-z->Rt14l(9WFvCE#EMT2am^^C1u13iQ8 zfkl_l|G{vA1j2A4pN9o{MV&`vkYfSEA;1D53opg*6D%Y&NVI_B5c&6xER)Ay9t92< zypS+o;@_SyQxGVR5DVmn=-(pyw+J&g|4rD$0+A9C7RdM~l&H6tgmNY?~2 z7i}$HekEqgc5Txu<&#ZC_mmBT^z;jZXu)f7rdnN6UTK(=_gF}T>sCmlBi_|jhg7#X zQo7?vNaP)xPNaD9T%9L!Ej${63&(gQf%Y)3hR0l74Tn#uGr|Q5K?R{+x=67K7&~dwd2P*t3<0>Yy@J%>AXCl zGcaVZ(P4G(z>f|6!^@w6e{m7`NWzhC_W#Na{%5h+FLVeGF(e?MNXq}eG@p~Jd3ENx z9gd`H=Gao+(hA?Q4Tbs>)EY1nF<8=J)e2Kk`K6VNt7f zxQKRcMcxEU1xCR&MOAZuw=ZHVO$@GNHa8Aw0HQt4c#%s z5^tZsy6(DSbhdo#k6yar+tcmhWPWVo|ICEUtG`?nb*e2MFWWhGzFa%_I9-0v|0|2J z`Y>(h+M;NxxKkRI3Cv>MJY>2>xJ!%I=pLaD_oY}T5)vm=HBhR z{#T%W5BO%V{;mrvPa}^|T=}zU_k8^c#BINGlZx{4ebKNDfBVcn_-VtA zABI`#H^)RT|IPY(B$OE|9DB(z^~rt5GbLAR$G31}_Ko{ku2x3Z+t$j;k#~@G=shM6 zU;Onjw!b*{IF)#QPU-|FoIa6eT}sK*PImpW65Y;Mst&{3KKrPxKs^KhqMqH;b5Ia-NZJex9H;6Z3Ow=u5Y|(t#Yy$Hy%HBn*AX7p`Lq>!6}DIXQmH0h1k+QY_!YOZDVnMCJl(^%Us*c8zBVHA zohE*#^kvEP;WOdyR$H^%3b~>^(xq98?!Y-yxELlV1nYv-?wMUBouv1cjFZ>?T5zU} z?Ty>?i+&;$5y!Yeg>Isw!Bg~ia%q)tc!&G!*agd9j@mb!KNmQuES%G|$Ay_yq2;)& zN>$8kBDX@C1I0*15E6`cJMa+mN&3ryGT;Cq-o={CWU0~f=&23R zN$7%BaMlTtR$28OmR5YTiQ8O+V#bnIBl&w=ojRvG!hrDpvTsd5w!VIMkN3lOz5j^^ zN<2+D%-FH!2qiS3-yw<9(IssS|F|y-88_N9_n@|>F}td+X~^g74ozn( ztF;=t^GdX4QeWJiM53t!cpuQnio^93dmDIVb20?UY=)&eo)~ zEF~;SH@>9Q+GSNV)%BzS8-aYFS7KwfYH0}d2Y~`!f4LbJT-mH(2sb3b_ccKk4n}98 zbf{4je~YB~g&B)ZifnpJYT>QN^Fp|3g}}Nd_a=(4j;Tc5k5S_HEG;Qzvkg-6 z?}fte!W@q#Uz3)D;=L=SCC60>Mo?s%c(yf?2*&_@O=3fSSp7(--1S>N&u zYMnD3Ar)l9M5Qru6V2($a}eyrtyIZ53T|u@5n)RQRjR^#5v%gODmh+}H4(^IbY%rf z=_4(q76Bwh3Eg5+W_4y~U~AjQ*!()@zF@cs?q00G!(k)V1`r>dLsOfelNEgmqbvdu-g8+B*4wNLR-_$4l!D9_Z8M>d&=FR#JPVZ=2sPG$7 zd2O0p>}6%`zoWC1PtD$jWMh8V*sl-DKDPe$0<&MDY@wd+nZ4@S$&F0E=NL{r>ErEr zKAqEvA+385&AbvhFi!3KJz^+a zvA;QW8bPExO)7?ldcX?u1RQSLf59pb!iCzlQm6sm7@edj!CjI=_Aa%B1VF$@R-@5P zO|An_Ck0d*@Q1Cggd2>ZKpOk(AwVd!{b0gPM8{Kz{!RIe$DP?D?nfo-d!$?kPWAjc zHt4EYiG*5><*I;GzP9U@=8m25Cqlcd{-@u)^r`J_JsZto0W!4bjqr$1NYF0~GIVT_ z-Hhm625im3^JqlsOT33HI{m^ZDg&gv1ehW5&|+1EMzB2xL0RvHiV+F-N`aJbnmV?9 zY^V}d-6{iJ6EcCJ(Ku$5Uu(%P7HX3iCdXiV>%zEB$RN?^a*;!TPMd?}n@=R5xH#EyR8uEN9yw2++L zof@1}_aLrlM04^nd4Nd0)VpAM1@$WENh#AG0%hKNAUfHDWPbS22@-=730PvEf(xSh ziOA6cCpTiROwn0Pd_N`sW#y(d(uJ$d0;spOu13o&#}5gsj>P=Q3(_D`gOR-oPL|;* z$+`jxmv1_ho{d(7Rd$5GYrV0D!{*~{l5HnG^`Cf{w)z8Sp|d{-?xB|%P!jd2GLrLI zA~o^uPrP_mih^xI0M_Spo%zVidh~B%6k#+aN8XiE0T)s_I2 zApru#IHirtJW?PkkUChJiOvg1@LUyMN1cpB{CqyVKkNm zP;V}cj`2y!j@S*GL(uS8bfH0+yYAj8>Yu*^s0U+)LS`Lc_50-*1*r)COn?>gP6^yL zxm}2AgHs$91d0xT2}U3$P04-|XX9>KB-V=%A-7dhtBJ>ne2XUA{T0|E(lbsD5lt!v zafQaOLY2BLIZd*TOAByKn;N%j62$l*IJkD?f&yYB$_o#MEyt==kNP%mF%7CnBsG7k zz+qP}nw$0U^wr%&c&1u`1?rGb$?bGl3?VRkrlarj4)U#6c zek8qaW%2j6iWS3u^ z!W?b!Gw)~Q>c^LQwd-avbLcF}+GuOas0ri(!8T3FaDmMhBM$14l;56t=Yq>Y~zK z-_xZsO|{->4$=x4RF-SQdU}zRjbIv;{XzGFAq{T04~s069QwV#t3pRzN)7W zIC;HZ0pSk0P9TbfpskX2f&leN<#`Utoy^1AT8N&Y50a-?kHAp0qsqEQ|J|lv9hw4Z z6us~}s2z!^Vxm8`&kUn};{2e{EDJI7OrD<1xgz#n)Ofh;7Ry+z7H?&L!&Ex|57;BV(RCNea5#0RO3dX6rM2 z&d+ZDVW*1$(}+15k#=IC2?q+54tD1{6xt$GJJoEN7aEymRJA{Ze3aMN1P0Acpk=GC z4{FqJpBAOMJ_<($?v~&CV)e1I7O*@)qXdEd76eRgN;_;r#X=mmD{2`9Z3Y zZ@T^@c~=r0N_dPFrFd^NFn|7LKi5@+YeRlG5Y?`~Zd?-Z{m*ieJ2bP>JWQq;U& zRi>~3mvmt9c~R~72&z!C)%i`#zg$n%l{mjjSyfW?>5JlC+QlA&^Ke_f#%L@_a z!OqKMgd~6CkY=@`(|W0vktEFlDMHgK=W2|mRYwUuDpi4m|D5O=E7+3o9o>{KMke7k z_d^}3;iJ{5ED}-XU#`Uc5#GyUSzji&=Tn>2ZN9h8s8~i|ZNQCec!=3o^b^aZ7(y7w zgVNrC4Pcv0L>sXK7xc@UtPp!-h(JJ-If}9zJT^nmFtSuB!d6pyE6~kcj@-+}s9!hZ zsev-gp3y)N&LqjN{5PjUoavi1+i&Is!=8((-eujQV*s`7S^OMFSh~?7x%Ofca6Jl3 zO^}j__XxlO5YZmAf)u&!C=Gfr$tq#A>@z9waa~Sm#O*?jG>ZT8V&mCT+!s7_We)MN zJ}LA4H>X6)ZR@pZ{|CSBku0t!ycq4<8KtcDGeHXKysW4-=>`>i@U7m+YVq=|U_pZr z4X$YXl*{U@tVQ**?L^tT zTPY%E!>(C7$_}|?S+~xJrcNhg#e{Mo*Q~6aww;pt#KaH#6leRR>1G z!vWbI4?YDVt|1a8M0(4`WskI1d^|*YD#q`uHx9e<5XI~}nOb+vUq696-5!r-trESJ zj*jgC!crJ9s-NxM;23n2ZcnHmK8X9No0I~JSx5DL6JN%{#{5DkJA1}F&gOO?S!iWb zaxXL~AEa}kuyX?Fj>N5iP9RD4aDcFGm!vM+!6BnkGh+|&H#8(_`qV({xJQRl2zSl7J-=?<_9OVw^%m|9u7v22DD&=7o5QH0XV=X zD6=$&jjT=B;e}q#zcDt4{W~f{I0#~4DAih*M_NtHBu~O9N+OY7Qsj6Q}-VqWkNGcw$eJS|)09<=p)bw)pLuwM7<>_Id-ZPwwr)swDST zo5R^Sp>$U1<-(Rc`m<|?Giw#VgYQyf^$}q25^xNxW+v;vo0+>Qh|%ZwQ?WSB|38l$ z$PsK);3uSHJFkP8UEp_E`e)F4fr$f31b2%oTzdYWcPz>Gu>}$9*HGBCb*q42=G&cx zRrMbqZ5r25s{F9t^p_HY;cEmF)(Z4kUqG3s8_pN$63=FT=)Q?0pSe` z*;WB@vupB8!*7{bYrGueANM7T;w_=n)gQmV&W!~E?!+Rov*{nG9qbFNvbA1WzDZP> zzdu1(8zd*#zja%3VU03rR^P&leNhnp7-@fKMy6np zakf%XSOQP~%cJx6@3Vc^{5nk?;W>}?83pnMm%t~jJ=Q}J-s~5d_L(b+!9$VGJU%rB zGt==?m%tuvmj=BtlDZq0euDbmfKI)7+z-O4jiCLpm&Hp5;?tMK<&6QXx4N%M`j}Vc zZ^YIF#hqTjIDPGhRkD%(UiJ=}vGdZnM+34)1ioq63ip%t6V^ME#QqTw4NBj5MKa{kwwqu_lrWzXA-qyK4xq`-Ikw7^5(=dnhB{q4fWVWX-q=jBe#Ocf>jffw zWtt9%D@|Wx|6PiN7|ITna035mMjYh6`Xi(r7w&&S_RhM z^Dy8put?Cx^lkG;#ZTJO9npH9s`{2kyA zdUlJubCoyWS*I!l(wpPW;HkT+Q#s+34<|U)H zH)_gFb);53Je-a<0NGOUQ;hPhTga7>U6@e!YF2K~nv?>s3ui#zB>cle0#kJxKc^6$ zmfjazi$0@sHT0ffyma3_?(B<2txt$G0_soLxYIPbcgwrvmD>EBKec{Oh!>F?np>}~ zzhADqb<0Q2x3$yc{4PE71X!6l@EjkUp5|1!sbBsf{EpoAl>(Fq+!=nWyo3`TZ4oEq z5-ggQ!^)v{%shYt;D`4$qb7r4jgl(VbDUF!*>NzF|CDqbcqdBNX)3T#cY7VBZZ+h0 zKSBxuc5w~c+L#3WKCFII&Tna;B81yk{zpiQ$-(MoR<9-B+(Z2cY301}vu5M}3TZ9l z&1uuzU$^A3PZX%q|4T^Ej?d#s(nrIe6vh5WNQ;9S=J4CnwvsSqN2ud^a623-#|8gK zNbe8vraicJPyR^LaEke~v?s?bSstv|0&}vlW8K>=-M~OLT(bLr0@IkdFpOOGL0<|@Z^VI@M#EOD900hQCE>7K(l4aMyBQc6YN2Y1 z#5hP%3{hzGZQ=2z`IN-J(=2h8M{J5N*)>RzITym7(zf!z;-Z(v1~KAYpK65;Gr24@HK51;0N&(e`!HnemKaKjHOt#er9o^Q3j_176=0F_U)S(33W7gkMY z`YAHI5`#VY)gL<(h?vdqy{?aokkgI`tgpRm0+|AuhnK1kVt#)*JfazyW>6#~ z-6wGuTG;+5uO*8Br zJ6|(t-aT5P|420C`_p65asTak+s5~IpnBi@N+F=ndL;Fbd{9ebebm|1t2R?)S2r<2 zsm3F|eyqK1X-1PHq#oe*N$Hzyy>)4SQ%m^l{ih(EN4url>b_U?@73f9HM8 zQB-Z>vp2ejzBF0b{GLDg zX~F5DmdE~SXXLuxz#k%Q`d=aqULzrZ8>{D4s{J1#UCMmkd;7tAp6@vh<52?`4ehDH z4Zs}J`1fBT{r*FwT_N$N0bfs>7tgEL4Vp+`0h#)JC9;ugrm0}3j4J_Q2rw5!xI&ey zQ+6J(BCdGaUuXe20hxjWy?ximmM?Jmdr6;|PpwchiAuMk9|&7fw-Ens)W6a{;J+k4 zIzQNZf;~H_DR1nGzkZpTeDzOUU~ag@2;;;ho_&L3yA=Z)LWu3oZ@qncMp2<{YE z5W7<&Wt?O!G^@(77F*<)K%_$mh8A^107=SlL`IGCU8t~dYiO7{lm%rdmb-*O>!b7F zRh6cBm75csF?yBTWQKc#*=jy7e@C%m!nAISQ0DZGGv03>ZXe|zNUjjpUpJ-y@MxTO ziq81l(6~P?TVW<9JjKXPL)ikEq*CJ#_XcA8t5QKAdFyRyC-CR|&^4Sj38X~vNDliy zKic`GaWTGZDUUL77I~{S@F5MJVRbYOYi1xQ?Ih@28H(S}_gu{KI%qQHtQxJ0$&+nh zIw29v!YFqA?3o1~DI~b~s@7?FN7A&|@ydEj%c#;e-eFqAU(!nT#iAf^ix1^c&)Pg; z#zri^wKs<>X~E9sTVw#vu`iE76K8)Z<_ptFxany+h&?GP?NT*HVw-Auu-XIHsN&6h z`oR%({77)e%^LLRXsZ`TnhsC`mrXkiDTqLtlgTg{x(KQVCxTGHTHXpl*2bTd!M3N7 zO`b}BgK(D0SqLEqvq90)dp~KfiV4q<_zB1{`nE2}%B$O|ovK%MW&973 zo}~IOk(T=}k^adP{~^*fKSUZ8MsV$aBhr}v7m;TA--xuY({2HIu_BBW=-n=nH*-AG zz+4}YPOHo{Zrg!O?t>H*QB_F(LLi-*RRXZL3fiWUdwviE3f3a}P+5cx9A@PlSYtxGVY!3NO;uA({xQ+o$XWm~rO*VLg{*j+ zsO!N8!b}PMg!BSkZ=D1HhC#VlpCWvs#jGZ}yVXIn7_Lq$Fj)7}ehPo?l&{47RH%~` zwWrKZEU(#5Vx^Y+DT09do6?^A0bdRDAUYH?T0*tr-sht-e30h14Hf>V7&`DuM0Sd- zs5p*^P@=za77bF=a#51C5n{asI3x(o3|Crs;Gb(iwdNv0DZ4F6-zlEZ;y?A|g!uL$&+!^eG^ufzuk!7Ijwxg_-$wcG|b$Qw<^<-D{{l8HrIrD959XC6H2 zjS7Oe2?6i2nQ%6(SySth9P2`&PO&I#;&8E5^8DM;xhbWF+(?c4igTP-UdMPmYkCUA zW%!ueql=-h2maGfR9+Lrk?POnXM*uR@muc4EB~@yv@L_A+B$&v##^{FN>&Q1#D!`SJE}Y*WXQz?aH+=*Jt^=mO&mch_AvDZk0S8 zU%RszXd@GGZ9FU+Z4QU^8t+Wv7}EZJhIRe(m=OLAloQ z$o-ZE%Rzf{?CNwD|Ke;%eO1iK_2HKBh=Lo6jxfg!g7+H-WgKWGPqkZN=b$d7dPqV= zb3!|Lyu*KNU&@~E2zw=-6Jc0bS;2CQ3AYhx$Vy0Mr*@9n>$!7Pfxc>32ec}rJE3;V zNt4hxo+7x1A0Sp$HA9rFdVjlDXLN9~0ytXdIJHDaGtXt`TiRSSJw$2{2QLYpHB7dFNkmY})C;&Q1(! z+DYLdAA^rYFuA$(r^(t<(Nof=aoE=9lD>684e}#vLe4>hwAC(<`{BV=7SYzPt>3h* zbF($!bD+?ZTS!F;{r)cid+Jo6ZYNa3pLtfwH;ERXB+;$-Q3ji3vlX#TA0ea(Ne?mJU;tToJAVxJ~kK5Cm%K9sOmu4r&SMhq@bZEKa*PnesJ0EAjTsT&|cD0>H$P~NM z(z=RCx3o0erp-lmG4%0hYt|0>?HkQcv4NCPBwnO_+9!VHjQxo4l^%l-=E(Z@EmpOE z%MVH`XQjSV@=F6sqK8bvJ}Iq_>IkV_COFptOY+?ZpdF5mihtj57ljEBs=wKgjuscs z>o_gF6r+6$O2P>b9os_Ab9qRDIRya_ZB97MIp(jiT9q8@baBlO4|ZR?qgU(C2e6|c zodNw_cQD$E`T9>^w-&Lek6_goUGLYC=<+U&+ug)S=Y)14j z>PD$vt7hO!zqa+7#@ALOVJ^(sFJvDWi}r-i4W9JCkLbog(Y2Taw{-%^Z}8EzfV;{- zswVe5)r{a@Dq!pyNk81cpBllw2m4D7-!&BSGIX1DAzN27YcKttZr?A+3ltdAjxOgi z7u!ox=RN-A>Fem_X675pDALp04WP18{+mqK;Kfo`RuBD@2@u5X~x|^8mW>u{^ZC_kG%+1YRo*sp8j%6g}*EOd6UCG@7 z6TS#@!Lfk76dGNPIOD9eQb4DgYZhHSbQDP4z>39u{FEcX8_p8FL{iUMkO7%vp$cHw z_>~Xj2C{$LZ+;lI72gsMRLHH+0l;-BA>Nd%kN~3ZNFm4M^^<>^ml9Gm60dss*P&9| zrm|{xEeTkefqdMAokY8_)}*cKy9!}F{aATS{f4bs*_;w2zLL1oJB-*#m(5q{T7jYA2n)o@s!A?Vw71NEgsIDE@JyRTRd*eO;BGBjW4#djy{^RWX)HNJj}HZzn0AXak)CU zkT!LzB2F!4WV zTJbP@PyP|}{s&FxIl8!ndathv&%}xJ8_=SrmgZ^{(9o}+7Je}lep~^z!jLd!Il3XJ zK}=QirIpeO>>7HssL;;vw+yI;@Hz7GsnK}wG8_9Pt*M2H+@1KY%Wr`tqY;HZf(E1U zcL* z-a2aLM+lPg+;2wjjBu@6YMVBa(}% zjAYA@tmq+i7a?oT7Rmh1#uUV>%2g19mppflV`V%i`dSuGPUS+@PpONWb@||JnUK|b zoTHN(C-e8H5ZT`*NhihJ9M2c_Su z6$R3rt}y$7$3uS{kabEqU|Q_J57It=K$U<6=rUGSq^NE%!g+5< z%GPF87MiZ934rAqZ0~=e>5MimBTVMczyAwOH?(QgH1pD4J~Ee6$22eg@#Jc*U{`1c z=U2s-u92=hSFwdzY%N|=tNeMeRi3Nb@+`tvum_)wEM$eBSw(THU-kwO=@Lt!!P!BH zxTAvo=7A6{j}t|z%qE6f{DISFU_VRH!sQO3L~4$*tDX8jHnPTRMzaKD$PoIu`!RN; zMK+4u_LmB{ak4OJJSG7#9s4Et&UfnHWZ)MigQsmRkQ**4_6T*CE|}>(2DF4%XL74Q zXj;EucaW21^tS!9IK*|_Bi!|c#B zmO6vi>rd2J*nt)pM#q!Y64@u2s~+mW>b%$X>iorZXZ>4qA(u1hX(=AmKUG6LxA{Ix?%;4( ztG1z#y!141e#KC{yyk@k>G;h4@bY-VPgvSREgvv(YTrvezpkRt@<~ELVH)^{bIwS2 zPJvg-b(zjiwbM+`Il~(#ym<1;gA11H#IPSt@=H;hFjCRq+!L>MzvI(^M$HV5$lR_r zAYo}6t&XaoG0s+&U?9o%Z#b$Z=Raflwbi&Lt`Fvy?we*ly?ryF_~IM_wW8u?F?91xhFxpE;k*bQ|d@eae!aQGPnh3)Wt%>P5GQzF8C z?NgUsXJwU@?_PkgU5a!9PqjUTj1aI{sQ!zyU7#%ARhe!_QqFfHCh6up-0+TlKx5aN z^ZGH=;6GzHrRg5$6y;~d{AXt9N=%|J-F=`uWMRfObA`nkXGieOwn>Q(C;Ws+iS+A6 zayR9#Wq?;~#h>@;*k9>#{jn?umJG%4T{Jz>4v0p6JL+a;40NkAI;_1;NDw~6y%c5P zODGH8ivTES+p7UI5y}K2E{3iH)Q#mQnC%zNxI0H@WjN-i-v29NQ=V}R@bz=+`u+;s$=m7259;h>)xu(H z6Lo^Z*^$5Mygqkd>OmB3j}0B0`%($CpV?s()8%3X-qlDOX&;N4p-997HctNmJR4vo63dV z!`jlsB+7`Qk(UG3OT86bqrEW+kdVlyqd(S3!ZI?IeJ-D$Q5F{6(Jx^cwEf4q+2OtX z>BszILar{rHgD!@pGnfe_mawBAoE)8R8F;#4(Ww%m+^T{h?%NVdj|jj0%S(VqzDE_ z&l;+MUwfrdufvjoxC1HrlE>v*rkEC5QBrYQ${lW96I#)^{)pQ&1?`o_94+Rm+GHeD zh_vjfAmOk}#^i*>Wq@fHE^UvG1C40(5MbuR ziF{KdS5xhyyc>XHgOp5p-_y0mB^V*m73%=&6Fmkd{0aj`6d-vWIMt9obP6{eN#A{I z9!sDbC!I>aqEciPJ&cqS=}EE)BU$i~@yH=BC!+fA*77?yY3BrYZ~Lz%JzvVSmJ)O7 zFDbQAD0ZJCuR&LZ>Dr*zG2)amkCQhtwBZlaqRz5QQQj#2#BA_n z%I~+)JKiIx{xSWeN#@Z%O5^HryyLs-cX+^ka6T9xs=8Il=??5oOqC7QUTcn;at-KQ z^^@%e7dw~JTgdVpE|=I>fCVJQY(0>#9e6{b!$~F{rAzc!U}LBaDeLH_@GS%xSr$#9B6WF$e-4jY^8r!C>(FUR|{Ir5CS?_vN_B< zi_YvB%zlX*6BTfHSXUWj{Z8p75!8M`C?Z--?uS$XHAA6K;PhzRiIqvr-ESrMA`u6j z?x-v${&&|->Abu(?VyE)b4VY{9)0&^rEESKO>(Y}MSwvo8W z@LsYxK@j^eyN@hgFxT<|!l#KsyDj8G)%ch7XgYFO?XF(DxTI;`_K0OBXh9r#19cUy zWa6WfQ^xpICvnZ>NFBku!t_2h8tRXm0J?$>pGC@bdQ@QvM#YCpl$vy!~;BkXn%i|g}4I)dL+I4Ky75h9m;K8-NBO zFQGUDFwZV5h<6ev!_J%I)Oor!|9(v(%D{KXPbYzP4uN9-`r=E>^l}<2Jn3QE2EV|MQGh^x6xFTbY z@e+OCvMuOw@i7XyVK}Tp9Z&yNIQBX)umQdwq=;S>xb$Luyt*0Tx6qX%{Dqt65V?>4 zW~$eyAQX!+hZZ|5H;!KuvG3O`sLx9Y071z7cNvr7PvMH*`xXYLZR42B6i~^EB>bHb zYK$fahh9aXdpnljN`i`tGM!T;G1~nF(1RH>UV_PXFIs;Av(Myb690~FMk9NNN`*PlDLs1j^dRNemb6TLkl(tfsXtrG6?Z-s* zog>TQX5CHZ{Jf_0KHR$3U28{fuYpDTY3EykW8Y-=(-YA0_Og95Gb+;V+waAmdTUTl zx_oC;55cm28DQ7RsFqPVA_R%3nG1jHtUUpH1t{p5<|t1-=83et+=@#RCY*mp)yjaY zwvG#e@xGf{f^*K}tp%V8fgcKr$$5Ch7_h^b^UQD8#by|y9L+Eu-3q5x!kMF`wa<-e z-5>(<|6C2=SaCfsih=-u9lY6=u3*8oPV)PjaAmHQ4i66#C8k#C&(n$NNc8^p z7*f*1|Lk;s;%8z!3K%S9AnOA_WFv}o_WBc?XV&L(# zl_HbNVA;Be!ed3qp7l|oKt&6UctPs!$%!lfqa3}qQVT_6Fym2voV2_G!T8jcrGN{Pp>eJfry5@Vi*ew_%W%m_2rx>PGWu07@h#uQeAOFLGV!tFlQr6~4S^J( z;fysBwRlVacT1Ez{HXjH?NYCLz$W-FVPARakNlY#3)WBT80 zOKTLeL2&Pi8A4r3-OfpNVRUV|YkKSLNo7)JT7QnD^z{0nUL1Q;BVje)I;h6P!&&wu z&^1NR-2JO(lzw_~Q#{wmdk#NMz_DJU^4X9#TMbtH0iKyyjGSw|rs88oj(rXoCGa zWLEd+^mJ9#Ct>8;S-Z>D>8R!Uyq{JoZ~ioOC>YS$kh<=mUV(E*c&DzU()mr@`uNwA z1GNLiIRYrQJp-%70x!tOI+~))W-{Hp=lV~>-{s&XgWd{`Jj1b4!&Vqq&Y&v=-6dT0 zDwA1RP!6?|&?=q_?$!MJg~%h=nY$|PWfc+hm?&XMBYEe&_uKm3A=q?5z+)yfn*D8Z zNa_&mYhtxGY_lYj9pb*x@d>Z1QT()h1alPFv?oG4We)PbGM9{~Y~kP=-!`at3yYk% z>`f&tq~Ts3Vxiqod4ktgp0Cg^Q+)poR!6aKrS+y*^O|L0LC$OfVVUAMvH4Rc75COy6|OWzW3LvH5{a)T50Y`_ zRnL|IbTZ?VsI)d#Eib>r#7a90zGkB%y$T2HU4_CZPGf&1!f*y-cH&@QBV1R>E?}&2 z3c|#@+OCqSKjA6)+{|1Jhe{JArDlh%y5*I{bBj+UbvD9?!R3T{8xcKlXw;-|qvQnO z=Jt`vf5k0|tm;nG9$7Z-eoc4en2opTqEb427*`6~PHy%LU%Sbr`oV9^t4(59_8p)QH-k|O5~yr4uNYJ?MvC7}{VjW?#%KsN z(ORGUNW3`aOycJa9rry*yd^0P%Yvee%e56#bEX&8?WqRlHY#wqZ=n=rR7PmzV&mYX zdziBfdNSKMlUNG~8*7!yVPrN90L1fr!uxYR9a9%2(G1eZu_eb*{%d;c2j5s_ zZwHwdMjL1x2#o0fj%|} zo2{SJi^khlon-wL8ywM6;sORXjcmHjkCsR>OxW|h`YlKz;`$~{8Y?*OYOCl~7rg-& zuAE4@1-@y24Ac3=e#kB{o#eh^<7P>U8QXHQ`zkIQ$~k@^b+JXO@f`^7?MAoJtY5^g6lhDT@+ zes|dxS}l2Ah8l;lg#br4oL6gV{>|HJ>T6AZvmiQbBjT*)7dp+}{!L;ZysfB@M5lRu|M$ScwGk?E35zOD`j>3@H{ zi@nb*%vA)Uu2T91Zig^4N+<#=mYF~KZ9E(Hum_u{SfOW|2d8+GB_33!_hurUVM$OG z$)3+(92x|zteGdk#KR!GLO;sI(@4F5;eIqEI!I96gdA~!gMA+3YJ!s62C}#OILo+G*lY zHnXTHKU4m&CBoC?oV_|aQ>f%m#VHktRTBQWTE^s}`+Srt=zPG4*`!^FZR||*wR?*1 zJisc2HA_iH!R8X!l{iwc+|p?Xt&(O%)Hy0NRc2A!*Yx_QV$T?D5~wL7NGuy3lN8U-oh6U$bApFa{ zEM<%uGE@+iJ zJhqPG!D2`WolozbCR_POFQg(?ay_NFO}j4CKZ*y0iCKVne}uE2-u*~<>q;Atq3G)f ztNv#$Kl%Mnz?h%|n}@YrxpcC4ziV@l@V(g<=?A_@6p$a>+&ZX6V}Ya=`#U)u^yVF{WL!RY?j`~sbx4Vt<_ zsiy5Fmwo2TK7PK(J>2Tu=YvqEtK8RAwyFRUK z4V^`clXcSSpW^gLV}`3?#AB6I&9_+IRZE1-I^mFX$!`Vg=A>B-2&2xJ#PY7u@~3|q zIbrs(bSHU;&f2dvYBA!y@UmSy{#=mXNyx`b7UJ3B=QMjm^unD{rG1$Xn%&jcC}&G^ z<>U^34$H)RnpgZs)l~`->s62}lh-fiYLy?6X|^VPnqOHIiNlZtb#>Susom=J$+*^< zHqNHTE$%xdI^`#(6ZstVSoe#o z%`ei67MctHo_-};bQXq?>aMDoFFFZxyZN|K#d=BKMBf6{ zaZxY;xIEhZk3>A&j4R~_WD_~keXAqPmDnDf%mq7HtbaTC2RTsTiJHd zJ2}>msf%w|)8+##e$w7O={ZKD>G4&-JwP?;xy)}hM_^l@7^H=)Dt>A6sGq|~H~ZsX zi>r%YcORg4>f8Rh;pu5H&G&C2rFelo4UZL#!Lfg3a<8Ahv<~-*@@UL~naH;VAZhzy z)s!$-M07WHzV#BBVS%i-D!$?(Uy$nlKo@!B z+b5dnao-~E$17udO2-=()jFcuDap`%NHDDxxhbbowwOjtb61_0m=*<*$_sM2I@7p* zj^R(5nC-A-*uCu<9Z{sDREV{1Zp3=4+*2N@M78ERm4cJQi3cHhmRVPxceb0P;DB61 z-5>KPD&T)UJ#gO;cv%|AH?hB#XqdL`st^fp3y6(}xakLNW6tmMMvdMs*8Gm|W8q3J zoij8iV;kQ$YBFk}p+uiYI=p2DqrZHn%j12&{wGSi8~W7yY6*TkMpVR#kEi)Q_;Z2C zqL6$xj5C2~VN=-xxNOetMy1$+<}!(<@eUrI9iwtyNCm%a``O7<(%y*A#M~tH#_Y=$ zgAh}UJTVs1akYUvF;#(|W``dkg*`hUf3S^Sk#^`(EMH3!>G0}VjK!f}efzLLag5bn zf+Z5Fg-1o|P87U$VOrXri5iJuk=#R)x^qY@oacNAB0u5Yi!(fpt`51GXljqG!ui^P84> zpJ8SD61vr%kEZV;xl)dy`Tbd59v#H!Q29I*BpT7Vi!W0GRJJ`nM~-l;Z|jmeJc>Mk zsBRhhu3Z)IOz7PaJ7v432%4v%h|a=aeoaBd2A^7awQ+S5S!@0gBn(iO-8P@nrh$md-<$U|LG1 z%!b@De%-vO<(+nJM*hL!TIRw`*|g?cr3Pecc_#LF`d3(S&Q~yZilIJar7zjb)cvz3 z9)qe7)Ok@io^BcO!AxW z!r`bOz+R{{eFZ#7z59VDXAdhkyJQ}}Q$E{lbX~oC5#*O&`?6HrS%l)yYg<(r-!<>HJ9^Omjz`IX`kVgbk%EZ5SW}qdDI4o%C zZSr5m2r*uZEs7To$spf}Bs&c2p` z`+2t4DLTFXGh8rwzgl>PBElJyK}2rN8qf&Z$y`)wP6 zhCw1hg?FiTZo#&i8E@Sy(V^!MHgB%kQYYJ4nf$xPRzv4fJHzNB^-r#ZLNIFX)HR4_ zPdv=@62hO=L$omPx1_H!_;Yim#p`t7&R|&7KXiV4*VCxEPOY}@_EL6&A9MiX* zx0)LL^uKTEP7&vCch*zZ{DqWefCl{tvp}IWENN{|ZZK{y9=lOL*89!X)SmaeX`x|P zYzQ(EpbpGSc%U1>|1)(7y1UAt|2#ir0Y<{QKK4|UU;+ARj0FP1LIOhk z&o{jh5D;ej|E&FI{(pY()F3o~Lj0kKpwpa?pRP6Ki1XQh{DO>iJicjAG(mQ5w{*vA)c^*i}6M) zT3bdecCnQ=_FOeSCEo4j-si9{3YCnt2QEdvi=s~Oqx84DHG5Tv*P4DRwMzEd-`hp0 zcOz}i{nQsX=UG90(Tzi2V8mW2LimR-iWw-GxrgiCzvpv4I~}*A#3;v&j3e2k3Z$UY z1{6?&z-6VF>Y(9g*lA2Yh^iDiN1p0nEd?(-G_)HOf%?9SF0;|eU)VVLJ`^FE*ze$d zmr>cYX>FpsJI>6U^1hF4e%juf5G*i6l17>4UU}-tyL`l{pGCsj(4Teo9yv_Q1DpU>ysqBmFF z*q=JyKnK!0k60+1Dzg)CsGY3jS0|D+lS{3tQ*&=_sa?XDTlEGHfRXNi-h(sKCD39< zg*6wmhiC2CDSaUcB4H{I)(^E4oMfgey-M;M8!a`d-l8LXx=;pW>?MbJyrdyfA_3it84dOYkm9C9*)F#0LDyJ{1V)~Nxa=< z=}DAkKfsis4y1Vl;!~11cKr zz#}KWFDB>hii+B~^{^G^YTl~9JQm_PX|bHw9Y!=d80GASG2UBp$X`r@{H-DTqu`z@ z$(+#!$u9Zx3{+VobTWY4-g}@_|N5Mg?5UOPI9ajGlV+duFay zuU4Cw)0ZWH6a5@-QVDF?>CBUpt{*GtPl=~UfdZfT4hB9}l3awP*C-@P<}rMe>5y_8 z=iL`<2OAQEdiKoF1?5S8s=#eKEBI&%)aT(AO5O_Q@RPFWLY$i~XtF5M%@GrI(-QsN zOu@KcVP>T0oy+;?PWdrSjbbnMzl`&4PuT6e%vqo3zBgNc2_s9p>9cX>J0~fLl}E15 zIh!A(deAc?P6a>QfJ$3)YoA+dNXEN-{7HUDt{IY7O-_ckY~R-)jP=1OA4j|t4>y|s za7(>~GZtPw?irkS$tjw~b>~ol^(>Y&#c#Ex23cmw~U-u zGhQYPvP~UBh6`hCn2H!h#TgZ=C7mGfDc18-JlrQN>I59@kDYa-dSj)#f=VzLN`M?f zKrJ8u1aN!;u!IF9Jn6&%j4FnJ^dbt-21?YT4^m8Aykq0%^W@!Q@wB;tDnbQKu1DHn z>o4yk=$$q9&P-GNt+e9&0LdP-E!~pA>Jehx*j_a2CIj6t*$VA86xML*VW1Ao2$t71 z#k^`M4We^QD@_cZC2C^a=#!QCjF?J|SfaC(TWl4dhn_mL5o^0{@!__8hb|&DI>_oUxD*HB&{0y#GH(NbR^Hn# zDg_YGb_-!t=F2o}rvp!5{3a=oQsbOs>T@ z#ZfSlWD^E#I(KH4&DN-v>7~Y&Li28;0kmr@;gC}(Z}f`HEOiz5}e{L6|GX@V|j zE{+UweFdM6s&GGLh4-(Btm(i5a7%|j;Dh#z7Lp!XWBA20Qa{PE{DwGggZZ>?0GjClH5JcgqWFJhCLM!^W(=c$!nyEmY*a5z)=cjsTY1z z8(A`v1D*0}SeCB2Zl|qX?So@ce2{kYdBXZ7FqJxGxh`MqZ0)G$gVfDn@nLD&)L8>A zEo^9MbOy`r@`NEtAB%NlCk};-hCYAQebZrMqT3L+t z_#@iE9M)8Bi#U<4!RU_mRK#mY`W&4iPDpwHvyQWTCPD={|Ly(VQF1bJ-)y*Bsn1Gm zs&)~x&g3M5+^$XUYhvM9u8(W)Xe-!u2*{nCl@_!w%n8`OqEr+#KQWqD&sM~EMZBxX zXUWZvFh&&S9f68_8L#yysLl;55)lq(%7a!fHBI9t~gjem*jAI#-1aiS^rUp;i?`Sjet(%Mw&?i_L zb1o+5tA;yO;chvM?@yS(Gapfb1FFcxX!2<3DHk~P=ed^xF9eTuU%MoS7|*dk468f3 z$Y%;xI3Qgz0!xfN7L&M|m_J~%CMZ-=e`~&w-Nc_2jq;=x$r9s!&hqW{TpKP0QKP&z zeVR;WIIi%ewaW#9t=3l}XD8lsoY+N_8xQ!Q=C=OW!5!VbydBFDpQkLv$7Mt2T*F~T z9P51}g{3YnGYibs)+ai0RgsN%<>%m)d!IDD4xv6cPCv-@7lPyWQA*JzrK%8=k81E8 zft6wg?(#T&Tj@heM0+&H=N+Ba>NM@9U~*U2__BfyPInqIM1+}wnRB1HU8mz(N{})O zeKm_^FPEc7^l7H<#b8JDVi-I0}#m<2AJ4o2W!wvJc0;V=q7@Am42FK}x zK3{=Dw$XV#mqdsxmYXX8!GS(>TzMk=PRZQd-=8L~O#S9<7Kva!HP<&o`=nun8?)J6 z?pu%NPG#BVm2=}DHlKVw!n%;Yi!X1tkGb|wL$~)sflW2__+Te_cl|@@xqFv}ktEx+ z3~qhzY1U6APHavCtSucKvc&A-kMogf2u+8CCm%cN@0*S|dlD0?d>HlpPt=+oY$(B- zE5Zq6Eo%mp;L$x1=f*){LCmH>($HfdOa*fB#6cxG<<4cUq{H|`l#u_vbGRwX)t#n! z*^vTSSp}#N#s7UKq{CQQ0(^r#zHT^K!2i@qC0S2!)7p|ipSJN)VIwWDKk1X@IFB`- zGQOe$2Kjjte+t)(IWJRCOrh^lqA=NI^YpTU##%jYB+hW^OKCEls)?*4Rh}u0_q&VE zGZ&RC=!1P|hg`QhoMpRh-2M7ZU)1H(LKWT<&nFjOF^C=@a}Jk&|Jp&j}4DA2kZp~ z-|u!f{dJG_d0Q&?t{zuB%@*X@hRO|2yQ1g%(Ci53T82ZfI`q?a3~9`2G~g3-e20Be zUfbslf2aJ4-Ye>|4m-190V@T|-imYckTkH5ze`@>yQXMrFT`~!*_Q;jC2HrklTUyC z(G8_SylMx*lnq}j^`nsT<8h=Ckzm!g8Kn#zoBSeJ@l-M`Agoj z+_g!h1`Wmg_w<(*ESCRWVx2nxB->K{vMKY*pv_CSerk-g+}40~;gXcI_7yS0gV&)tvOS2E+^ zmJqO-W4Oz6nmJmH+4jW2P|Wc9ffS^P-i>Z6*|x#imyKUm|Kl-juo=J?q}r?!Int7m z)fy%!QLZL5D=)@aB`OSP7k$f>p`?T#>vEX2vQ?tQC$hR~H~@!b96g;L$=gJfo*s`K ziB?+dAu0^FonKxcGwcm?OL0by zd18=*VsZxDwuMAZ!dhR3gA_bP$9yQc-`6W^2lSJaxDl5dPG1f{o~=^P6%CZcbH~Hf z^%Wx^&peV~o4yzkw&e*7seHdOJdygczDaL}U=R-u!T>}@xijjVyfS?=vM?$}ASb)D+kurx4m~Q4VQFdA*TjbrY?T#Ms$&=|=X=k2y1I9vE`W(R zt~eTghPdxA78OKC-h&hCNqKN=(0I+dNw@t-eNRp-hGkBo)}5sA19;LVxw|n(<7p$b zD5=Fa)h0j_d2%frOTX}H8E;H;$Xo~?R2?{rM)x=nC!uC#W9AfWB}iU0b?N*;=@s?0 zQa+x`-m1I**%!fe>^|1Z23Q{(sY3H=){AY;zQcF-pC9IGfumxMX7$EzGuSc+uClbR z+Sa(cxM^?iAT!Lz>#cqWG49dD_EITX<|<8m7_RT$$koh%*Xl$ZQu)UuC)qc!A2EP< zb`R8iVwmJ^I7HQ`A#bmDmGTpqy}!*lLxxrKv$EF_oc9?n%tv2o{%Br_$TpXHSzpFR zF@5{y{i$aX3+AlH(@(=2%swZiq!XbCj0fJ%3fp+I+l>qTZ0Uj=LvMbB=$=Y3)F^yU zqv|k`gG7fiF|QzH2B)PX`&(jq#P5Bx6Ph_^AF00xxg)ey?+#62YqO?U;;AyV5`);3O866`&xHw)ktp|^dbjs_bS+4q_ROzJnbB>u zwG?BLfo3%H!&asm=Mq;y-^9DFC^&U;SR`o^Nkno0(qHJSdWja9js8l&ZsA)G($ZX`qQ`s^~_1>mQ*W^ z38G>crmf2`?ETU_61YNO8N3}SrMc{Q5#X>))OrdDN3@r%LKb#Nh0EAjCp0xR0b&0K z>#msP2)Hy@Lby{Nw?Mr}5I)k-Yjw>f$>NbdGe&q03+l_(MR>LmhqvLrNAB?VQ1>w>-B9QFKJ{2=aP5&TceuwXn?$;l;~sK>^5> zuZ`oUa!(h9a#$*emIO)fT8Cl%?|WBlzBkRGoI zBi2N%GwSV9nbtHmZ%bZ}kTKSivwb_Dz=`jJ*z9Vg${GF19k@gPn$6N@0kOzIyS$Gy z5^j?l`W!;Of#($23s$s?TJeNph6`2UIwGU;9`(z!oqGzMpt>!%ekzESUkZ5dmoUB%u=N$6=|nH4-TJZ-@G8AF||pE z1TSye2s4P}=wo~l2@wrVITdAj87rG3GGADzhZT>twv~lgI^s25VYOUA9u3Xs#7T6$ z0DTr+Z_*v3Bbn5QRDLBK{jr34>3A4O?PWqJrLYO5+V_%G<5>cU&sL-XGKobxr~I;J zA;YHegKuyp*k7I8wXRPW<-KqwCA{2(ucpDpzl%j>4yI2i6JO$R{#wJqfyXd?+FL{R zETZW70fi6lJig^?)8U#qR}8;{cl=+XM9c3~+}`8e6S>^6cJ^DG@dry^oGUk)*m`4P zg}5U9D3zx6(1W=tHA}vD(ZR&Gu}yKfO;MUP>!AEi+*8Y!U#r80c^Gh4PUfNa^@oqf z>?Fp+wY|IWkj{QYfG5Sb!1D{4m8v>?Br|)?P_Fwu`R)&U(x%jIdqb`&%Kd_Y;Y|3Z zBhOl@HZq^=zGCPt?9@NrRm8syvTlAA&uLlfiXc=FS?rAU-Pf2E$+3P^DcSqw4xBrLq?|9Wb;Wjx7?HOEJq+J2vG--7&T;eZoL&yN4kNMy}E? z`!S?~Iv`(F<_X+ev44(AP=qJ;v;*sT5po?%rfe%qN|}DcGV?#cIY0)fG2pae)zErL zYJiGZdLTJmo1qlSQpag>s6lo;*l`Df{UNmFp~`E|Du(Q9qz1w*qZHkHhNHq+q5CVR z4Yvp^)#_&+2;{+R;pc_SQ`H=@s_SM=nX%Ss3;X&23hGKX@ek8`XwnID#&vU~$|-)g z^h_lmnPr^>LEp|sxy%$Lqg<4_JTnM^>M*;N>Y88lNT>$KHGo5?*!3%DcBZx8_g|)VuZ~@Dsf7D#E;9Nb5Pj zzlo94Fm^DYH8Q`ix!ywD3#huIR$UZx-UVH@agvLX03hfN0V(wSzX3?B=4JwBoIHF2?22+y zFO=0@u(^7=x{ZEB58}W?SZz~rLW)GMA6o4UWw4f9U&RK1EQ8vLL}^;va7bi(k8U47 zFQw$sS*kPECFGoA6Pic>-p6bx3;D=>0#Hay>S|2Gm71chxi^I6g_%4gJC0uDlZ*GU zPFv<1rStbNXP{qi`+YX7yIeDywL68@@r{dk zE;DU`!P7m2;2Q9s1Ap`MoK+Pb z01!a|0H85he;D|y7ZT5v{x$A$kdnh9A7fK7{h%^c%+uE1 z80#T|+HUz%Hj(^jqdu1x)IlZ{r;k`)hrj1w} zhPy=;p=<)VZ4aCC;uuMs-ziVJ=!ODuWL@VV&mF{X+w>4~ki?PmqSKW0-pkwV{%*-F ziR`JHyCIIoM880Wk$~Mm(N5g#4R|JU$EpHI>}?H4czvnKcy-wO!4a&n7!8j-SdEFUg zh9bLi9K^RHnO@{nyn$P33vtK}0Y%^U_)}C~>fJcO@xP4c$=y2&)NF^G9*74@;rgEh z$!macWOWwYR-fv5h(*!8sIxJCLwHDLps@GSy1ylw09y+?z?@pP7jg`(Cg>}Z;RWN2 z#2*1Wym{HMCIq#@MQLIn#4noPmTG6ok`Bn&I1QGDx&b{-?@mF2aP5nr<9JM``_ zbKLw+I-(+vBZgLMvRMsPi(v&LhmZnh6Rcr6-T)k%}&o z=JC`6;;IH9Cy=_F#(!|*W{1D73KKcL!#PN~Q?th;(^)kaU1HO&_^fIB~axg7!1%!zJ3BFBvtG^B5t1qxFi#$*8QFSje zVl65x;_u?2iu=@n>Lqkg+n^r7EAjeP9QmOFMEtYyqfCja4iZ6{+ zyx71~%;Rw(AUeGOj6TraeNTaq%Wvw4b}1GwqEAgxL{j)lv_;02rssW#+cG)rqM*MY zyb;S`EuV@j%@6Qfg3EAH7J={Iqwm5uoyplv=yqtA0?jSNhMkXKX;mk-fZWQCdS;&B zvL?Hx*JC48@pmjV5(+(K?yipy+tO{NBcHn#@IF>9KZ1eazBD)IrGSx9aR#%7nU#*k zv6qGe37-u=T!|qYGf-V<>532v0-jM*Co-trlc}hEw+Hf2pk|dqUaszjNiBaA%*!OI zPf_aOOx6s?{GqC!cW!c{pK<|8rU2$hi)P@hYBclUZI!`d!6*v&$(p3hwXpFt!SHE; z&Ra53OdTN%oq4%}s60U=N=JI1@{dOe1|faO#3tyM2qmVfG)*|kONp(;PhKz!e$pPF z?v6qv&I{-ueU8AG+Nj(-D1?|Cq{1}6)zi8WIZTrm+yClQ5Ui_^%41C&L{fU$f&818 z>EwlQpFa$(4xD`YcSm94-K0Gpr$uYbB=>APvo#6FXQf*`NYh>9Yb@Iv&%?O8!BeF| zv8OkHT3!L+i`KqY6bj{mh+SOD`8ShbF^eR7(h|Sf51TwiB%RLlPNH48VUvdx?zb;S zWdS7gOrmmfNCmW(@LbOleGj=<@X|ahL!O%Q7|k#=;sa+uCM>je2E!*-DCx7s{tKcd za^UmV^mxwq5IK44z(|6CUQ&bJp5v_^fdQ9Ayhnhl!V?%A0P?@~oe>J?6#mutpRcDs zFEIb7_3tj}SO33D5{>a=fXZM1fDOdIo!CzVfCJk6_x>gh_U2X=Y}PIg_PT-Ddn-F5S1Sj5HWL?@-+^L1 z%jCjP2ki*$&hU!{Z5hM;Cs98~ZQ@{R=JF@%QI*m3p%efxVgmp$|AV>#^@~6I|6B+_ zg|Ywq)y&S=%+%D(^iN>AN&72QsN7Hl0D$EmU;_F73br!iXZ??oYhUCKr$Nd7(3z$C z2iYEKL_fv-Su<C$$S??Sul*X%v9kBh^2c3QGTt`6pglKdZ(pG{%}23WElG|DR9K z%Rli<&Fmc5EM4tvfBozKZi@InF@Krjl^15%J%F(6rXS1Ah;-{{^Hg{O`cO z0`Gq({{HgKFQR$Z{~wX-cjWKu?qA6Exj!NQ&noai Q@DzH4L+^Qs)xWO(AJLDh5C8xG literal 0 HcmV?d00001 diff --git a/fontello/unpack.sh b/fontello/unpack.sh new file mode 100755 index 0000000..f61e0fc --- /dev/null +++ b/fontello/unpack.sh @@ -0,0 +1,93 @@ +#!/bin/bash + +# resolve current file's directory +DIR=$(dirname $(realpath $0)) + +OUTPUT_DIR="$DIR/out" +SASS_DIR="$DIR/../sass" + +ICON_PREFIX='icn' + +# list with full paths, sort from newest +NEWEST=$(ls -dt1 "$DIR"/*.zip | head -1) + +if [[ -z "$NEWEST" ]]; then + echo "Fontello zip not found." + exit 1 +fi + +# Clean the output folder +rm -rf "$OUTPUT_DIR" +mkdir -p "$OUTPUT_DIR" + +echo "Unpacking fontello..." + +unzip -ju "$NEWEST" -d "$OUTPUT_DIR" + +echo "Patching paths in the fontello CSS..." + +# Fix bad relative paths in the CSS +sed -i "s|\.\./font/|/fonts/|g" "$OUTPUT_DIR/"*.css + +echo "Generating SASS file with icon codes..." + +SASSFILE="$SASS_DIR/_fontello.scss" + +echo -e "@charset \"UTF-8\";\n\n/* Fontello data, processed by the unpack script. */\n" > "$SASSFILE" + +# Extract the base font-face style +#grep -Pazo "(?s)@font-face.*?normal;\n\}" "$OUTPUT_DIR/fontello.css" \ +# | sed 's/\x0//g' >> "$SASSFILE" + +grep -Pazo "(?s)@font-face \{\n\s*font-family: 'fontello';\n\s*src: url\('data.*?woff'\)" "$OUTPUT_DIR/fontello-embedded.css" \ + | sed 's/\x0//g' >> "$SASSFILE" + +echo -e ";\n}" >> "$SASSFILE" + + +grep -Pazo "(?s)$ICON_PREFIX-\"\]:before .*?\}" "$OUTPUT_DIR/fontello.css" \ + | sed 's/\x0//g' \ + | sed "s/$ICON_PREFIX-\"\]:before/\n\n%fontello-icon-base \{\n\&::before /g" \ + >> "$SASSFILE" +echo -e "\n}" >> "$SASSFILE" + +echo -e "\n\n/* Fontello icon codes */" >> "$SASSFILE" +echo -n "\$icon-codes: (" >> "$SASSFILE" +sed -r "s|\.$ICON_PREFIX-([a-z0-9-]+):before \{ content: ('.*?');.*?$|\t\1: \2,|g" "$OUTPUT_DIR/fontello-codes.css" \ + | sed -r "s|@.*||g" >> "$SASSFILE" + +echo -ne "\n);\n" >> "$SASSFILE" + +echo -ne "\n/* Fontello classes */" >> "$SASSFILE" +cat "$OUTPUT_DIR/fontello-codes.css" \ + | sed -r 's/\/\*.+\*\///g' \ + | sed -r "s|@.*||g" \ + | sed 's/:before/::before/g' >> "$SASSFILE" + +TAIL=$(cat <> "$SASSFILE" + +echo -e "\e[32mFontello ready\e[0m" diff --git a/img/adapter.jpg.orig b/img/adapter.jpg.orig new file mode 100644 index 0000000000000000000000000000000000000000..ab6cfd39e73da089319da56e313b7fa5044567ab GIT binary patch literal 18599 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 literal 0 HcmV?d00001 diff --git a/img/cvut.svg b/img/cvut.svg new file mode 100755 index 0000000..dc015d3 --- /dev/null +++ b/img/cvut.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/img/loader.gif b/img/loader.gif new file mode 100755 index 0000000000000000000000000000000000000000..dfb5362605d0ed553ed2eb66987b6ef88ad9ac27 GIT binary patch literal 2608 zcmdVcdr(tX9tZGC9yiG~=H_)naswe?5R~UqMJTodxey=~NCa(Y#3i{TBv2*Nh#=b) zL=g~MmWL=*MtQV=mI_)6B83!0R4lKkL0Awa>g-tSx^1UAyUPaK&d&a^-PxJ;kDkBJ z%sKO!-}!z|bgV2SRO1G?0p9`uhl4CFEqQsZ2@88op-`rzY&RH;K|$*h6Srh#nS6YF zgM&AurfQAGOtpGjM1&MYU9?&}G&F3@8lTb8(K~l$&Ye3S6C*!*v^FOvx1-||9*=+G zL_=R+pG+3R=cB#7y<=nJz^}I4msZ3_B_(1Jil`v}K%$f5AoqWwShh}M)}@K}7|jN; zCPS0^c9tg1-?&qs1-L&a(ICez-{mVUBLLu1c!4Q~OQ({F1zL+lG}LO&4VQGh8LsQK zhrFKHw!gqHvu9hm*T!vu*YxYqp;RLJwEF`g6o3MGs`Pwh&k7}!MJrS>V2BA2oCT=i z2px({E26R38X@RftRp4m0rfeVc@*hZ9gCBLaabm5RoUCZA3CEuG>#(i47^Rb?+*z zw8(>TQs0@9@puFd31AJp(348p?~tBM(+EFrG@uaENk16@-<5@I`Uv`hciPp9TK2Wc z5}5vH+OTw`VSuCCbHCR%|2IA0PFF%Za@8++m=MfR0|+7(MQYO=KpAXSZcPo}O-d;= znvG3O4Cz)ii(|$_t{)>V072jIDF*f+FcJS`0287;={S5fQqaRE|Qr#e!+#9 zP9DW`smh@dmgHSjkjj~)jPt9i(9z>s3PbLjZ#}z<7R?weshT}my4AjTjP7sGb&c(6 zzRGzu!ZBh$H$?w0(C&94|I6oYAfP zlR6rQ`y*jI25%mQ@L0TjSjxoZQ&ZrC?L0C!$0c8%b)KK&)v7Mr1P>5CvCk$%pU^(V zKkEmdAeY-!s((Bix42T=DY72<)L3nW`Ovyu&qxC<#V`i-StfT3#Us)K*%PnmYvepf^ ze_wqNs%J^$$3p)4ohS7ddu`XL_8a?f$0&)!2(s_rk?n{isT;qf-EkB#DcqpwCcME@Vhj2 zF2VCJ32i%e$TZ2;M@q>)55K77vkw_jK`W`Toy3Rsn%6RH)&r}qY~^z{1Wd%7_Gmp7 zwL@0nt+^+etrh=Qr$0yndC-r+o%H=K(^{3U*kbo!Otn#}{IYse_IqqhD{!=bU1us$ z`n3Df3^m|IUUGUq4OqE55~6Pdbf~~tvD|Kkbb2O6szqEup@z*mXdq#fd_a@~Wag&= z)NB^#V=1TE;7IU%_GcJ7pFqrJSR#)ah#wf>tC;LVa(3MWluZV+nG;fGHaI^qYnYo~ zFl@TDIBkf_9-p5w4jV@1ucsvRPYhesQg1O0nL^7+i&`Wb^;-IwU`j7Yz93; z) UyME?^qvFCG6&JSrKYF?T1>ho$iU0rr literal 0 HcmV?d00001 diff --git a/img/vt100.jpg b/img/vt100.jpg new file mode 100644 index 0000000000000000000000000000000000000000..70460424146a7244d0c97278296eb631af97826c GIT binary patch literal 11088 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 Jl5KyO|6gXHiYfpA literal 0 HcmV?d00001 diff --git a/img/vt100.jpg.orig b/img/vt100.jpg.orig new file mode 100644 index 0000000000000000000000000000000000000000..909461afa7d6d3210eb1b8f378bf0a26ca79d87e GIT binary patch literal 18503 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