From 677f7e56c84c3bb5f70efba14ccaecde37164a8f Mon Sep 17 00:00:00 2001 From: technyon Date: Tue, 26 Apr 2022 22:12:52 +0200 Subject: [PATCH 01/15] initial w5500 support --- CMakeLists.txt | 5 ++ Network.cpp | 119 ++++++++++++++++----------------- Network.h | 22 ++++-- Pins.h | 5 ++ WebCfgServer.cpp | 1 - main.cpp | 8 ++- networkDevices/NetworkDevice.h | 21 ++++++ networkDevices/W5500Device.cpp | 95 ++++++++++++++++++++++++++ networkDevices/W5500Device.h | 24 +++++++ networkDevices/WifiDevice.cpp | 62 +++++++++++++++++ networkDevices/WifiDevice.h | 23 +++++++ 11 files changed, 314 insertions(+), 71 deletions(-) create mode 100644 Pins.h create mode 100644 networkDevices/NetworkDevice.h create mode 100644 networkDevices/W5500Device.cpp create mode 100644 networkDevices/W5500Device.h create mode 100644 networkDevices/WifiDevice.cpp create mode 100644 networkDevices/WifiDevice.h diff --git a/CMakeLists.txt b/CMakeLists.txt index b36074e..0a2b8cb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,7 +17,11 @@ include_directories(${PROJECT_NAME} file(GLOB SRCFILES # "Lib/FreeRTOS/src/*.c" # "Lib/FreeRTOS/src/*.cpp" + Pins.h Network.cpp + networkDevices/NetworkDevice.h + networkDevices/WifiDevice.cpp + networkDevices/W5500Device.cpp NukiWrapper.cpp MqttTopics.h WebCfgServer.cpp @@ -59,6 +63,7 @@ target_link_arduino_libraries(${PROJECT_NAME} DNSServer Preferences SPIFFS + Ethernet # esp32 # Wire # FS diff --git a/Network.cpp b/Network.cpp index 69dfc64..882d8ac 100644 --- a/Network.cpp +++ b/Network.cpp @@ -1,18 +1,21 @@ #include "Network.h" -#include "WiFi.h" #include // https://github.com/tzapu/WiFiManager #include "Arduino.h" #include "MqttTopics.h" #include "PreferencesKeys.h" +#include "Pins.h" Network* nwInst; -Network::Network(Preferences* preferences) -: _mqttClient(_wifiClient), - _preferences(preferences) +Network::Network(const NetworkDeviceType networkDevice, Preferences* preferences) +: _preferences(preferences), + _networkDeviceType(networkDevice) { nwInst = this; + _hostname = _preferences->getString(preference_hostname); + setupDevice(networkDevice); + _configTopics.reserve(5); _configTopics.push_back(mqtt_topic_config_button_enabled); _configTopics.push_back(mqtt_topic_config_led_enabled); @@ -21,53 +24,46 @@ Network::Network(Preferences* preferences) _configTopics.push_back(mqtt_topic_config_auto_lock); } +Network::~Network() +{ + if(_device != nullptr) + { + delete _device; + _device = nullptr; + } +} + +void Network::setupDevice(const NetworkDeviceType hardware) +{ + switch(hardware) + { + case NetworkDeviceType::W5500: + Serial.println(F("Network device: W5500")); + _device = new W5500Device(_hostname); + break; + case NetworkDeviceType::WiFi: + Serial.println(F("Network device: Builtin WiFi")); + _device = new WifiDevice(_hostname); + break; + default: + Serial.println(F("Unknown network device type, defaulting to WiFi")); + _device = new WifiDevice(_hostname); + break; + } +} + void Network::initialize() { - String hostname = _preferences->getString(preference_hostname); - if(hostname == "") + if(_hostname == "") { - hostname = "nukihub"; - _preferences->putString(preference_hostname, hostname); + _hostname = "nukihub"; + _preferences->putString(preference_hostname, _hostname); } - WiFi.mode(WIFI_STA); // explicitly set mode, esp defaults to STA+AP - // it is a good practice to make sure your code sets wifi mode how you want it. - - //WiFiManager, Local intialization. Once its business is done, there is no need to keep it around - WiFiManager wm; - - std::vector wm_menu; - wm_menu.push_back("wifi"); - wm_menu.push_back("exit"); - wm.setShowInfoUpdate(false); - wm.setMenu(wm_menu); - wm.setHostname(hostname); - - bool res = false; - - if(_cookie.isSet()) - { - Serial.println(F("Opening WiFi configuration portal.")); - _cookie.clear(); - res = wm.startConfigPortal(); - } - else - { - res = wm.autoConnect(); // password protected ap - } - - if(!res) { - Serial.println(F("Failed to connect. Wait for ESP restart.")); - delay(10000); - ESP.restart(); - } - else { - Serial.print(F("WiFi connected.")); - Serial.println(WiFi.localIP().toString()); - } + _device->initialize(); Serial.print(F("Host name: ")); - Serial.println(hostname); + Serial.println(_hostname); const char* brokerAddr = _preferences->getString(preference_mqtt_broker).c_str(); strcpy(_mqttBrokerAddr, brokerAddr); @@ -119,14 +115,13 @@ void Network::initialize() Serial.print(F(":")); Serial.println(port); - _mqttClient.setServer(_mqttBrokerAddr, port); - _mqttClient.setCallback(Network::onMqttDataReceivedCallback); + _device->mqttClient()->setServer(_mqttBrokerAddr, port); + _device->mqttClient()->setCallback(Network::onMqttDataReceivedCallback); } - bool Network::reconnect() { - while (!_mqttClient.connected() && millis() > _nextReconnect) + while (!_device->mqttClient()->connected() && millis() > _nextReconnect) { Serial.println(F("Attempting MQTT connection")); bool success = false; @@ -134,12 +129,12 @@ bool Network::reconnect() if(strlen(_mqttUser) == 0) { Serial.println(F("MQTT: Connecting without credentials")); - success = _mqttClient.connect(_preferences->getString(preference_hostname).c_str()); + success = _device->mqttClient()->connect(_preferences->getString(preference_hostname).c_str()); } else { Serial.print(F("MQTT: Connecting with user: ")); Serial.println(_mqttUser); - success = _mqttClient.connect(_preferences->getString(preference_hostname).c_str(), _mqttUser, _mqttPass); + success = _device->mqttClient()->connect(_preferences->getString(preference_hostname).c_str(), _mqttUser, _mqttPass); } @@ -157,7 +152,7 @@ bool Network::reconnect() else { Serial.print(F("MQTT connect failed, rc=")); - Serial.println(_mqttClient.state()); + Serial.println(_device->mqttClient()->state()); _mqttConnected = false; _nextReconnect = millis() + 5000; } @@ -167,13 +162,13 @@ bool Network::reconnect() void Network::update() { - if(!WiFi.isConnected()) + if(!_device->isConnected()) { - Serial.println(F("WiFi not connected")); + Serial.println(F("Network not connected")); vTaskDelay( 1000 / portTICK_PERIOD_MS); } - if(!_mqttClient.connected()) + if(!_device->mqttClient()->connected()) { bool success = reconnect(); if(!success) @@ -188,7 +183,7 @@ void Network::update() _presenceCsv = nullptr; } - _mqttClient.loop(); + _device->mqttClient()->loop(); } void Network::onMqttDataReceivedCallback(char *topic, byte *payload, unsigned int length) @@ -323,7 +318,7 @@ void Network::publishFloat(const char* topic, const float value, const uint8_t p dtostrf(value, 0, precision, str); char path[200] = {0}; buildMqttPath(topic, path); - _mqttClient.publish(path, str); + _device->mqttClient()->publish(path, str); } void Network::publishInt(const char *topic, const int value) @@ -333,7 +328,7 @@ void Network::publishInt(const char *topic, const int value) itoa(value, str, 10); char path[200] = {0}; buildMqttPath(topic, path); - _mqttClient.publish(path, str); + _device->mqttClient()->publish(path, str); } void Network::publishBool(const char *topic, const bool value) @@ -342,14 +337,14 @@ void Network::publishBool(const char *topic, const bool value) str[0] = value ? '1' : '0'; char path[200] = {0}; buildMqttPath(topic, path); - _mqttClient.publish(path, str); + _device->mqttClient()->publish(path, str); } void Network::publishString(const char *topic, const char *value) { char path[200] = {0}; buildMqttPath(topic, path); - _mqttClient.publish(path, value); + _device->mqttClient()->publish(path, value); } @@ -384,14 +379,12 @@ void Network::subscribe(const char *path) { char prefixedPath[500]; buildMqttPath(path, prefixedPath); - _mqttClient.subscribe(prefixedPath); + _device->mqttClient()->subscribe(prefixedPath); } void Network::restartAndConfigureWifi() { - _cookie.set(); - delay(200); - ESP.restart(); + _device->reconfigure(); } bool Network::comparePrefixedPath(const char *fullPath, const char *subPath) diff --git a/Network.h b/Network.h index b71a54b..e049e3e 100644 --- a/Network.h +++ b/Network.h @@ -1,20 +1,30 @@ #pragma once #include -#include +#include "networkDevices/NetworkDevice.h" +#include "networkDevices/WifiDevice.h" +#include "networkDevices/W5500Device.h" #include #include #include "NukiConstants.h" #include "SpiffsCookie.h" +enum class NetworkDeviceType +{ + WiFi, + W5500 +}; + class Network { public: - explicit Network(Preferences* preferences); - virtual ~Network() = default; + explicit Network(const NetworkDeviceType networkDevice, Preferences* preferences); + virtual ~Network(); void initialize(); void update(); + void setupDevice(const NetworkDeviceType hardware); + void initializeW5500(); bool isMqttConnected(); @@ -45,10 +55,10 @@ private: bool reconnect(); - PubSubClient _mqttClient; - WiFiClient _wifiClient; + NetworkDevice* _device = nullptr; Preferences* _preferences; - SpiffsCookie _cookie; + String _hostname; + NetworkDeviceType _networkDeviceType; bool _mqttConnected = false; diff --git a/Pins.h b/Pins.h new file mode 100644 index 0000000..df5d0c3 --- /dev/null +++ b/Pins.h @@ -0,0 +1,5 @@ +#pragma once + +#define NETWORK_SELECT 26 +#define ETHERNET_CS_PIN 5 +#define ETHERNET_RESET_PIN 33 diff --git a/WebCfgServer.cpp b/WebCfgServer.cpp index 98f3927..a85e308 100644 --- a/WebCfgServer.cpp +++ b/WebCfgServer.cpp @@ -1,5 +1,4 @@ #include "WebCfgServer.h" -#include #include "PreferencesKeys.h" #include "Version.h" diff --git a/main.cpp b/main.cpp index 4a89ec6..0379bd7 100644 --- a/main.cpp +++ b/main.cpp @@ -1,4 +1,5 @@ #include "Arduino.h" +#include "Pins.h" #include "NukiWrapper.h" #include "Network.h" #include "WebCfgServer.h" @@ -80,11 +81,16 @@ uint32_t getRandomId() void setup() { + pinMode(NETWORK_SELECT, INPUT_PULLUP); + Serial.begin(115200); + const NetworkDeviceType networkDevice = NetworkDeviceType::WiFi; +// const NetworkDeviceType networkDevice = digitalRead(NETWORK_SELECT) == HIGH ? NetworkDeviceType::WiFi : NetworkDeviceType::W5500; + preferences = new Preferences(); preferences->begin("nukihub", false); - network = new Network(preferences); + network = new Network(networkDevice, preferences); network->initialize(); uint32_t deviceId = preferences->getUInt(preference_deviceId); diff --git a/networkDevices/NetworkDevice.h b/networkDevices/NetworkDevice.h new file mode 100644 index 0000000..85d1a84 --- /dev/null +++ b/networkDevices/NetworkDevice.h @@ -0,0 +1,21 @@ +#pragma once + +#include "PubSubClient.h" + +class NetworkDevice +{ +public: + explicit NetworkDevice(const String& hostname) + : _hostname(hostname) + {} + + virtual PubSubClient* mqttClient() = 0; + + virtual void initialize() = 0; + virtual void reconfigure() = 0; + + virtual bool isConnected() = 0; + +protected: + const String _hostname; +}; \ No newline at end of file diff --git a/networkDevices/W5500Device.cpp b/networkDevices/W5500Device.cpp new file mode 100644 index 0000000..9d4219a --- /dev/null +++ b/networkDevices/W5500Device.cpp @@ -0,0 +1,95 @@ +#include "W5500Device.h" +#include "../Pins.h" + +W5500Device::W5500Device(const String &hostname) +: NetworkDevice(hostname) +{ +} + +W5500Device::~W5500Device() +{} + +void W5500Device::initialize() +{ + resetDevice(); + + Ethernet.init(ETHERNET_CS_PIN); + _ethClient = new EthernetClient(); + _mqttClient = new PubSubClient(*_ethClient); + + // start the Ethernet connection: + Serial.println(F("Initialize Ethernet with DHCP:")); + + int dhcpRetryCnt = 0; + + while(dhcpRetryCnt < 3) + { + Serial.print(F("DHCP connect try #")); + Serial.print(dhcpRetryCnt); + Serial.println(); + dhcpRetryCnt++; + + byte mac[] = {0xB0,0xCD,0xAE,0x0F,0xDE,0x10}; + + if (Ethernet.begin(mac, 1000, 1000) == 0) + { + Serial.println(F("Failed to configure Ethernet using DHCP")); + // Check for Ethernet hardware present + if (Ethernet.hardwareStatus() == EthernetNoHardware) + { + Serial.println(F("Ethernet module not found")); + delay(10000); + ESP.restart(); + } + if (Ethernet.linkStatus() == LinkOFF) + { + Serial.println(F("Ethernet cable is not connected.")); + } + + IPAddress ip; + ip.fromString("192.168.4.1"); + + IPAddress subnet; + subnet.fromString("255.255.255.0"); + + // try to congifure using IP address instead of DHCP: + Ethernet.begin(mac, ip); + Ethernet.setSubnetMask(subnet); + + delay(2000); + } + else + { + dhcpRetryCnt = 1000; + Serial.print(F(" DHCP assigned IP ")); + Serial.println(Ethernet.localIP()); + } + } +} + +void W5500Device::reconfigure() +{ + Serial.println(F("Reconfigure W5500 not implemented.")); +} + +void W5500Device::resetDevice() +{ + Serial.println(F("Resetting network hardware.")); + pinMode(ETHERNET_RESET_PIN, OUTPUT); + digitalWrite(ETHERNET_RESET_PIN, HIGH); + delay(250); + digitalWrite(ETHERNET_RESET_PIN, LOW); + delay(50); + digitalWrite(ETHERNET_RESET_PIN, HIGH); + delay(1500); +} + +PubSubClient *W5500Device::mqttClient() +{ + return _mqttClient; +} + +bool W5500Device::isConnected() +{ + return _ethClient->connected(); +} diff --git a/networkDevices/W5500Device.h b/networkDevices/W5500Device.h new file mode 100644 index 0000000..ef623e9 --- /dev/null +++ b/networkDevices/W5500Device.h @@ -0,0 +1,24 @@ +#pragma once + +#include "NetworkDevice.h" +#include + +class W5500Device : public NetworkDevice +{ +public: + explicit W5500Device(const String& hostname); + ~W5500Device(); + + virtual void initialize(); + virtual void reconfigure(); + + virtual bool isConnected(); + + virtual PubSubClient *mqttClient(); + +private: + void resetDevice(); + + EthernetClient* _ethClient = nullptr; + PubSubClient* _mqttClient = nullptr; +}; \ No newline at end of file diff --git a/networkDevices/WifiDevice.cpp b/networkDevices/WifiDevice.cpp new file mode 100644 index 0000000..42e5ac0 --- /dev/null +++ b/networkDevices/WifiDevice.cpp @@ -0,0 +1,62 @@ +#include +#include "WifiDevice.h" +#include "WiFiManager.h" + +WifiDevice::WifiDevice(const String& hostname) +: NetworkDevice(hostname), + _mqttClient(_wifiClient) +{} + +PubSubClient *WifiDevice::mqttClient() +{ + return &_mqttClient; +} + +void WifiDevice::initialize() +{ + WiFi.mode(WIFI_STA); // explicitly set mode, esp defaults to STA+AP + + WiFiManager wm; + + std::vector wm_menu; + wm_menu.push_back("wifi"); + wm_menu.push_back("exit"); + wm.setShowInfoUpdate(false); + wm.setMenu(wm_menu); + wm.setHostname(_hostname); + + bool res = false; + + if(_cookie.isSet()) + { + Serial.println(F("Opening WiFi configuration portal.")); + _cookie.clear(); + res = wm.startConfigPortal(); + } + else + { + res = wm.autoConnect(); // password protected ap + } + + if(!res) { + Serial.println(F("Failed to connect. Wait for ESP restart.")); + delay(10000); + ESP.restart(); + } + else { + Serial.print(F("WiFi connected: ")); + Serial.println(WiFi.localIP().toString()); + } +} + +void WifiDevice::reconfigure() +{ + _cookie.set(); + delay(200); + ESP.restart(); +} + +bool WifiDevice::isConnected() +{ + return WiFi.isConnected(); +} diff --git a/networkDevices/WifiDevice.h b/networkDevices/WifiDevice.h new file mode 100644 index 0000000..bf6e773 --- /dev/null +++ b/networkDevices/WifiDevice.h @@ -0,0 +1,23 @@ +#pragma once + +#include +#include "NetworkDevice.h" +#include "../SpiffsCookie.h" + +class WifiDevice : public NetworkDevice +{ +public: + WifiDevice(const String& hostname); + + virtual void initialize(); + virtual void reconfigure(); + + virtual bool isConnected(); + + virtual PubSubClient *mqttClient(); + +private: + WiFiClient _wifiClient; + PubSubClient _mqttClient; + SpiffsCookie _cookie; +}; From 47c3729800f39f4cec7aca222ddd3db3753c7170 Mon Sep 17 00:00:00 2001 From: technyon Date: Thu, 28 Apr 2022 22:46:59 +0200 Subject: [PATCH 02/15] include wifi and thernet webserver --- CMakeLists.txt | 7 +- Network.cpp | 1 - WebCfgServer.h | 4 +- .../AdvancedWebServer/AdvancedWebServer.ino | 147 ++++ .../examples/FSBrowser/FSBrowser.ino | 304 ++++++++ .../examples/FSBrowser/data/edit.htm.gz | Bin 0 -> 4116 bytes .../examples/FSBrowser/data/favicon.ico | Bin 0 -> 1150 bytes .../examples/FSBrowser/data/graphs.js.gz | Bin 0 -> 1971 bytes .../examples/FSBrowser/data/index.htm | 97 +++ .../examples/HelloServer/HelloServer.ino | 74 ++ .../HttpAdvancedAuth/HttpAdvancedAuth.ino | 60 ++ .../examples/HttpBasicAuth/HttpBasicAuth.ino | 42 ++ .../examples/PathArgServer/PathArgServer.ino | 57 ++ .../examples/SDWebServer/SDWebServer.ino | 314 ++++++++ .../SDWebServer/SdRoot/edit/index.htm | 674 +++++++++++++++++ .../examples/SDWebServer/SdRoot/index.htm | 22 + .../examples/SDWebServer/SdRoot/pins.png | Bin 0 -> 177869 bytes .../SimpleAuthentification.ino | 133 ++++ .../examples/WebUpdate/WebUpdate.ino | 69 ++ lib/EthernetWebServer/keywords.txt | 38 + lib/EthernetWebServer/library.properties | 9 + .../src/EthernetServerImpl.cpp | 29 + .../src/EthernetServerImpl.h | 15 + .../src/EthernetWebServer.cpp | 712 ++++++++++++++++++ lib/EthernetWebServer/src/EthernetWebServer.h | 214 ++++++ lib/EthernetWebServer/src/HTTP_Method.h | 9 + lib/EthernetWebServer/src/Parsing.cpp | 589 +++++++++++++++ lib/EthernetWebServer/src/Uri.h | 29 + .../src/detail/RequestHandler.h | 31 + .../src/detail/RequestHandlersImpl.h | 151 ++++ .../src/detail/mimetable.cpp | 35 + lib/EthernetWebServer/src/detail/mimetable.h | 47 ++ lib/EthernetWebServer/src/uri/UriBraces.h | 66 ++ lib/EthernetWebServer/src/uri/UriGlob.h | 22 + lib/EthernetWebServer/src/uri/UriRegex.h | 44 ++ main.cpp | 4 +- 36 files changed, 4041 insertions(+), 8 deletions(-) create mode 100644 lib/EthernetWebServer/examples/AdvancedWebServer/AdvancedWebServer.ino create mode 100644 lib/EthernetWebServer/examples/FSBrowser/FSBrowser.ino create mode 100644 lib/EthernetWebServer/examples/FSBrowser/data/edit.htm.gz create mode 100644 lib/EthernetWebServer/examples/FSBrowser/data/favicon.ico create mode 100644 lib/EthernetWebServer/examples/FSBrowser/data/graphs.js.gz create mode 100644 lib/EthernetWebServer/examples/FSBrowser/data/index.htm create mode 100644 lib/EthernetWebServer/examples/HelloServer/HelloServer.ino create mode 100644 lib/EthernetWebServer/examples/HttpAdvancedAuth/HttpAdvancedAuth.ino create mode 100644 lib/EthernetWebServer/examples/HttpBasicAuth/HttpBasicAuth.ino create mode 100644 lib/EthernetWebServer/examples/PathArgServer/PathArgServer.ino create mode 100644 lib/EthernetWebServer/examples/SDWebServer/SDWebServer.ino create mode 100644 lib/EthernetWebServer/examples/SDWebServer/SdRoot/edit/index.htm create mode 100644 lib/EthernetWebServer/examples/SDWebServer/SdRoot/index.htm create mode 100644 lib/EthernetWebServer/examples/SDWebServer/SdRoot/pins.png create mode 100644 lib/EthernetWebServer/examples/SimpleAuthentification/SimpleAuthentification.ino create mode 100644 lib/EthernetWebServer/examples/WebUpdate/WebUpdate.ino create mode 100644 lib/EthernetWebServer/keywords.txt create mode 100644 lib/EthernetWebServer/library.properties create mode 100644 lib/EthernetWebServer/src/EthernetServerImpl.cpp create mode 100644 lib/EthernetWebServer/src/EthernetServerImpl.h create mode 100644 lib/EthernetWebServer/src/EthernetWebServer.cpp create mode 100644 lib/EthernetWebServer/src/EthernetWebServer.h create mode 100644 lib/EthernetWebServer/src/HTTP_Method.h create mode 100644 lib/EthernetWebServer/src/Parsing.cpp create mode 100644 lib/EthernetWebServer/src/Uri.h create mode 100644 lib/EthernetWebServer/src/detail/RequestHandler.h create mode 100644 lib/EthernetWebServer/src/detail/RequestHandlersImpl.h create mode 100644 lib/EthernetWebServer/src/detail/mimetable.cpp create mode 100644 lib/EthernetWebServer/src/detail/mimetable.h create mode 100644 lib/EthernetWebServer/src/uri/UriBraces.h create mode 100644 lib/EthernetWebServer/src/uri/UriGlob.h create mode 100644 lib/EthernetWebServer/src/uri/UriRegex.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 0a2b8cb..4147715 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,12 +11,11 @@ include_directories(${PROJECT_NAME} lib/nuki_ble/src lib/ESP32_BLE_Arduino-1.0.1/src lib/WiFiManager - lib/pubsubclient/src/ + lib/pubsubclient/src + lib/EthernetWebServer/src ) file(GLOB SRCFILES -# "Lib/FreeRTOS/src/*.c" -# "Lib/FreeRTOS/src/*.cpp" Pins.h Network.cpp networkDevices/NetworkDevice.h @@ -45,6 +44,8 @@ file(GLOB_RECURSE SRCFILESREC lib/NimBLE-Arduino/src/*.c lib/NimBLE-Arduino/src/*.cpp lib/NimBLE-Arduino/src/*.h + lib/EthernetWebServer/src/*.cpp + lib/EthernetWebServer/src/*.h ) add_executable(${PROJECT_NAME} diff --git a/Network.cpp b/Network.cpp index 882d8ac..d21700b 100644 --- a/Network.cpp +++ b/Network.cpp @@ -1,5 +1,4 @@ #include "Network.h" -#include // https://github.com/tzapu/WiFiManager #include "Arduino.h" #include "MqttTopics.h" #include "PreferencesKeys.h" diff --git a/WebCfgServer.h b/WebCfgServer.h index e07fc4b..42481e9 100644 --- a/WebCfgServer.h +++ b/WebCfgServer.h @@ -1,7 +1,7 @@ #pragma once #include -#include +#include #include "NukiWrapper.h" #include "Network.h" @@ -42,7 +42,7 @@ private: void waitAndProcess(const bool blocking, const uint32_t duration); - WebServer server; + EthernetWebServer server; NukiWrapper* _nuki; Network* _network; Preferences* _preferences; diff --git a/lib/EthernetWebServer/examples/AdvancedWebServer/AdvancedWebServer.ino b/lib/EthernetWebServer/examples/AdvancedWebServer/AdvancedWebServer.ino new file mode 100644 index 0000000..22ae426 --- /dev/null +++ b/lib/EthernetWebServer/examples/AdvancedWebServer/AdvancedWebServer.ino @@ -0,0 +1,147 @@ +/* + Copyright (c) 2015, Majenko Technologies + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or + other materials provided with the distribution. + + * * Neither the name of Majenko Technologies nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include +#include +#include +#include + +const char *ssid = "YourSSIDHere"; +const char *password = "YourPSKHere"; + +WebServer server(80); + +const int led = 13; + +void handleRoot() { + digitalWrite(led, 1); + char temp[400]; + int sec = millis() / 1000; + int min = sec / 60; + int hr = min / 60; + + snprintf(temp, 400, + + "\ + \ + \ + ESP32 Demo\ + \ + \ + \ +

Hello from ESP32!

\ +

Uptime: %02d:%02d:%02d

\ + \ + \ +", + + hr, min % 60, sec % 60 + ); + server.send(200, "text/html", temp); + digitalWrite(led, 0); +} + +void handleNotFound() { + digitalWrite(led, 1); + String message = "File Not Found\n\n"; + message += "URI: "; + message += server.uri(); + message += "\nMethod: "; + message += (server.method() == HTTP_GET) ? "GET" : "POST"; + message += "\nArguments: "; + message += server.args(); + message += "\n"; + + for (uint8_t i = 0; i < server.args(); i++) { + message += " " + server.argName(i) + ": " + server.arg(i) + "\n"; + } + + server.send(404, "text/plain", message); + digitalWrite(led, 0); +} + +void setup(void) { + pinMode(led, OUTPUT); + digitalWrite(led, 0); + Serial.begin(115200); + WiFi.mode(WIFI_STA); + WiFi.begin(ssid, password); + Serial.println(""); + + // Wait for connection + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + + Serial.println(""); + Serial.print("Connected to "); + Serial.println(ssid); + Serial.print("IP address: "); + Serial.println(WiFi.localIP()); + + if (MDNS.begin("esp32")) { + Serial.println("MDNS responder started"); + } + + server.on("/", handleRoot); + server.on("/test.svg", drawGraph); + server.on("/inline", []() { + server.send(200, "text/plain", "this works as well"); + }); + server.onNotFound(handleNotFound); + server.begin(); + Serial.println("HTTP server started"); +} + +void loop(void) { + server.handleClient(); + delay(2);//allow the cpu to switch to other tasks +} + +void drawGraph() { + String out = ""; + char temp[100]; + out += "\n"; + out += "\n"; + out += "\n"; + int y = rand() % 130; + for (int x = 10; x < 390; x += 10) { + int y2 = rand() % 130; + sprintf(temp, "\n", x, 140 - y, x + 10, 140 - y2); + out += temp; + y = y2; + } + out += "\n\n"; + + server.send(200, "image/svg+xml", out); +} diff --git a/lib/EthernetWebServer/examples/FSBrowser/FSBrowser.ino b/lib/EthernetWebServer/examples/FSBrowser/FSBrowser.ino new file mode 100644 index 0000000..7c04a79 --- /dev/null +++ b/lib/EthernetWebServer/examples/FSBrowser/FSBrowser.ino @@ -0,0 +1,304 @@ +/* + FSWebServer - Example EthernetWebServer with FS backend for esp8266/esp32 + Copyright (c) 2015 Hristo Gochkov. All rights reserved. + This file is part of the EthernetWebServer library for Arduino environment. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + upload the contents of the data folder with MkSPIFFS Tool ("ESP32 Sketch Data Upload" in Tools menu in Arduino IDE) + or you can upload the contents of a folder if you CD in that folder and run the following command: + for file in `ls -A1`; do curl -F "file=@$PWD/$file" esp32fs.local/edit; done + + access the sample web page at http://esp32fs.local + edit the page by going to http://esp32fs.local/edit +*/ +#include +#include +#include +#include + +#define FILESYSTEM SPIFFS +// You only need to format the filesystem once +#define FORMAT_FILESYSTEM false +#define DBG_OUTPUT_PORT Serial + +#if FILESYSTEM == FFat +#include +#endif +#if FILESYSTEM == SPIFFS +#include +#endif + +const char* ssid = "wifi-ssid"; +const char* password = "wifi-password"; +const char* host = "esp32fs"; +WebServer server(80); +//holds the current upload +File fsUploadFile; + +//format bytes +String formatBytes(size_t bytes) { + if (bytes < 1024) { + return String(bytes) + "B"; + } else if (bytes < (1024 * 1024)) { + return String(bytes / 1024.0) + "KB"; + } else if (bytes < (1024 * 1024 * 1024)) { + return String(bytes / 1024.0 / 1024.0) + "MB"; + } else { + return String(bytes / 1024.0 / 1024.0 / 1024.0) + "GB"; + } +} + +String getContentType(String filename) { + if (server.hasArg("download")) { + return "application/octet-stream"; + } else if (filename.endsWith(".htm")) { + return "text/html"; + } else if (filename.endsWith(".html")) { + return "text/html"; + } else if (filename.endsWith(".css")) { + return "text/css"; + } else if (filename.endsWith(".js")) { + return "application/javascript"; + } else if (filename.endsWith(".png")) { + return "image/png"; + } else if (filename.endsWith(".gif")) { + return "image/gif"; + } else if (filename.endsWith(".jpg")) { + return "image/jpeg"; + } else if (filename.endsWith(".ico")) { + return "image/x-icon"; + } else if (filename.endsWith(".xml")) { + return "text/xml"; + } else if (filename.endsWith(".pdf")) { + return "application/x-pdf"; + } else if (filename.endsWith(".zip")) { + return "application/x-zip"; + } else if (filename.endsWith(".gz")) { + return "application/x-gzip"; + } + return "text/plain"; +} + +bool exists(String path){ + bool yes = false; + File file = FILESYSTEM.open(path, "r"); + if(!file.isDirectory()){ + yes = true; + } + file.close(); + return yes; +} + +bool handleFileRead(String path) { + DBG_OUTPUT_PORT.println("handleFileRead: " + path); + if (path.endsWith("/")) { + path += "index.htm"; + } + String contentType = getContentType(path); + String pathWithGz = path + ".gz"; + if (exists(pathWithGz) || exists(path)) { + if (exists(pathWithGz)) { + path += ".gz"; + } + File file = FILESYSTEM.open(path, "r"); + server.streamFile(file, contentType); + file.close(); + return true; + } + return false; +} + +void handleFileUpload() { + if (server.uri() != "/edit") { + return; + } + HTTPUpload& upload = server.upload(); + if (upload.status == UPLOAD_FILE_START) { + String filename = upload.filename; + if (!filename.startsWith("/")) { + filename = "/" + filename; + } + DBG_OUTPUT_PORT.print("handleFileUpload Name: "); DBG_OUTPUT_PORT.println(filename); + fsUploadFile = FILESYSTEM.open(filename, "w"); + filename = String(); + } else if (upload.status == UPLOAD_FILE_WRITE) { + //DBG_OUTPUT_PORT.print("handleFileUpload Data: "); DBG_OUTPUT_PORT.println(upload.currentSize); + if (fsUploadFile) { + fsUploadFile.write(upload.buf, upload.currentSize); + } + } else if (upload.status == UPLOAD_FILE_END) { + if (fsUploadFile) { + fsUploadFile.close(); + } + DBG_OUTPUT_PORT.print("handleFileUpload Size: "); DBG_OUTPUT_PORT.println(upload.totalSize); + } +} + +void handleFileDelete() { + if (server.args() == 0) { + return server.send(500, "text/plain", "BAD ARGS"); + } + String path = server.arg(0); + DBG_OUTPUT_PORT.println("handleFileDelete: " + path); + if (path == "/") { + return server.send(500, "text/plain", "BAD PATH"); + } + if (!exists(path)) { + return server.send(404, "text/plain", "FileNotFound"); + } + FILESYSTEM.remove(path); + server.send(200, "text/plain", ""); + path = String(); +} + +void handleFileCreate() { + if (server.args() == 0) { + return server.send(500, "text/plain", "BAD ARGS"); + } + String path = server.arg(0); + DBG_OUTPUT_PORT.println("handleFileCreate: " + path); + if (path == "/") { + return server.send(500, "text/plain", "BAD PATH"); + } + if (exists(path)) { + return server.send(500, "text/plain", "FILE EXISTS"); + } + File file = FILESYSTEM.open(path, "w"); + if (file) { + file.close(); + } else { + return server.send(500, "text/plain", "CREATE FAILED"); + } + server.send(200, "text/plain", ""); + path = String(); +} + +void handleFileList() { + if (!server.hasArg("dir")) { + server.send(500, "text/plain", "BAD ARGS"); + return; + } + + String path = server.arg("dir"); + DBG_OUTPUT_PORT.println("handleFileList: " + path); + + + File root = FILESYSTEM.open(path); + path = String(); + + String output = "["; + if(root.isDirectory()){ + File file = root.openNextFile(); + while(file){ + if (output != "[") { + output += ','; + } + output += "{\"type\":\""; + output += (file.isDirectory()) ? "dir" : "file"; + output += "\",\"name\":\""; + output += String(file.name()).substring(1); + output += "\"}"; + file = root.openNextFile(); + } + } + output += "]"; + server.send(200, "text/json", output); +} + +void setup(void) { + DBG_OUTPUT_PORT.begin(115200); + DBG_OUTPUT_PORT.print("\n"); + DBG_OUTPUT_PORT.setDebugOutput(true); + if (FORMAT_FILESYSTEM) FILESYSTEM.format(); + FILESYSTEM.begin(); + { + File root = FILESYSTEM.open("/"); + File file = root.openNextFile(); + while(file){ + String fileName = file.name(); + size_t fileSize = file.size(); + DBG_OUTPUT_PORT.printf("FS File: %s, size: %s\n", fileName.c_str(), formatBytes(fileSize).c_str()); + file = root.openNextFile(); + } + DBG_OUTPUT_PORT.printf("\n"); + } + + + //WIFI INIT + DBG_OUTPUT_PORT.printf("Connecting to %s\n", ssid); + if (String(WiFi.SSID()) != String(ssid)) { + WiFi.mode(WIFI_STA); + WiFi.begin(ssid, password); + } + + while (WiFi.status() != WL_CONNECTED) { + delay(500); + DBG_OUTPUT_PORT.print("."); + } + DBG_OUTPUT_PORT.println(""); + DBG_OUTPUT_PORT.print("Connected! IP address: "); + DBG_OUTPUT_PORT.println(WiFi.localIP()); + + MDNS.begin(host); + DBG_OUTPUT_PORT.print("Open http://"); + DBG_OUTPUT_PORT.print(host); + DBG_OUTPUT_PORT.println(".local/edit to see the file browser"); + + + //SERVER INIT + //list directory + server.on("/list", HTTP_GET, handleFileList); + //load editor + server.on("/edit", HTTP_GET, []() { + if (!handleFileRead("/edit.htm")) { + server.send(404, "text/plain", "FileNotFound"); + } + }); + //create file + server.on("/edit", HTTP_PUT, handleFileCreate); + //delete file + server.on("/edit", HTTP_DELETE, handleFileDelete); + //first callback is called after the request has ended with all parsed arguments + //second callback handles file uploads at that location + server.on("/edit", HTTP_POST, []() { + server.send(200, "text/plain", ""); + }, handleFileUpload); + + //called when the url is not defined here + //use it to load content from FILESYSTEM + server.onNotFound([]() { + if (!handleFileRead(server.uri())) { + server.send(404, "text/plain", "FileNotFound"); + } + }); + + //get heap status, analog input value and all GPIO statuses in one json call + server.on("/all", HTTP_GET, []() { + String json = "{"; + json += "\"heap\":" + String(ESP.getFreeHeap()); + json += ", \"analog\":" + String(analogRead(A0)); + json += ", \"gpio\":" + String((uint32_t)(0)); + json += "}"; + server.send(200, "text/json", json); + json = String(); + }); + server.begin(); + DBG_OUTPUT_PORT.println("HTTP server started"); + +} + +void loop(void) { + server.handleClient(); + delay(2);//allow the cpu to switch to other tasks +} diff --git a/lib/EthernetWebServer/examples/FSBrowser/data/edit.htm.gz b/lib/EthernetWebServer/examples/FSBrowser/data/edit.htm.gz new file mode 100644 index 0000000000000000000000000000000000000000..69ce414f47f4b25a70160fc4985b2bd320c9b90a GIT binary patch literal 4116 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 literal 0 HcmV?d00001 diff --git a/lib/EthernetWebServer/examples/FSBrowser/data/graphs.js.gz b/lib/EthernetWebServer/examples/FSBrowser/data/graphs.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..72435445a7ef86e00fe6c66b3b71c47fdbd53a93 GIT binary patch literal 1971 zcmV;k2Tb@MiwFo@s$5k717~t!aAw-*8%!ep`yEM!aI@XpTRzN;M>CH`Bk93rb1y+*nfgVXr6{*O z+qWk+vpIfdbmRB&GiOD~!8-BI8jWLya*xm0`?Ns*u7@$U5b~-2FAtyY?VsHiJWiul z$g}Ci$m17Tz>sgbNBG!p6`3AIdmW5d-8e)$jYf;JJn?*ncK^L=>v4>q7o#|V#AXxo zd(ilSPVW5&A*9`%(ECk!Y+arKfe)*P?pEpRp~jzoF096?>r=Aoz97T=5)|h&-xQIu zg>l28ew8E08a6CBp`}c_5jC)_GP?DY`3f}-jd!TP&)0@aTI6>ySBJ(C^6Vjg_FCi? z4W)y8K|{N+7xu_b?5Q2tp*_aW9rTMaq?DSsrVu+rd~J}hE1ki{8Q_4DpSuf+7N=y0 z&lbmI*d0+cIw7C&8TouX>b8vuC7%rP5n-@XYJN3AXB2Qkjq~PBh|f&&!8{IOB&X(2 zH9yyb7aQ|uSdryo%OvNrl!(4VCh<(%jlKg>o+p(VLEZu+SU49}D`X?;9hV2J6#b@5xoQzr_H2o5@^1L}hMUELzT^@ZjjKOo0;;PSc-R=y16 zZ?GMY#vgK8*szEP4+cZTEn{%f2k_E z27Gde+C~f)Fg^jqZfsd{i2;6w@jVpRk!@);Z(!Q^0V_`j7DaAW9TdZ@cIt4a4szZaa^^aU29qDr;ABm46G?-=na2}Ferp=!isDL5 zZsRR-8*h`__!TcbYL6zj@e8?){|UK0{(#)d@5!y&&_(q^Zq+tjEH`wq+|b2RliLz5 zFqaQCU2wY8dG2R6eWA(3ua&TB6J>0#%pV>3Z zdyofc0!I`ut`SP$kiJ3WHi#-0<433_` z)YOv0bAAFn?dFnNRNv(ebZf$J9m~5X4;HB}|KgQLUj9wtTU0ot`o1rAx!kOPE}Fw8 zS~Q^pvJt_F1Mf4=n%)ASw`5Ik|GTcX!Dzk1YQ^WUvs*ob65M#*8Pl}n#sj~2z;Kp3 z#wt>!wBemdQe1%Fa@<6G*Tw3BO6(?)=)j$C-mo1S$t$oENe=yhLb-k<8_;yI4OzB} zRnJ39Vd(ZadQJ$E_Fo6+T+OyM?w0=_W4@|s1;9o}-pE(zujhQpQ&}rb!wtIwq}*=X z4FSKo$AySPF)Nk{6YIBX;rZfke?Eikq=c+ENp6^52>r$^5|&2ANW^K%_#LYXv7c8e z=vGa#hyxfcmO0B{UVkpiG+<$zvOo;WqJY`6)K6l6B8Kp~K2ezpCd|@8%tl_2EiSSo zFA^|v1uq>WUSe{a+%Cnisy&!<^nU5?i#QLL2@C+6O z9mvZ6hkhC(4R=nr5iF#GH6&3&)`F6DcbF}Sh6I^7IhzV|9hOnAbbP~0)_aTc?G-T zUOp0`CmZu63}>tmJ`@(Gu)SWMGnfEAsi4IU)bR<5*jr~_#!;-Z^EjQ<&VItC4B8MT z8B`^L%rDim_gH$+=1MruU~n)H8CPxfm(bCv7eR<84hDk()HUc0oPGxaFZ!1Rx^{U0 z&VK*U?e~RBheyXbhhXsb4|_d`A?>3*L0l+t&uz4z32}iM0zT**`+0@&e*in8G#?BP F000|7$0Ps% literal 0 HcmV?d00001 diff --git a/lib/EthernetWebServer/examples/FSBrowser/data/index.htm b/lib/EthernetWebServer/examples/FSBrowser/data/index.htm new file mode 100644 index 0000000..7941860 --- /dev/null +++ b/lib/EthernetWebServer/examples/FSBrowser/data/index.htm @@ -0,0 +1,97 @@ + + + + + + ESP Monitor + + + + +
+ + + + +
+
+
+
+ + \ No newline at end of file diff --git a/lib/EthernetWebServer/examples/HelloServer/HelloServer.ino b/lib/EthernetWebServer/examples/HelloServer/HelloServer.ino new file mode 100644 index 0000000..676b63a --- /dev/null +++ b/lib/EthernetWebServer/examples/HelloServer/HelloServer.ino @@ -0,0 +1,74 @@ +#include +#include +#include +#include + +const char* ssid = "........"; +const char* password = "........"; + +WebServer server(80); + +const int led = 13; + +void handleRoot() { + digitalWrite(led, 1); + server.send(200, "text/plain", "hello from esp32!"); + digitalWrite(led, 0); +} + +void handleNotFound() { + digitalWrite(led, 1); + String message = "File Not Found\n\n"; + message += "URI: "; + message += server.uri(); + message += "\nMethod: "; + message += (server.method() == HTTP_GET) ? "GET" : "POST"; + message += "\nArguments: "; + message += server.args(); + message += "\n"; + for (uint8_t i = 0; i < server.args(); i++) { + message += " " + server.argName(i) + ": " + server.arg(i) + "\n"; + } + server.send(404, "text/plain", message); + digitalWrite(led, 0); +} + +void setup(void) { + pinMode(led, OUTPUT); + digitalWrite(led, 0); + Serial.begin(115200); + WiFi.mode(WIFI_STA); + WiFi.begin(ssid, password); + Serial.println(""); + + // Wait for connection + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + Serial.println(""); + Serial.print("Connected to "); + Serial.println(ssid); + Serial.print("IP address: "); + Serial.println(WiFi.localIP()); + + if (MDNS.begin("esp32")) { + Serial.println("MDNS responder started"); + } + + server.on("/", handleRoot); + + server.on("/inline", []() { + server.send(200, "text/plain", "this works as well"); + }); + + server.onNotFound(handleNotFound); + + server.begin(); + Serial.println("HTTP server started"); +} + +void loop(void) { + server.handleClient(); + delay(2);//allow the cpu to switch to other tasks +} diff --git a/lib/EthernetWebServer/examples/HttpAdvancedAuth/HttpAdvancedAuth.ino b/lib/EthernetWebServer/examples/HttpAdvancedAuth/HttpAdvancedAuth.ino new file mode 100644 index 0000000..43e86fe --- /dev/null +++ b/lib/EthernetWebServer/examples/HttpAdvancedAuth/HttpAdvancedAuth.ino @@ -0,0 +1,60 @@ +/* + HTTP Advanced Authentication example + Created Mar 16, 2017 by Ahmed El-Sharnoby. + This example code is in the public domain. +*/ + +#include +#include +#include +#include + +const char* ssid = "........"; +const char* password = "........"; + +WebServer server(80); + +const char* www_username = "admin"; +const char* www_password = "esp32"; +// allows you to set the realm of authentication Default:"Login Required" +const char* www_realm = "Custom Auth Realm"; +// the Content of the HTML response in case of Unautherized Access Default:empty +String authFailResponse = "Authentication Failed"; + +void setup() { + Serial.begin(115200); + WiFi.mode(WIFI_STA); + WiFi.begin(ssid, password); + if (WiFi.waitForConnectResult() != WL_CONNECTED) { + Serial.println("WiFi Connect Failed! Rebooting..."); + delay(1000); + ESP.restart(); + } + ArduinoOTA.begin(); + + server.on("/", []() { + if (!server.authenticate(www_username, www_password)) + //Basic Auth Method with Custom realm and Failure Response + //return server.requestAuthentication(BASIC_AUTH, www_realm, authFailResponse); + //Digest Auth Method with realm="Login Required" and empty Failure Response + //return server.requestAuthentication(DIGEST_AUTH); + //Digest Auth Method with Custom realm and empty Failure Response + //return server.requestAuthentication(DIGEST_AUTH, www_realm); + //Digest Auth Method with Custom realm and Failure Response + { + return server.requestAuthentication(DIGEST_AUTH, www_realm, authFailResponse); + } + server.send(200, "text/plain", "Login OK"); + }); + server.begin(); + + Serial.print("Open http://"); + Serial.print(WiFi.localIP()); + Serial.println("/ in your browser to see it working"); +} + +void loop() { + ArduinoOTA.handle(); + server.handleClient(); + delay(2);//allow the cpu to switch to other tasks +} diff --git a/lib/EthernetWebServer/examples/HttpBasicAuth/HttpBasicAuth.ino b/lib/EthernetWebServer/examples/HttpBasicAuth/HttpBasicAuth.ino new file mode 100644 index 0000000..4328a7d --- /dev/null +++ b/lib/EthernetWebServer/examples/HttpBasicAuth/HttpBasicAuth.ino @@ -0,0 +1,42 @@ +#include +#include +#include +#include + +const char* ssid = "........"; +const char* password = "........"; + +WebServer server(80); + +const char* www_username = "admin"; +const char* www_password = "esp32"; + +void setup() { + Serial.begin(115200); + WiFi.mode(WIFI_STA); + WiFi.begin(ssid, password); + if (WiFi.waitForConnectResult() != WL_CONNECTED) { + Serial.println("WiFi Connect Failed! Rebooting..."); + delay(1000); + ESP.restart(); + } + ArduinoOTA.begin(); + + server.on("/", []() { + if (!server.authenticate(www_username, www_password)) { + return server.requestAuthentication(); + } + server.send(200, "text/plain", "Login OK"); + }); + server.begin(); + + Serial.print("Open http://"); + Serial.print(WiFi.localIP()); + Serial.println("/ in your browser to see it working"); +} + +void loop() { + ArduinoOTA.handle(); + server.handleClient(); + delay(2);//allow the cpu to switch to other tasks +} diff --git a/lib/EthernetWebServer/examples/PathArgServer/PathArgServer.ino b/lib/EthernetWebServer/examples/PathArgServer/PathArgServer.ino new file mode 100644 index 0000000..f51fe69 --- /dev/null +++ b/lib/EthernetWebServer/examples/PathArgServer/PathArgServer.ino @@ -0,0 +1,57 @@ +#include +#include +#include +#include + +#include +#include + +const char *ssid = "........"; +const char *password = "........"; + +WebServer server(80); + +void setup(void) { + Serial.begin(9600); + WiFi.mode(WIFI_STA); + WiFi.begin(ssid, password); + Serial.println(""); + + // Wait for connection + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + Serial.println(""); + Serial.print("Connected to "); + Serial.println(ssid); + Serial.print("IP address: "); + Serial.println(WiFi.localIP()); + + if (MDNS.begin("esp32")) { + Serial.println("MDNS responder started"); + } + + server.on(F("/"), []() { + server.send(200, "text/plain", "hello from esp32!"); + }); + + server.on(UriBraces("/users/{}"), []() { + String user = server.pathArg(0); + server.send(200, "text/plain", "User: '" + user + "'"); + }); + + server.on(UriRegex("^\\/users\\/([0-9]+)\\/devices\\/([0-9]+)$"), []() { + String user = server.pathArg(0); + String device = server.pathArg(1); + server.send(200, "text/plain", "User: '" + user + "' and Device: '" + device + "'"); + }); + + server.begin(); + Serial.println("HTTP server started"); +} + +void loop(void) { + server.handleClient(); + delay(2);//allow the cpu to switch to other tasks +} diff --git a/lib/EthernetWebServer/examples/SDWebServer/SDWebServer.ino b/lib/EthernetWebServer/examples/SDWebServer/SDWebServer.ino new file mode 100644 index 0000000..e2af2df --- /dev/null +++ b/lib/EthernetWebServer/examples/SDWebServer/SDWebServer.ino @@ -0,0 +1,314 @@ +/* + SDWebServer - Example EthernetWebServer with SD Card backend for esp8266 + + Copyright (c) 2015 Hristo Gochkov. All rights reserved. + This file is part of the EthernetWebServer library for Arduino environment. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Have a FAT Formatted SD Card connected to the SPI port of the ESP8266 + The web root is the SD Card root folder + File extensions with more than 3 charecters are not supported by the SD Library + File Names longer than 8 charecters will be truncated by the SD library, so keep filenames shorter + index.htm is the default index (works on subfolders as well) + + upload the contents of SdRoot to the root of the SDcard and access the editor by going to http://esp8266sd.local/edit + +*/ +#include +#include +#include +#include +#include +#include + +#define DBG_OUTPUT_PORT Serial + +const char* ssid = "**********"; +const char* password = "**********"; +const char* host = "esp32sd"; + +WebServer server(80); + +static bool hasSD = false; +File uploadFile; + + +void returnOK() { + server.send(200, "text/plain", ""); +} + +void returnFail(String msg) { + server.send(500, "text/plain", msg + "\r\n"); +} + +bool loadFromSdCard(String path) { + String dataType = "text/plain"; + if (path.endsWith("/")) { + path += "index.htm"; + } + + if (path.endsWith(".src")) { + path = path.substring(0, path.lastIndexOf(".")); + } else if (path.endsWith(".htm")) { + dataType = "text/html"; + } else if (path.endsWith(".css")) { + dataType = "text/css"; + } else if (path.endsWith(".js")) { + dataType = "application/javascript"; + } else if (path.endsWith(".png")) { + dataType = "image/png"; + } else if (path.endsWith(".gif")) { + dataType = "image/gif"; + } else if (path.endsWith(".jpg")) { + dataType = "image/jpeg"; + } else if (path.endsWith(".ico")) { + dataType = "image/x-icon"; + } else if (path.endsWith(".xml")) { + dataType = "text/xml"; + } else if (path.endsWith(".pdf")) { + dataType = "application/pdf"; + } else if (path.endsWith(".zip")) { + dataType = "application/zip"; + } + + File dataFile = SD.open(path.c_str()); + if (dataFile.isDirectory()) { + path += "/index.htm"; + dataType = "text/html"; + dataFile = SD.open(path.c_str()); + } + + if (!dataFile) { + return false; + } + + if (server.hasArg("download")) { + dataType = "application/octet-stream"; + } + + if (server.streamFile(dataFile, dataType) != dataFile.size()) { + DBG_OUTPUT_PORT.println("Sent less data than expected!"); + } + + dataFile.close(); + return true; +} + +void handleFileUpload() { + if (server.uri() != "/edit") { + return; + } + HTTPUpload& upload = server.upload(); + if (upload.status == UPLOAD_FILE_START) { + if (SD.exists((char *)upload.filename.c_str())) { + SD.remove((char *)upload.filename.c_str()); + } + uploadFile = SD.open(upload.filename.c_str(), FILE_WRITE); + DBG_OUTPUT_PORT.print("Upload: START, filename: "); DBG_OUTPUT_PORT.println(upload.filename); + } else if (upload.status == UPLOAD_FILE_WRITE) { + if (uploadFile) { + uploadFile.write(upload.buf, upload.currentSize); + } + DBG_OUTPUT_PORT.print("Upload: WRITE, Bytes: "); DBG_OUTPUT_PORT.println(upload.currentSize); + } else if (upload.status == UPLOAD_FILE_END) { + if (uploadFile) { + uploadFile.close(); + } + DBG_OUTPUT_PORT.print("Upload: END, Size: "); DBG_OUTPUT_PORT.println(upload.totalSize); + } +} + +void deleteRecursive(String path) { + File file = SD.open((char *)path.c_str()); + if (!file.isDirectory()) { + file.close(); + SD.remove((char *)path.c_str()); + return; + } + + file.rewindDirectory(); + while (true) { + File entry = file.openNextFile(); + if (!entry) { + break; + } + String entryPath = path + "/" + entry.name(); + if (entry.isDirectory()) { + entry.close(); + deleteRecursive(entryPath); + } else { + entry.close(); + SD.remove((char *)entryPath.c_str()); + } + yield(); + } + + SD.rmdir((char *)path.c_str()); + file.close(); +} + +void handleDelete() { + if (server.args() == 0) { + return returnFail("BAD ARGS"); + } + String path = server.arg(0); + if (path == "/" || !SD.exists((char *)path.c_str())) { + returnFail("BAD PATH"); + return; + } + deleteRecursive(path); + returnOK(); +} + +void handleCreate() { + if (server.args() == 0) { + return returnFail("BAD ARGS"); + } + String path = server.arg(0); + if (path == "/" || SD.exists((char *)path.c_str())) { + returnFail("BAD PATH"); + return; + } + + if (path.indexOf('.') > 0) { + File file = SD.open((char *)path.c_str(), FILE_WRITE); + if (file) { + file.write(0); + file.close(); + } + } else { + SD.mkdir((char *)path.c_str()); + } + returnOK(); +} + +void printDirectory() { + if (!server.hasArg("dir")) { + return returnFail("BAD ARGS"); + } + String path = server.arg("dir"); + if (path != "/" && !SD.exists((char *)path.c_str())) { + return returnFail("BAD PATH"); + } + File dir = SD.open((char *)path.c_str()); + path = String(); + if (!dir.isDirectory()) { + dir.close(); + return returnFail("NOT DIR"); + } + dir.rewindDirectory(); + server.setContentLength(CONTENT_LENGTH_UNKNOWN); + server.send(200, "text/json", ""); + WiFiClient client = server.client(); + + server.sendContent("["); + for (int cnt = 0; true; ++cnt) { + File entry = dir.openNextFile(); + if (!entry) { + break; + } + + String output; + if (cnt > 0) { + output = ','; + } + + output += "{\"type\":\""; + output += (entry.isDirectory()) ? "dir" : "file"; + output += "\",\"name\":\""; + output += entry.name(); + output += "\""; + output += "}"; + server.sendContent(output); + entry.close(); + } + server.sendContent("]"); + dir.close(); +} + +void handleNotFound() { + if (hasSD && loadFromSdCard(server.uri())) { + return; + } + String message = "SDCARD Not Detected\n\n"; + message += "URI: "; + message += server.uri(); + message += "\nMethod: "; + message += (server.method() == HTTP_GET) ? "GET" : "POST"; + message += "\nArguments: "; + message += server.args(); + message += "\n"; + for (uint8_t i = 0; i < server.args(); i++) { + message += " NAME:" + server.argName(i) + "\n VALUE:" + server.arg(i) + "\n"; + } + server.send(404, "text/plain", message); + DBG_OUTPUT_PORT.print(message); +} + +void setup(void) { + DBG_OUTPUT_PORT.begin(115200); + DBG_OUTPUT_PORT.setDebugOutput(true); + DBG_OUTPUT_PORT.print("\n"); + WiFi.mode(WIFI_STA); + WiFi.begin(ssid, password); + DBG_OUTPUT_PORT.print("Connecting to "); + DBG_OUTPUT_PORT.println(ssid); + + // Wait for connection + uint8_t i = 0; + while (WiFi.status() != WL_CONNECTED && i++ < 20) {//wait 10 seconds + delay(500); + } + if (i == 21) { + DBG_OUTPUT_PORT.print("Could not connect to"); + DBG_OUTPUT_PORT.println(ssid); + while (1) { + delay(500); + } + } + DBG_OUTPUT_PORT.print("Connected! IP address: "); + DBG_OUTPUT_PORT.println(WiFi.localIP()); + + if (MDNS.begin(host)) { + MDNS.addService("http", "tcp", 80); + DBG_OUTPUT_PORT.println("MDNS responder started"); + DBG_OUTPUT_PORT.print("You can now connect to http://"); + DBG_OUTPUT_PORT.print(host); + DBG_OUTPUT_PORT.println(".local"); + } + + + server.on("/list", HTTP_GET, printDirectory); + server.on("/edit", HTTP_DELETE, handleDelete); + server.on("/edit", HTTP_PUT, handleCreate); + server.on("/edit", HTTP_POST, []() { + returnOK(); + }, handleFileUpload); + server.onNotFound(handleNotFound); + + server.begin(); + DBG_OUTPUT_PORT.println("HTTP server started"); + + if (SD.begin(SS)) { + DBG_OUTPUT_PORT.println("SD Card initialized."); + hasSD = true; + } +} + +void loop(void) { + server.handleClient(); + delay(2);//allow the cpu to switch to other tasks +} diff --git a/lib/EthernetWebServer/examples/SDWebServer/SdRoot/edit/index.htm b/lib/EthernetWebServer/examples/SDWebServer/SdRoot/edit/index.htm new file mode 100644 index 0000000..f535601 --- /dev/null +++ b/lib/EthernetWebServer/examples/SDWebServer/SdRoot/edit/index.htm @@ -0,0 +1,674 @@ + + + + SD Editor + + + + + +
+
+
+ + + + diff --git a/lib/EthernetWebServer/examples/SDWebServer/SdRoot/index.htm b/lib/EthernetWebServer/examples/SDWebServer/SdRoot/index.htm new file mode 100644 index 0000000..55fe5a6 --- /dev/null +++ b/lib/EthernetWebServer/examples/SDWebServer/SdRoot/index.htm @@ -0,0 +1,22 @@ + + + + + ESP Index + + + + +

ESP8266 Pin Functions

+ + + diff --git a/lib/EthernetWebServer/examples/SDWebServer/SdRoot/pins.png b/lib/EthernetWebServer/examples/SDWebServer/SdRoot/pins.png new file mode 100644 index 0000000000000000000000000000000000000000..ac7fc0f9cb64d99f9f33b877798c61d02086d00b GIT binary patch literal 177869 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 z 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 Nla*4EtQ9v7`9ICfW +#include +#include + +const char* ssid = "........"; +const char* password = "........"; + +WebServer server(80); + +//Check if header is present and correct +bool is_authentified() { + Serial.println("Enter is_authentified"); + if (server.hasHeader("Cookie")) { + Serial.print("Found cookie: "); + String cookie = server.header("Cookie"); + Serial.println(cookie); + if (cookie.indexOf("ESPSESSIONID=1") != -1) { + Serial.println("Authentification Successful"); + return true; + } + } + Serial.println("Authentification Failed"); + return false; +} + +//login page, also called for disconnect +void handleLogin() { + String msg; + if (server.hasHeader("Cookie")) { + Serial.print("Found cookie: "); + String cookie = server.header("Cookie"); + Serial.println(cookie); + } + if (server.hasArg("DISCONNECT")) { + Serial.println("Disconnection"); + server.sendHeader("Location", "/login"); + server.sendHeader("Cache-Control", "no-cache"); + server.sendHeader("Set-Cookie", "ESPSESSIONID=0"); + server.send(301); + return; + } + if (server.hasArg("USERNAME") && server.hasArg("PASSWORD")) { + if (server.arg("USERNAME") == "admin" && server.arg("PASSWORD") == "admin") { + server.sendHeader("Location", "/"); + server.sendHeader("Cache-Control", "no-cache"); + server.sendHeader("Set-Cookie", "ESPSESSIONID=1"); + server.send(301); + Serial.println("Log in Successful"); + return; + } + msg = "Wrong username/password! try again."; + Serial.println("Log in Failed"); + } + String content = "
To log in, please use : admin/admin
"; + content += "User:
"; + content += "Password:
"; + content += "
" + msg + "
"; + content += "You also can go
here"; + server.send(200, "text/html", content); +} + +//root page can be accessed only if authentification is ok +void handleRoot() { + Serial.println("Enter handleRoot"); + String header; + if (!is_authentified()) { + server.sendHeader("Location", "/login"); + server.sendHeader("Cache-Control", "no-cache"); + server.send(301); + return; + } + String content = "

hello, you successfully connected to esp8266!


"; + if (server.hasHeader("User-Agent")) { + content += "the user agent used is : " + server.header("User-Agent") + "

"; + } + content += "You can access this page until you disconnect"; + server.send(200, "text/html", content); +} + +//no need authentification +void handleNotFound() { + String message = "File Not Found\n\n"; + message += "URI: "; + message += server.uri(); + message += "\nMethod: "; + message += (server.method() == HTTP_GET) ? "GET" : "POST"; + message += "\nArguments: "; + message += server.args(); + message += "\n"; + for (uint8_t i = 0; i < server.args(); i++) { + message += " " + server.argName(i) + ": " + server.arg(i) + "\n"; + } + server.send(404, "text/plain", message); +} + +void setup(void) { + Serial.begin(115200); + WiFi.mode(WIFI_STA); + WiFi.begin(ssid, password); + Serial.println(""); + + // Wait for connection + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + Serial.println(""); + Serial.print("Connected to "); + Serial.println(ssid); + Serial.print("IP address: "); + Serial.println(WiFi.localIP()); + + + server.on("/", handleRoot); + server.on("/login", handleLogin); + server.on("/inline", []() { + server.send(200, "text/plain", "this works without need of authentification"); + }); + + server.onNotFound(handleNotFound); + //here the list of headers to be recorded + const char * headerkeys[] = {"User-Agent", "Cookie"} ; + size_t headerkeyssize = sizeof(headerkeys) / sizeof(char*); + //ask server to track these headers + server.collectHeaders(headerkeys, headerkeyssize); + server.begin(); + Serial.println("HTTP server started"); +} + +void loop(void) { + server.handleClient(); + delay(2);//allow the cpu to switch to other tasks +} diff --git a/lib/EthernetWebServer/examples/WebUpdate/WebUpdate.ino b/lib/EthernetWebServer/examples/WebUpdate/WebUpdate.ino new file mode 100644 index 0000000..d682739 --- /dev/null +++ b/lib/EthernetWebServer/examples/WebUpdate/WebUpdate.ino @@ -0,0 +1,69 @@ +/* + To upload through terminal you can use: curl -F "image=@firmware.bin" esp8266-webupdate.local/update +*/ + +#include +#include +#include +#include +#include + +const char* host = "esp32-webupdate"; +const char* ssid = "........"; +const char* password = "........"; + +WebServer server(80); +const char* serverIndex = "
"; + +void setup(void) { + Serial.begin(115200); + Serial.println(); + Serial.println("Booting Sketch..."); + WiFi.mode(WIFI_AP_STA); + WiFi.begin(ssid, password); + if (WiFi.waitForConnectResult() == WL_CONNECTED) { + MDNS.begin(host); + server.on("/", HTTP_GET, []() { + server.sendHeader("Connection", "close"); + server.send(200, "text/html", serverIndex); + }); + server.on("/update", HTTP_POST, []() { + server.sendHeader("Connection", "close"); + server.send(200, "text/plain", (Update.hasError()) ? "FAIL" : "OK"); + ESP.restart(); + }, []() { + HTTPUpload& upload = server.upload(); + if (upload.status == UPLOAD_FILE_START) { + Serial.setDebugOutput(true); + Serial.printf("Update: %s\n", upload.filename.c_str()); + if (!Update.begin()) { //start with max available size + Update.printError(Serial); + } + } else if (upload.status == UPLOAD_FILE_WRITE) { + if (Update.write(upload.buf, upload.currentSize) != upload.currentSize) { + Update.printError(Serial); + } + } else if (upload.status == UPLOAD_FILE_END) { + if (Update.end(true)) { //true to set the size to the current progress + Serial.printf("Update Success: %u\nRebooting...\n", upload.totalSize); + } else { + Update.printError(Serial); + } + Serial.setDebugOutput(false); + } else { + Serial.printf("Update Failed Unexpectedly (likely broken connection): status=%d\n", upload.status); + } + }); + server.begin(); + MDNS.addService("http", "tcp", 80); + + Serial.printf("Ready! Open http://%s.local in your browser\n", host); + } else { + Serial.println("WiFi Failed"); + } +} + +void loop(void) { + server.handleClient(); + delay(2);//allow the cpu to switch to other tasks +} diff --git a/lib/EthernetWebServer/keywords.txt b/lib/EthernetWebServer/keywords.txt new file mode 100644 index 0000000..df20ff7 --- /dev/null +++ b/lib/EthernetWebServer/keywords.txt @@ -0,0 +1,38 @@ +####################################### +# Syntax Coloring Map For Ultrasound +####################################### + +####################################### +# Datatypes (KEYWORD1) +####################################### + +WebServer KEYWORD1 +WebServerSecure KEYWORD1 +HTTPMethod KEYWORD1 + +####################################### +# Methods and Functions (KEYWORD2) +####################################### + +begin KEYWORD2 +handleClient KEYWORD2 +on KEYWORD2 +addHandler KEYWORD2 +uri KEYWORD2 +method KEYWORD2 +client KEYWORD2 +send KEYWORD2 +arg KEYWORD2 +argName KEYWORD2 +args KEYWORD2 +hasArg KEYWORD2 +onNotFound KEYWORD2 + +####################################### +# Constants (LITERAL1) +####################################### + +HTTP_GET LITERAL1 +HTTP_POST LITERAL1 +HTTP_ANY LITERAL1 +CONTENT_LENGTH_UNKNOWN LITERAL1 diff --git a/lib/EthernetWebServer/library.properties b/lib/EthernetWebServer/library.properties new file mode 100644 index 0000000..a2ac5f5 --- /dev/null +++ b/lib/EthernetWebServer/library.properties @@ -0,0 +1,9 @@ +name=WebServer +version=1.0 +author=Ivan Grokhotkov +maintainer=Ivan Grokhtkov +sentence=Simple web server library +paragraph=The library supports HTTP GET and POST requests, provides argument parsing, handles one client at a time. +category=Communication +url= +architectures=esp32 diff --git a/lib/EthernetWebServer/src/EthernetServerImpl.cpp b/lib/EthernetWebServer/src/EthernetServerImpl.cpp new file mode 100644 index 0000000..6b25a9d --- /dev/null +++ b/lib/EthernetWebServer/src/EthernetServerImpl.cpp @@ -0,0 +1,29 @@ +#include "EthernetServerImpl.h" + +EthernetServerImpl::EthernetServerImpl(IPAddress addr, int port) + : EthernetServer(port) +{} + +EthernetServerImpl::EthernetServerImpl(int port) + : EthernetServer(port) +{} + +void EthernetServerImpl::begin(uint16_t port) +{ + EthernetServer::begin(); +} + +void EthernetServerImpl::begin() +{ + EthernetServer::begin(); +} + +void EthernetServerImpl::close() +{ + +} + +int EthernetServerImpl::setNoDelay(bool nodelay) +{ + return 0; +} diff --git a/lib/EthernetWebServer/src/EthernetServerImpl.h b/lib/EthernetWebServer/src/EthernetServerImpl.h new file mode 100644 index 0000000..76ad3bf --- /dev/null +++ b/lib/EthernetWebServer/src/EthernetServerImpl.h @@ -0,0 +1,15 @@ +#pragma once + +#include + +class EthernetServerImpl : public EthernetServer +{ +public: + EthernetServerImpl(IPAddress addr, int port); + EthernetServerImpl(int port); + + void begin(); + void begin(uint16_t port); + void close(); + int setNoDelay(bool nodelay); +}; \ No newline at end of file diff --git a/lib/EthernetWebServer/src/EthernetWebServer.cpp b/lib/EthernetWebServer/src/EthernetWebServer.cpp new file mode 100644 index 0000000..47846d5 --- /dev/null +++ b/lib/EthernetWebServer/src/EthernetWebServer.cpp @@ -0,0 +1,712 @@ +/* + EthernetWebServer.cpp - Dead simple web-server. + Supports only one simultaneous client, knows how to handle GET and POST. + + Copyright (c) 2014 Ivan Grokhotkov. All rights reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Modified 8 May 2015 by Hristo Gochkov (proper post and file upload handling) +*/ + + +#include +#include +#include +#include "WiFiServer.h" +#include "EthernetClient.h" +#include "EthernetWebServer.h" +#include "FS.h" +#include "detail/RequestHandlersImpl.h" +#include "mbedtls/md5.h" + + +static const char AUTHORIZATION_HEADER[] = "Authorization"; +static const char qop_auth[] PROGMEM = "qop=auth"; +static const char qop_auth_quoted[] PROGMEM = "qop=\"auth\""; +static const char WWW_Authenticate[] = "WWW-Authenticate"; +static const char Content_Length[] = "Content-Length"; + + +EthernetWebServer::EthernetWebServer(IPAddress addr, int port) +: _corsEnabled(false) +, _server(addr, port) +, _currentMethod(HTTP_ANY) +, _currentVersion(0) +, _currentStatus(HC_NONE) +, _statusChange(0) +, _nullDelay(true) +, _currentHandler(nullptr) +, _firstHandler(nullptr) +, _lastHandler(nullptr) +, _currentArgCount(0) +, _currentArgs(nullptr) +, _postArgsLen(0) +, _postArgs(nullptr) +, _headerKeysCount(0) +, _currentHeaders(nullptr) +, _contentLength(0) +, _chunked(false) +{ +} + +EthernetWebServer::EthernetWebServer(int port) +: _corsEnabled(false) +, _server(port) +, _currentMethod(HTTP_ANY) +, _currentVersion(0) +, _currentStatus(HC_NONE) +, _statusChange(0) +, _nullDelay(true) +, _currentHandler(nullptr) +, _firstHandler(nullptr) +, _lastHandler(nullptr) +, _currentArgCount(0) +, _currentArgs(nullptr) +, _postArgsLen(0) +, _postArgs(nullptr) +, _headerKeysCount(0) +, _currentHeaders(nullptr) +, _contentLength(0) +, _chunked(false) +{ +} + +EthernetWebServer::~EthernetWebServer() { + _server.close(); + if (_currentHeaders) + delete[]_currentHeaders; + RequestHandler* handler = _firstHandler; + while (handler) { + RequestHandler* next = handler->next(); + delete handler; + handler = next; + } +} + +void EthernetWebServer::begin() { + close(); + _server.begin(); + _server.setNoDelay(true); +} + +void EthernetWebServer::begin(uint16_t port) { + close(); + _server.begin(port); + _server.setNoDelay(true); +} + +String EthernetWebServer::_extractParam(String& authReq, const String& param, const char delimit){ + int _begin = authReq.indexOf(param); + if (_begin == -1) + return ""; + return authReq.substring(_begin+param.length(),authReq.indexOf(delimit,_begin+param.length())); +} + +static String md5str(String &in){ + char out[33] = {0}; + mbedtls_md5_context _ctx; + uint8_t i; + uint8_t * _buf = (uint8_t*)malloc(16); + if(_buf == NULL) + return String(out); + memset(_buf, 0x00, 16); + mbedtls_md5_init(&_ctx); + mbedtls_md5_starts(&_ctx); + mbedtls_md5_update(&_ctx, (const uint8_t *)in.c_str(), in.length()); + mbedtls_md5_finish(&_ctx, _buf); + for(i = 0; i < 16; i++) { + sprintf(out + (i * 2), "%02x", _buf[i]); + } + out[32] = 0; + free(_buf); + return String(out); +} + +bool EthernetWebServer::authenticate(const char * username, const char * password){ + if(hasHeader(FPSTR(AUTHORIZATION_HEADER))) { + String authReq = header(FPSTR(AUTHORIZATION_HEADER)); + if(authReq.startsWith(F("Basic"))){ + authReq = authReq.substring(6); + authReq.trim(); + char toencodeLen = strlen(username)+strlen(password)+1; + char *toencode = new char[toencodeLen + 1]; + if(toencode == NULL){ + authReq = ""; + return false; + } + char *encoded = new char[base64_encode_expected_len(toencodeLen)+1]; + if(encoded == NULL){ + authReq = ""; + delete[] toencode; + return false; + } + sprintf(toencode, "%s:%s", username, password); + if(base64_encode_chars(toencode, toencodeLen, encoded) > 0 && authReq.equalsConstantTime(encoded)) { + authReq = ""; + delete[] toencode; + delete[] encoded; + return true; + } + delete[] toencode; + delete[] encoded; + } else if(authReq.startsWith(F("Digest"))) { + authReq = authReq.substring(7); + log_v("%s", authReq.c_str()); + String _username = _extractParam(authReq,F("username=\""),'\"'); + if(!_username.length() || _username != String(username)) { + authReq = ""; + return false; + } + // extracting required parameters for RFC 2069 simpler Digest + String _realm = _extractParam(authReq, F("realm=\""),'\"'); + String _nonce = _extractParam(authReq, F("nonce=\""),'\"'); + String _uri = _extractParam(authReq, F("uri=\""),'\"'); + String _response = _extractParam(authReq, F("response=\""),'\"'); + String _opaque = _extractParam(authReq, F("opaque=\""),'\"'); + + if((!_realm.length()) || (!_nonce.length()) || (!_uri.length()) || (!_response.length()) || (!_opaque.length())) { + authReq = ""; + return false; + } + if((_opaque != _sopaque) || (_nonce != _snonce) || (_realm != _srealm)) { + authReq = ""; + return false; + } + // parameters for the RFC 2617 newer Digest + String _nc,_cnonce; + if(authReq.indexOf(FPSTR(qop_auth)) != -1 || authReq.indexOf(FPSTR(qop_auth_quoted)) != -1) { + _nc = _extractParam(authReq, F("nc="), ','); + _cnonce = _extractParam(authReq, F("cnonce=\""),'\"'); + } + String _H1 = md5str(String(username) + ':' + _realm + ':' + String(password)); + log_v("Hash of user:realm:pass=%s", _H1.c_str()); + String _H2 = ""; + if(_currentMethod == HTTP_GET){ + _H2 = md5str(String(F("GET:")) + _uri); + }else if(_currentMethod == HTTP_POST){ + _H2 = md5str(String(F("POST:")) + _uri); + }else if(_currentMethod == HTTP_PUT){ + _H2 = md5str(String(F("PUT:")) + _uri); + }else if(_currentMethod == HTTP_DELETE){ + _H2 = md5str(String(F("DELETE:")) + _uri); + }else{ + _H2 = md5str(String(F("GET:")) + _uri); + } + log_v("Hash of GET:uri=%s", _H2.c_str()); + String _responsecheck = ""; + if(authReq.indexOf(FPSTR(qop_auth)) != -1 || authReq.indexOf(FPSTR(qop_auth_quoted)) != -1) { + _responsecheck = md5str(_H1 + ':' + _nonce + ':' + _nc + ':' + _cnonce + F(":auth:") + _H2); + } else { + _responsecheck = md5str(_H1 + ':' + _nonce + ':' + _H2); + } + log_v("The Proper response=%s", _responsecheck.c_str()); + if(_response == _responsecheck){ + authReq = ""; + return true; + } + } + authReq = ""; + } + return false; +} + +String EthernetWebServer::_getRandomHexString() { + char buffer[33]; // buffer to hold 32 Hex Digit + /0 + int i; + for(i = 0; i < 4; i++) { + sprintf (buffer + (i*8), "%08x", esp_random()); + } + return String(buffer); +} + +void EthernetWebServer::requestAuthentication(HTTPAuthMethod mode, const char* realm, const String& authFailMsg) { + if(realm == NULL) { + _srealm = String(F("Login Required")); + } else { + _srealm = String(realm); + } + if(mode == BASIC_AUTH) { + sendHeader(String(FPSTR(WWW_Authenticate)), String(F("Basic realm=\"")) + _srealm + String(F("\""))); + } else { + _snonce=_getRandomHexString(); + _sopaque=_getRandomHexString(); + sendHeader(String(FPSTR(WWW_Authenticate)), String(F("Digest realm=\"")) +_srealm + String(F("\", qop=\"auth\", nonce=\"")) + _snonce + String(F("\", opaque=\"")) + _sopaque + String(F("\""))); + } + using namespace mime; + send(401, String(FPSTR(mimeTable[html].mimeType)), authFailMsg); +} + +void EthernetWebServer::on(const Uri &uri, EthernetWebServer::THandlerFunction handler) { + on(uri, HTTP_ANY, handler); +} + +void EthernetWebServer::on(const Uri &uri, HTTPMethod method, EthernetWebServer::THandlerFunction fn) { + on(uri, method, fn, _fileUploadHandler); +} + +void EthernetWebServer::on(const Uri &uri, HTTPMethod method, EthernetWebServer::THandlerFunction fn, EthernetWebServer::THandlerFunction ufn) { + _addRequestHandler(new FunctionRequestHandler(fn, ufn, uri, method)); +} + +void EthernetWebServer::addHandler(RequestHandler* handler) { + _addRequestHandler(handler); +} + +void EthernetWebServer::_addRequestHandler(RequestHandler* handler) { + if (!_lastHandler) { + _firstHandler = handler; + _lastHandler = handler; + } + else { + _lastHandler->next(handler); + _lastHandler = handler; + } +} + +void EthernetWebServer::serveStatic(const char* uri, FS& fs, const char* path, const char* cache_header) { + _addRequestHandler(new StaticRequestHandler(fs, path, uri, cache_header)); +} + +void EthernetWebServer::handleClient() { + if (_currentStatus == HC_NONE) { + EthernetClient client = _server.available(); + if (!client) { + if (_nullDelay) { + delay(1); + } + return; + } + + log_v("New client"); + + _currentClient = client; + _currentStatus = HC_WAIT_READ; + _statusChange = millis(); + } + + bool keepCurrentClient = false; + bool callYield = false; + + if (_currentClient.connected()) { + switch (_currentStatus) { + case HC_NONE: + // No-op to avoid C++ compiler warning + break; + case HC_WAIT_READ: + // Wait for data from client to become available + if (_currentClient.available()) { + if (_parseRequest(_currentClient)) { + // because HTTP_MAX_SEND_WAIT is expressed in milliseconds, + // it must be divided by 1000 + _currentClient.setTimeout(HTTP_MAX_SEND_WAIT / 1000); + _contentLength = CONTENT_LENGTH_NOT_SET; + _handleRequest(); + +// Fix for issue with Chrome based browsers: https://github.com/espressif/arduino-esp32/issues/3652 +// if (_currentClient.connected()) { +// _currentStatus = HC_WAIT_CLOSE; +// _statusChange = millis(); +// keepCurrentClient = true; +// } + } + } else { // !_currentClient.available() + if (millis() - _statusChange <= HTTP_MAX_DATA_WAIT) { + keepCurrentClient = true; + } + callYield = true; + } + break; + case HC_WAIT_CLOSE: + // Wait for client to close the connection + if (millis() - _statusChange <= HTTP_MAX_CLOSE_WAIT) { + keepCurrentClient = true; + callYield = true; + } + } + } + + if (!keepCurrentClient) { + _currentClient = EthernetClient(); + _currentStatus = HC_NONE; + _currentUpload.reset(); + } + + if (callYield) { + yield(); + } +} + +void EthernetWebServer::close() { + _server.close(); + _currentStatus = HC_NONE; + if(!_headerKeysCount) + collectHeaders(0, 0); +} + +void EthernetWebServer::stop() { + close(); +} + +void EthernetWebServer::sendHeader(const String& name, const String& value, bool first) { + String headerLine = name; + headerLine += F(": "); + headerLine += value; + headerLine += "\r\n"; + + if (first) { + _responseHeaders = headerLine + _responseHeaders; + } + else { + _responseHeaders += headerLine; + } +} + +void EthernetWebServer::setContentLength(const size_t contentLength) { + _contentLength = contentLength; +} + +void EthernetWebServer::enableDelay(boolean value) { + _nullDelay = value; +} + +void EthernetWebServer::enableCORS(boolean value) { + _corsEnabled = value; +} + +void EthernetWebServer::enableCrossOrigin(boolean value) { + enableCORS(value); +} + +void EthernetWebServer::_prepareHeader(String& response, int code, const char* content_type, size_t contentLength) { + response = String(F("HTTP/1.")) + String(_currentVersion) + ' '; + response += String(code); + response += ' '; + response += _responseCodeToString(code); + response += "\r\n"; + + using namespace mime; + if (!content_type) + content_type = mimeTable[html].mimeType; + + sendHeader(String(F("Content-Type")), String(FPSTR(content_type)), true); + if (_contentLength == CONTENT_LENGTH_NOT_SET) { + sendHeader(String(FPSTR(Content_Length)), String(contentLength)); + } else if (_contentLength != CONTENT_LENGTH_UNKNOWN) { + sendHeader(String(FPSTR(Content_Length)), String(_contentLength)); + } else if(_contentLength == CONTENT_LENGTH_UNKNOWN && _currentVersion){ //HTTP/1.1 or above client + //let's do chunked + _chunked = true; + sendHeader(String(F("Accept-Ranges")),String(F("none"))); + sendHeader(String(F("Transfer-Encoding")),String(F("chunked"))); + } + if (_corsEnabled) { + sendHeader(String(FPSTR("Access-Control-Allow-Origin")), String("*")); + sendHeader(String(FPSTR("Access-Control-Allow-Methods")), String("*")); + sendHeader(String(FPSTR("Access-Control-Allow-Headers")), String("*")); + } + sendHeader(String(F("Connection")), String(F("close"))); + + response += _responseHeaders; + response += "\r\n"; + _responseHeaders = ""; +} + +void EthernetWebServer::send(int code, const char* content_type, const String& content) { + String header; + // Can we asume the following? + //if(code == 200 && content.length() == 0 && _contentLength == CONTENT_LENGTH_NOT_SET) + // _contentLength = CONTENT_LENGTH_UNKNOWN; + _prepareHeader(header, code, content_type, content.length()); + _currentClientWrite(header.c_str(), header.length()); + if(content.length()) + sendContent(content); +} + +void EthernetWebServer::send_P(int code, PGM_P content_type, PGM_P content) { + size_t contentLength = 0; + + if (content != NULL) { + contentLength = strlen_P(content); + } + + String header; + char type[64]; + memccpy_P((void*)type, (PGM_VOID_P)content_type, 0, sizeof(type)); + _prepareHeader(header, code, (const char* )type, contentLength); + _currentClientWrite(header.c_str(), header.length()); + sendContent_P(content); +} + +void EthernetWebServer::send_P(int code, PGM_P content_type, PGM_P content, size_t contentLength) { + String header; + char type[64]; + memccpy_P((void*)type, (PGM_VOID_P)content_type, 0, sizeof(type)); + _prepareHeader(header, code, (const char* )type, contentLength); + sendContent(header); + sendContent_P(content, contentLength); +} + +void EthernetWebServer::send(int code, char* content_type, const String& content) { + send(code, (const char*)content_type, content); +} + +void EthernetWebServer::send(int code, const String& content_type, const String& content) { + send(code, (const char*)content_type.c_str(), content); +} + +void EthernetWebServer::sendContent(const String& content) { + sendContent(content.c_str(), content.length()); +} + +void EthernetWebServer::sendContent(const char* content, size_t contentLength) { + const char * footer = "\r\n"; + if(_chunked) { + char * chunkSize = (char *)malloc(11); + if(chunkSize){ + sprintf(chunkSize, "%x%s", contentLength, footer); + _currentClientWrite(chunkSize, strlen(chunkSize)); + free(chunkSize); + } + } + _currentClientWrite(content, contentLength); + if(_chunked){ + _currentClient.write(footer, 2); + if (contentLength == 0) { + _chunked = false; + } + } +} + +void EthernetWebServer::sendContent_P(PGM_P content) { + sendContent_P(content, strlen_P(content)); +} + +void EthernetWebServer::sendContent_P(PGM_P content, size_t size) { + const char * footer = "\r\n"; + if(_chunked) { + char * chunkSize = (char *)malloc(11); + if(chunkSize){ + sprintf(chunkSize, "%x%s", size, footer); + _currentClientWrite(chunkSize, strlen(chunkSize)); + free(chunkSize); + } + } + _currentClientWrite_P(content, size); + if(_chunked){ + _currentClient.write(footer, 2); + if (size == 0) { + _chunked = false; + } + } +} + + +void EthernetWebServer::_streamFileCore(const size_t fileSize, const String & fileName, const String & contentType) +{ + using namespace mime; + setContentLength(fileSize); + if (fileName.endsWith(String(FPSTR(mimeTable[gz].endsWith))) && + contentType != String(FPSTR(mimeTable[gz].mimeType)) && + contentType != String(FPSTR(mimeTable[none].mimeType))) { + sendHeader(F("Content-Encoding"), F("gzip")); + } + send(200, contentType, ""); +} + +String EthernetWebServer::pathArg(unsigned int i) { + if (_currentHandler != nullptr) + return _currentHandler->pathArg(i); + return ""; +} + +String EthernetWebServer::arg(String name) { + for (int j = 0; j < _postArgsLen; ++j) { + if ( _postArgs[j].key == name ) + return _postArgs[j].value; + } + for (int i = 0; i < _currentArgCount; ++i) { + if ( _currentArgs[i].key == name ) + return _currentArgs[i].value; + } + return ""; +} + +String EthernetWebServer::arg(int i) { + if (i < _currentArgCount) + return _currentArgs[i].value; + return ""; +} + +String EthernetWebServer::argName(int i) { + if (i < _currentArgCount) + return _currentArgs[i].key; + return ""; +} + +int EthernetWebServer::args() { + return _currentArgCount; +} + +bool EthernetWebServer::hasArg(String name) { + for (int j = 0; j < _postArgsLen; ++j) { + if (_postArgs[j].key == name) + return true; + } + for (int i = 0; i < _currentArgCount; ++i) { + if (_currentArgs[i].key == name) + return true; + } + return false; +} + + +String EthernetWebServer::header(String name) { + for (int i = 0; i < _headerKeysCount; ++i) { + if (_currentHeaders[i].key.equalsIgnoreCase(name)) + return _currentHeaders[i].value; + } + return ""; +} + +void EthernetWebServer::collectHeaders(const char* headerKeys[], const size_t headerKeysCount) { + _headerKeysCount = headerKeysCount + 1; + if (_currentHeaders) + delete[]_currentHeaders; + _currentHeaders = new RequestArgument[_headerKeysCount]; + _currentHeaders[0].key = FPSTR(AUTHORIZATION_HEADER); + for (int i = 1; i < _headerKeysCount; i++){ + _currentHeaders[i].key = headerKeys[i-1]; + } +} + +String EthernetWebServer::header(int i) { + if (i < _headerKeysCount) + return _currentHeaders[i].value; + return ""; +} + +String EthernetWebServer::headerName(int i) { + if (i < _headerKeysCount) + return _currentHeaders[i].key; + return ""; +} + +int EthernetWebServer::headers() { + return _headerKeysCount; +} + +bool EthernetWebServer::hasHeader(String name) { + for (int i = 0; i < _headerKeysCount; ++i) { + if ((_currentHeaders[i].key.equalsIgnoreCase(name)) && (_currentHeaders[i].value.length() > 0)) + return true; + } + return false; +} + +String EthernetWebServer::hostHeader() { + return _hostHeader; +} + +void EthernetWebServer::onFileUpload(THandlerFunction fn) { + _fileUploadHandler = fn; +} + +void EthernetWebServer::onNotFound(THandlerFunction fn) { + _notFoundHandler = fn; +} + +void EthernetWebServer::_handleRequest() { + bool handled = false; + if (!_currentHandler){ + log_e("request handler not found"); + } + else { + handled = _currentHandler->handle(*this, _currentMethod, _currentUri); + if (!handled) { + log_e("request handler failed to handle request"); + } + } + if (!handled && _notFoundHandler) { + _notFoundHandler(); + handled = true; + } + if (!handled) { + using namespace mime; + send(404, String(FPSTR(mimeTable[html].mimeType)), String(F("Not found: ")) + _currentUri); + handled = true; + } + if (handled) { + _finalizeResponse(); + } + _currentUri = ""; +} + + +void EthernetWebServer::_finalizeResponse() { + if (_chunked) { + sendContent(""); + } +} + +String EthernetWebServer::_responseCodeToString(int code) { + switch (code) { + case 100: return F("Continue"); + case 101: return F("Switching Protocols"); + case 200: return F("OK"); + case 201: return F("Created"); + case 202: return F("Accepted"); + case 203: return F("Non-Authoritative Information"); + case 204: return F("No Content"); + case 205: return F("Reset Content"); + case 206: return F("Partial Content"); + case 300: return F("Multiple Choices"); + case 301: return F("Moved Permanently"); + case 302: return F("Found"); + case 303: return F("See Other"); + case 304: return F("Not Modified"); + case 305: return F("Use Proxy"); + case 307: return F("Temporary Redirect"); + case 400: return F("Bad Request"); + case 401: return F("Unauthorized"); + case 402: return F("Payment Required"); + case 403: return F("Forbidden"); + case 404: return F("Not Found"); + case 405: return F("Method Not Allowed"); + case 406: return F("Not Acceptable"); + case 407: return F("Proxy Authentication Required"); + case 408: return F("Request Time-out"); + case 409: return F("Conflict"); + case 410: return F("Gone"); + case 411: return F("Length Required"); + case 412: return F("Precondition Failed"); + case 413: return F("Request Entity Too Large"); + case 414: return F("Request-URI Too Large"); + case 415: return F("Unsupported Media Type"); + case 416: return F("Requested range not satisfiable"); + case 417: return F("Expectation Failed"); + case 500: return F("Internal Server Error"); + case 501: return F("Not Implemented"); + case 502: return F("Bad Gateway"); + case 503: return F("Service Unavailable"); + case 504: return F("Gateway Time-out"); + case 505: return F("HTTP Version not supported"); + default: return F(""); + } +} + +size_t EthernetWebServer::write_P(const char *buf, size_t size) +{ + return _currentClient.write(buf, size); +} diff --git a/lib/EthernetWebServer/src/EthernetWebServer.h b/lib/EthernetWebServer/src/EthernetWebServer.h new file mode 100644 index 0000000..d850218 --- /dev/null +++ b/lib/EthernetWebServer/src/EthernetWebServer.h @@ -0,0 +1,214 @@ +/* + EthernetWebServer.h - Dead simple web-server. + Supports only one simultaneous client, knows how to handle GET and POST. + + Copyright (c) 2014 Ivan Grokhotkov. All rights reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Modified 8 May 2015 by Hristo Gochkov (proper post and file upload handling) +*/ + + +#ifndef WEBSERVER_H +#define WEBSERVER_H + +#include +#include +#include +#include +#include "HTTP_Method.h" +#include "Uri.h" + +enum HTTPUploadStatus { UPLOAD_FILE_START, UPLOAD_FILE_WRITE, UPLOAD_FILE_END, + UPLOAD_FILE_ABORTED }; +enum HTTPClientStatus { HC_NONE, HC_WAIT_READ, HC_WAIT_CLOSE }; +enum HTTPAuthMethod { BASIC_AUTH, DIGEST_AUTH }; + +#define HTTP_DOWNLOAD_UNIT_SIZE 1436 + +#ifndef HTTP_UPLOAD_BUFLEN +#define HTTP_UPLOAD_BUFLEN 1436 +#endif + +#define HTTP_MAX_DATA_WAIT 5000 //ms to wait for the client to send the request +#define HTTP_MAX_POST_WAIT 5000 //ms to wait for POST data to arrive +#define HTTP_MAX_SEND_WAIT 5000 //ms to wait for data chunk to be ACKed +#define HTTP_MAX_CLOSE_WAIT 2000 //ms to wait for the client to close the connection + +#define CONTENT_LENGTH_UNKNOWN ((size_t) -1) +#define CONTENT_LENGTH_NOT_SET ((size_t) -2) + +class EthernetWebServer; + +typedef struct { + HTTPUploadStatus status; + String filename; + String name; + String type; + size_t totalSize; // file size + size_t currentSize; // size of data currently in buf + uint8_t buf[HTTP_UPLOAD_BUFLEN]; +} HTTPUpload; + +#include "detail/RequestHandler.h" +#include "EthernetServerImpl.h" + +namespace fs { +class FS; +} + +class EthernetWebServer +{ +public: + EthernetWebServer(IPAddress addr, int port = 80); + EthernetWebServer(int port = 80); + virtual ~EthernetWebServer(); + + virtual void begin(); + virtual void begin(uint16_t port); + virtual void handleClient(); + + virtual void close(); + void stop(); + + bool authenticate(const char * username, const char * password); + void requestAuthentication(HTTPAuthMethod mode = BASIC_AUTH, const char* realm = NULL, const String& authFailMsg = String("") ); + + typedef std::function THandlerFunction; + void on(const Uri &uri, THandlerFunction handler); + void on(const Uri &uri, HTTPMethod method, THandlerFunction fn); + void on(const Uri &uri, HTTPMethod method, THandlerFunction fn, THandlerFunction ufn); + void addHandler(RequestHandler* handler); + void serveStatic(const char* uri, fs::FS& fs, const char* path, const char* cache_header = NULL ); + void onNotFound(THandlerFunction fn); //called when handler is not assigned + void onFileUpload(THandlerFunction fn); //handle file uploads + + String uri() { return _currentUri; } + HTTPMethod method() { return _currentMethod; } + virtual EthernetClient client() { return _currentClient; } + HTTPUpload& upload() { return *_currentUpload; } + + String pathArg(unsigned int i); // get request path argument by number + String arg(String name); // get request argument value by name + String arg(int i); // get request argument value by number + String argName(int i); // get request argument name by number + int args(); // get arguments count + bool hasArg(String name); // check if argument exists + void collectHeaders(const char* headerKeys[], const size_t headerKeysCount); // set the request headers to collect + String header(String name); // get request header value by name + String header(int i); // get request header value by number + String headerName(int i); // get request header name by number + int headers(); // get header count + bool hasHeader(String name); // check if header exists + + String hostHeader(); // get request host header if available or empty String if not + + // send response to the client + // code - HTTP response code, can be 200 or 404 + // content_type - HTTP content type, like "text/plain" or "image/png" + // content - actual content body + void send(int code, const char* content_type = NULL, const String& content = String("")); + void send(int code, char* content_type, const String& content); + void send(int code, const String& content_type, const String& content); + void send_P(int code, PGM_P content_type, PGM_P content); + void send_P(int code, PGM_P content_type, PGM_P content, size_t contentLength); + + void enableDelay(boolean value); + void enableCORS(boolean value = true); + void enableCrossOrigin(boolean value = true); + + void setContentLength(const size_t contentLength); + void sendHeader(const String& name, const String& value, bool first = false); + void sendContent(const String& content); + void sendContent(const char* content, size_t contentLength); + void sendContent_P(PGM_P content); + void sendContent_P(PGM_P content, size_t size); + + static String urlDecode(const String& text); + + template + size_t streamFile(T &file, const String& contentType) { + _streamFileCore(file.size(), file.name(), contentType); + return _currentClient.write(file); + } + +protected: + size_t write_P(PGM_P buf, size_t size); + virtual size_t _currentClientWrite(const char* b, size_t l) { return _currentClient.write( b, l ); } + virtual size_t _currentClientWrite_P(PGM_P b, size_t l) { return write_P( b, l ); } + void _addRequestHandler(RequestHandler* handler); + void _handleRequest(); + void _finalizeResponse(); + bool _parseRequest(EthernetClient& client); + void _parseArguments(String data); + static String _responseCodeToString(int code); + bool _parseForm(EthernetClient& client, String boundary, uint32_t len); + bool _parseFormUploadAborted(); + void _uploadWriteByte(uint8_t b); + int _uploadReadByte(EthernetClient& client); + void _prepareHeader(String& response, int code, const char* content_type, size_t contentLength); + bool _collectHeader(const char* headerName, const char* headerValue); + + void _streamFileCore(const size_t fileSize, const String & fileName, const String & contentType); + + String _getRandomHexString(); + // for extracting Auth parameters + String _extractParam(String& authReq,const String& param,const char delimit = '"'); + + struct RequestArgument { + String key; + String value; + }; + + boolean _corsEnabled; + EthernetServerImpl _server; + + EthernetClient _currentClient; + HTTPMethod _currentMethod; + String _currentUri; + uint8_t _currentVersion; + HTTPClientStatus _currentStatus; + unsigned long _statusChange; + boolean _nullDelay; + + RequestHandler* _currentHandler; + RequestHandler* _firstHandler; + RequestHandler* _lastHandler; + THandlerFunction _notFoundHandler; + THandlerFunction _fileUploadHandler; + + int _currentArgCount; + RequestArgument* _currentArgs; + int _postArgsLen; + RequestArgument* _postArgs; + + std::unique_ptr _currentUpload; + + int _headerKeysCount; + RequestArgument* _currentHeaders; + size_t _contentLength; + String _responseHeaders; + + String _hostHeader; + bool _chunked; + + String _snonce; // Store noance and opaque for future comparison + String _sopaque; + String _srealm; // Store the Auth realm between Calls + +}; + + +#endif //ESP8266WEBSERVER_H diff --git a/lib/EthernetWebServer/src/HTTP_Method.h b/lib/EthernetWebServer/src/HTTP_Method.h new file mode 100644 index 0000000..66d53bf --- /dev/null +++ b/lib/EthernetWebServer/src/HTTP_Method.h @@ -0,0 +1,9 @@ +#ifndef _HTTP_Method_H_ +#define _HTTP_Method_H_ + +#include "http_parser.h" + +typedef enum http_method HTTPMethod; +#define HTTP_ANY (HTTPMethod)(255) + +#endif /* _HTTP_Method_H_ */ diff --git a/lib/EthernetWebServer/src/Parsing.cpp b/lib/EthernetWebServer/src/Parsing.cpp new file mode 100644 index 0000000..0739d33 --- /dev/null +++ b/lib/EthernetWebServer/src/Parsing.cpp @@ -0,0 +1,589 @@ +/* + Parsing.cpp - HTTP request parsing. + + Copyright (c) 2015 Ivan Grokhotkov. All rights reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Modified 8 May 2015 by Hristo Gochkov (proper post and file upload handling) +*/ + +#include +#include +#include "WiFiServer.h" +#include "EthernetClient.h" +#include "EthernetWebServer.h" +#include "detail/mimetable.h" + +#ifndef WEBSERVER_MAX_POST_ARGS +#define WEBSERVER_MAX_POST_ARGS 32 +#endif + +#define __STR(a) #a +#define _STR(a) __STR(a) +const char * _eth_http_method_str[] = { +#define XX(num, name, string) _STR(name), + HTTP_METHOD_MAP(XX) +#undef XX +}; + +static const char Content_Type[] PROGMEM = "Content-Type"; +static const char filename[] PROGMEM = "filename"; + +static char* readBytesWithTimeout(EthernetClient& client, size_t maxLength, size_t& dataLength, int timeout_ms) +{ + char *buf = nullptr; + dataLength = 0; + while (dataLength < maxLength) { + int tries = timeout_ms; + size_t newLength; + while (!(newLength = client.available()) && tries--) delay(1); + if (!newLength) { + break; + } + if (!buf) { + buf = (char *) malloc(newLength + 1); + if (!buf) { + return nullptr; + } + } + else { + char* newBuf = (char *) realloc(buf, dataLength + newLength + 1); + if (!newBuf) { + free(buf); + return nullptr; + } + buf = newBuf; + } + client.readBytes(buf + dataLength, newLength); + dataLength += newLength; + buf[dataLength] = '\0'; + } + return buf; +} + +bool EthernetWebServer::_parseRequest(EthernetClient& client) { + // Read the first line of HTTP request + String req = client.readStringUntil('\r'); + client.readStringUntil('\n'); + //reset header value + for (int i = 0; i < _headerKeysCount; ++i) { + _currentHeaders[i].value =String(); + } + + // First line of HTTP request looks like "GET /path HTTP/1.1" + // Retrieve the "/path" part by finding the spaces + int addr_start = req.indexOf(' '); + int addr_end = req.indexOf(' ', addr_start + 1); + if (addr_start == -1 || addr_end == -1) { + log_e("Invalid request: %s", req.c_str()); + return false; + } + + String methodStr = req.substring(0, addr_start); + String url = req.substring(addr_start + 1, addr_end); + String versionEnd = req.substring(addr_end + 8); + _currentVersion = atoi(versionEnd.c_str()); + String searchStr = ""; + int hasSearch = url.indexOf('?'); + if (hasSearch != -1){ + searchStr = url.substring(hasSearch + 1); + url = url.substring(0, hasSearch); + } + _currentUri = url; + _chunked = false; + + HTTPMethod method = HTTP_ANY; + size_t num_methods = sizeof(_eth_http_method_str) / sizeof(const char *); + for (size_t i=0; inext()) { + if (handler->canHandle(_currentMethod, _currentUri)) + break; + } + _currentHandler = handler; + + String formData; + // below is needed only when POST type request + if (method == HTTP_POST || method == HTTP_PUT || method == HTTP_PATCH || method == HTTP_DELETE){ + String boundaryStr; + String headerName; + String headerValue; + bool isForm = false; + bool isEncoded = false; + uint32_t contentLength = 0; + //parse headers + while(1){ + req = client.readStringUntil('\r'); + client.readStringUntil('\n'); + if (req == "") break;//no moar headers + int headerDiv = req.indexOf(':'); + if (headerDiv == -1){ + break; + } + headerName = req.substring(0, headerDiv); + headerValue = req.substring(headerDiv + 1); + headerValue.trim(); + _collectHeader(headerName.c_str(),headerValue.c_str()); + + log_v("headerName: %s", headerName.c_str()); + log_v("headerValue: %s", headerValue.c_str()); + + if (headerName.equalsIgnoreCase(FPSTR(Content_Type))){ + using namespace mime; + if (headerValue.startsWith(FPSTR(mimeTable[txt].mimeType))){ + isForm = false; + } else if (headerValue.startsWith(F("application/x-www-form-urlencoded"))){ + isForm = false; + isEncoded = true; + } else if (headerValue.startsWith(F("multipart/"))){ + boundaryStr = headerValue.substring(headerValue.indexOf('=') + 1); + boundaryStr.replace("\"",""); + isForm = true; + } + } else if (headerName.equalsIgnoreCase(F("Content-Length"))){ + contentLength = headerValue.toInt(); + } else if (headerName.equalsIgnoreCase(F("Host"))){ + _hostHeader = headerValue; + } + } + + if (!isForm){ + size_t plainLength; + char* plainBuf = readBytesWithTimeout(client, contentLength, plainLength, HTTP_MAX_POST_WAIT); + if (plainLength < contentLength) { + free(plainBuf); + return false; + } + if (contentLength > 0) { + if(isEncoded){ + //url encoded form + if (searchStr != "") searchStr += '&'; + searchStr += plainBuf; + } + _parseArguments(searchStr); + if(!isEncoded){ + //plain post json or other data + RequestArgument& arg = _currentArgs[_currentArgCount++]; + arg.key = F("plain"); + arg.value = String(plainBuf); + } + + log_v("Plain: %s", plainBuf); + free(plainBuf); + } else { + // No content - but we can still have arguments in the URL. + _parseArguments(searchStr); + } + } + + if (isForm){ + _parseArguments(searchStr); + if (!_parseForm(client, boundaryStr, contentLength)) { + return false; + } + } + } else { + String headerName; + String headerValue; + //parse headers + while(1){ + req = client.readStringUntil('\r'); + client.readStringUntil('\n'); + if (req == "") break;//no moar headers + int headerDiv = req.indexOf(':'); + if (headerDiv == -1){ + break; + } + headerName = req.substring(0, headerDiv); + headerValue = req.substring(headerDiv + 2); + _collectHeader(headerName.c_str(),headerValue.c_str()); + + log_v("headerName: %s", headerName.c_str()); + log_v("headerValue: %s", headerValue.c_str()); + + if (headerName.equalsIgnoreCase("Host")){ + _hostHeader = headerValue; + } + } + _parseArguments(searchStr); + } + client.flush(); + + log_v("Request: %s", url.c_str()); + log_v(" Arguments: %s", searchStr.c_str()); + + return true; +} + +bool EthernetWebServer::_collectHeader(const char* headerName, const char* headerValue) { + for (int i = 0; i < _headerKeysCount; i++) { + if (_currentHeaders[i].key.equalsIgnoreCase(headerName)) { + _currentHeaders[i].value=headerValue; + return true; + } + } + return false; +} + +void EthernetWebServer::_parseArguments(String data) { + log_v("args: %s", data.c_str()); + if (_currentArgs) + delete[] _currentArgs; + _currentArgs = 0; + if (data.length() == 0) { + _currentArgCount = 0; + _currentArgs = new RequestArgument[1]; + return; + } + _currentArgCount = 1; + + for (int i = 0; i < (int)data.length(); ) { + i = data.indexOf('&', i); + if (i == -1) + break; + ++i; + ++_currentArgCount; + } + log_v("args count: %d", _currentArgCount); + + _currentArgs = new RequestArgument[_currentArgCount+1]; + int pos = 0; + int iarg; + for (iarg = 0; iarg < _currentArgCount;) { + int equal_sign_index = data.indexOf('=', pos); + int next_arg_index = data.indexOf('&', pos); + log_v("pos %d =@%d &@%d", pos, equal_sign_index, next_arg_index); + if ((equal_sign_index == -1) || ((equal_sign_index > next_arg_index) && (next_arg_index != -1))) { + log_e("arg missing value: %d", iarg); + if (next_arg_index == -1) + break; + pos = next_arg_index + 1; + continue; + } + RequestArgument& arg = _currentArgs[iarg]; + arg.key = urlDecode(data.substring(pos, equal_sign_index)); + arg.value = urlDecode(data.substring(equal_sign_index + 1, next_arg_index)); + log_v("arg %d key: %s value: %s", iarg, arg.key.c_str(), arg.value.c_str()); + ++iarg; + if (next_arg_index == -1) + break; + pos = next_arg_index + 1; + } + _currentArgCount = iarg; + log_v("args count: %d", _currentArgCount); + +} + +void EthernetWebServer::_uploadWriteByte(uint8_t b){ + if (_currentUpload->currentSize == HTTP_UPLOAD_BUFLEN){ + if(_currentHandler && _currentHandler->canUpload(_currentUri)) + _currentHandler->upload(*this, _currentUri, *_currentUpload); + _currentUpload->totalSize += _currentUpload->currentSize; + _currentUpload->currentSize = 0; + } + _currentUpload->buf[_currentUpload->currentSize++] = b; +} + +int EthernetWebServer::_uploadReadByte(EthernetClient& client){ + int res = client.read(); + if(res < 0) { + // keep trying until you either read a valid byte or timeout + unsigned long startMillis = millis(); + long timeoutIntervalMillis = client.getTimeout(); + boolean timedOut = false; + for(;;) { + if (!client.connected()) return -1; + // loosely modeled after blinkWithoutDelay pattern + while(!timedOut && !client.available() && client.connected()){ + delay(2); + timedOut = millis() - startMillis >= timeoutIntervalMillis; + } + + res = client.read(); + if(res >= 0) { + return res; // exit on a valid read + } + // NOTE: it is possible to get here and have all of the following + // assertions hold true + // + // -- client.available() > 0 + // -- client.connected == true + // -- res == -1 + // + // a simple retry strategy overcomes this which is to say the + // assertion is not permanent, but the reason that this works + // is elusive, and possibly indicative of a more subtle underlying + // issue + + timedOut = millis() - startMillis >= timeoutIntervalMillis; + if(timedOut) { + return res; // exit on a timeout + } + } + } + + return res; +} + +bool EthernetWebServer::_parseForm(EthernetClient& client, String boundary, uint32_t len){ + (void) len; + log_v("Parse Form: Boundary: %s Length: %d", boundary.c_str(), len); + String line; + int retry = 0; + do { + line = client.readStringUntil('\r'); + ++retry; + } while (line.length() == 0 && retry < 3); + + client.readStringUntil('\n'); + //start reading the form + if (line == ("--"+boundary)){ + if(_postArgs) delete[] _postArgs; + _postArgs = new RequestArgument[WEBSERVER_MAX_POST_ARGS]; + _postArgsLen = 0; + while(1){ + String argName; + String argValue; + String argType; + String argFilename; + bool argIsFile = false; + + line = client.readStringUntil('\r'); + client.readStringUntil('\n'); + if (line.length() > 19 && line.substring(0, 19).equalsIgnoreCase(F("Content-Disposition"))){ + int nameStart = line.indexOf('='); + if (nameStart != -1){ + argName = line.substring(nameStart+2); + nameStart = argName.indexOf('='); + if (nameStart == -1){ + argName = argName.substring(0, argName.length() - 1); + } else { + argFilename = argName.substring(nameStart+2, argName.length() - 1); + argName = argName.substring(0, argName.indexOf('"')); + argIsFile = true; + log_v("PostArg FileName: %s",argFilename.c_str()); + //use GET to set the filename if uploading using blob + if (argFilename == F("blob") && hasArg(FPSTR(filename))) + argFilename = arg(FPSTR(filename)); + } + log_v("PostArg Name: %s", argName.c_str()); + using namespace mime; + argType = FPSTR(mimeTable[txt].mimeType); + line = client.readStringUntil('\r'); + client.readStringUntil('\n'); + if (line.length() > 12 && line.substring(0, 12).equalsIgnoreCase(FPSTR(Content_Type))){ + argType = line.substring(line.indexOf(':')+2); + //skip next line + client.readStringUntil('\r'); + client.readStringUntil('\n'); + } + log_v("PostArg Type: %s", argType.c_str()); + if (!argIsFile){ + while(1){ + line = client.readStringUntil('\r'); + client.readStringUntil('\n'); + if (line.startsWith("--"+boundary)) break; + if (argValue.length() > 0) argValue += "\n"; + argValue += line; + } + log_v("PostArg Value: %s", argValue.c_str()); + + RequestArgument& arg = _postArgs[_postArgsLen++]; + arg.key = argName; + arg.value = argValue; + + if (line == ("--"+boundary+"--")){ + log_v("Done Parsing POST"); + break; + } else if (_postArgsLen >= WEBSERVER_MAX_POST_ARGS) { + log_e("Too many PostArgs (max: %d) in request.", WEBSERVER_MAX_POST_ARGS); + return false; + } + } else { + _currentUpload.reset(new HTTPUpload()); + _currentUpload->status = UPLOAD_FILE_START; + _currentUpload->name = argName; + _currentUpload->filename = argFilename; + _currentUpload->type = argType; + _currentUpload->totalSize = 0; + _currentUpload->currentSize = 0; + log_v("Start File: %s Type: %s", _currentUpload->filename.c_str(), _currentUpload->type.c_str()); + if(_currentHandler && _currentHandler->canUpload(_currentUri)) + _currentHandler->upload(*this, _currentUri, *_currentUpload); + _currentUpload->status = UPLOAD_FILE_WRITE; + int argByte = _uploadReadByte(client); +readfile: + + while(argByte != 0x0D){ + if(argByte < 0) return _parseFormUploadAborted(); + _uploadWriteByte(argByte); + argByte = _uploadReadByte(client); + } + + argByte = _uploadReadByte(client); + if(argByte < 0) return _parseFormUploadAborted(); + if (argByte == 0x0A){ + argByte = _uploadReadByte(client); + if(argByte < 0) return _parseFormUploadAborted(); + if ((char)argByte != '-'){ + //continue reading the file + _uploadWriteByte(0x0D); + _uploadWriteByte(0x0A); + goto readfile; + } else { + argByte = _uploadReadByte(client); + if(argByte < 0) return _parseFormUploadAborted(); + if ((char)argByte != '-'){ + //continue reading the file + _uploadWriteByte(0x0D); + _uploadWriteByte(0x0A); + _uploadWriteByte((uint8_t)('-')); + goto readfile; + } + } + + uint8_t endBuf[boundary.length()]; + uint32_t i = 0; + while(i < boundary.length()){ + argByte = _uploadReadByte(client); + if(argByte < 0) return _parseFormUploadAborted(); + if ((char)argByte == 0x0D){ + _uploadWriteByte(0x0D); + _uploadWriteByte(0x0A); + _uploadWriteByte((uint8_t)('-')); + _uploadWriteByte((uint8_t)('-')); + uint32_t j = 0; + while(j < i){ + _uploadWriteByte(endBuf[j++]); + } + goto readfile; + } + endBuf[i++] = (uint8_t)argByte; + } + + if (strstr((const char*)endBuf, boundary.c_str()) != NULL){ + if(_currentHandler && _currentHandler->canUpload(_currentUri)) + _currentHandler->upload(*this, _currentUri, *_currentUpload); + _currentUpload->totalSize += _currentUpload->currentSize; + _currentUpload->status = UPLOAD_FILE_END; + if(_currentHandler && _currentHandler->canUpload(_currentUri)) + _currentHandler->upload(*this, _currentUri, *_currentUpload); + log_v("End File: %s Type: %s Size: %d", _currentUpload->filename.c_str(), _currentUpload->type.c_str(), _currentUpload->totalSize); + line = client.readStringUntil(0x0D); + client.readStringUntil(0x0A); + if (line == "--"){ + log_v("Done Parsing POST"); + break; + } + continue; + } else { + _uploadWriteByte(0x0D); + _uploadWriteByte(0x0A); + _uploadWriteByte((uint8_t)('-')); + _uploadWriteByte((uint8_t)('-')); + uint32_t i = 0; + while(i < boundary.length()){ + _uploadWriteByte(endBuf[i++]); + } + argByte = _uploadReadByte(client); + goto readfile; + } + } else { + _uploadWriteByte(0x0D); + goto readfile; + } + break; + } + } + } + } + + int iarg; + int totalArgs = ((WEBSERVER_MAX_POST_ARGS - _postArgsLen) < _currentArgCount)?(WEBSERVER_MAX_POST_ARGS - _postArgsLen):_currentArgCount; + for (iarg = 0; iarg < totalArgs; iarg++){ + RequestArgument& arg = _postArgs[_postArgsLen++]; + arg.key = _currentArgs[iarg].key; + arg.value = _currentArgs[iarg].value; + } + if (_currentArgs) delete[] _currentArgs; + _currentArgs = new RequestArgument[_postArgsLen]; + for (iarg = 0; iarg < _postArgsLen; iarg++){ + RequestArgument& arg = _currentArgs[iarg]; + arg.key = _postArgs[iarg].key; + arg.value = _postArgs[iarg].value; + } + _currentArgCount = iarg; + if (_postArgs) { + delete[] _postArgs; + _postArgs=nullptr; + _postArgsLen = 0; + } + return true; + } + log_e("Error: line: %s", line.c_str()); + return false; +} + +String EthernetWebServer::urlDecode(const String& text) +{ + String decoded = ""; + char temp[] = "0x00"; + unsigned int len = text.length(); + unsigned int i = 0; + while (i < len) + { + char decodedChar; + char encodedChar = text.charAt(i++); + if ((encodedChar == '%') && (i + 1 < len)) + { + temp[2] = text.charAt(i++); + temp[3] = text.charAt(i++); + + decodedChar = strtol(temp, NULL, 16); + } + else { + if (encodedChar == '+') + { + decodedChar = ' '; + } + else { + decodedChar = encodedChar; // normal ascii char + } + } + decoded += decodedChar; + } + return decoded; +} + +bool EthernetWebServer::_parseFormUploadAborted(){ + _currentUpload->status = UPLOAD_FILE_ABORTED; + if(_currentHandler && _currentHandler->canUpload(_currentUri)) + _currentHandler->upload(*this, _currentUri, *_currentUpload); + return false; +} diff --git a/lib/EthernetWebServer/src/Uri.h b/lib/EthernetWebServer/src/Uri.h new file mode 100644 index 0000000..d924a0b --- /dev/null +++ b/lib/EthernetWebServer/src/Uri.h @@ -0,0 +1,29 @@ +#ifndef URI_H +#define URI_H + +#include +#include + +class Uri { + + protected: + const String _uri; + + public: + Uri(const char *uri) : _uri(uri) {} + Uri(const String &uri) : _uri(uri) {} + Uri(const __FlashStringHelper *uri) : _uri(String(uri)) {} + virtual ~Uri() {} + + virtual Uri* clone() const { + return new Uri(_uri); + }; + + virtual void initPathArgs(__attribute__((unused)) std::vector &pathArgs) {} + + virtual bool canHandle(const String &requestUri, __attribute__((unused)) std::vector &pathArgs) { + return _uri == requestUri; + } +}; + +#endif diff --git a/lib/EthernetWebServer/src/detail/RequestHandler.h b/lib/EthernetWebServer/src/detail/RequestHandler.h new file mode 100644 index 0000000..ef4cd11 --- /dev/null +++ b/lib/EthernetWebServer/src/detail/RequestHandler.h @@ -0,0 +1,31 @@ +#ifndef REQUESTHANDLER_H +#define REQUESTHANDLER_H + +#include +#include + +class RequestHandler { +public: + virtual ~RequestHandler() { } + virtual bool canHandle(HTTPMethod method, String uri) { (void) method; (void) uri; return false; } + virtual bool canUpload(String uri) { (void) uri; return false; } + virtual bool handle(EthernetWebServer& server, HTTPMethod requestMethod, String requestUri) { (void) server; (void) requestMethod; (void) requestUri; return false; } + virtual void upload(EthernetWebServer& server, String requestUri, HTTPUpload& upload) { (void) server; (void) requestUri; (void) upload; } + + RequestHandler* next() { return _next; } + void next(RequestHandler* r) { _next = r; } + +private: + RequestHandler* _next = nullptr; + +protected: + std::vector pathArgs; + +public: + const String& pathArg(unsigned int i) { + assert(i < pathArgs.size()); + return pathArgs[i]; + } +}; + +#endif //REQUESTHANDLER_H diff --git a/lib/EthernetWebServer/src/detail/RequestHandlersImpl.h b/lib/EthernetWebServer/src/detail/RequestHandlersImpl.h new file mode 100644 index 0000000..217b616 --- /dev/null +++ b/lib/EthernetWebServer/src/detail/RequestHandlersImpl.h @@ -0,0 +1,151 @@ +#ifndef REQUESTHANDLERSIMPL_H +#define REQUESTHANDLERSIMPL_H + +#include "RequestHandler.h" +#include "mimetable.h" +#include "WString.h" +#include "Uri.h" + +using namespace mime; + +class FunctionRequestHandler : public RequestHandler { +public: + FunctionRequestHandler(EthernetWebServer::THandlerFunction fn, EthernetWebServer::THandlerFunction ufn, const Uri &uri, HTTPMethod method) + : _fn(fn) + , _ufn(ufn) + , _uri(uri.clone()) + , _method(method) + { + _uri->initPathArgs(pathArgs); + } + + ~FunctionRequestHandler() { + delete _uri; + } + + bool canHandle(HTTPMethod requestMethod, String requestUri) override { + if (_method != HTTP_ANY && _method != requestMethod) + return false; + + return _uri->canHandle(requestUri, pathArgs); + } + + bool canUpload(String requestUri) override { + if (!_ufn || !canHandle(HTTP_POST, requestUri)) + return false; + + return true; + } + + bool handle(EthernetWebServer& server, HTTPMethod requestMethod, String requestUri) override { + (void) server; + if (!canHandle(requestMethod, requestUri)) + return false; + + _fn(); + return true; + } + + void upload(EthernetWebServer& server, String requestUri, HTTPUpload& upload) override { + (void) server; + (void) upload; + if (canUpload(requestUri)) + _ufn(); + } + +protected: + EthernetWebServer::THandlerFunction _fn; + EthernetWebServer::THandlerFunction _ufn; + Uri *_uri; + HTTPMethod _method; +}; + +class StaticRequestHandler : public RequestHandler { +public: + StaticRequestHandler(FS& fs, const char* path, const char* uri, const char* cache_header) + : _fs(fs) + , _uri(uri) + , _path(path) + , _cache_header(cache_header) + { + _isFile = fs.exists(path); + log_v("StaticRequestHandler: path=%s uri=%s isFile=%d, cache_header=%s\r\n", path, uri, _isFile, cache_header); + _baseUriLength = _uri.length(); + } + + bool canHandle(HTTPMethod requestMethod, String requestUri) override { + if (requestMethod != HTTP_GET) + return false; + + if ((_isFile && requestUri != _uri) || !requestUri.startsWith(_uri)) + return false; + + return true; + } + + bool handle(EthernetWebServer& server, HTTPMethod requestMethod, String requestUri) override { + if (!canHandle(requestMethod, requestUri)) + return false; + + log_v("StaticRequestHandler::handle: request=%s _uri=%s\r\n", requestUri.c_str(), _uri.c_str()); + + String path(_path); + + if (!_isFile) { + // Base URI doesn't point to a file. + // If a directory is requested, look for index file. + if (requestUri.endsWith("/")) + requestUri += "index.htm"; + + // Append whatever follows this URI in request to get the file path. + path += requestUri.substring(_baseUriLength); + } + log_v("StaticRequestHandler::handle: path=%s, isFile=%d\r\n", path.c_str(), _isFile); + + String contentType = getContentType(path); + + // look for gz file, only if the original specified path is not a gz. So part only works to send gzip via content encoding when a non compressed is asked for + // if you point the the path to gzip you will serve the gzip as content type "application/x-gzip", not text or javascript etc... + if (!path.endsWith(FPSTR(mimeTable[gz].endsWith)) && !_fs.exists(path)) { + String pathWithGz = path + FPSTR(mimeTable[gz].endsWith); + if(_fs.exists(pathWithGz)) + path += FPSTR(mimeTable[gz].endsWith); + } + + File f = _fs.open(path, "r"); + if (!f || !f.available()) + return false; + + if (_cache_header.length() != 0) + server.sendHeader("Cache-Control", _cache_header); + + server.streamFile(f, contentType); + return true; + } + + static String getContentType(const String& path) { + char buff[sizeof(mimeTable[0].mimeType)]; + // Check all entries but last one for match, return if found + for (size_t i=0; i < sizeof(mimeTable)/sizeof(mimeTable[0])-1; i++) { + strcpy_P(buff, mimeTable[i].endsWith); + if (path.endsWith(buff)) { + strcpy_P(buff, mimeTable[i].mimeType); + return String(buff); + } + } + // Fall-through and just return default type + strcpy_P(buff, mimeTable[sizeof(mimeTable)/sizeof(mimeTable[0])-1].mimeType); + return String(buff); + } + +protected: + FS _fs; + String _uri; + String _path; + String _cache_header; + bool _isFile; + size_t _baseUriLength; +}; + + +#endif //REQUESTHANDLERSIMPL_H diff --git a/lib/EthernetWebServer/src/detail/mimetable.cpp b/lib/EthernetWebServer/src/detail/mimetable.cpp new file mode 100644 index 0000000..563556a --- /dev/null +++ b/lib/EthernetWebServer/src/detail/mimetable.cpp @@ -0,0 +1,35 @@ +#include "mimetable.h" +#include "pgmspace.h" + +namespace mime +{ + +// Table of extension->MIME strings stored in PROGMEM, needs to be global due to GCC section typing rules +const Entry mimeTable[maxType] = +{ + { ".html", "text/html" }, + { ".htm", "text/html" }, + { ".css", "text/css" }, + { ".txt", "text/plain" }, + { ".js", "application/javascript" }, + { ".json", "application/json" }, + { ".png", "image/png" }, + { ".gif", "image/gif" }, + { ".jpg", "image/jpeg" }, + { ".ico", "image/x-icon" }, + { ".svg", "image/svg+xml" }, + { ".ttf", "application/x-font-ttf" }, + { ".otf", "application/x-font-opentype" }, + { ".woff", "application/font-woff" }, + { ".woff2", "application/font-woff2" }, + { ".eot", "application/vnd.ms-fontobject" }, + { ".sfnt", "application/font-sfnt" }, + { ".xml", "text/xml" }, + { ".pdf", "application/pdf" }, + { ".zip", "application/zip" }, + { ".gz", "application/x-gzip" }, + { ".appcache", "text/cache-manifest" }, + { "", "application/octet-stream" } +}; + +} diff --git a/lib/EthernetWebServer/src/detail/mimetable.h b/lib/EthernetWebServer/src/detail/mimetable.h new file mode 100644 index 0000000..191356c --- /dev/null +++ b/lib/EthernetWebServer/src/detail/mimetable.h @@ -0,0 +1,47 @@ +#ifndef __MIMETABLE_H__ +#define __MIMETABLE_H__ + + +namespace mime +{ + +enum type +{ + html, + htm, + css, + txt, + js, + json, + png, + gif, + jpg, + ico, + svg, + ttf, + otf, + woff, + woff2, + eot, + sfnt, + xml, + pdf, + zip, + gz, + appcache, + none, + maxType +}; + +struct Entry +{ + const char endsWith[16]; + const char mimeType[32]; +}; + + +extern const Entry mimeTable[maxType]; +} + + +#endif diff --git a/lib/EthernetWebServer/src/uri/UriBraces.h b/lib/EthernetWebServer/src/uri/UriBraces.h new file mode 100644 index 0000000..4a6049b --- /dev/null +++ b/lib/EthernetWebServer/src/uri/UriBraces.h @@ -0,0 +1,66 @@ +#ifndef URI_BRACES_H +#define URI_BRACES_H + +#include "Uri.h" + +class UriBraces : public Uri { + + public: + explicit UriBraces(const char *uri) : Uri(uri) {}; + explicit UriBraces(const String &uri) : Uri(uri) {}; + + Uri* clone() const override final { + return new UriBraces(_uri); + }; + + void initPathArgs(std::vector &pathArgs) override final { + int numParams = 0, start = 0; + do { + start = _uri.indexOf("{}", start); + if (start > 0) { + numParams++; + start += 2; + } + } while (start > 0); + pathArgs.resize(numParams); + } + + bool canHandle(const String &requestUri, std::vector &pathArgs) override final { + if (Uri::canHandle(requestUri, pathArgs)) + return true; + + size_t uriLength = _uri.length(); + unsigned int pathArgIndex = 0; + unsigned int requestUriIndex = 0; + for (unsigned int i = 0; i < uriLength; i++, requestUriIndex++) { + char uriChar = _uri[i]; + char requestUriChar = requestUri[requestUriIndex]; + + if (uriChar == requestUriChar) + continue; + if (uriChar != '{') + return false; + + i += 2; // index of char after '}' + if (i >= uriLength) { + // there is no char after '}' + pathArgs[pathArgIndex] = requestUri.substring(requestUriIndex); + return pathArgs[pathArgIndex].indexOf("/") == -1; // path argument may not contain a '/' + } + else + { + char charEnd = _uri[i]; + int uriIndex = requestUri.indexOf(charEnd, requestUriIndex); + if (uriIndex < 0) + return false; + pathArgs[pathArgIndex] = requestUri.substring(requestUriIndex, uriIndex); + requestUriIndex = (unsigned int) uriIndex; + } + pathArgIndex++; + } + + return requestUriIndex >= requestUri.length(); + } +}; + +#endif diff --git a/lib/EthernetWebServer/src/uri/UriGlob.h b/lib/EthernetWebServer/src/uri/UriGlob.h new file mode 100644 index 0000000..1e222cb --- /dev/null +++ b/lib/EthernetWebServer/src/uri/UriGlob.h @@ -0,0 +1,22 @@ +#ifndef URI_GLOB_H +#define URI_GLOB_H + +#include "Uri.h" +#include + +class UriGlob : public Uri { + + public: + explicit UriGlob(const char *uri) : Uri(uri) {}; + explicit UriGlob(const String &uri) : Uri(uri) {}; + + Uri* clone() const override final { + return new UriGlob(_uri); + }; + + bool canHandle(const String &requestUri, __attribute__((unused)) std::vector &pathArgs) override final { + return fnmatch(_uri.c_str(), requestUri.c_str(), 0) == 0; + } +}; + +#endif diff --git a/lib/EthernetWebServer/src/uri/UriRegex.h b/lib/EthernetWebServer/src/uri/UriRegex.h new file mode 100644 index 0000000..0570201 --- /dev/null +++ b/lib/EthernetWebServer/src/uri/UriRegex.h @@ -0,0 +1,44 @@ +#ifndef URI_REGEX_H +#define URI_REGEX_H + +#include "Uri.h" +#include + +class UriRegex : public Uri { + + public: + explicit UriRegex(const char *uri) : Uri(uri) {}; + explicit UriRegex(const String &uri) : Uri(uri) {}; + + Uri* clone() const override final { + return new UriRegex(_uri); + }; + + void initPathArgs(std::vector &pathArgs) override final { + std::regex rgx((_uri + "|").c_str()); + std::smatch matches; + std::string s{""}; + std::regex_search(s, matches, rgx); + pathArgs.resize(matches.size() - 1); + } + + bool canHandle(const String &requestUri, std::vector &pathArgs) override final { + if (Uri::canHandle(requestUri, pathArgs)) + return true; + + unsigned int pathArgIndex = 0; + std::regex rgx(_uri.c_str()); + std::smatch matches; + std::string s(requestUri.c_str()); + if (std::regex_search(s, matches, rgx)) { + for (size_t i = 1; i < matches.size(); ++i) { // skip first + pathArgs[pathArgIndex] = String(matches[i].str().c_str()); + pathArgIndex++; + } + return true; + } + return false; + } +}; + +#endif diff --git a/main.cpp b/main.cpp index 0379bd7..59d652f 100644 --- a/main.cpp +++ b/main.cpp @@ -85,8 +85,8 @@ void setup() Serial.begin(115200); - const NetworkDeviceType networkDevice = NetworkDeviceType::WiFi; -// const NetworkDeviceType networkDevice = digitalRead(NETWORK_SELECT) == HIGH ? NetworkDeviceType::WiFi : NetworkDeviceType::W5500; +// const NetworkDeviceType networkDevice = NetworkDeviceType::WiFi; + const NetworkDeviceType networkDevice = digitalRead(NETWORK_SELECT) == HIGH ? NetworkDeviceType::WiFi : NetworkDeviceType::W5500; preferences = new Preferences(); preferences->begin("nukihub", false); From 46e49f2118d669464d692b2d967f4aa58dba36c2 Mon Sep 17 00:00:00 2001 From: technyon Date: Thu, 28 Apr 2022 23:08:58 +0200 Subject: [PATCH 03/15] add abstraction layer for webserver --- CMakeLists.txt | 4 ++- WebCfgServer.cpp | 57 +++++++++++++++++----------------- WebCfgServer.h | 3 +- webserver/AbstractWebServer.h | 20 ++++++++++++ webserver/EthWebServer.cpp | 58 +++++++++++++++++++++++++++++++++++ webserver/EthWebServer.h | 27 ++++++++++++++++ 6 files changed, 139 insertions(+), 30 deletions(-) create mode 100644 webserver/AbstractWebServer.h create mode 100644 webserver/EthWebServer.cpp create mode 100644 webserver/EthWebServer.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 4147715..48d226b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,6 +28,8 @@ file(GLOB SRCFILES PreferencesKeys.h SpiffsCookie.cpp Version.h + webserver/AbstractWebServer.h + webserver/EthWebServer.cpp lib/ESP32_BLE_Arduino-1.0.1/src/*.cpp lib/ESP32_BLE_Arduino-1.0.1/src/*.h lib/WiFiManager/WiFiManager.cpp @@ -52,7 +54,7 @@ add_executable(${PROJECT_NAME} main.cpp ${SRCFILES} ${SRCFILESREC} -) + webserver/EthWebServer.cpp webserver/EthWebServer.h) # Arduino.h is included in hello_world.cpp, so link with Arduino core target_link_arduino_libraries(${PROJECT_NAME} diff --git a/WebCfgServer.cpp b/WebCfgServer.cpp index a85e308..a9aa5f6 100644 --- a/WebCfgServer.cpp +++ b/WebCfgServer.cpp @@ -1,9 +1,10 @@ #include "WebCfgServer.h" #include "PreferencesKeys.h" #include "Version.h" +#include "webserver/EthWebServer.h" WebCfgServer::WebCfgServer(NukiWrapper* nuki, Network* network, Preferences* preferences) -: server(80), +: _server(new EthWebServer(80)), _nuki(nuki), _network(network), _preferences(preferences) @@ -25,43 +26,43 @@ WebCfgServer::WebCfgServer(NukiWrapper* nuki, Network* network, Preferences* pre void WebCfgServer::initialize() { - server.on("/", [&]() { - if (_hasCredentials && !server.authenticate(_credUser, _credPassword)) { - return server.requestAuthentication(); + _server->on("/", [&]() { + if (_hasCredentials && !_server->authenticate(_credUser, _credPassword)) { + return _server->requestAuthentication(); } String response = ""; buildHtml(response); - server.send(200, "text/html", response); + _server->send(200, "text/html", response); }); - server.on("/cred", [&]() { - if (_hasCredentials && !server.authenticate(_credUser, _credPassword)) { - return server.requestAuthentication(); + _server->on("/cred", [&]() { + if (_hasCredentials && !_server->authenticate(_credUser, _credPassword)) { + return _server->requestAuthentication(); } String response = ""; buildCredHtml(response); - server.send(200, "text/html", response); + _server->send(200, "text/html", response); }); - server.on("/wifi", [&]() { - if (_hasCredentials && !server.authenticate(_credUser, _credPassword)) { - return server.requestAuthentication(); + _server->on("/wifi", [&]() { + if (_hasCredentials && !_server->authenticate(_credUser, _credPassword)) { + return _server->requestAuthentication(); } String response = ""; buildConfigureWifiHtml(response); - server.send(200, "text/html", response); + _server->send(200, "text/html", response); }); - server.on("/wifimanager", [&]() { - if (_hasCredentials && !server.authenticate(_credUser, _credPassword)) { - return server.requestAuthentication(); + _server->on("/wifimanager", [&]() { + if (_hasCredentials && !_server->authenticate(_credUser, _credPassword)) { + return _server->requestAuthentication(); } String response = ""; buildConfirmHtml(response, "Restarting. Connect to ESP access point to reconfigure WiFi.", 0); - server.send(200, "text/html", response); + _server->send(200, "text/html", response); waitAndProcess(true, 2000); _network->restartAndConfigureWifi(); }); - server.on("/method=get", [&]() { - if (_hasCredentials && !server.authenticate(_credUser, _credPassword)) { - return server.requestAuthentication(); + _server->on("/method=get", [&]() { + if (_hasCredentials && !_server->authenticate(_credUser, _credPassword)) { + return _server->requestAuthentication(); } String message = ""; bool restartEsp = processArgs(message); @@ -69,7 +70,7 @@ void WebCfgServer::initialize() { String response = ""; buildConfirmHtml(response, message); - server.send(200, "text/html", response); + _server->send(200, "text/html", response); Serial.println(F("Restarting")); waitAndProcess(true, 1000); @@ -79,12 +80,12 @@ void WebCfgServer::initialize() { String response = ""; buildConfirmHtml(response, message, 3); - server.send(200, "text/html", response); + _server->send(200, "text/html", response); waitAndProcess(false, 1000); } }); - server.begin(); + _server->begin(); } bool WebCfgServer::processArgs(String& message) @@ -93,11 +94,11 @@ bool WebCfgServer::processArgs(String& message) bool clearMqttCredentials = false; bool clearCredentials = false; - int count = server.args(); + int count = _server->args(); for(int index = 0; index < count; index++) { - String key = server.argName(index); - String value = server.arg(index); + String key = _server->argName(index); + String value = _server->arg(index); if(key == "MQTTSERVER") { @@ -214,7 +215,7 @@ void WebCfgServer::update() { if(!_enabled) return; - server.handleClient(); + _server->handleClient(); } void WebCfgServer::buildHtml(String& response) @@ -398,7 +399,7 @@ void WebCfgServer::waitAndProcess(const bool blocking, const uint32_t duration) unsigned long timeout = millis() + duration; while(millis() < timeout) { - server.handleClient(); + _server->handleClient(); if(blocking) { delay(10); diff --git a/WebCfgServer.h b/WebCfgServer.h index 42481e9..49f6a03 100644 --- a/WebCfgServer.h +++ b/WebCfgServer.h @@ -4,6 +4,7 @@ #include #include "NukiWrapper.h" #include "Network.h" +#include "webserver/AbstractWebServer.h" enum class TokenType { @@ -42,7 +43,7 @@ private: void waitAndProcess(const bool blocking, const uint32_t duration); - EthernetWebServer server; + AbstractWebServer* _server; NukiWrapper* _nuki; Network* _network; Preferences* _preferences; diff --git a/webserver/AbstractWebServer.h b/webserver/AbstractWebServer.h new file mode 100644 index 0000000..57b1a9b --- /dev/null +++ b/webserver/AbstractWebServer.h @@ -0,0 +1,20 @@ +#pragma once + +#include "EthernetWebServer.h" + +class AbstractWebServer +{ +public: + explicit AbstractWebServer(int port) {}; + + virtual void begin() = 0; + virtual bool authenticate(const char * username, const char * password) = 0; + virtual void requestAuthentication(HTTPAuthMethod mode, const char* realm, const String& authFailMsg) = 0; + virtual void requestAuthentication() = 0; + virtual void send(int code, const char* content_type, const String& content) = 0; + virtual void on(const Uri &uri, EthernetWebServer::THandlerFunction handler) = 0; + virtual int args() = 0; + virtual String arg(int i) = 0; + virtual String argName(int i) = 0; + virtual void handleClient() = 0; +}; \ No newline at end of file diff --git a/webserver/EthWebServer.cpp b/webserver/EthWebServer.cpp new file mode 100644 index 0000000..2027d23 --- /dev/null +++ b/webserver/EthWebServer.cpp @@ -0,0 +1,58 @@ +#include "EthWebServer.h" + + +EthWebServer::EthWebServer(int port) +: AbstractWebServer(port), + _server(port) +{} + + +void EthWebServer::begin() +{ + _server.begin(); +} + +bool EthWebServer::authenticate(const char *username, const char *password) +{ + return _server.authenticate(username, password); +} + +void EthWebServer::requestAuthentication(HTTPAuthMethod mode, const char *realm, const String &authFailMsg) +{ + return _server.requestAuthentication(mode, realm, authFailMsg); +} + +void EthWebServer::send(int code, const char *content_type, const String &content) +{ + _server.send(code, content_type, content); +} + +void EthWebServer::on(const Uri &uri, EthernetWebServer::THandlerFunction handler) +{ + _server.on(uri, handler); +} + +void EthWebServer::requestAuthentication() +{ + +} + +int EthWebServer::args() +{ + return _server.args(); +} + +String EthWebServer::arg(int i) +{ + return _server.arg(i); +} + +String EthWebServer::argName(int i) +{ + return _server.argName(i); +} + +void EthWebServer::handleClient() +{ + _server.handleClient(); +} diff --git a/webserver/EthWebServer.h b/webserver/EthWebServer.h new file mode 100644 index 0000000..90570e0 --- /dev/null +++ b/webserver/EthWebServer.h @@ -0,0 +1,27 @@ +#pragma once + +#include "AbstractWebServer.h" + +class EthWebServer : public AbstractWebServer +{ +public: + explicit EthWebServer(int port); + + virtual void begin(); + virtual bool authenticate(const char *username, const char *password); + virtual void requestAuthentication(HTTPAuthMethod mode, const char *realm, const String &authFailMsg); + virtual void requestAuthentication(); + virtual void send(int code, const char *content_type, const String &content); + virtual void on(const Uri &uri, EthernetWebServer::THandlerFunction handler); + + virtual int args(); + + virtual String arg(int i); + + virtual String argName(int i); + + virtual void handleClient(); + +private: + EthernetWebServer _server; +}; \ No newline at end of file From 0dd94a97a33fa5a14c8daedfc5add6ff52966111 Mon Sep 17 00:00:00 2001 From: technyon Date: Thu, 28 Apr 2022 23:26:21 +0200 Subject: [PATCH 04/15] implement EthWebServer --- CMakeLists.txt | 3 +- webserver/AbstractWebServer.h | 10 ++++-- webserver/EthWebServer.cpp | 14 ++++----- webserver/EthWebServer.h | 9 ++---- webserver/WifiWebServer.cpp | 57 +++++++++++++++++++++++++++++++++++ webserver/WifiWebServer.h | 24 +++++++++++++++ 6 files changed, 100 insertions(+), 17 deletions(-) create mode 100644 webserver/WifiWebServer.cpp create mode 100644 webserver/WifiWebServer.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 48d226b..0f4da33 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,6 +30,7 @@ file(GLOB SRCFILES Version.h webserver/AbstractWebServer.h webserver/EthWebServer.cpp + webserver/WifiWebServer.cpp lib/ESP32_BLE_Arduino-1.0.1/src/*.cpp lib/ESP32_BLE_Arduino-1.0.1/src/*.h lib/WiFiManager/WiFiManager.cpp @@ -54,7 +55,7 @@ add_executable(${PROJECT_NAME} main.cpp ${SRCFILES} ${SRCFILESREC} - webserver/EthWebServer.cpp webserver/EthWebServer.h) +) # Arduino.h is included in hello_world.cpp, so link with Arduino core target_link_arduino_libraries(${PROJECT_NAME} diff --git a/webserver/AbstractWebServer.h b/webserver/AbstractWebServer.h index 57b1a9b..1ece43b 100644 --- a/webserver/AbstractWebServer.h +++ b/webserver/AbstractWebServer.h @@ -1,6 +1,10 @@ #pragma once -#include "EthernetWebServer.h" +#include +#include + +typedef std::function THandlerFunction; +class Uri; class AbstractWebServer { @@ -9,10 +13,10 @@ public: virtual void begin() = 0; virtual bool authenticate(const char * username, const char * password) = 0; - virtual void requestAuthentication(HTTPAuthMethod mode, const char* realm, const String& authFailMsg) = 0; + virtual void requestAuthentication(int mode, const char* realm, const String& authFailMsg) = 0; virtual void requestAuthentication() = 0; virtual void send(int code, const char* content_type, const String& content) = 0; - virtual void on(const Uri &uri, EthernetWebServer::THandlerFunction handler) = 0; + virtual void on(const Uri &uri, THandlerFunction handler) = 0; virtual int args() = 0; virtual String arg(int i) = 0; virtual String argName(int i) = 0; diff --git a/webserver/EthWebServer.cpp b/webserver/EthWebServer.cpp index 2027d23..01f9c88 100644 --- a/webserver/EthWebServer.cpp +++ b/webserver/EthWebServer.cpp @@ -17,9 +17,14 @@ bool EthWebServer::authenticate(const char *username, const char *password) return _server.authenticate(username, password); } -void EthWebServer::requestAuthentication(HTTPAuthMethod mode, const char *realm, const String &authFailMsg) +void EthWebServer::requestAuthentication(int mode, const char *realm, const String &authFailMsg) { - return _server.requestAuthentication(mode, realm, authFailMsg); + return _server.requestAuthentication((HTTPAuthMethod)mode, realm, authFailMsg); +} + +void EthWebServer::requestAuthentication() +{ + return requestAuthentication(HTTPAuthMethod::BASIC_AUTH, "*", "Authentication failed"); } void EthWebServer::send(int code, const char *content_type, const String &content) @@ -32,11 +37,6 @@ void EthWebServer::on(const Uri &uri, EthernetWebServer::THandlerFunction handle _server.on(uri, handler); } -void EthWebServer::requestAuthentication() -{ - -} - int EthWebServer::args() { return _server.args(); diff --git a/webserver/EthWebServer.h b/webserver/EthWebServer.h index 90570e0..483e8be 100644 --- a/webserver/EthWebServer.h +++ b/webserver/EthWebServer.h @@ -1,6 +1,7 @@ #pragma once #include "AbstractWebServer.h" +#include "EthernetWebServer.h" class EthWebServer : public AbstractWebServer { @@ -9,17 +10,13 @@ public: virtual void begin(); virtual bool authenticate(const char *username, const char *password); - virtual void requestAuthentication(HTTPAuthMethod mode, const char *realm, const String &authFailMsg); + virtual void requestAuthentication(int mode, const char *realm, const String &authFailMsg); virtual void requestAuthentication(); virtual void send(int code, const char *content_type, const String &content); - virtual void on(const Uri &uri, EthernetWebServer::THandlerFunction handler); - + virtual void on(const Uri &uri, THandlerFunction handler); virtual int args(); - virtual String arg(int i); - virtual String argName(int i); - virtual void handleClient(); private: diff --git a/webserver/WifiWebServer.cpp b/webserver/WifiWebServer.cpp new file mode 100644 index 0000000..e49f5d3 --- /dev/null +++ b/webserver/WifiWebServer.cpp @@ -0,0 +1,57 @@ +#include "WifiWebServer.h" + +WifiWebServer::WifiWebServer(int port) + : AbstractWebServer(port), + _server(port) +{} + + +void WifiWebServer::begin() +{ + _server.begin(); +} + +bool WifiWebServer::authenticate(const char *username, const char *password) +{ + return _server.authenticate(username, password); +} + +void WifiWebServer::requestAuthentication(int mode, const char *realm, const String &authFailMsg) +{ + return _server.requestAuthentication((HTTPAuthMethod)mode, realm, authFailMsg); +} + +void WifiWebServer::send(int code, const char *content_type, const String &content) +{ + _server.send(code, content_type, content); +} + +void WifiWebServer::on(const Uri &uri, WebServer::THandlerFunction handler) +{ + _server.on(uri, handler); +} + +void WifiWebServer::requestAuthentication() +{ + +} + +int WifiWebServer::args() +{ + return _server.args(); +} + +String WifiWebServer::arg(int i) +{ + return _server.arg(i); +} + +String WifiWebServer::argName(int i) +{ + return _server.argName(i); +} + +void WifiWebServer::handleClient() +{ + _server.handleClient(); +} diff --git a/webserver/WifiWebServer.h b/webserver/WifiWebServer.h new file mode 100644 index 0000000..f0806a3 --- /dev/null +++ b/webserver/WifiWebServer.h @@ -0,0 +1,24 @@ +#pragma once + +#include +#include "AbstractWebServer.h" + +class WifiWebServer : public AbstractWebServer +{ +public: + explicit WifiWebServer(int port); + + virtual void begin(); + virtual bool authenticate(const char *username, const char *password); + virtual void requestAuthentication(int mode, const char *realm, const String &authFailMsg); + virtual void requestAuthentication(); + virtual void send(int code, const char *content_type, const String &content); + virtual void on(const Uri &uri, WebServer::THandlerFunction handler); + virtual int args(); + virtual String arg(int i); + virtual String argName(int i); + virtual void handleClient(); + +private: + WebServer _server; +}; \ No newline at end of file From 0e9baed3a4768ee226969259bfd84e04a568ee43 Mon Sep 17 00:00:00 2001 From: technyon Date: Fri, 29 Apr 2022 20:48:33 +0200 Subject: [PATCH 05/15] wifi webserver works again --- CMakeLists.txt | 26 ++- Network.cpp | 1 + WebCfgServer.cpp | 58 +++--- WebCfgServer.h | 5 +- .../src/EthernetServerImpl.cpp | 29 --- .../src/EthernetServerImpl.h | 15 -- .../AdvancedWebServer/AdvancedWebServer.ino | 2 +- .../examples/FSBrowser/FSBrowser.ino | 6 +- .../examples/FSBrowser/data/edit.htm.gz | Bin .../examples/FSBrowser/data/favicon.ico | Bin .../examples/FSBrowser/data/graphs.js.gz | Bin .../examples/FSBrowser/data/index.htm | 2 +- .../examples/HelloServer/HelloServer.ino | 2 +- .../HttpAdvancedAuth/HttpAdvancedAuth.ino | 2 +- .../examples/HttpBasicAuth/HttpBasicAuth.ino | 2 +- .../examples/PathArgServer/PathArgServer.ino | 2 +- .../examples/SDWebServer/SDWebServer.ino | 6 +- .../SDWebServer/SdRoot/edit/index.htm | 0 .../examples/SDWebServer/SdRoot/index.htm | 0 .../examples/SDWebServer/SdRoot/pins.png | Bin .../SimpleAuthentification.ino | 2 +- .../examples/WebUpdate/WebUpdate.ino | 2 +- .../keywords.txt | 0 .../library.properties | 0 lib/WebServer/src/EthClient.h | 22 +++ lib/WebServer/src/EthServer.h | 20 ++ .../src/HTTP_Method.h | 0 .../src/Parsing.cpp | 84 ++++---- .../src/Uri.h | 0 .../src/WebServer.cpp} | 182 ++++++++---------- .../src/WebServer.h} | 34 ++-- lib/WebServer/src/WifiEthClient.cpp | 77 ++++++++ lib/WebServer/src/WifiEthClient.h | 28 +++ lib/WebServer/src/WifiEthServer.cpp | 56 ++++++ lib/WebServer/src/WifiEthServer.h | 25 +++ .../src/detail/RequestHandler.h | 4 +- .../src/detail/RequestHandlersImpl.h | 12 +- .../src/detail/mimetable.cpp | 0 .../src/detail/mimetable.h | 0 .../src/uri/UriBraces.h | 0 .../src/uri/UriGlob.h | 0 .../src/uri/UriRegex.h | 0 lib/WiFiManager/WiFiManager.cpp | 7 +- .../examples/mqtt_auth/mqtt_auth.ino | 2 +- main.cpp | 4 +- webserver/AbstractWebServer.h | 24 --- webserver/EthWebServer.cpp | 58 ------ webserver/EthWebServer.h | 24 --- webserver/WifiWebServer.cpp | 57 ------ webserver/WifiWebServer.h | 24 --- 50 files changed, 440 insertions(+), 466 deletions(-) delete mode 100644 lib/EthernetWebServer/src/EthernetServerImpl.cpp delete mode 100644 lib/EthernetWebServer/src/EthernetServerImpl.h rename lib/{EthernetWebServer => WebServer}/examples/AdvancedWebServer/AdvancedWebServer.ino (99%) rename lib/{EthernetWebServer => WebServer}/examples/FSBrowser/FSBrowser.ino (97%) rename lib/{EthernetWebServer => WebServer}/examples/FSBrowser/data/edit.htm.gz (100%) rename lib/{EthernetWebServer => WebServer}/examples/FSBrowser/data/favicon.ico (100%) rename lib/{EthernetWebServer => WebServer}/examples/FSBrowser/data/graphs.js.gz (100%) rename lib/{EthernetWebServer => WebServer}/examples/FSBrowser/data/index.htm (97%) rename lib/{EthernetWebServer => WebServer}/examples/HelloServer/HelloServer.ino (98%) rename lib/{EthernetWebServer => WebServer}/examples/HttpAdvancedAuth/HttpAdvancedAuth.ino (98%) rename lib/{EthernetWebServer => WebServer}/examples/HttpBasicAuth/HttpBasicAuth.ino (96%) rename lib/{EthernetWebServer => WebServer}/examples/PathArgServer/PathArgServer.ino (97%) rename lib/{EthernetWebServer => WebServer}/examples/SDWebServer/SDWebServer.ino (97%) rename lib/{EthernetWebServer => WebServer}/examples/SDWebServer/SdRoot/edit/index.htm (100%) rename lib/{EthernetWebServer => WebServer}/examples/SDWebServer/SdRoot/index.htm (100%) rename lib/{EthernetWebServer => WebServer}/examples/SDWebServer/SdRoot/pins.png (100%) rename lib/{EthernetWebServer => WebServer}/examples/SimpleAuthentification/SimpleAuthentification.ino (99%) rename lib/{EthernetWebServer => WebServer}/examples/WebUpdate/WebUpdate.ino (98%) rename lib/{EthernetWebServer => WebServer}/keywords.txt (100%) rename lib/{EthernetWebServer => WebServer}/library.properties (100%) create mode 100644 lib/WebServer/src/EthClient.h create mode 100644 lib/WebServer/src/EthServer.h rename lib/{EthernetWebServer => WebServer}/src/HTTP_Method.h (100%) rename lib/{EthernetWebServer => WebServer}/src/Parsing.cpp (89%) rename lib/{EthernetWebServer => WebServer}/src/Uri.h (100%) rename lib/{EthernetWebServer/src/EthernetWebServer.cpp => WebServer/src/WebServer.cpp} (77%) rename lib/{EthernetWebServer/src/EthernetWebServer.h => WebServer/src/WebServer.h} (91%) create mode 100644 lib/WebServer/src/WifiEthClient.cpp create mode 100644 lib/WebServer/src/WifiEthClient.h create mode 100644 lib/WebServer/src/WifiEthServer.cpp create mode 100644 lib/WebServer/src/WifiEthServer.h rename lib/{EthernetWebServer => WebServer}/src/detail/RequestHandler.h (68%) rename lib/{EthernetWebServer => WebServer}/src/detail/RequestHandlersImpl.h (88%) rename lib/{EthernetWebServer => WebServer}/src/detail/mimetable.cpp (100%) rename lib/{EthernetWebServer => WebServer}/src/detail/mimetable.h (100%) rename lib/{EthernetWebServer => WebServer}/src/uri/UriBraces.h (100%) rename lib/{EthernetWebServer => WebServer}/src/uri/UriGlob.h (100%) rename lib/{EthernetWebServer => WebServer}/src/uri/UriRegex.h (100%) delete mode 100644 webserver/AbstractWebServer.h delete mode 100644 webserver/EthWebServer.cpp delete mode 100644 webserver/EthWebServer.h delete mode 100644 webserver/WifiWebServer.cpp delete mode 100644 webserver/WifiWebServer.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 0f4da33..7f5c579 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,6 +4,11 @@ set(ARDUINO_BOARD "ESP32 Dev Module [esp32.esp32]") project(nuki_hub CXX) +# ARDUHAL_LOG_LEVEL_NONE, define ARDUHAL_LOG_LEVEL_ERROR, define ARDUHAL_LOG_LEVEL_WARN, define ARDUHAL_LOG_LEVEL_INFO, +# define ARDUHAL_LOG_LEVEL_DEBUG, define ARDUHAL_LOG_LEVEL_VERBOSE + +set(LOG_LEVEL ARDUHAL_LOG_LEVEL_NONE) + include_directories(${PROJECT_NAME} PRIVATE lib/Crc16 @@ -12,10 +17,12 @@ include_directories(${PROJECT_NAME} lib/ESP32_BLE_Arduino-1.0.1/src lib/WiFiManager lib/pubsubclient/src - lib/EthernetWebServer/src + lib/WebServer/src ) file(GLOB SRCFILES +# "Lib/FreeRTOS/src/*.c" +# "Lib/FreeRTOS/src/*.cpp" Pins.h Network.cpp networkDevices/NetworkDevice.h @@ -28,9 +35,6 @@ file(GLOB SRCFILES PreferencesKeys.h SpiffsCookie.cpp Version.h - webserver/AbstractWebServer.h - webserver/EthWebServer.cpp - webserver/WifiWebServer.cpp lib/ESP32_BLE_Arduino-1.0.1/src/*.cpp lib/ESP32_BLE_Arduino-1.0.1/src/*.h lib/WiFiManager/WiFiManager.cpp @@ -47,8 +51,8 @@ file(GLOB_RECURSE SRCFILESREC lib/NimBLE-Arduino/src/*.c lib/NimBLE-Arduino/src/*.cpp lib/NimBLE-Arduino/src/*.h - lib/EthernetWebServer/src/*.cpp - lib/EthernetWebServer/src/*.h + lib/WebServer/src/*.cpp + lib/WebServer/src/*.h ) add_executable(${PROJECT_NAME} @@ -57,13 +61,19 @@ add_executable(${PROJECT_NAME} ${SRCFILESREC} ) -# Arduino.h is included in hello_world.cpp, so link with Arduino core +target_compile_definitions(${PROJECT_NAME} + PRIVATE + ARDUHAL_LOG_LEVEL=${LOG_LEVEL} + CORE_DEBUG_LEVEL=${LOG_LEVEL} + CONFIG_NIMBLE_CPP_LOG_LEVEL=0 + ) + target_link_arduino_libraries(${PROJECT_NAME} PRIVATE core WiFi Update - WebServer +# WebServer DNSServer Preferences SPIFFS diff --git a/Network.cpp b/Network.cpp index d21700b..882d8ac 100644 --- a/Network.cpp +++ b/Network.cpp @@ -1,4 +1,5 @@ #include "Network.h" +#include // https://github.com/tzapu/WiFiManager #include "Arduino.h" #include "MqttTopics.h" #include "PreferencesKeys.h" diff --git a/WebCfgServer.cpp b/WebCfgServer.cpp index a9aa5f6..8e940bf 100644 --- a/WebCfgServer.cpp +++ b/WebCfgServer.cpp @@ -1,10 +1,10 @@ #include "WebCfgServer.h" #include "PreferencesKeys.h" #include "Version.h" -#include "webserver/EthWebServer.h" +#include "WifiEthServer.h" WebCfgServer::WebCfgServer(NukiWrapper* nuki, Network* network, Preferences* preferences) -: _server(new EthWebServer(80)), +: _server(new WifiEthServer(80)), _nuki(nuki), _network(network), _preferences(preferences) @@ -26,43 +26,43 @@ WebCfgServer::WebCfgServer(NukiWrapper* nuki, Network* network, Preferences* pre void WebCfgServer::initialize() { - _server->on("/", [&]() { - if (_hasCredentials && !_server->authenticate(_credUser, _credPassword)) { - return _server->requestAuthentication(); + _server.on("/", [&]() { + if (_hasCredentials && !_server.authenticate(_credUser, _credPassword)) { + return _server.requestAuthentication(); } String response = ""; buildHtml(response); - _server->send(200, "text/html", response); + _server.send(200, "text/html", response); }); - _server->on("/cred", [&]() { - if (_hasCredentials && !_server->authenticate(_credUser, _credPassword)) { - return _server->requestAuthentication(); + _server.on("/cred", [&]() { + if (_hasCredentials && !_server.authenticate(_credUser, _credPassword)) { + return _server.requestAuthentication(); } String response = ""; buildCredHtml(response); - _server->send(200, "text/html", response); + _server.send(200, "text/html", response); }); - _server->on("/wifi", [&]() { - if (_hasCredentials && !_server->authenticate(_credUser, _credPassword)) { - return _server->requestAuthentication(); + _server.on("/wifi", [&]() { + if (_hasCredentials && !_server.authenticate(_credUser, _credPassword)) { + return _server.requestAuthentication(); } String response = ""; buildConfigureWifiHtml(response); - _server->send(200, "text/html", response); + _server.send(200, "text/html", response); }); - _server->on("/wifimanager", [&]() { - if (_hasCredentials && !_server->authenticate(_credUser, _credPassword)) { - return _server->requestAuthentication(); + _server.on("/wifimanager", [&]() { + if (_hasCredentials && !_server.authenticate(_credUser, _credPassword)) { + return _server.requestAuthentication(); } String response = ""; buildConfirmHtml(response, "Restarting. Connect to ESP access point to reconfigure WiFi.", 0); - _server->send(200, "text/html", response); + _server.send(200, "text/html", response); waitAndProcess(true, 2000); _network->restartAndConfigureWifi(); }); - _server->on("/method=get", [&]() { - if (_hasCredentials && !_server->authenticate(_credUser, _credPassword)) { - return _server->requestAuthentication(); + _server.on("/method=get", [&]() { + if (_hasCredentials && !_server.authenticate(_credUser, _credPassword)) { + return _server.requestAuthentication(); } String message = ""; bool restartEsp = processArgs(message); @@ -70,7 +70,7 @@ void WebCfgServer::initialize() { String response = ""; buildConfirmHtml(response, message); - _server->send(200, "text/html", response); + _server.send(200, "text/html", response); Serial.println(F("Restarting")); waitAndProcess(true, 1000); @@ -80,12 +80,12 @@ void WebCfgServer::initialize() { String response = ""; buildConfirmHtml(response, message, 3); - _server->send(200, "text/html", response); + _server.send(200, "text/html", response); waitAndProcess(false, 1000); } }); - _server->begin(); + _server.begin(); } bool WebCfgServer::processArgs(String& message) @@ -94,11 +94,11 @@ bool WebCfgServer::processArgs(String& message) bool clearMqttCredentials = false; bool clearCredentials = false; - int count = _server->args(); + int count = _server.args(); for(int index = 0; index < count; index++) { - String key = _server->argName(index); - String value = _server->arg(index); + String key = _server.argName(index); + String value = _server.arg(index); if(key == "MQTTSERVER") { @@ -215,7 +215,7 @@ void WebCfgServer::update() { if(!_enabled) return; - _server->handleClient(); + _server.handleClient(); } void WebCfgServer::buildHtml(String& response) @@ -399,7 +399,7 @@ void WebCfgServer::waitAndProcess(const bool blocking, const uint32_t duration) unsigned long timeout = millis() + duration; while(millis() < timeout) { - _server->handleClient(); + _server.handleClient(); if(blocking) { delay(10); diff --git a/WebCfgServer.h b/WebCfgServer.h index 49f6a03..5f86982 100644 --- a/WebCfgServer.h +++ b/WebCfgServer.h @@ -1,10 +1,9 @@ #pragma once #include -#include +#include #include "NukiWrapper.h" #include "Network.h" -#include "webserver/AbstractWebServer.h" enum class TokenType { @@ -43,7 +42,7 @@ private: void waitAndProcess(const bool blocking, const uint32_t duration); - AbstractWebServer* _server; + WebServer _server; NukiWrapper* _nuki; Network* _network; Preferences* _preferences; diff --git a/lib/EthernetWebServer/src/EthernetServerImpl.cpp b/lib/EthernetWebServer/src/EthernetServerImpl.cpp deleted file mode 100644 index 6b25a9d..0000000 --- a/lib/EthernetWebServer/src/EthernetServerImpl.cpp +++ /dev/null @@ -1,29 +0,0 @@ -#include "EthernetServerImpl.h" - -EthernetServerImpl::EthernetServerImpl(IPAddress addr, int port) - : EthernetServer(port) -{} - -EthernetServerImpl::EthernetServerImpl(int port) - : EthernetServer(port) -{} - -void EthernetServerImpl::begin(uint16_t port) -{ - EthernetServer::begin(); -} - -void EthernetServerImpl::begin() -{ - EthernetServer::begin(); -} - -void EthernetServerImpl::close() -{ - -} - -int EthernetServerImpl::setNoDelay(bool nodelay) -{ - return 0; -} diff --git a/lib/EthernetWebServer/src/EthernetServerImpl.h b/lib/EthernetWebServer/src/EthernetServerImpl.h deleted file mode 100644 index 76ad3bf..0000000 --- a/lib/EthernetWebServer/src/EthernetServerImpl.h +++ /dev/null @@ -1,15 +0,0 @@ -#pragma once - -#include - -class EthernetServerImpl : public EthernetServer -{ -public: - EthernetServerImpl(IPAddress addr, int port); - EthernetServerImpl(int port); - - void begin(); - void begin(uint16_t port); - void close(); - int setNoDelay(bool nodelay); -}; \ No newline at end of file diff --git a/lib/EthernetWebServer/examples/AdvancedWebServer/AdvancedWebServer.ino b/lib/WebServer/examples/AdvancedWebServer/AdvancedWebServer.ino similarity index 99% rename from lib/EthernetWebServer/examples/AdvancedWebServer/AdvancedWebServer.ino rename to lib/WebServer/examples/AdvancedWebServer/AdvancedWebServer.ino index 22ae426..e8e8153 100644 --- a/lib/EthernetWebServer/examples/AdvancedWebServer/AdvancedWebServer.ino +++ b/lib/WebServer/examples/AdvancedWebServer/AdvancedWebServer.ino @@ -30,7 +30,7 @@ #include #include -#include +#include #include const char *ssid = "YourSSIDHere"; diff --git a/lib/EthernetWebServer/examples/FSBrowser/FSBrowser.ino b/lib/WebServer/examples/FSBrowser/FSBrowser.ino similarity index 97% rename from lib/EthernetWebServer/examples/FSBrowser/FSBrowser.ino rename to lib/WebServer/examples/FSBrowser/FSBrowser.ino index 7c04a79..f33f5db 100644 --- a/lib/EthernetWebServer/examples/FSBrowser/FSBrowser.ino +++ b/lib/WebServer/examples/FSBrowser/FSBrowser.ino @@ -1,7 +1,7 @@ /* - FSWebServer - Example EthernetWebServer with FS backend for esp8266/esp32 + FSWebServer - Example WebServer with FS backend for esp8266/esp32 Copyright (c) 2015 Hristo Gochkov. All rights reserved. - This file is part of the EthernetWebServer library for Arduino environment. + This file is part of the WebServer library for Arduino environment. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -24,7 +24,7 @@ */ #include #include -#include +#include #include #define FILESYSTEM SPIFFS diff --git a/lib/EthernetWebServer/examples/FSBrowser/data/edit.htm.gz b/lib/WebServer/examples/FSBrowser/data/edit.htm.gz similarity index 100% rename from lib/EthernetWebServer/examples/FSBrowser/data/edit.htm.gz rename to lib/WebServer/examples/FSBrowser/data/edit.htm.gz diff --git a/lib/EthernetWebServer/examples/FSBrowser/data/favicon.ico b/lib/WebServer/examples/FSBrowser/data/favicon.ico similarity index 100% rename from lib/EthernetWebServer/examples/FSBrowser/data/favicon.ico rename to lib/WebServer/examples/FSBrowser/data/favicon.ico diff --git a/lib/EthernetWebServer/examples/FSBrowser/data/graphs.js.gz b/lib/WebServer/examples/FSBrowser/data/graphs.js.gz similarity index 100% rename from lib/EthernetWebServer/examples/FSBrowser/data/graphs.js.gz rename to lib/WebServer/examples/FSBrowser/data/graphs.js.gz diff --git a/lib/EthernetWebServer/examples/FSBrowser/data/index.htm b/lib/WebServer/examples/FSBrowser/data/index.htm similarity index 97% rename from lib/EthernetWebServer/examples/FSBrowser/data/index.htm rename to lib/WebServer/examples/FSBrowser/data/index.htm index 7941860..9cb560c 100644 --- a/lib/EthernetWebServer/examples/FSBrowser/data/index.htm +++ b/lib/WebServer/examples/FSBrowser/data/index.htm @@ -1,7 +1,7 @@ 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 delta 421562 zcmcG1dt6mT_xJ3*&lwJvbK@KV54VG&qM~A1ky?zG)Xb8MlFAYjO@EnEQTdd0P)SKi zQOvGp0|UG%C z_&#RQ1sDxTfRdnpc|*;jY-m-8>0TwYXtY@z1ERii6+aUER7m+)vnb6li z)-PQm%U!i7FTdt;>@{o=ja-rf$k)9HD9}`9>2-1dEQ93h;M+?K#yB3;yR$y7>jrh_zJLO zSi~mantLqb#w?5IHr^t}0Xu+bglm8UfHuJ*qJUmNcD5I*ee$n9cHZaJ_W}@)uTZBPcL>>4L(1hFY zwlV(}HHbG6Sg_TL{aY-8;1Bz`?>iQ;9yr;~_j!buyb%>&hAd;Cr~C;Ql;=BF@xt3~ zyrp!nMPvbEnl0j8;J^=;$Eyd?Q-ElnPcmeA0QCn`ysZbTI%RyT@H4+yg!6cnddI_x zr#aOsRJ2XZFssnOtFN^R1Gr|mRT#me`dbADSKMe7LExeRR$&4+-E0-X;GqMpA_QEP zZWW>6HiW~#sbj3d3?6ZvRan4Hw^@Z1JPu(S*mk>B*crQx)j|A#}JMNi!7^%B|SI}TqLYw4A^vc@vzJVo`Pa;{&h>erq(fE&sF=f_PfG51ckiK}|rM79sFf_L|{6|cR!`~8g;nz5V}DbLs!`kw#X5O(X#`9-GX}A*^`! zjM<)?Mw^KG8f86&f$4J_4SK@;olVs5vx(Yokk3~arX6(v?eV2exSMRE8F6OrwTY7m zH-lpkKOOL8$?9P*+k-H4o576;`)#$5>-N~f#32|OfIX*N#oy(0zdOcm7lpu3D`2tf z1sZ3ziyWW{s0_7VP+3E`U8LIVVkh)%@UKI>fnj!01e}C_8Bhvad7G=s^N^wx=VdQj z7d6Q+adW&~Gy|1wF0lou1?mBR37u{f1c-^X3ul~NWP-yI>;Zc%bft)&b)8+cP`K#x6{;_NphRzF??2bl+;l^Z4VB_x7hud=fb&&9&p6w+r_(h*fMCiHlLp zBD-i^az2+c@JoeXCNKgp{CU2FS@Y~77bpV4pr>nB3E7`dSOM%n%%3igDDgSef=2*{ zV3-ANCE4F`9_jLkKQi&qLihlQ3+*Bu*aK7mML-SoEelXs$mM?_V<7Q)_#<2h*`Ll9 z$n^_w5!}z&MI$2A{^cq@H~ogGomSh$npJjj1|azcV9G_<4x0r!zx|ssySM|`43PXc z;C}f+JOSN@?d&DRzdoK=75wOoD|%cvDO^kf<^ttFEnuD;F5Ex{uo&S9;5n14UfN*M z?j8SNxab2s2lSnO9`7Q21}K1zu)Lj({N90WGua*r7dF8DaJabsk@I*F;TIpSvb?s& zA&z_-uHz(_khd>fT=`wNP&I|+j2M)*>sqEd)o=br*M1yn(+?L1y1cF_+@_qUPoj^2xRWplg{t!XUdH9 z{!B^lm)rZV8Sin3r?VX5OE`pp-vkZ=T~YIq;5U%aIDmMb4wg8@Rtuo^!uL6c9Xq;WF&cJSw6<6{3hr0>_|J$_#H zkn*lsUd4>3&Ko{#R||i{i@ALPA}%VxC&-X=5hxtRJMJsM(nlO(Aqw!&lMZ2;;^?d! zsQ`e|_yu(_MO_GoZ#pFHz>+!q9oU$_kWGr1HuAM_^Nai2q+11Rjr#r|87 zzF#-My_?WH`ND0fwLQMx664`f2Cl6^&N4&Rz9tV{gUtQLeqyoHfQ2`$E>0Sp@{3SmA^BSi(fC4<9<`l3c>P9NS7-TrTT>-=m z-iXi_Z`zwsRnl}usmg73YLT;+ImJSt1lSC`0+cRuR;~SEg3%M+unGvEfY zfKq_Lmvptha2`182yQ9?!3{8=8K?zHfjl4!5P%zCz`>*c!~@Ws0A^moM*d_w1BCtT z6c0}vJ}I|v-&;mZy?@H2M{>tZsJh|UXvK4|)hRwc?iBy}Fzo0?L5r|G-5!4B>Lfhi!11Q*;GFfa9mo6@hV(FNYss z-}1o4OtA{#J3P6qOZbr3e70J;nyWq1cM1>s!CLxF*io$xb2e=^1- zVxS8Hru=3S^$3@~&qN8rTfmzUE`+{3#&ox6jy8!@D3(Eyd)6hIkpSIm^v`x<2hoOv z4L}J+0vce?1Lp$ukhcKkz-pif$Om$O?BP|n{LZyuKThf(R@?_apcdExL{3D3fv15_ zf&K7F&h8-Q{7(mw`9KFT703mWru$K~@{hq`-A0`eX%(%5(lWu>Kn_pF7hVMF*|-~wP7@Cxw0v-+bTWuG$gc~^v32W$qm z0iOch6A>vsLd*uT-Cn#4`3E2Y;n}dqCPawgz-_<-Kz>5?@nB_+>ahh4N;3frXyb#@ zT7edz8E6Fd0QEpEumz|D%7Id#1SkRufKkRlX~(e7n+cA>HJSpB0q25g+cys^Fj^LX zY1em|mv3XGK8FgQp~lBM!2{vg0Ct0$eB1(dBHRid3TDW>4rBsnf^EEduvuAZ2(KO+ zA>IQ@fHlCnvDJs|$}T1RiRlp{5qROj2(cAtd9eB;hr*4CZ&pT#dpAXh4S)%97hozd zJ^SkMlOLWmY5YTsN&B@*e6_Ws@{8tpYDa{a53B>W0blNjsJ6x`w})Ap^UkC-0u8{P zJo#{U<={=rP9rP4a;bbEQe+*)iw-b_M`cHflW3WgN#1bl>`0M~ij2th`nQhpazB)c z^cgh~)oXhwpBTF4b%_*&`R+&&-YHUKbdD6Wfs912Tn`@FrFu~x<*yLWop(iw`+-&< z*T*E!ZYNXt{}Vj_PZO3XXc-?!gW*@Lw)r0MZHhcxM7+=U0b}RgOk@40qyA z!#^8X!8MNptKcLsw))sWumPL_HiD;tIXDj-1TF!az~$gza2+@V+z1W@w}Kg7vl;F} z`rs(A3hoEi?99VPK`=lu1#AT8fjPJo90aZbo4}3WVDL$B2-tQvG5{xm!@xtqW^fkR z0-go7f=j?Q@Mf?b+yD*-w}KsZ4`X5DaQi}$1nvMH0geDq0Y`!h!7Lo_AHfQ^7OaAs zz#8}r*Z_{Y2NeMK12bH|46p*80#?BVU=3UjHh}BEMh}E$2poI{%pw?b-;0Rg6tD^& z3f90`U;}s-n7L6fumUaxtKb^a<2_ab>A?eCB25LiAgqB6;}IY11{=XCU=N2d6haU< z6Kn!c0|$fiz#-se;81WmI1F41HiH|%7H})r3J%Lc(}I)04)8#*6Py9Q5;8ySyuxY}ew5i}2@c)2Q!4H7b!PCG~z)YZJzzVns ztb!}R8n_N@05^e+;FDkuw%zAJ%^@V;hnjG3V0x?H z2&R{mZD1SNIT4)ApT4O|8`fNQ}jUlwqyhthLBKHJCSWv>0o)1P3rqy20F>{8pG0}Y!w?<=o&frM z8YR|&Hvq2zmB3rTR^WZ$1E3!G4A={N4Kx7`?e*-Gg#n-{Klsb`P-y^qRZ8HnboC=nst>tZc(pRr}U9st?F_$y_0<3s&-WkSIWay=v&+} z&ZfqN6!q$;f5uUfEQi_Do+FR2C#2U!U-gY zM~l1}CQ+7yiTuMRaqKWIljTqu zq@(ButOn|VlfZ40a@~W++%R;EJ0sJbK6>m8W8Bq0yVP&OyWW%%Ed1CDxfuBHAG+$J zz0{+T*AE^G%#C7of%S3qDMY?GSm-}?`z)00uy=SC4Pzj02!6z<&Gp9OYlsZrIxNjVsX0S09 zLMs{HznvqzZ4?&87~Neoooj?nYv)6*4ba(qI`X4`&Ct0o(j9|N|3C(Izh4`4c_vKT z=$~I{Kw%htiq%eMBVEXax)|svV*}JG3Qzx%pref2>-s@Q8MoI7=#a5bm*R~)3QEej zy<;Znka2rm_Knq_rmH-{bNhCe7y~T*w@XOi1z;WU3a|-y3wRg!H}Em=8Sn-04X_{h z5%?MS6*vX_4QNO&7_b5nKn&0cNCJ8T{eb>JpA=R-`hK;0{Pou-;(N4ye7DAK!Ut*h z^1T{+;09b5h5w?l!wNsBu{;%@ye(FFo`J1aJ2Cc=%I6x`7wYQ@lXV4Zl4qgHsulQr zpzuX1`;NpT3SXkKH5BvQIi*Y2s~P(rUSeb(o^NCoikmTfc~@s-rxadkWG|^ZaQ)zz z8;1y2^XgD`*VUWNY>mR-3uSLBQIL-+k4ZB-q4GVUY=O31L12@C9|~nVt~c~XV5yOx z3T4NP{UC4UyfBQ-3A#7m%uWaK(lEBk)T=d&oi*{zVQfS2^rkSjF@%2{#y&E0*`q)m z8R>E$=V-o1W!-q4%2p{Wl($v(t&Av8yUWG`^(u$6H#{EWi&b_)vFB6eV&wb+^%YN7 z=m$Kf{HVZyIrlu3LoA`HuUGj&h3YjWq9^7*e4B~g7FlIt5A*#&tWdcXBAWQ;AU0R+ z3i(Zyp9*5TRB}0vMmC|MB)_Wh#U}Q#_Ns!wUk1L)#FiV$@V1d}Fom!$jCUY#g#RSp zc~*6MqNzaF^9k$$tQh7f5SGy;c}d~-Qd!1F-pbhYx78XetJ2PD zvLc^2u0rBEg&$Jbn+k7K*lt~e4lh+!sFL+H zm7h@AR+aytvPNAqN8_a$lNwp8G=5rR+ckbdV@nMv0y2L=aX}c|ryRo`|ADh&h40}= zUsgY-Iy}&BS9w_w?oBR(*l#M&4?-6rd8NirarUjo;nSk=AA;Cvjei+L3D*a)bq12F z4E&uScE&(H3yge)iLEvAg(kMu$T8ZX0U&>8ocf#jQlebWR80gaV=AQblY%s5j zWB0{DT7*i+v5iVRWDE(%;@DZG8{}#XB=PJs^%}^<8ebOA-o;hw%64mfLp=LU>kN6l zf!D;dT_{^ucF@50#IrfZPLN+S@FZ#O$d)v|#^3N7t(TNpX$!CL=*LGrib@{NBf6<8**m_Z18*k~vPT0t2uAQIh z#Mav*A@8#DqR#9OJLwmM^RmwD)o>3bx-Xn>>CEyR9U;H!;5$3By$*6Z?BLCvS%EVN z@<&cykjTDs@{^s}(hg)@-+`}AWc3}AA zzl!9?5?Na$>8ql6UKjRVlz#nBMDb-^*wT)DVA$J{mv>>OJ5q$jE?(1xz3HN>e#*u7 zbYUx_sUF*-`JpcCXf*kpjpl7#*qWIBkPpZ3gax{TZ9m2kGkKziILTf*5qBgw@^z9XE~8+$=s z#&cFf6T}M~9=0KfpA2X32SqoBv!g+LGlqH-hxspby#=i+;1?G;>ylUpZn%OopKVW9dEqW{q z|HZ=IweasPEdB+n15VXeKHJ82Tlue6w#L>CnmKlkruj-fy;NP8RHLw`@l`nBWS_!k-m zqgsXT_{|D?P3aBAK83%dvEP;JA!C61SYta>zEERpH4aUccAdO)nOfd^R}kA5#9M;c zsi26eP`1*G4VBa_O^+yva>o9FF+S0^`c<@j-9O!=5O2CW>nD5 z4hKVhHkj|Vv*jUtx1E)R@ESY&Dg^4|A^fPFoetsCDni*yq5MlbJ01%Cyf8i|oUIMx z=j?1_82<(8FsT0u6}uNj|}CtG1KkRVrKiy92yM5g;uJ1n}r>> zkOsqVp^a^~@-tTUyOqzCIjhvj8!HlMoJHduwexb^{NWrL46r+K7h{-pu#FDV9Cz?0 zCtKj;A3NFmPSTup@?#y?$_~7-1KZt!SI9l9)Mu4d@~+itoags2_5`o7u*FLFJTrS= zA^8i1uf|kWmlvtgr4 z3mK2SJWTpR9)r9$lrKXQh4MXN>}VJwvpjQyLY*ScGb<98y%TTYthb|yV_vn3v&noW z=JJ@zzo|z5$>~~Q%J7%U*9Ku+4PO$(Hff~61OGML_*x|7a~j_r#1X44;AiGum5@-8V{=3RHXk89* zc2whKGI0&I4a)Qx+jIy1BIfGo7dV^93yo}^QlLPVDz7%Ob!yyeMyzODYmICn#s=t7 zAR|)Z9~d#^CJjc5BS!Xv#=kSNxdzf;)-;#14F>)nBio^Cju`l2&Ngwh35L)~ojNmi z3%_SJrkeZ<1DnA=Hn6ApDg{d)zFnc!(uWE?j=ok{v%*g)?6|`JQfTRbsqb=?uUBd4 zT56#A+}A40*LomAE*fy#7JV}*uH*?X-Trgi-dUe9k_S!(POLj@X#gwi(%C!_5qnc3#QZIRl!Q?d5d6 za4}+?cp=)eLqYXzFRAO*>TxftLXq!nQae>QZ&GcFY^zk$JZ61fom8T*C$NM-EK5A< zKQd{Ff~BDMqLS8+j^us~uUFW8Nv9P|^EHUoN`fABj)AQG`R+toeKEFHxngf3JEZWR zda?!RttysyB%^_TOvJUF`BP61-2tx{*r$dx7)p%%Eh9TK#a*{Xk1xjHT zwkxPdLrk+MaB0a6II>A#t0#u=hiFMNf7%Bp&jn(71Zc zv_g4FPgWl0hWu?+J$Yj-EpD^TV>}>J=jJ&-(qK<+WA~e zgY7g?I&0@|;F%H5>wB;x;jtB%LOXa#SGLEI2zkAe^zS-j8@l2n7G6t}%TAF0!bGzN zTO7fQy0Moct~i6#A|hJ4vNt37<{lolE0Vw5gZ+TnWjFR$q+@e8CZqVv-Pl3=zXv-N z#q*QcqK*-*-B?ve{#`dV$3=SS;>$O5<3yi z8%6dDwgz~?Xi4kEZY~$KkUwai{)ox*`hf9Rvg zL`C5GCw4DWSf-8o7KgOa*Pl9MVj5GR@CJn~)iD0cq}SE4(UqzVYr;h|S6PM82eToK zuMEYEsr!Dp@^$s@-aCTWTQu3I4dU;H(lldBDBB;@{XG+Vg=Q6-P5j@X)Ggi*WqVCM zWao|Qb)IK9HXj(RPC0u3!jrs)Q`VdC#84v3FmNg1xSu{&daPF2J8Bn3Q>LAq{i&iy zuhH~1CY9)Yjjsw~JFy)R#J(9n$S?pOw zTcNNm3U9_;P2(Gky{@EaH_<+U)c35`D?DG{c)+d#ro_h-_O)Ipw1^%dl2#kTwL4XI zzg)jw&GGa^cz|{@X2Xm2u2mfK<5|8+GRC!4 z@ob~Yx2SBtuE8S{YrJzRt@^M!Zoqm^qm>~ZnLFdz*SfsQzz@W;S20<|)4<^2zhH1S z_JtD~y)B;YGhPq53|nAs_5-KLr#UZmv!y{U$eXbgabpPKjX|_5sduw;Sg)9vM87ey zeOM!RVnx5c z#g2BSYl928Sfhu)6*1p~)1U>K|FT~?CT3=eYaG!X1ql=wXQ|nxGk@6zh5sgDW zi?w4UHdY2f{==Ych@{OF$XHTTy6DcR>Bx>l?nq;MSw~jRc}*nynBNTfr69g1l6@OQ z`r|?TP$bq7cR@a4;w!Oe3?_YbFmH>b>*7J6C790%p>-r=%-=9I|5lfegz!0`Oon!c zzAls(M$xtfdTN=(wT&xt&2qY0c5;C3M|A_G1SPX|AUYrd`pup$xbz z@ig;HyW#@{yRqepyx|RXtX%nqnyOFs5wcopF+ee7#zY3@$;iIngXS$y*WR zTM#rP$?4TA@F=X^zoT5VQ?2iw0a|!+!$x$KuAD zSOM&Z2ARbGYTO5B`x{w;;U^#Q6SsaoHTh(>lqHgw;?O-4Q zy=*xsQ^qa6PSI`7~Utf|8Lc0fXYGLATqQSViFQE)Lu3LITDa zIAaHF2zf@PZBwJw^m}COF154tY*Xj94?HSM=W0Djlk*+SKi8^}6tG>brO6YYYZ-FW zPBm4I-l4_H+9Rq#w*FgvDG-1Emw2akV!LXTHT7y_HKYNmFR3BbGd@%`3N3eQiQc%Y zKUTl}XWVMUU7+})jhEI#xTddvs@~|+G|18qknf%y>PXUf3x=tp{IIj(mTHvFs%MGH zy-N11D6LqY+pXT@i#|lI-HP&wD>XxP$sY9F=0>{s2g^xvvOj^B$ipwVNbr$Kf2yz~o#q9q$r>8b=@ckBtXpwY~5 z`!oLTsCTk@=t`b63%tZ-hKT{2n>yJcU=M85Orw}(7Ag9eCEd;HSCn1l z=O`3%ijgx8s2e)`^GS@qub1(f*3rnmc8NH7;BP#1-4NaS=#U^Fj;8DZ-`J%0W4e*` zu|O`tL)_>cA(q?^F$aYhC};Q7oF@2GASC3k^e8{(HHPh(ta9{y?SlJ0}&o z^ry`tj%;}s+UUX9fb$FJiw47rfK6{G8si)D%%YA8`B}iGm$VSJ)w3~*lIWS9DmNUm^Gta|VHG7QKN%nb5d&6@K`fjir5}@}D*>qKEajQD> z%_5p?R|af)dQGsUJcHqrY?A{vy^w9NWzRDU7ugnHXrl>9-h7OiWP4M$8L0wUGUZ1# zTJ|YI@6zv$(zmrpx$P^}I3XWV8Vk&VMjOMiKysx>L7&T%!QQsOEYfKhzH7d}3N&Ep z_Bz-{EXIjl4%p8G>_z^$z#+LLLW`D$!O=I5rC9JhKjmm!Ud_1?^%Y+)uuN zJY+_T8YN4&ss?0A3S<@DO*1IDa?nvV-m?sM zO~K1%v5~U*IFOCrgDPQ5U5_~@waE7YTNd@aov@AD;IsX4-bOQq7TEI2F;fagJnKS# zOV;8lGm2}1KKo7mmh>>gfI`26o^T?Jg;i$J2uDLkz^2z*P{hqJMF@chO{MawAS7PG)cCo?nzjJ4G1sWzKo-&1QAZItOJ&-n|R zhoEk6fW3aZS)4@#gL9GJUg@vxNwU}b3ieyTt{2*tg|CKMKf#!V#0;T}{gK_2aWZTv zpW@OW0YhZKre{peI12XWFMOldydr;GJ>e;^u`kV{qa0+_9R2bUjQPrUwbowfS_+%^ z+GpEx-X=>W?m7J_o!f*Cg&Ba+gBO@AyU|yf&(Awkd2KietMD7MSdN+-js|SC{)S3{ zJ@I=CWHjR+zr8|0A}HD>|rJ3}qrC+5+BJ&WR&!FDXnA`)qo*Q7sg z;QHeo7PHwc0-v5S!(6g^=pL~I91g+ZkkcY=B8Tvjed|<>3zxd)NF-stF796tTd^Jm7;m=%e?pe~_j60xp zyK1-&-%hc-c#GIZ=}!&#>1%<_unD(CVE2(3o(R|~5!73+LH^o`5xUh&VY06gLvro+ z7`b(+GTva6FE(otGVN_Vp0d31;*V7BvEr-t1dCWp3BMdjSWvT!X4@JZN{d*Y130dz@n0}eUV7i=~p z+}k2XQO3&ywshHSG(^kAyHw-tBjD0<1l&ODNPag2{Pg<=Z|hmpwHA>?#Ty^6{7+ zX1T^21>C_ij1Z;ZK(e}g6MwcA@ zAN6Hp`Y3d0y*|OTRLwzfr+i~DmayIbPzQ7yc(X-xp)@KkOd}O}X5Zqo?OH7t{-O3# z3rEYXf2eV4VY>X5xG_Wi^#}G=rj50TKPZvb^NCP9n9wP*@3e^5sB<99444_v7ztmp zCqZw+aimXNWY6>2M?hbgg~Klcb_mQu(e?OK5X{TA3>EbH(whOgBV~ZnQ|~W;!_dh% z0~NBt@`AsE>32I#r49F6#JAMC?ib{#Q|j}f%~LJHM2dbdNZF=d725KEPch;J`E{H6 zXlUz$I24qgyW?JvWB-K5&|I9ZNs62os^y<*2PL%R3EV3*hsl3IR{y2m9$JgTNp(fZ z3o`Pwdeu!W`4*8%9ucpPy!N56*A@Eg4aoDf`n(c4 zWwAvpqZlnO$ZP&qZw)=O#NyrY`}>8JN_a!)Zjh^6@|6G#NVW)0t>iKK@O|9Q}1EHe>P-DHTR5}MWPEX%VN24ZDjD?6H zC(O}$h9*O$FZmX)sXljBU7;BBp~;a;hG>rGD>b+AxHFcf5Ue%^+8Q-|%CRMvCw5-e`=8*p?Z=Go2t?xr% ziiUj|qn4t^te1O@TIwZg+q&K&mQv&mf!gXhQf+r`u!x1;-S2dcGG~@s#Ot!}Fg*JT zxt3uxyYMHcuks;45!%FKtlNPV$yeapYG?%g9O^b-sM;&Pk)&{DjZ&u$D ztYv6{id(zTmIo%NvL#HbQ1hy)mz(j5&Y1O>2|LOq`@d&3$z(WV_R&a9=D)VEf~*|kH)GYEV4%^fCmg_-|GkTUqe z+gP;OO_kU8-u9ot>aH?e8>hx>mllVXcZvFK{=gzaz1N`@VmEJ>Zh@GpcWF7zsKt1a z>nz^g*5A+9g9aqpEXsn7PBb-WYcIG<>Y*!ztv}fu7upU%*96-YWb1sPjiEhlANp>Z zD|MS(?9^5mr$8AcZw=OZ(5gPTI;(>grKouy$|oYUF>3xta#sYp#IlcY3(8-wHaMw$ zY7k17pFfQKpsxN?aWYCyaUy@k}Idik_VyV_V+ zPo0zuTq`%l zX}#27l4fw`z_)T{eE}o zFO!-r;yA@d5zxcsxgG7czA?Dmpq3nxcXZMA8E5VDW$TnTcSSbIN91o^wPD7SKVxkn zmprOD)S_c@OgAmvdA?y|kg6M~n=3=E)cPBp`8E;k?W5za)ZD5&Up{@MHpZ9&eT28S zv|OoW8b=`P9hGEeKP^$sfL}k9ej4<4?>JrA594$m!oFDy5{t?nv`P zCru7aI2zYQ8>NwI;xlsBRhr8xprTWy{neiFxfW}r6HuM9Z>r`n(#g7E^4AoIbkHu| zPmz|+*bR{heIe2@yy5cmdm&cp4!4qa55yF?BpV`~%bOx+lQsoniCmI}2f(;%v=PSo z`8GUHXHQ4C<{B+WO)8MRQ?&@SzCaF3)w-T9htu#Zm7I#9COs?Hq@uY8LS>een>y-Q zd6xVQr*P`3{QLoIh>yHh3yH0S%R#Cft}DI7a)M~=Zdzc&F1B9$Q44KigkF3t=@e$3 zeYFm*WzfAEh?dSMS`8oy<*sYBh}f1woZx$r{TRZlpQ8qPgGyBKoQ&wN-D@0(5{1iK zC!s_u`)eV_rbRY!wVXW(F3!dB{r;$IzK%75yILf^KEqAr=BIl9eUV-xpX6g3wv zO>1pp%z3>W-%U%1PI>X4&eW>YHreD&Y1(JTwtwRfCiUVarf#>1Zm@aFl%hX$5oFpE z>7$r3i*bf~8{1$jL%;X(^xC?7YnvEUYy^&Ij+HNtM4z4lu~VQAC&|*U z)$srJ(u0ncjtWe$jPB3Tv8g0Mr58L?sg!hrbU%IWWu$|oCwODgM+xzCIQ0h<4e(z% zdT7uC2ZvD0O@phTu6;*hWK-y^o=X+*FTApi$8V$fluMj#l}jO^&`nyEU}oM;s)M zsD|89>3LGS)b|!SM{J_Mx0tj*FjgRpwItp&N!u_jM%#JBCi@IS{W4o{P`7s}o$D3p zg;EhjeVlaC+NPq#CfCBb%TB1bqNawjKt1wMExmWTQJ{ifY`&SEY#oNiYDTz|?^6$$ zZO3h5A(b0ZeAg@xeJ1p)PuQ?zp)W&%=&f+w3DkGE7OR#1YLhdDYp)n*{%*qqMxP<3 zjL-&lbDl)IQi8RC@}yAX)80+bOv{?KKN@XXKXSJy4cmw={pYkoh0-zmB!4>zp2tRW*Q42J}Ga-(?BzwMU#(2 znkf)=Q<^nr>CQ~RsG}W%?i}gD&e<^BV=zsSyVB5CuxmI=OF3tg+ipVCEf7xJq;=35 zAq0)mo>4P`<)TqqgfTG$2Y7qykqhxQ?=!6)BEDHbN#xE{Ey~!6aDV;zB4cjWI{mkM znoe7v;q7j;urbn!>tp1SSS>Pv4qo3$E!i>9%K8mb1RWjZ?(}v(I?uhIcOQq2Xip8i z&7?!#J9yt_()sP_ayH&(CeTsvZ&Ip2``e%HT{`ytMtvrx4zU|GQpXzj{fqEcP(Wmf`eV3yYndt+=GB6#0@015l z;*~Vc!H1}?P0G5UWoQpGnAU}Ku>L^Z;Gu0WI$vMEUor!g(60%NGj#sGzSf+2p^d&# zp>z26Q7N7b*xWQGWKukw-~SldJQvz>VWYGCpC;Sf7rXd}13e<`S;frvs@ zeuj%euNbYgJ(t|cE*^+L{IVD2{2p50gpyR8icbl?w$7iPeihufG8xz6lzf`T=(Ex@ z2w}_NZ`CP-dun5i1^w+}wmxU&@C_Sam!6&&s#6EpMQ8c>RT!VgLA;&r1gHG0rxu^E z8DTp8$?$O?FTJrcXeb+qE9`A>cQOsi2=~#$!G$o>Zx!6)4VEKFKVL9XPDs`s&?>I8 z%iYP?YpI1!p9D0olh$6CV2rpPhx*Gwy|l<74TJ3BC)y7?7RWh^n!6TvX6nhc9&gT5e}Pa18Qc1CM+lq?Hxn@sLs%77-#W{#_&;jh`;JZ2HE#hwF4~|TgPbG zcNRTi7eAB#U9b9G^m5UVz3fT5m`1jz0yZ~YZz?mJg&(jW+me7yk4L(C*wDK8L`AOH zhu86G=dhk_hH|HOSZ=#bbB9(uW%q6gmA|TQR8ooXO;B<|zdXA@rI_KpK+1Zqnb3`Z zEuA`Wq_G5Ir2IS&+a~&8sehu;ny=*=D`6R+KNF0{bWtCGXd_LQ)@pO*+86_;1!B@{ zyBOuY8`2TXMKDu7l!*1>&e?L!9oiU~)qv+?{IB@fiC$1iF&1mjs5$si480zF6#DeQ zIr8bT+ICqK30K`KN5vx{CsQ-2S##tQnOOeTAWDX}>N_*F9+%jpoQ0qF*iLn>yRgm! zp)1X|`(~@Okr?Uyt_fdm#nA3ya47wPNCfrWL*8~AeSR5E*UAmhkA>(hdg`C4(~pSg zQ}WXn+NibZ$3^s)5|KvwZIPwk*;viZXoaEkF-*t%TC6IKPOF#!rrj?uhMQ z&Nv|t1@OxwvQIWS3 z?c+-%uuV;{GU?qb@N(VVZ?<>Cj?l?|`kX^Vm;^dle+_jctXh}Z`qZ5c$oy`-(7 zTHROQ8ZvCe?*_@fl&TY=OJ5RbDI4u_^mL@!2wj*wfcV-W=scurgRWW5zEA5cYlj)G zm(#yiuaGIj4fx6mYw&CTdDG+JB^IJa23v){*Xa)x8d7pKmsmiygbKNMhSqBc-s^gu zuei{eo&tq_+mH)w^c09P`r>6&$a6EW&MJdqCZ#+n;4G-!sjtUypY72KIU@(TF7qp% zxzITW&S615=jSi9(cWji-}Z8a+@GV}XgvdkK778VJIfgzwC=`QlM9RO&yzK0BKqN! zV3$}$1^YOVo_-V3$ZrU7VRMZ}{sbq)HRRTKp<4mmHtTL!t&dKqgZLM@9SykY6A=2& zur?HD6X}nYe)LxB5Q6K;^-RE3&o~9P!Z4SZLpHA9GIHU`4M^lG&w5R?VE z+CXC)!rlc!Fb+{-VOD=ow&iN0T%`zqO@&0I@Ij_N8YDxUX_NOpiqW9S?h<=xaA{|! z(WBBK7m?lIbcsiBNxb$veMhX2;z!8$$zB-g5?2J`d+jx_*G9?XWY6x1BgO*pa{}x5 zfiW`fF+6gX#Ug(>0r#;S^_Ui=PKlF~AJe8Ar^Qn}-tcHn1Egu*)%P)o)pGVU?1q-% zxV*;^KQ+OHSEjU`td=LpTSzsn6HdU=2Mjf%vwRw=*n%!D(F3Jw|3E#4@Mh?*)`t$) zF^KwSS9(Kuw>9aOo7GM3LlUmlNiOfEly3J{WEAXEdP>Vo40lDz62IBn+tr%v67&~2 z?HjBDezkq&bojY)uk`-RpV#iz8>9*L%~#4bluqlF^6i;ufTDgbvBbOins^nC0rR#% z4aA|+o~OlL;&IHbrYQ6$OU7jo&+3ok&}G-S1Vhg-418Vg_?LE_aT!irP4=c-3lXox zXt%xvA|BP);WeJoMSVNpc3nW5eTNGRPF-6HahNX}#0+mVI?3+}??6un{e|le8qWKZ zYf~}&(qVsYz37*Ce>4=Q@^z&PH0t%s?a}RoOJ}`y39S%m5H@57?k;^m$b>HWP8VL9 ziePHnjsFS7&9-7K_hU|T{!uSY=y7O8N0O`6SAQgMT!?Lbf)f537bW} zo}zU#)_{@^c&|A6%eO+y=dFk zSWX8e>fz;^5sboLsbQ;!zNV*FgWc$n^*-HPm4Slh(C9={CR>(EJVlk*`TFI)Vkm;k z736X#5M6IZYT9Plg1z&(GrEWmuJ)Z$%5?; z$}j3d8_hnpz=mycYJ?_;5qcBTb2`O%QV;7rGy6Uq%INKFbi87?w>#1)i{9R*MopCa zJQxGYCel=xW)*6~L}|&>+?VKdXW(=Vl_zI43n(V@hL;sGs!}|vvC`uQjfMvMehu_|; zjpJ&;M&*rpXz6{x8ODAn6`Xj1>n8`KYfQh+by zeAOFaTzxG=Lo5xn-RX6E~(h4-^c#HNm?JMSGu#Q(WF1uFQ?{ z^lt4N<7y}(q%sBT?qBw3-6@gF1O z$D$c8)0XqAIxq5+GCpHL}BGf2hJl@ zxublTvo0f&&}ha^+6Dkr91N)A;jL?k#8Xj`CXj+jl{~eR6bnC?~(zUn zZ`eO8xhHe<{SW18GnwKofUw_}wxgyZa2vAm?%CX(H*&FF(TMgPs9?D#q{;KSoywFa zXjY-6Rb%aZE_M>z_JlMP&EbL%7Qyt+h4<_CIv7)z)vu*8ZFg9&TMX?!7xOTUrJ8It`& zvSX+xd~@{ljr`rr^i73SyqZgMME6^2ZuITN)FSfr^eHcWaY|oy(r1o-_`Z<7$7{pq zQrURVwIc!NWaIrbdZjF^VzMBBK)lp+6mKU@e1!M?@RH6xyit>YH%Xd73f{R$!mAV; zzr#DScx_-K@Hm4*sL$d3YCIzE#{=+EJfzOYBi!B+553TdXP_B)_&L&v$L>cwgd#j$ zOvl5keR%Z3F`k0a6&G>1{f&F}!fxDT%fr2@eB6`rz}=D<+>jW-O^8}t#T!d;$A1ql z>iqqLlqG&bcOo_nUWv_vPx}cp9n$d3ptm=mfAl_zb5FNmbK9->7C8^89zY`K2~Y?k zq#NXG5HQV?JsYHLDQJP=(uoxAfoR6&Cxn5cd1_$|BqlEGfI7>dR4VPSl;4H(;!_3r zkP6|Hf{E%G*Cj_wkEe3JEabLSZk@M!k-GqI@}CyJXXi}la6-7mr*Z40qIT*J-OcOSv+vvGfcl1hJT(!FGL z-XCy+DfA=vcnP%J%)Q$SwTTGaz?EhCq%Wpisz4 z=xM!JdY_m4;Gg-UmpmLqg?q_&&eU_gG=t*YEGB0@@!z4;W_i}%~r5bvwk`}n5D!K7TRacrS9bU^V(D#qotFH-? z+!`UtZ3-k+9}h{@*EVXezTJ>iZ5tt}+M*z-+9Iymt4$3(Ra-aoRBhFes5T}al4>mp zl4?y032__1fVg2oN0DXxieonZjdbY$oszn#jmPfe4k(;6vLS5qb)K4J73y0g{?x)EV!_)Aw_I>}$18bB#yWb4dz)aR_!A$N5A#0y;cM z2H`O43Gx$6P#1wMGqCSFXu@$tYjC&$xgQ}Jj9tq?FVwqJ)xv?l*I=I~lt28_`AXT~ z{}w*N)yn}3@DK=i(2R&Oi%#(1FNtE}2jZSqcO&Fv(eHc5@cA9*D@@S>S;O z%=?j`Hc%euEHq4W7HW}btFN;V!UxC)GEw5yv+UdUH{7FF3(fbah5WgG0=E!>#;b)9 z;62k%fV2O|r4gIhdwl69=az0+&~1VcNV-2jH!JAA0Nog&yCHO2f^IR;)jr(;>DcEl z>_ftuAbT4;g(h#rqxZEJX(tsY6(a});XnX+fC=>z!a?~wKcP4hJsx-)D2g!SMk)E$5D z6LKCzBY@hY88L#U*mxc?uuIPF~wOhZb6!X2{eG@QJhxg86d3pLVBS0 z0J+%Y-W&RIPi%G%`aO^?n4N*U5r7uM2r%O(*gvZswdXVd&0kRErfisV* zRl*1qT;uG`+Q=cG7ZImSS36eBClcau5lKMGG>gOc! zk(ey0pOc>YIZ5j0B+<|HvVuA~8PM=dl7?rJG(3}};h7{2&m?JhCW%cvWl6&`>1lW- zNy9TqdYO-8phMDYPNcuZA*a(YO$J(rfjm4zAMDW2aL5pc40T8vp2;7kURly=jr8FHqv$)ygdr%^HN7q##|g#LdjVn@9C|FN9g6QKW}D|$Hr^KR6; z4S(Hz7`e}?g`PMpf&mkcLGrR=aKep}q6F!M=Q-a;`~QTyU4X_58XE}uGv?yd|(8nfZS9&Fp`PD)1NZEtp?EMR>eiQWbISw^mi-FtwT~!sn2^U<`OcKNlo{4d6MjyJkw`wIc2d z#fr^eP7&6DWDpDHfneYblmKfwhK4)gHnp$y#B;n$LrkWb%zhsc|R8w;H9JtoTmzlB=vZrg>?r?D&{wS)SW#7Y}T872+7y z#4`PwWe-c!U*{I9V+zr5F>^^puX7>leq4`*oEXfQ+>X(i3lRQ(c;V#JV8WDMPzm+Vut(uMgRd zwux0rIta@d(M14^0K*}WZLmYv_RvCo6zUEzuo@>m-W{h4yDLr?4)bo9b%N{g(*sHK zl@RaFScU7lUg#gj%vam{i|(jroUS?*M~IaRx+ch$v^ZTzD$X3+HwkUGA30!fv<>F_ z0azMhP!y1bSmdPNh9zt?7CSKOEM|ldT(Bo}ViEMYzmSxG!`YLtxP!Z>RWLh%i~hw} zDBXz_W&)O7Q0KtBb_Eu67{k>6#CjW4V>z~O7Zvj=G%q81bT%Uhh~Vg77$NL=fQVw? z*|cXuR~!I`ER#a;rYkxQDfa+dKm=peMS*aTEln%Mo+_hbKEi~PRmb4Pu@KIx>w>e4 zdvJ6nt^_^Sn#paJ-?$RIT~gUuH6M4YY@tOxXVpP|VxqU(pIFo%vW z!@;2N5LP0s+{10wt1pb}VoK0t5NYpa1d3YU0=>}ZCv=_m6AZ`E#Via?m1Tqur+8iN z$hanL3(lmyg4u(x5i%2Mca zf1W^sQ9h2*NDDr_36oE?60NOx57yuk*Vs8)v&LClGOuFfw znAsuyKn%zO5lp-;0xgDGjT&k!VsPXv3KjbB>G8V$Wmtb;0i2-4sZ6*~Ntv#31HtjSHpp1W7La~zT(?QT38{cam=TX*wT2K(efqUOqcRyqU`V_! z8+ytW^ftg@xW)zs$QjI`XL}%HUPH|y(Ege6x-?u~MZli?Y=n6Vhy^^*f>9*A7wDs) z>4t{{cu2=^c@&1#pc`bs{Li?qYlgZU#6X{c2s+8Gl@W}g@w(S>eb)rN0d@g!+W|FY zC<1nr+Z!3;pr=ykL87PxY9Y}i^?Gg=8b3TWfPFBG(K-v|2<$d=w&G-sFaq;Y=sQ6Z zz~p3Lkm#^QenK+zpCi&XxY-T$yYQohTum3BkS{})fL=u21=$9vL4r+?4?{k|>(OeV zd5a7|I@C%`r{ze<515#E3=CT^0%U`YU<-0z2$=)=k#H@bB0dUP1O_6Ug%k`!u^K4ddwl-I%c z^48WI41`@e*bR(6@K0_b*MK4{T7JH!JBLG%8Jq1Zv=uc|j)g~rJTh?1r@xHb%HwD_ zyM`t-W|OwO#l=ijW4en44RH11PXTvw8CTJ4ZRfT~hu-2|4sOa5bVbkM<}zfq^@`5+ z7A$Qv57-m}%#)v!Hk-I-e8U%`L@?H6FOeIi_6%fftaR0c#}ucfyUm<$gi2wWqn&1r zj$>-r3M(_sie2jCn5-$BWpv`$=!7^n(W_?Wx;V_uS0%BW(|BH*XwfpW)nrP}&BJ!% z3;$-^FB^NG`MvQ5X2Z#epp#N%Ik%4On=f${Ty$uK#tUH~B&{|#JTD?5cUBXtdYlmt zO&AJHyVQ*D7yjl?B+1O(GkO0+P$h-8SUqP?(BGs{Gxul3b}6@v3-x?qV#-5v!~Nj5 zeI^q)TDMiID&uBPd3eI|@I*UqpO_z-usk%8s9?++CoEag`7*rlv0-B89tzEwzq1{8 zP$DYggeuRLDy_Iqn(;QbM6p`>!`qziisf<^?wMu{ygX~6Ct9JGz|1g5#>vJDr&+@_ zvlhDFG`?Lne#oAsl%u&qOKwDMuGW+*MoXy`+!WskDpkAnZ+79*3l-cnMToSog4@Kp zPDtE4*qZXnxaG=tec2K7m2vTk^w>LGh<8%T~tntcxv3Rv(~8IuHgf!9&{0V$9IJ>(vowMPi$(>c*?rkJfEDL zkiaYV?TOs*!+5$X;H4cZ1he6r@r=#2NALAC`Wg%&De2n#ePJqoGmdoM!uxJhFuW=e z-O+dL)k&#Gke+S09reJ6HBRC`rFr`~-@wnu^OPG}e;452$Fo&|{SU_kiwC8Q{oIs$ zKOBF=31KEqVm8!`FWAH&vYd#Jl!e*_n-paxhN7#Z=y5>&8_67u*XhHiIv;qGGnf06k2aUJjROKUJA_DeDEb1B%AZpZuFOx5MF8dkh4 zefU22$inZ(`VP6vC1d_>EbEZFJWBL^Hrcm|F&`hxddFdRbgZw!Zil*0J-~(Q+s5|p z5?UUX>J}9%gIg~;q9wY z9Q$O<^3hnmX|DOBG4XF?ZnB$yG-j!V`8;#&m{>~Y;s;|UW6NyysxV~S-kIVKjLmA0 zCJu0+ioH^BEw@zl^4QKDB`-^xpw_=MRuIN)QoGj`j%mxZp(8eV=wp~!F>ZBwWW4W^ zt)1?+GIjZ~gG;ux2bsF9u*te;qcPAv4$?SPeM)?KY-d5qrm^jdx!~4`Fc!n-8C#Fb zu_wnYPma}_UCo(e;wnn!A+~aBXdK2jX+|9vJbnGxq7T{jU<|i?KieL3fsa3qS^fwg zTJzmw;v#8d9k(iQ)tF@kjH1ko$HXAH3_g2ETdx($wc;}A%Q`M-*+NHNEDOdWKF}gN zS(oG_E{fqTbH}LRA^3DDMNkq ziq5l8I`si3DDIMGG;nt~U;0J6#G{4_S|L5sz&*sq6-xhX;ASYa(xnFOGc>o4KIAIg zj*msWt<4%?AKrOYY?rb>;zUJ?bp9i5i7E`&(+7J)z%%|b*T_?07hDRK(zzw_>vSJtNyJFNPR@wNe!H2J6iaKt(U>UVZ zcYnI~iVs~g?DgRN#q!^5Cts5`H*?c`ROE`%!~`9-QKKzk#ni@q&D_%p#YxHQ z@7#9JPp=^pH`C6<7B*J>otvrfEZv5S0VHl2a^VeiMB~X%x$6qWDyi4P%~Cugsaw%a zI;DB7+?+{wz!8qWz-K#Lma6&a6rsUiI^4?LqnIPz@);Mb3PS*+{!-#++=n=&W#Tg~ z-=!Qz>r+N_OADofHqNH_qg3!Y%Ao3{3EiEA(xuP2$0zNElZO5&(!=fClZr6u`*!Xv zwrQKR^&i|yHoj15{|C2~-M6hVzJnWL{f{CEd*R^?um>bh#f=Q4zk6!q$}hRe+~n6` zn9@6<;~-y^4Wf(dFeK z4Q4P9pO9jYanlkWBG+;l+67w6Ll@E4%1nwZx9f9Vigq4x;$6jcb{BGBmIp4{`&_8& z^&6`v%UbEpW8AeF{ufadO|G?jBI^7uLK<6I4th4moD_X7&Q`-J$m^oic%0kl`-`>Y z7b^^QWlzN~{_DfMg04xCUvu7y%TnUk+zkDjWS_(a{mVM5a46`n4qYE~7lZaXbf-vH z;iBMO#Pe2UqR&TB;jBPoI!n4xA4M!1_XD||&EY4m`#0sczbU(ZQ-1xMGU?cF>aVOd zTxftIc)v|+Z)_Y-)2ThsFUWGLLhP_QS|UXiypb{$s`ZTfOp55@Zc{W#o4UB^`Z{Z0 zs+&q4X3g(gLsQ*o+>whl^f8{MmP%_@mYZBh=69@p8{On;sdz;p%h26+X*OB2R=bIB zQ3|oR$$m)u8!1cG;+xj(d!~u|>=q?^tlK|!7x&n8VyU$tQq43siLW`Vcfs0C{EJ=3 zt5vw_6km1Ny$ri4;!dj++09K^=-aOpUv$_QV6#-zldhEN6tTWw#WeE*ne1@JkC<;Q z$(QusaJT56v09$7)|=imKW!CfQl0S5;uhk0c1<{bX??3HMPF?zPQ+bS@%k_l zVHT{RtK7t7D`rIW1DK%1(I$Zsjr0b{B8udHp&$fSUyQX0ik2@?-M1gGkKW(Cm!&7#as3zr_ zZnZecy8X@R_=OgEKIUZIe#k>~a%e?XPI!~}>oDw%>SGhb+Yh;kV|JaRVT?NLuE1`J zID$Qt@IgoUcU++U^l<1cZlZO#Np1baQ|z_7qel5NDbYNB8m2~h!fsLW!!VWE4|bjS z{V)mVWOJj@d_0Us^D&v&+il};N#k&-bBDUpZ|^>S+CLU6c(V~N~*A9yts3oB}?;l2Uo(Tuy+Z0l_x};**=v+G0P|$)=6jg`ieDP~7 zrgvLP-jS@`+(Q4o!%__QiZfQ>;?Cic9XI1IF-muQ&js95G;CBCmlp5+M77su-a1?{ z)jkTCpB)Z$a*NzHykG{i_BF=*r{TUSuwj_UKT!}#PIejN6j9z{sxK3_4tJ<|H&a=G z$PY{Jeb4zX%NqX2CkozKGWv;`!`r>xdB3>K;erIl{D)zc0#k)~{czj^6xO>OPt7cD zy_`0A?93ca;)I2*;{B4#4_rXT{ll|qX%V?s+3_vaDhCK1u2G&?0VKv@KDgoVQm-;?Gu$aJ|xc*VxsiY4;U_W!^K7ut|k0X z)B(Zo6r88v%#65#%3e(R-S2Wz*F_CuCP zfgWM&RKukELTdhz3)N2y)lCeUCx-fb+-CZF9vdIBTpFr3A2wea5=+Q^XrNo@Nf)XC zv;kzmsP;{=i3&Ly`!6G_<=@a@*Q}phsJ7T)?KurflKssg&uTYlM7wJn1&zhVb-kR? z>-5X}1zjB~h?i%*F&jlVA{&#p$f2Q#a~gP%z2D)2`C0a3zBptV9x`>d9Ad>+$@R>8 zJj_EwmH~&^4l)b6FeKN-q|DIJx{09vp(E@e7jyrRI5gB7hZ+CCgly0^B%UYdS;t+n zav8*Mj&yx`rs7Ye>yvdaK$(^9V*X*M&&W(Vzapqx(w^YFeY=KmJ+h6-KOIr!fym@* z<)EX|$`f3$u4732h&(4^(k?S?6u%&iSUZGa%eVWw*iPE4<2EW|bK6j#fe}9&+P>4% z{Mk^bfeC7n-a{Z>2Zt;Nhr%zI4-Sd`vi~OO=M&tN)DI|cF-~#yB$GI?j-*lD*iBjA_48tB_fMP-7dTx%aSIpyX(;Pco)#kJCx`m}4v)cRXyhMx zTJ-groYm&)dyp|dG8DR>cPw8vNlSm`ZgqQb$nxM&{o4uV^+VzZ(lbAEanq9I^1}Vg zf?y^%40pAZ#TT54-{d4OSF<2>{mjkMMGuA6+M|pbsyJ{XO8X#SxZq@Xg)3PwR9tE* zbx=5n4Td(l98sQds*DevNk01q zkM#|%udX{O<)7r{%==-`zC@a46}tzir8RNly@Mt945E2p$;{I#%Y1xrj|<6TQrAf? z+_UYbANyM7Gs*K5r*Zpqu4fxouq0Kx&cn&S`G1ekr8{x0!rTxdh#A zS1WvjT_PT0?6;l7MT59^2{)L8*QTq?QG=oP@Vy0|B?||4?paL9FNuVTrwqI+Yv&E_ z+(8=k{#_cLE(*k3DO|aFx1sN0wHS8OV5%7G2p=O_|8?l#)TkDx4ocl;xM?f>sp{mJ z#@-}?cybWN`nIZqTx6w}ua_!FJ*W+%L?R<=y%fjX1}$zVkQdBugJS#uLI`38C0!pk zZQ8^DS_~yhPLBD?K_@u8#`{{MUe7E3$(d>Wq`$P%ofS-EEhlX^8tJl%bd~hIoq(- zQB)16na&74gO-RX>;`Y9%gH%XaY!&a;G0S@gRS#%yGp%q6 zsv6)m+J&Yt7Au2b58vb0i>?Hf4}`Isg4IDrhjZG;!g(icLd&A4t3{s&{Z)3s zZo`@DD2TlSNo+vE3O48sY1TRJmPI84a~1}&@)Dpu2(SCb_Xc}LzD$M%vSHA+0p431 z^}9%e&R&Q-E#;rX#%MhkBEP?|Ad|{7?g8ojbKGtEO-RS487!O0blw(}HQ>w!Jv5*V zH950<3v+LQ;=zG+Oc)d6k)-v|GAS)i$hk)p17qg2MzMBaHnZ4cg_gPC#JF)qEsCT8 zo}JC`I2IL!tXO8(c?eldkZwS$HSwCoboCZ=2Weth-?weT-Dfp$cQXci@Nzd2mkn%Z zJ&z>}Se6acn>L#h2E;8FP=Pqb+Yqc3;|A=%2v1(P*jG1q;G76o8X2#k^%bpgnRpWu>3`EG z(tAMK^e--YiVGPTon!eHqZTT8342U6Abs#J?pE*d3ozFXSt%QR&jZxCdQN zQcCy$OvgV<>&|o2^e>Q8quQ_|WK-B8@f*@rs!O^q6jyna@E3~rQV4Rhwp;uYMjjc# zp4!=D;m9?!DJe#5cX<6=_WJAj|M1%Kzw?S`UYpXR#YTtck7Un7|LM8zf9F~JkaDwj z=Tw>!`3K5OuHwh%DSxC5;J1n&$~s98X8J2!1^ z=l6+wEZSd((p7o9b^mmMfyt z_1_#n_nTvTRZzesTVzvb+~PBrpEv#10AN??EN;303#y|qxsGUn4a&Y?Wbrer^zo8E zl4qlHP}T*lQ5ylZ+;&RV+l^s%(mevz}{t6$)42TWk+rw zUHELC)|@1}brF|eFzoRV6E8S!17abFF!1c8Bwo@Ca)XkP7a@}=+DK7O8XG?z`qtKDReDv zB~80Px4~Yp6}53l&FQ zY1B5mTnHr<=F^IAU5cvAstZ{k--yrYLWQ!)wS>JO1r2eU=}ru3nP-$GDXWUdkHdR4D<|;26v2ZokGYCI=cM6ZIiKlS zXOCU(tKr1UeXx0###Bqj*<(X6!c~X!Icdgq?y1>6lnC7ItU9C=&y(8zKmc{zYO?aK z7%N@LRJ>jK`*m*Wf)i(Vl<|H$GSL<@qYE+@6=cRBT(SG?jsi&g#BcugY*v*^#XByW z{9VjnOU^cwsj$G=>Z$}p`?9U6BSi>w(oV91;I@9LfpZh z@4Roxu@~X;$vVSXv*E1BQwl==s)n89%sa`mhWS~^__St=Pw?5|hcJYPvBhUKm?7oW z#cs*@8O;p+=U2vcFM|yr9jpW$KjL*L$Ogz11Cy}^B!S(56ZHJ9?y?OzPM`wwo#Tck zTxYe3f~;M_lXlQ1#>(22t~E||=WS{4cZ)G(u&yxEq)0O{hP5xIq~xxh!>pYd>Rfl) zhU@AGvhVa?8>&w2wWTZH@o_)F9dR=MWW(KN@k8m@GnzjoPDh#^y=t?0kJxOdF57II z!52d|n+E1CfB{$VI@Wp63p#)qBqQyVZmSIyJudBhR`cNO(`P8YDZYoD>wdI7_5QgU zF6U{3_!F6~oyGXBQ`dcGqbEw=OCEWeFu$*4i=E6<2WG*Y?{coLg97_PO3BkKivEOb zd#bWkXA{}PIA+l41Z)1tc0?&OXzc|v&6=%x$JcXEd4e<7*^W3-rj|&D@-&+jA4_4+ zY4Q~LlKDA}zv36E`8mycb|66V->TW=Q-l&9Fd%0U41@Om;1^d?TgkHM?CHB;dA5ZEN{QR9F{xr)<8^Va zQq^|N3zLhX-q~bRG->f5dXf}vL?%C%#*CUb6*xCxhbBa^yRmtPCYe)klJl#Y6jpOm zdf-(}sat$+@pccx%Rwnd&yu}w{6*uf_oG+pd?qt|D4v-C4lp3&JXTU$#%)@Kpewxt z@23z@w|FxGePG>zSBU7dW_pzkA8DwWRt2NI3&)3r;7uU7D+jdz@B1(YNIJL{ubk)^ zB)Jg!HP9C+1ifw}6uV)N3rTwyoEh~OMj?f7@wzC$dvbya32K5HBV;dR4y2mJhmMdD zkOE{nWEi9Y(gTtbTM4!4D&BqZ1W;Q6;{?NuYeEBL2j~V?kUWDC zqQV&g-x2A;KmyQj#E$`>Zgef5F#^?HDfA{#2|59Nr#cF$Mnb$PF{n~4WH_L@jDbu5 zDWK~Xe5V@bCeT^IJ)rnIl&*#mOeo>lnf7W7fuw5WXW|t?s>cx&G1X%aB-LXZB-LXz z|?9Zro*04<17qyBr4LLAp3 z^n(9RJ*OamjR4;b>k5GhP~GnKiNlMRC^^stx=lzJNk{Hm9J#NARO^w;Vkjv0d61O* z3`oj-5+vh{;>TB4hGjTxHqlLB&?D5~Xo4FyQ$$sGFibn%{@aa@H%3w1M!4sJAE4b! zqBf!@fmrBw1KL_3{0Dr(2XbcN6+-G(=}=I82#{1AVUUy{4@gSTs3SqWkXjeC4+OLx z@1>a_8$dI_ery75)RvCKWdM3@ybI=|Kn*`@o4h~B^w#gc|mFTIe|UOFJDz0^Wd zdntva25f-zLp{@}!Fli>2sNEPTm*FpssHGv7fjHELqmu8Hb5NVKAFrkEFAO%m< zzsDTp9GWe_07^j<=mGsJ(C}b?CJAjM2Ii3A(2u|_B^)`v6}eA9JMpq7&KnXRk?Zg+ zuPz^U0@UeHcR`J>hTi;qCf;Fgo9EzFhb@)&%pB*NGk%!hU|gd z2zdsQzY`4-_MN~4_e~M#J&d!4phkJV8d56(xTmyA8?0R6=2B|NF zr%osuV9*7b0DUiHG4%bAR*(%fKKj-P2$<8LF+qAjHbVwNh5-R?A|U-BV<5L69077- zE~*Z)8!`p52{IkB7&1eH{=Wr^Y#1a%=0Ju+=0U0<4UqlFoe^>bkzwMAKhjBm_-FuT zDaef++r+JeyN5XnZU zQ$P&x26=F^1^$YcBU4ak=uy{UXh6H6DF?Z*Y=CSA9pESk^o1w5$zKS!P}70KbXaf< z)X5+hoIzxCBw-IE9eYS85z`UEUC?&`I36jnMt%lUoIh7_T=z!f)NIEdL z7?KXvHA2#%js{3NC76yh%!8VaF3g3bV+iS(!re#!ZBawVMDXZtmC!eVZZH72DJTsP z4myAbN}SdST~kp19msJD=!ZqV87cb<8XeRVfcHc0ff4q-D1lN)4qc}o#eW8b!EX0e zL=2e$yA;T5PzvzHkgg5%0A?x@00fW@azG*2Hx>0?3q=#?06oBOCWcA`jt|&%xsV=^ z21sl->4y3YI2s{j>PDf6m*?N>w57OTS)JRSs2!}Z>GrCc|$xvql`rIfN zvIum59xxh&cCHRa;2;(xgKS^~<)8s{fl=T$0|@}@K{2QVO`r|*f)T)kAip3R7(gkg z1kF8EK-!_WgB`(bF* zVt0hQkUHqMfEbVjGBCW;-+HLCAVYu^?hDiK@!x8EGzbi^D+Se{6Py7#FvrVSOf14& z1DIr#G|+-rkOK7C_{jlpbl$CLxj70z@(u5GjPQo zWf622yK${&W8@!7K*CS{f;+D8DpOE8x23rBPoTo3egWF4JT zr$Cy#(THMTw-0VR;inw3pZtMRn0G_=f=-Z*a4zG1mlec7-HWiQVP1*E(AjWwC|qwc z4mpC<(^jyw&ua@DSW$likPTo2gdyNIO8Gx9mwkoAAg5=LQxC`xpoTpjkuh|P+63J9 z!Y!Rc#?3)BQpDd*7I>)fExc~cY(|K<6$3Jk@uF?u8qiMG{OGS2Ho{YaA0upm3`8!y z;UN%MPoPI2kOo9j4yr*jI0`ckcDvzz9|(~nNWl$V>!iTe$%5enY}B;@YiF2;KcW=I zqyG9w16q(3{-|1eAyd-OkYS&mM)eO(EHvvuH|PQ_p!6QJVAy#>9)-RWbPrAz@*zEL z_Y)#8!45#b5BeM|w9_GDKprRsN$|HGbOnoGD7poha86lL!)HXyi& zfdYp8R;=9TpgDn9)LAdw^pC*t8d}dx=uQDO0-At6@Lsfj(0LjDV4jQ}xAG814B5j^ zKV%N{>UpS65Cxbpgbkd4{@3qpwgGr7)i?{`unYmQ3sCKj|Xh9G# zpsQ#g6A)l52!qFL$VyNPszEx;)`JXS1x+vuzYp%fQRr(yDKLUOun}~@O~ZU-5~Y-n zQZb=a%R$e4{e&(ax$TAJnuG2_KG+9~r7-J+x)kcpL+*mM*ptJ8wcOe#r zEeL20WD@9sS#_to5CL@&)D2LdAqh7A3_Ii~5JjH15Oo`aDuPTvB!!ey(1oy)p+5@q z+fcftkhP#0RQ~8L=p$jc5P0CC)(S)IZ5T>HI0yk@fHqjFJmD_HP-M{ifqn$s1@{wR z6zals6gAiaazQ@mKJ6|{LUsB9C5VN;D3AcU(Ox_T+*b+R$a&OMXCWDe>p>Ab?naIt zgnBd@uib+rN6ohbWeOA z!i<5w5G9lXI-u``KLgaGjE7JQ{T8UFB9TRq{*VD6<9?(C`dmm8hypt72_T>iB|}{c zJC7M2LJ!pRi6Qn2&@(wm7{3k^7!2ER1>X&IGw_3_a1izYCMqxjvo%Xl+8_$#0=j!l zcaG^kE8XBtS_S{`lK}V0U=7#@if>0%gMIL00;Rw&7ER|fJtLIELvfmikb94ZP@M|k zp$W7BD+pYVMGCg1^2Ux+v@I2FPet2QCBZxo6oMj93QVNNioY6?^`t%Oka%ok<^3QM z1ad$*=mma%KmzsnF@g@j{Sgxy$Ns!soE(A_CRULwf^840>Ua&H@Me@s7mkSNLEb5ha5Zim;)Lqn#4y zi)gx2ke-GxK{4pM7xCN!maByu*WPE6o%KR7X1VHx=rIVqdO9|;!m^IGAEOnq8;Y<} zhw2ghg^id$a={i*j6^ZWIK%WphCo_%2XE}+~-4P0Gya8U$&0I%-e{W7-n<^BR%Q}+<@wYo)*JxWbVNTwE}i7^TGOn z?hK}9D&?E%bO)hf)9W8OWB){l`%Xw?mg$A0HE-KDXn$m;#l}qtmre@ohaMXMz?Bs( z!`()^nY5r#+5lRL&E`brHUk{6CZs(NyK44e`!>N7U+8PF2T2@uLW86|Dcn`F?UkI@D)8O{vT;`Q1uPt4K_F^rX5QgR?UT)8p8G>T>S=TuKv z>|qj9r(jV6(pO_Ob2rq<7>rOPdGHsq7K6mSC_?zlo5Bbxv|h?l3W~7#EbS_XZ5qhz zQ=4r9?)@^+27Itzh%!LX(-R*a8zuK65ZXqW4hzJ|e*&G*r{9F5_E5}p2ahgK>6AV? z4A2`9#efJn^g~aBP72&>tjp^ z*qgCGW||AbHf$gh4oO$~*~_r|2zENTTQ`5YF$Lf6Z=cXjgB^`pG=lBMwxkByk1GSa zAR^*Y?A`T`Cj%!@gX=&zvE&wXLXApfsASgzrxcVw8dpXuMzNMOBw&rdFn$12EsB^@ zdK4b0h$*#H#I)lK4U-A*OvO$`PPw3B&wz|Yj`2h{a&$CkbQEv7R%~VP@^+E3%+yig z+tU6EqNX<*gD#C$vVGsP?Z3i+^urIspd!KPhC$@OXwbmuhJn%4!O^(EQG9P#;nmU? zb6|h{<&2NCDHYm^fJJ5dk7jwc;3J-AqgB`BfHyEN$FE?0HA+0UJ~i5l_XZ;Q(Fa}j zH~H}VmvwjoE}oEtY04S;Z^+UZ8N=@I+W8{S1}D*@ck_`^@hDkP8ZAuZKS%Sgx8UtV zC#cMAqn0m6>%JW2-A_zjOs~1jzUbkp&H76;UPAhgJgs&Sza<&eHd@y<%DWvsLLWZH zXENk$USgSfLOeqDP597H53`DOY-HtV4Y$Gxn!avDY7EeL&}V2w2wSVt`{V3s2WYPgqNxceA!Hus^DHW zbD4^N<`HjRRrYqm{oEd9W`es|LkZ|-yY)^v|Ii-dOq(gHETz+v#?eYH^I_&bf2H^i zxhXS;i)EzfW;>jkCYe@}!@g)`YCfe{Nm1UVteixKyV=S~;$CuVT8ETIiMwTgPEG6) z#S*d#dT~_GyIb_5b^1}WVf2LiY{e-P6++fmpThk4(YohH%`Z62 zS&HHa%_NgT4v!${f*7MZgf>0l%dZDR(gIJw;X||P(XF} z!i}CBReWtT-!oco_pmjvEJ#6)mdlRras-rh%w|q@xT(my;by7qX1T*n=vOxLGKZV2 zXKuK;O?D&PNKmKEywu?)G&eBP5m~tGXtBdl#bKLy(TxN>iDWPLj}&K+6P1fJp;b;> z=TDj%DxQidNmK?;;wLzmndPk%eaTKPra1W^tLxM|8@{Tcdh z^gp`gq*3u_vY>8h=2o*oJ=YLz3>$1NgIuuT3$$65MQIj&gk|{JaZC82 zNoAj_DU+UwdCTf8F>fqqnnJ0Kq>|x|DFtN_{>JBB%HCI-Dh=d$!6F0%MPKA1)ig?H z-A~tQRAf*b-SnhA!oHKyb>IFj!h?t~!t(X+XNGqx6RT7?BWJ9O+%YE7Fc3> zzEE+@E*0LC3)s}-jHeI$B)ppZyt6)2sqXw%#WQ$mE8>}!hj;ym0ehDvMy$EE^^xbD zdFL{G&9euCP}w8}`3-n>?ZN8-kI-w)zQ-*wn;)x8go~G zP=K+=l~U)77~XU(VAY-7Dp#idE+(S1W&3VQ+}`c=CMHMHO4cZ4fd1fi-nlXri9bXm zQz+|a+^}lX!==W#+-haw(=#E8&2DLwIlgs=@fme88Qz(X6P!>^EGvU9m>TSf6<+;e-CG@A4XQF~Ok>hu$+}&lz za%+L}s!EtuOtw4j>s`J9^b<3`qU9M%7N0+_bAG-I`_*RZy zmAZpG7Hv)o&g<-J4@Cz?Phb1X^+dX@S)gQmlhm!I4&HT@SzJUeTTO$<&1HvMe>nbK z;NA7?V1a2!Ioa(ORVwc+5lBT8PGh7wmHBD_FWadb*rW*+9` z_oh(7f)?U8%!$T_t5*>;#)oJNx8XOBXM%Qrl7VpsF==k90ixSE#-n|^s zjZBnTlEhN-^sMhayI48A&%%^*6$a^Im~xta8^i1}De5gr#eX%#n;1*Z)m3HjE11xC zr^E+uO$&Z*MbLe_*==FW;>bIc#>jN1O7*k8f%b4##=~3B_xPNU*~Kvdp9Cb>`;Ho| z^A#j8sdFR|U1t@OQP{FvqSnbU@Ue5%o61*QdDm9Fnfi(J`fRK|9-#Df9*hrup=cv= zQKLlSOM_M|Tr`z!|H0O-U>;Mq-y=8IsaH{c3xfVarRX|KqZH>lN|A})z=$ia9=C91 zVN9z<{bk+k$i+b`JhM7&c*WJsrn+7&I8MuyY-O6-x+4gx%nhrGmZdo<+Vx5%lT$!- z-y4(5oY*vu-S5LDzRGOd!Ni91u7}NHB*n7nURD*tT+MQu>9e$X+05HE%v`oMaW#`^ znt1qic3U)aU$pDYth`N6Q*k9OhxxB$emfM`p}^aAs(2W?Q{bb>^kLJK zdeyGfsRgP2nW+J3aWSemw8GSYt18;hHr4-XnGdteM^WIzX8Jg#Db;1EQ+K8M7o-Mc zrUs_PE!lP(lj?PKTR6G(yxQu+)cYvPeArz+P6a+(rjIgB$+xCXtxxqYOAXkS8d#7z zEi?6&w78|)W-+O%tMxuinU6xh%ZDxSamw`J(v&XssZ+~R{dc7X6r=`brcO(XiBL`b1(uCTV1qroo+0A-Ssx_Ga$zJmG@e6qqqjmK|WJRaI4fuMqc9 zuDZPxSD*ib`Q0m~8dIf<$%QfRzanj)r@SRv<;|Gix`H8|ep$x+w=3wb_&x5=wE8RR z{n;`X)$!D+t*QR?sR3nZI`{_jFIS}6NM*?FD6?lN^oOV1b(|dx*x!m`nw#js9Ctz9 z1FAY7D?>5;fVu5>GLv(#W&ay}=%C2D#c)M(U!V+p2vHr!$Y72rvuyPE#DG#b`h(%{ zm;B^IE|s1rj=qd3#-K8_)pzd&WIa)h0`N-Xyr=*^W>gI*kyUB-3cKGERhEhT+j|r8 zy-LovLUNg>oZ)l3>S<=vE37Jv;dg$w#C_&t+2(auqdAarIzL}IjqM(hi|h^*S<8rAWGOd`Y<2r@MfM66*)Q9uW!)$= zN6WHwjmU*Y!|DIM&=xofZS!#y7o}o>6Ccm&+V#c_YO z)!(UJ%8OJ+sEbCneQPs6VJ`q`GxymG;J?{sa{qs`@8`(=y0geP%^da?vMQch$O=!i zk^IBxC8oDM{EhYRpW&+yHt};!=C}xfJG#(AOsCY{91~{!du7e0+CmNdznXZ${~@{W zpZTv%yn>&?yOgCm$GXP)3-7(S+T}*n@o`=v>xdoWP{49|5JKdw_KC2wC>~8^L~bfH z2$i=if8)j=q#dbBvJXPipB5^o>e0Opuf(Fut2sRGbMc7PCDuD)<%_?M zv-h&SN0(tDw`>fU)iVb@x{PH45(0udHwPom%?JMmk|<QPk`^vG(YbIQ^D#fSm5#qWh zh%Iw+N^@cjRh}tT+PM2JGcG^W9lQ+pc+u1J3uM}c+r>}Fz5Vymll)xVO$a>~l_@W< z?8Ryc*_^rcDKVeiJ?nd~9tE3b8d{gO%M#MFBoVht%amB*2i)7aIZYAL`Az$)OxX%1 zX6lG3~!RX0X*IQJkO6_XVXfH5%;T9s^C#UNTwtXd2FRwdy z79h@^TiX-m3xcWuW9OpD8@A?B@@r9VU~1D3w5+CrXjIk9&a zd0v&c97&Rs8?dMI(OvNVefu-A_Z=;g>>ar`Z@Rp52da`5wm$lo6CY)EITEk{VXVM> zi~alp79s&V79fPn?KCRxx|7KWLlUT|BdQH)m*>pESMrkzFf~70fbXHu@HWW}57X_l z?eOuGNfB(aBDo&Hm|=W#{%knhirY`inHpu^5qs_5-lEmhO^esqZR?oCbbDc%ayp$tS^1boF*4IxuG=}soB z!L|z(w1=waV_yBJ#a=z_s2bJp1tIng$tWhHdY<$lac-!I#?cdZ{{-1Wof3t8zHPq+nfoT zr_l9G6vD$kDdX{t$EdrQdgnZISk-h$Nup9PU7C zoFuo#KC`c!wlb%P`UAdvb?wInaXZC&qm;z8_B7D-7_KFE76en5YWI-4R4{d^V05WV z^6arIo=J&m*)Go>nU;`L!=)wBb5*=bkL%QcO$B!{1*`(2&BB0STEcGH#^7=TE7%aE zAS2u0vB$u(=vTps%;7H%scR;Mmfq}C@{Pb1s1e=|j!}62dyti#FCYFwF3p-r|BJ0> z4~VMhepz;}iff`EBBH{|HGJ%QQGBy2B0ef1ADC8xUbV75UzL`%EEPgpsadOKU%RVU z(FDAk6>0Rj=!fQ`Pw}mo__zovKFY7GRDS2o%mwQE@y9ZE=A1L>)^=L7HYuSq-IiV3~Cn1iyJAXA5bqiA&>l>e$ zJ3S|t*ow{Fk?JEOkJ-xD`PJ$9IFsjrvAhb#GG{@E=Fq9iwyL~Qs_|Q}OFIb~oT%Vbp?2D~+|llmJ{|(8uP2W_n%^TvY*A z{t>G2F!T}=9xKJi{QSxCp>1{A9GI9V=A@JP7MhjLw-cd>GGWvUYOLNPpoJJ)Ikb>f zr#`R;W?N{XH~&8Am9)6C%wMroG{QwZ`@_T+?7nyJ@Lu~$&#>XznD)QlnVqCbi%{uO zA*#Ffj;C=Wmk>on7?hMB0&b;kP|}K75a3;Y$KxBWjrBN&Ydg0;+Y)OD!}<{`{2SI> ziscI798cWIcm)H=$r`_RceyrZt5e?{9rKCs-46{%~ly#$P!O z^XI4L`D&<@)u|AEZbTHRU*+HNdR3@oE0FrcwjN$^PP$f$o8;2Kp?^@9f;Mb>qNn#Hnv|6y8Z*HODtPdv=6w zMbFW$(BxHPZ39_LbYx^gASGC&VO?eEE+MDlLo2iIc-C!P|y9fo@Fd){THGr-x^syj^`w%A~kr zRFW^_4vIb0?mKcD65@P&Wu!_PcZWu7#nX0|q`u=1Mq|zGhd>P=KIqdK1iAcs=ON0s zc3?J8JTJT;cY9ebMdZ6B5pL!&Zumt>QZged9J2#gpoW;#?K^U5;4vl%X!whl#uSum zw-#ARTl4qPU|dy@o9g!#oY|r7cx*3A1hyG{qhQ6xv|miX!z$f?-u znp#e_r+TMaH%}cH55)Y%Ud4ndqvD+;2X_bRt%8z*@=(8bjWt+v_Vi&5GdqXU6THMg zg&9c;;(J(ryFFkTFy8IZhtP@VEf#J}2KRG8hoRM{(r^!&)KnJZN(GHasf0cDQ|3MzBa$15$cIattvj^FWwv6ar><6czG!8Dsn$XjYnudeiukL7D( z^j<$1upCLQBKL|hZVu~WDz2g9iM2gwiVUZuZwtecvg`1oENlEX@SDhi`wV_RH&O-t zKW&(ToJEku!AX_LXkpN^V2r`BK^T-&2{FYS$eZOao=5o`m{jR{RFy}0TuOVCJRqr3 z4?PVsp}oD7UjL*@*!5uq%P7I5B#34y1dmXH_9Tc0T0tq7o0Sr(;&9@pmFy*o5G_fV zhjqB1l5JFCGs$F?tRa=~rX<{zLKS_FH-6;+2C!d4htat9PzWj_w5f*sC6S#9;o(U4 zSBL;>S=iJ3myNo+|Eo? z<8H+)EJ6=2Ta{Tc{xS8~ocNks#awSqIc|On!#fp||6zlyGrRluE`>b)gAiS)4ty0D z1NEu7)|v4YUIF^9dmfVVdmG9_E4*KA-RPc+&kK%+_+4H62icxp<&@V8?-axKLx%ZR^Z8tTW%VJbNp4%;->eGJ@cCV8W89r&R9# z_?YLr;#+>}-M6j#BFB1`v>uqarPaFV6$9PNZWVT(zwFl7!n~QUEwRA8>ML5imUJ0g z0FQV_5jhXd&7BKhmrZRxx2O|vM9jLi~!#oE2>a8MYq1ye*t-_8-@-`L$2wXi! zK#-obBK3ZeHU34o0Wp5=t=ScwZqkiwa&zGSY+PsD za({(r@COx2PuzkND3)=z+;y0l9Gd41i5k>e8iU#H%b2H2jOx=$8g&a;y+EFmqxx`C zDn6eh&*@Qpw2}j#Pm$-Ws6HBL*eyF`93vTXzUw0m#`6E*W1cr}TOTPIpAXV!_xe6k z53Kg@8xxgqOESQ-GXZWHLy-H=!`T_5=lfJGpTLiZ;6L4#=j)fdHP=7$M=6$Y zx{ZLnRvfB79_sGuX*E)-@5Qf*5I^3g_x0-oyQV*OyDhaPpr0VMD7^m{ z5-RCBp|P0I_(NSBiZn=r0*&>Tye5k`uv;J6Yr6}Hgd>qd9r<_vLIfJg?~QejKpMI) z$l(?FoA&+QKmP~>Fg4DcwPOQdvhsKB{ra^5ZEFc65m(g?E(F#FiR5$d7@n^q4{!8$Y0O$ zg*WWoZsT6?BQ9i)4ti^_@0qvX^;g8oL&Bl!;1L(cod&Cax!H<~)w~4svMORRncYfu zMEdpXD*THNRKO5dr51mEU{$ZstCtK|t>)k=)hCz!I-^~$h+*H2=w+MIYsBOE166wO zeGFvvQw^}T?KNZ3tcB`)mtK``gMtTG&=(R9F=0@p8C90IZ-W1g|CYzE4b6*CTSK{Z z>by*~)ybvxRasm&xj5)cmN!XxL4-B5^*T7gWp%c$?1}kHl>7({$*#u zHlm;>#Ne05d+v|YwrN#~pZ~PH-Bw)S#0w7xve4(duKQwa&;meM=zK)F7Z zWsPT5y0+7}Wew7}o5fmTgdI#tUf14N)*vRAV>=uRhaQ@C6Hd6ns#$Q@Ge`7I!@(EU zz+(UM{Ldf>=}0-L95DHh+lx~@Kc{QWYT<$>VYHTa3BN`_BbB$}^B(5tf1KQ3J!w+w z1^Umjr!;I|)?r@3?s)~?@dewZ*qeDdKNfTHAGSRI?$s5s?>dXylxx;m5^tKv4o^$w>y)Wx?w z@L9Xv|9q?56}EarAM_Z7CqT4yJZq9VEl&0Ir1S;e8LxhS?Gpx zfgqISRp8|FLPPJ?@vi3^dPl?TBQr$s$PV8CkL)A7@9^&)nYhCyeb7LC8{v&c-+K+j zA(KDrqBvy7kc?EoVEES?efbU4M-o5n!W^;#1jbEaTygT^MxToT3F{P~AOU)f5fWc% z^etvEyhnj4BQOgUh88vY<}(<1jRI3jVCE_eEok&TuQ0S4xE`eik8INoPvKMAgeN~k zSn5S2|IH&?hebHOyH#(f59)hc;xilG)AVkYXzAT~ZD?XdpV3h>!=u`C;8MW20>Rj^ zn+rRvi+9iSL_enO&Cf>cf)0uE(>wQmRM)0Yf^%Oi#2OE`W?>ZZ^Y)ejo>`A+`*&D| zpw?5N-sZ#c(_h3RS)IAXYV~k5x9Ez-Z!4rzL=ByRR!^9M#uh2aT zHJcHLc|$jEG!wsbgA)IO65mRQtK12Uw%)V-ac#6?3{tXI=un0(q)6@VtWa#}7X6Ob z`2CMtboV-Si*8`)|F}h!H{4gTfQTOAkgxkXVjr?5sPH$thw$TfR(;!#XT&G_qaxyi zyKWRYA-LoY$NF`x3o8mO^3Pu^&U02oKOL4_G0LOPe_53sxG`=;U|+aDXm!R(9RE0pSbSnmZ5cqI6Tucw6PP28Xe?noyH-M!vBzxT)S5pd0(ui^SSZeY~tUQ_xPrWMXA ze5G(x@2?9h-8T_A{@V2|X+=@6i2^rWp<{C1x&7S^@Ie}Hk@v{f4(rFb{IlA||8`Bf zgjenX06)XVX;t7tUn`0#{Cdcta&r1}kCXegvFvLY=<$)?1>ce?d&OTFi4?EGC1m&? zwsr}FMS91f>&aoG)z+RNjlg6hG+ z_j|M4Cowl&`$kxnX2>DWl_#|wBJW_9P7`|r;<@|!I44KCZ(Q@VnE*#B+@8e~w4>pg zu8IlT_d`Z{GA3%D4Y7HoiQ1<^x_NYyv|Y?2X)SPqMU}3fw6`X0MWX?}(9%CUB%}8= z@?n>BEts7%yCx*PVea~u)B_SNZPeb=v* z>wpj7EJqWP96x00UG6;`v`?@ljG(emb0i=8o z^A>2rbd?JnF$nu_3j1#gtIKh8)t#LEsm}MWYj8}RbN`FNx6}Q)z!8h^-%@yT~IHDYiu8S&~P%kETvfr=J9Q?s;-TyG&n(M5eQ1&2uwK2bNiQ>Sgv zI_~F?C^_K-Nc_|<{4+b!@`z3=uIW1JQ^y0)bOiFxj3{#JgNcvEOm@G6bn@XMucC|A zV9J1)Htt-^!3A%T+Zs&7fpjV6bf!IKUTQJt^sbCay;Qoes&r9sv`3f%=K)?q5H<+K zKUoi6!0>BeDu4F^_>)#?;5Ft2WWuTKYs3o>{uQlw0aK8WWMwe?_(q@k8jF;aM>8*A zJb~%UVC2WZ3Fys$JZYto3{2ex9Y@hPzqj{bf?~Tv)=tPmXWVy zLEdi9kg3`(>TC6$?$flfVV~Td)g`(>?Ymg-d1I=!>-2N=!Q=JP(fZ{+w5}hW%YE*1 zg!DD(M7?i+9p*;Zz(rN{8w_P9ux$NP(tqlGK`i4t+6X4U*9lfD9jNzxhuLDdE$w&M zhu&B3xi?jtpe`e|>kVJkC(bX7k5ab+H57FGtaaO>TwR3!QpkH@9%O7vfqK=Z`hrAH zv=&Bd&ojWd)(Xsi=2<=sj@qoRF9PfpW3YlcIx5S9Qig;4GxbjUf#*U(*JQQp01;A#Y8OqAGhM! zdiQuNz*#3-WqG`=NR3(xb)F4zYS6VPv_!3GSK;dv@P!;WuzhDPup=9XJRLS^kd7Mw zSke>q#ds83{LwBwRv+%e=}$gvm&UR*59!g6c9DtmkX;(Z3dDnUX{3U1z%GqY5FqVf zY2gREG+cq-Z;)G1!K2iZJ;g6+ z+qs0%Hmbg^sZw91l4CZhHzg(q?fE~z9495z!&lyjSVwK=Lk?@pwR8k}XBbxtU!Xya zkq#A-p{grJjiqa?+4$d?-NS81^L;F=HU>VNR9UCeg=R$5&yTDh*kPb6D75>`sAT)M(&3Dc9l+bLaQw1j7qCiT%1S}BZ^ z$u{X6&`NPpVtk{+A51~6%t-7FG@}!YmN+$O+W~?+jv@5D(lC~+ZyzHn<1K1)(qQ{$HUD%rP&q>k-1z5P`s2mKy zpDQAaMOD5BPuMK-n50S1w<8kGWD+@T(nlcCOeWDa5NIX}6pI4&MR`78r1(*aHs(=W zd6>&46#())iY(UxGVaF;(TEJ!fC9FgVGARYqQW@o1;&ZsOj`f0^m<)UJivsi3oS_aN|JZ`-6E14|B%zT;2cR|NE-Nfx~NL{ zi7xCw1r@?=U2W7b#r8Hl=sKV=IV5U?#*$hmjfJX)A0~miQx0hiKAHERQSv7p=^eIh zlrozEPB^6T%}>W29EO3iI#{fAlY|FRuC#p;3~})~Bqof6V9RiQRfyHu8z1*ObRFG~ zT*XdIRyfJ62SmP>23n!LjpuBY9Ux6Qf!0>}2&9P(YixMBgW6=MtrA=uYGRPqLK<5~ zP}?fikam&X?+_dAG0_HA(KHSRyo!!ZLe&Vj_9_`+VA&pjtyZ@Ucq&jAw_1(?lfwD> zkQDbQ1dw{v6^HV#+UIwN|K+X3SL`rOh4Qc1GrD4iR(#nG(WX%TWxLcFGQ>qLyVRj> zemJD#zWGpGXqO@&$uG2*bH$cD{A zKkQO#eEx^sQBezQwTRuFq<2a~I?d7QtHC{2M~B2d0RauNCaZ^bL0Ivs6(}L6SFQ6) zt{$zr8r*eN7unD%_7;MU#;F00abzFH%BO#gDDpG*jDuHE?TGe_UD~fO{Ip%FWa&6@ znqAtfa6Hv6?F0;jpK3q4`)Y8b#~^59T>KQOWUM61E=detoDAJg!JTB6US+tG?2e~N z6DaXCo@)ihMwmKdCALOHIb$V43SW$HKgXH~r~KN#Px<{}&Yz(D+nirA`023wf22VK zI5_oc^K>h6bh;IeSv}sDfOqjItwr82LK=6K&Y@Fne!VJOLWYFuM(!HUup_Us8CIUs za)uS!kr{Rfnt+khUuQ=2iX8FXnqKxP*%PkL zN>!&>Rp9;LTRm&kX^E;){lj|Ae74u3C6&)uV7$S%de*2b6Cv>s0s5-AeyZ%$tCes_ z1ODZC3*L1sh*B4D@X~RiX2Aq?PAZ4N+2OQkaTJ!cF4QcE%t>txJLlPhu9DF?d!Xmd z+1l6;tLM|%+U~Y~&ERu-A@p+zaC!o&=yi252bIi;de^Z;^IRl+TOhmVRZecq)_ZQu zhH$q$)CQ-G{iXfj{0(#uwn^XDF8xtUt+6lBK`+#S<6-Um##*Vq*1PCKQYiGcXVlh$ z*;CyKiFS!oRQ#yjaS=$+trxi$8IDk=kb-dtTaAao#YH>5oM4yEu?iEQ!eQ>VSmFFj zweHKc(&1X~;OIAVmx$yiX+F7aSDhEkb-d!$@fqy;vuDB=-us7km88l?2A`r zyMC2tFVifZ525Y_!C2`_6b6vxu67WKrunXR=@`owVw8&HE=ol_q?km}O%=(V?b2o@ zP-pw%?Agn>#SSh6T4X^mTw2Fi=wx@15fp2TgaLpdL@Jet5lSU;N2L-0QcN1LgI#)G z;W*qbeZkT^qze^}+uNm0EG<4_m)=p}+u0oxYcpMNT63bmG@{I$V;@hT2eu z<`9N-$k36~x&D7ILXM^YM_n()cOe|j1dc}42GzAwT%f%j^^(qqy9Z!f_Mqj-CdcB~B^`5!#~#YX9H6COk>M*!k!f_NW4HgL&%`lz-x zxc7e$#pfEOvoh<)mu%8$mKHDCq~BRuuCW1e)^8zwSAoA^lYW-zxbTxL{v$||IIR4_ zd7IRrAVB)Mf>3Rf>RDPm2S;w%xNz1cEmOcD{f+{D2AdvjsUK-M`Dv>jp7s9HxUGKB zsyxl=$nm`SBD}jQJcZLRgHER7EkDJ|#lV3jK(V1YZa|dDRt$bQAukn8aw9g{BrBZ1 zhU37*Oczlzok-vq!8x?wO|WttO#9f-!jp8`C+=pZ)rCY^Mg8c(s0^hd;FcZrM7z!=`7@RQ1if&-javY+5X~2|b=pq}dEcsCnoUWVRVNyE6*|{&5*$rZX7+r-#00 z7>pn&Fn0*d6xr{hr>f39^i5_!{0s%CjsRsU44rxC8_!_i-APv21p+fxVd&ID-)M!Q zXMk%A1D-^X{4f=f;ge2a3HfSOWrzxM{*IjvZ z1y^P{^hH`%)$aYmq#HV}i>jhSn@Qu^k;4b>d?br;YO}Q$E~bU;*5KDb&y0BqNKoZ~ z*AxhC(FsdR%yY?l82HQxuD2#<#O(>6v>s~l`#NpiG--Kj_k1KuP=q)%Q+fqTt4AZ2 zzz#TcDZ*cOD_Po+I=a#Bg%tU2q$g4ASj=Z}ith&zJ*+w$c=E_F>#*$K)%(Q$eWo;}vjGu_2_6#v~Bx#v`YU%3UGoMf!15y zLp?t&&_?&;AF)bOGlsC%>Mms%C4a%-FE9+bjaAyvjKQz5x_u18 z`xgxPEX8ayc`{%Xpy&@SdcgP<~0<^GZJ$Q)>co5M$ z8)6Mrfx<^iQ6F~t>w1X)anMkRfkviHhPW)M^A}6yG#t>J!8qME_=pl_%1>IQs>}Xh zYcl1|wMiA^0aW~gP1?=U;`27i2^wgP2+!GY`v#NzdYd$iWeam`(h!ywXWOJ53{{?G zgPRa2ypZ0U4`FC2ppc(w172VR7V9l+Nn39TesQ@-z5FPRn94CjAxc6R7Oq-2JT0D1 z7Q>%!v2H$M9z>jwe{LDDGm^mYi-zj9BCngxuv4po(F0s}coqiTUyePRzig?5d5zM$ zM71uuc0l+L7ooyM3t5n&h+++ElYmnyxJ;16=dDsGNQ$8HbJqNAPywn`%DoIjKT-4? z>v_%LP{sL-9m;tdvCERRuNKdeEMm((^kvxJMlK(>NsqBK59zTiEj$KZ2}_IP zT(*E$%MjkQN&6Lqu{NnvK^OxKt{{xIEte=b-`6G$SHPi-hbrKsZ1jNWAxm%|wB~sY zZB72+kTi&Skuvdsg_{BjluBKfec_jobHS2@Z7aIB=r`2G^})84bGJOYGlC*aqHQa@ zOWM|_K^)T{u{0{Q zUDW?~0Hf%l=V*pD2Da%u4e-CqCj_|p2*#uA2*w&u_!4cWu^*7)4fF^`(*cY^lDp@@ zWAtD~maSTw)e|;*-y->cIgueKCo-0L<}J}i_Wtvd@6SuRHtV9-C9ccblDs9IY^kVx z|GiY!N4!anYM?Whk>x2~qV3mFURJh6T^_pJ@2np->yL$jWk=X$bdiLOV2UDc8YJ}3leehE17>T&EcM4v;!&rl86naDWCgIq~E#%fT%Pn68xfNej%|irg@;Qn`gGOl~=g$W2DDGP88s zb&<*?SD2++EX`LiVZ}epm94;ZnT{t~aFxgOH-X99>u>UAHp%Ny6@9t?!?F!)_Y@r4 zV)dQ5_(R8U^;^{IoQ0WDS?KPsP7En_wdwlpN?k;tE@b`Dbl6e|kGFG{xGpL!L8k;A+$NC%CCgInIV7tP&UN3ce?LgV3tKrFrU9bFP4G>+O0PNiPhO{Hzht2eCuMstEO=v{zM~6 zc&A8u<)S|a7B1)^xr9BI`apjqol(#jqD1ZLVwsc7mY1l`>B}GYh6+u7cJvQ#oXp+Ued$1%cB68QU(D zhoTa+#biB*ix7U6<*=qag!dZb?xO4)7l< zbjSJtr*J;9Fx>(Xu0$G=|I$(s42KmsijBA=*jB( zufx5XNdPsy`oA?npTk%hX}_$$R3w(Nip1`;BECDRDB2~&HrFI}Wy)%BxED6*Dm&}K z(`u*Bjwc&$d)m%Az*Z4@oHKq z5!SFSA8L`L8fu7ptobTcnqDQ9u#5_8pyzl7|GG8Lm-?=)ycG)>_OnT1&7?3bB`){3 zNE@IcVh{Z-hhZ5RPOa=cW)1RvmwBv2E6TFM(uoaDf0{vLIw-)uKhd!R-+kEklapLY2S;)=ICA8{$l*$8 z7knKXi4yn#M-F~lk@RW}899i)`hY3N!EseK0w^1s{2jCO5{O5J1<5MSWodakOjWJf z!YjfeO@jP5CmCsEzQssGrY6@aHq;0=U)!ku z>M(zsDfpxU1fh7}yFVf0HKyfc(79>`@d}hds(%{1c0g&!GSw7c2C*Wnt*3m&tc+Fs z6f5Y5 zxf3c6kLjSA0n)KzOLo@$|qOa46zD_{`iSwsW z>ZUg##=zYXRA}*p8E*7s3OLRbu$d`9KGrP%F($w0fQv;&Btl3@<$jzQkc(W&Y-=*1 zOlCsuH}UO)cP=zp(DOtI%Zj9i3&euVz?rB8C7AKRvyT|mUeE&O^M}mRl?$Y6i?FqG z`NBb8R!4+aTcnx`G*~8wSaj_wg3+#nY`w;}8B9xr{pN$%+VVbgc?k1dZkVNS0MSg< z$3HYz1rwlZWnvSa1MLxx_A-A-1{ZYm5v()cL@bSzR+!seFQ61Kxb41`rvJr^iVV0HyLM$R&H|HxukQgvmPKEJB75@&DCYFnPH~KPK%`EEoN>Y2A-vvP)-hP)c_;o0>Koflw_cR`NC#kgb>(d zmWBav7G&~2nbW90iy*v6c|j;)qnYceI?M%vS%eqa26PZb_M0UupwC2vvt}HaU8F$p znK5`QMM2>_C=~mGWzU04&zMF`KmhaQe*zDMlut-|*Z{rje4aaChJ=vePU@!dH&gGx@R!bQDS*yG?z9L5r&G;VgC~p#f=gj&E@kLVXmS@;Ex*B73)kl|jV?7y zWx&{CEdA2#_r5KC^;67Nc;deVU3b~`>Vn|hz@F)}Z?yl?xxD;rwHoUaHjE)OM; z;&+WOio^c@TsWaX7CveV_us|<9Ae)^IOC65{EvE9(t9n$m(7&e%UByBAS?m~2?qtRy;1qSu9dVco^H`srNafiE2iiOyO|omM5{Xpf@;oF1V8#4XL zE}w@|m_We4#zgimi6s(Z;us|M`*})?|JcG6 zDYWcB>zDIvz{sV<>@A3ivnjFgS*~1vv7KIhB#tykIonEC6@sg9F(lvL9Dn(|Zd=?= zKjAVZM!)@g2koC9n4SLH6~!rV9glSG{O-NEloPQ-BZ!Scrw~5*6f^4V-sbpYNNB4+ zzUsVplOwJVya(oR?GAK^+qJu9R|g=!edli2qAwmt85asEeYjXi+IRlIUb=8d79UPCl~)jbGy=O zS_FgnyPu^G6owXCe4ijgLT_MbULS{dCv0L-1CzaG>CN+pHFVAL$3xQ9h2G}MUht9? z8tBrPS<)Mz>|AWgXU!l`0P^(P1I$8&QLYv$SxNx~o@ivg!oWO>?=_;4p3NF5&~2j{ zd7Ema05meSg+}f?g!<703aCcn%$!=$2waCFJ;js zD8yX(PAJuG9WW$Uv$=Z!WvC7raw%hF4}~MBr;ai7z=U1%jKWa5#dqc`_Jq5XC+wPc zl{TMBIl2oR?W}GZi-aE(p6=2%|INf@LzDZxx23(+FoC+Ts~cfG1D8EfcO=T{?Gp#( zY<9hCis~2!BuO8G;A4E*S-OzEX>^iiPW6}QfQgMr=t-2UqC|(6->s|OUCBm7KKKw| z0WKz$-hCzBGSQXqHJ9}fk@8Vrspu%*h_^E1YA3_8b5xnoF5l#NX0&rx`ElHl~X#8*@_ff~(mQ&g2!8qPEnXVC|5OaD0QuZTor ze9Pwa-_C&xIEy1=Qe$TA+~Kc8Z&oG)Q$-1Q=u+ouaEw{6@+z`TC$hQt|CqS%VZ#V& z^_R>A>3T8gL@kvLeCHc03ZI69m;{dq1aJ?+W=(ELI+--yYp-2 zkuOon@rI(fNsi|e1X1P^rfvyrx#Y5 zDl0-rmv@y$f(Qf8v7xGxum*X}eO@R*&J1DL=Sw3goUpu&NX!rEhJba4F) z4ob4+@67ot)Rz&lI&lEpb$L@?o>D*BNBM2H%W2>pc)h#|e3&>mlccia=+0DqS!Ad6qf< zUz2_bdCjAa{8jEn~Y=jiw%7gIjQx8Otgi1Gpb8qNWeiF%=FTR=L(n1GO_@A_#Z z`YG$qW3MpJWfWb(Du{l zWH=X`qQ|6f&QfY+xV92{VQ&DJ6BwGK>ql8?jnhX(=^T*d^|Qy7an&yElKV|>Ry!c}2VXG|*IRQ}6paAt%5JbU!>vu^)cNFNUKmoD0VE>34;eoQoR z2TB)#i3n%e_#oJ@8v8v>U>;@RqAS1b((JZs|a!?7;n z*c2yHBYeih{YGpMlIObh8I7xy^{r`#q%6JZqedxcnuju7M1Ox(u` zG4MIbD3@yDRw=~5kwhWH5hiX$6Rw%y3QiNZtO<7r!Q~w$F0TpKl}?c5;U?}4*8C+C zm~jm=af_Rfr&A3KHE|1@kZG`qA7bL*Rby&9;LM;WE)O!{2WF@Nlu#E%9BATZHsP+M z8gL~;zi&cbPbD5;;+|?kX7hiNiJRDjyqijFH*ugmRx#W;ja|uR;>I@N(y5oXnz%I9 zY$c~@v&m)?=Kx$6vG|fJ1X(nhxFJo*x2eQN6TZt&ExzPFshBsIIIB`In^WYzCeEPX zmPQg>v5$#MRB++V2W%z?BS46rFc%w<0cZO}^q*~qxW691Y&)c7C4RP6L+}UTK0$ub9k19GvwaoWw zSqOX>v^BYKYuqW%(a*IB-TlZz0elFmYe8LnC4AkxV8z4YM+!SsWvku8PI)4{+CDC^ zEtNq&Kitvv6bgWQ$MilX6O#cBszsjiwZqZ^4g8QTb-AOlJSL?W{3yT1(uv>>c9jGr37TP$#d9?LFNz>*)P(d0jMa8 zV%2ar$5?{B?CU3=R!i@nMs7ok@iw2{NM9~6&2M!^?^We^qst=Un-eN^%J%K6wr^j= zwn(2gHE&J#FwMi;4u}KtlUX^&z)vy{WSRGj%k>QJo^kf-k^tP!v&|nw4@ArYLUF_n z_$MK(PP~%;8aNB-{D~>1UEpt>=!BtfTq8!`+8YQfqOmEYiup zAMR;|hkO2Wy7_R=yAO1&bq5MF+}|SFsvl0j7q+f79)0YcSZHzYJMD8-oh;0DSDucA zkG$yevhjSa+-NVz@aLpfC#LCC$r;;59F)k7(4i{a^I#8fTaFeAS1fEQq#W)<`zEKA z@Wc;%g@>{WXR?B->~~HsAZH5T!?&$g0^GVgQJ!YZyjB|*=;yo&Xa2%Y!=~y2diw4;Q}fw3elsXrIrF#GEQO%6BJYMK zqk9v>jdb@{J_`xrU_e6ud4Zit+>h53x!do)nyCwka-I5D=d@1F=8a&mP zPf?dqHbNcnU5Aot#HCZK+|B}ZxVB`6PXy#@`m)^@SV{JCr~D;#@Rlb>-?qDCgi4@_ zKuH~-!{=M*w`C!EfQ+|-bsvDUb;f3_$zOtT!>m(uGWpp@t+#Gw?b;Wyutn6nAdYgM#c%9rY507pMrwces5V> zx^5e*F2@w`mO*F}d#4Qj8Xm|lsmBOteG(JZ>-CAwRSQl%+Pkf;i!Ll~%Uj;KMeA1w zUpfWv$%F!uV17^}(a+EJfY@n>YIV=-uANdn2`eivG(sG;th^O<9lM!4XEwvo^!rKr zTy26v=~w#1k2h!boH1r%kv1#l{z$HW2!>$Gq+7I9JVRiwG0exz+}%bjzRHSEnJRBJ zs&p#!=R(bcG-_q9JMl7<_95WFHCpEQ}@g~oz zB5kBg%rpba(_t~|VDDb)%`AME(GPUC21?U+?u6#GrFr^nflC=SpWIrM)d?yR14szA zXJgjkZa?W8qQ*pcswkZvD4jqqc>>O8+w!dy#->yActv4s0%1&i*$7S;Q4J8K^n^uZ zOtJzqun~+Kyse-EE;Mom&jDm6w~3h|%FN=H%=|$W1iSr#(z$`k5i;rAs-)0h!_4wakBIoc-wG*`!(X#hWjW=~_2 zf-jvuPgN>s6hFz=)bE7eUsJ<=Z>jD7F)lq~nAPILXf2~s!KIX(cw(*saU zzP2G=1V*L@d=pwSBFezXbP6C$0Qd={V)02MhnI;#8GX)F7-8iZMgzAQG{0(7r&ov$ z<{~?id;*k^ga*0{Xf4JM2EhY=*68W54L&U=pNHBOGj_%S#9UG?k5y`0OrOUnwXyQi zMy>!V^FgPs?1S=;8Cj&s7=AK6EL}5sO{?_hE5Qm>su~Sk*X8%UE$sm|P$zFf6)Vd% zl;{zotHQT3;Dgg0e=!7n0l~*kZU`d)gB~RiokkAc*9H}^V+Rg}DOR3hjmA_^JD~3_kUjl^ALUnb8y;3J zeF)(#=o%2nrF*8rATl689}EBmn?JrSxcDep7dj09T`~{J1B@9z9`h_K#+THSjFp2} z?FhH~z;jD%#ll0D#IyxqqjohQk zm{f9?^ibYpnx4-Za}`pzDBYrB$dLT zNS48UNY|#7!oVmZ!QLc~4TK4#Qu$GmM=J4`Mw2?kUM+?N&>0A3h!c2{36i1O=~rv` z1nN@>zYcSMbd0+E;6cCUDGzAlTeUv{o@2xb>N&PP(d0Rb|1dyW@s|a+q1j(7HVzBZq@{SBo-jS(0 z4n=@3=OQ2UMxrH{L{*j5RR?F zOvd2Y6IJl)EIq9&*EZ4up^cH?%dJ6bvK7|aSfw8rOgRDTQCMCf-?m0zrazAsVk?&3JN{yHis$X8cj*Ik{b{clA7m{FGQGjfqa11@;L~@;9PCXSy%; zn3JA8-DV-*yvNn8ywE6hJ^@D}uzEiKK0Oj~-+(lB0G3r33ZKf!)7w_-t;@bu!>67R zDImgQp5F9s;pVc4VCxeBZwTA8T;sZrVHK5CvodN!m{qeeYD5@dh^3-cKi#}_x8>pS z%{FyqPb4Fhh)%uLsy6|1_*g6svU@k|wroBQ3up6Azdxwk{N1hvipOIP};Jzqz$gq`^Iu>83q?7xn0{!*R) zNn_gP#ym~GNm9eKMz`v89J*qckuJBQu=Yvya2A1i!x3$vx|MaY(Ms8z9CbPcf#!!333*eViTY)*6G)9zP!f>px=4 zaNlVN$jTowcv5y~BcFQ`u%|27{6vQRIK!4z#^7Vk*l-0k!4~!zfSY6s{9sTjwo-#% zvtbqfo0*Ddn7b<#roUU8q4JdPfEbMJc(G=Bfw!zR^6;1u&o{wGp5oqhNCqguM!07P z8qh`u)2_pxqejaA3p=0O%I=-M=-2$t*>T6c-bK^5ddtFS-%MwmcRkKd&D}KwV+kE1 zw|J6}am9%{4S9ZV_R?eEMi;}iD&!qq5yBmQm`4j@3gBaPI_#Q!ehOsax)b0Qv2`c! zL^ybkDVYAXa;eru6Xd-ShAZDQr%JiUee9e?Vej-X*);BKldZh-{Cs;7~LAJHF#pb)^-`o<90Am`i^}nO#A|c zK}m9{d%V>ExPej)*;n(EO=aQL6kIr10S-1wz9SPnUu5v)eyxpiK>z{>28vg}28VZT zUeF8Q8pH)QKjl6U@)z$1CXy%<@;QSOXrxvYuMHIM2WbxMg%9=7b-QRqzHpOdKMDHs zK83Hfl$;m&!h<#|h(P@31}+0OZ(g8G?WbPHX9n)M5HttW6)epB$LQog* z0WH3DBfKSrrnwkw_gihZ5&SC#?s${61hvPcrBwt;97Bw^BoT~P#d@3Y1y!jXn7PlG z*=q3Ad<&DCtTK}Z@|W0YrT<{oT9Qb+-%AGWeWeEh47$kti$rP=5M5-t(B-uq z?dX#0kqLjvOtyI|WKs2JF`rwQj0pacdC+Z_(^li(H^57)Y@8~g`>OJUmRimtb%{?J zz}+h6KmdOUoJ=JGi02gsmIg}Z`91Z!v^p1mQPIRw!nyc_q6xY|D?V<3Ehj}2bW>J% ztfeOA5l!&p47fyM%>$aqrkdbAIL-v1q4ATY>{Y`}IG~cocM;Bnbet-!@tffnUP%8? z&Gl8mwUIDg(s@cqqtm4rJq$F0qY0fu0 zzZf(~;Z-!v=NY9Xke>`N@?3+|7V=XOelE~S4Fr=J${rKV7p>r+Auw+>1cH%dRlvV* zgzXb}GYAnyGj+NML6afh0S#FW??T04*^3Whw}`GJ-i6f%$uk(FTfhKuP;MGCLoJ8C zg4=P)3x=~B;q51>{wTo^ZWtkI3ZB*^_I#bJfBFGk;c>~=_%U})NSZh<(K)ivnl|ZehGg=RLS}%f4Fa`EBRKn|%!F@-W zXD65c39sGKLLna7keo^V1ukkvv4l7S@e65fLJz7GTsMi`i4D-|y3w}hZx3}ZWo@4w znvwmV9Mbl1UlNCH@64XDspliXEpWS#@@o6n*!V)#MoB!1jqigd71ExVuq)%-TZ1tX=CRLy)h0|X$gzQ`C`{+mz`CoQD~VppbrUtEl>@>MA6C%sCG z_hoV&JB}OjF;NqY?t-jP4TiQ(3L5r>}oson#rb&Y| ze&00qz8W85sPIkm`{rPOq_Ic{a0K9)o?MsvL!5IC3;Ukw2Z+R8#MAu_+6JsCl6*%< zCzjV5t(^JL3@c|^zXz_(lh(VA&>2k}ZW1G{*3U0b>!h`a}I-2&=Wl=fLpcOVxt|GAqW`r&k(8v;m$* zED!Wc<6&fd@rW|A&ipg&7vL7Yow?^O(%#?i(GTxX*7o&-@z5GS1Ad<%)BFF?_3Z&s z72o5_!d?*9R8&+%g_XN+6c&_+TCghOGuafd?319^M`fv5nQ7~i5h{H$d#slASvIdB z3V7ECh@#$A7gWqNdt2G#mX&?8)O;4db7p1%`+YwCA+vL5<~(QS%$b=pr3tDW^nbQB zCmglX6{vfpL)JnI1V81lwcyp?13jSFJOWkmThVV4WVa$)-RF;J2BaUf!ZX?Ju$2R( z9^6^R#WH_@wk@n1>AHQAdQOPzH-FvC5fC-lE_A4s~OEXRZ0-_tvo6uX2(N^Yik|04`9FS<+_wHuh zl>elZhZsOL00;@T+t1&FKd>=}wZm>dUriZ8+7h-iCO$V3INf2l-*?iT7tr+RTZz=; z1C;PqWn_jq`KME>V=`>X7f!iX1n}s`Gb4wA5%c0n`TQvqSb_?Cb0iXlt*AFLGV9iv zDA$b8wEkN8vr|F;7`P}sS6nY))4nJddG}OUn_d|;E-HGB%4Sx z$=0-0A@x%B{P*Fuw7sY+BBoC)sy_vm&HOyLO0DIJi#Qz#ufzY=O0HUuU`JpdNq3)X z(e%And;{1|EQ&X*l88VS6B`6Nfg>K?nXsn4p!UT>1VRQt8IY)j=X@MRydw^Ah>Wau(HPej=WzU zg!imfvY!HjlJQdX{SSa)iLT852Jqw^0LTANfKLViF0o3+4g_u^@Bn_=os1Ozvby5_ z8^FLF07v~#fR6bpW{ezY&Os?Ekd7xc>(5;2i)*{7-;$g8=7Pr7NK3L5{xt z-v9!<->j~S?=ulPCqnp(pbYEp066r20-PBH_>filyaT{D{s+JdR@a#zz>e^wR=*QN z8;qbzGx&c3oE`*NXq66i0QmC%0Qim7RsY`rR^36M0pQK}?^@~z0?e~YTRH$N`yT*5 zw+1`kh!)b}tHT#_1ffo&b|-LznjfR6qJ&S(&Oz5In>rlzf%h`9^_KG!Oh zAOdt)m#kG#|$ndkcWP)cwf^yCIH8dVd$R)0lM0T{<~GBBUPpD-`>~s%FKb2#i~FCDKrS? zn6^U6s?sEU)f#KR+PVD$_&}h73EIE=l%|hRs;AH+I+TDtV^ttl6&Of9y$i8G+FI?c zDvef^!u~O|+5-ZX1V2D*7!|%X2>JVwMZsCBGe*rWb?-Z+N$DNMj0!SCMltK@`w{Nb zr!+m?eLv9jPrHkiK(>lqXbI)(5!t#E#L^3{#5JyA$VL`eu&AGV!3VHgyrTu|tz9kD z-rCv%b`9O4QVJ}P4(=9<^DXW6mZzo7-ctT;ZMV0?7HgZmC7w!@+$}hD{gBA)EkR(B z7X=mQ0NPthE5abV#r#8-^j^+Q_epCJ1terX`KEEr!ugiw2^E&MU1I*Wh3w#AJHjox zLo1#fai^{If5(FaSE%f|UdeeU<-C(;An=R_-^-CQDuj!zkRScM7Cg0%Fn;q7yt*_^ zC67Ca8YsSU)1m7J5w7<0TM|0SV@Rg3&i&zOjnRoY86<~)>1K(pSFx_QUDwxvM|riK zGvZe#XJi)_!TW2Ry(nB90+buIo%tb_qA!mBAsc_yK(KMY+zs3`oU*_+DYE5r*>Dp0 zq!!9<5~aX!w*2!pS$DFq7a)v5tTHO5OTyQ!Ip}gclZ5@n?g`m4sE^$5B=u^Dt8U@~ z*{zsCE4bllazuNc>-I5(lbBF{(d30aTwmL3R8zLS#A~kC57QJf#EG%_rJ*ys!h+ zV63+5_{K!(;0e^f9YLxElym}S9cNT4#}Gyv)uRa2I}rz@FaVy@v}s z+k3d^qm(PF{z3VPW5FKo3Q68^47z`As7?0_{IwSu%AfaEz+K+-%=7NSA8UF$EG@xx zQtnMS(E!s;=`oe8hg`P&$+>CM75&gdUAhX^NVC#ITfUS1C*V9N*@qr;Gw_@$eN^0ry9juKn8F~B8g7g%3+I7P9l>mY!OEe^V|aKEF69}WpM&y&@Rgv&pJPR1P_Ya z_Nk`lH2x*zCH0wl{P9eAM?9snl_!DXuC zjVG9zh=bg3eG2kbUa-)!Bj9UJ%=AA)UlotLui<3-r2uy$x5yPJ$N#b&vMyix&$tYp-z$ser z^--tuGS+1#j>wU= z`yiFmrlCIcf#^e@e4@>VE_Az@9%Yvo+6G0<>CsinJwaVO+brPi23Ogb6YO9^l|>$P z0uM+~6R!L(QchfGLDY@!+BAc~1K% zZW)@MuxQ}1#;~WK52=TTKp;=3w9*D20ol%m4E_;IS(Ict0l!u!<8QB}EZOGS;D?4H zs>3pEnAbeCECE_6!&Zp@Z8L2}n9Eub=U4!<@+ab)UShEBZj}m;+jJomhO!BI6~PNJ zI6O32cO0mN>sk2o<;0iZkOzS+6tm`(B0wU49tW6>JzgDFLLa=?0GSZ07L0C0Tsbh5 zvhX2GNqj%Ae+tBdd%DaCi;=!AH5za5n-(as$bTGfXX(?7r4Ix-@BngP$Z=?va$r5c z0en~1vnW|Y{m{lx=KWmNj;#n*A7xd z9m?V}TA{ItSi%C6V>hbF%DvDq@ELk8d;x}?k!M5r%AnW%D&~f@&V5ftHqU=LIAcJ^FV>DcBS?EpkQHEkPL-@jQ zVmjH(p|CpV+<&_sXrhw?oVQKRYNB()yihxt8Rkn{614Ki$Jn&V*WAdBvL{5%arW$P zm*b>^zA>f5sfy@}nj8^Fots;)Lz;LOi zd%vMKsq8viq#dAy5eVdjRr;uzZH7BfSc3FyTM9vSm3x-Aqj*{t6_LkR6v123eL1 z|1#fcycZ%WNXZORh8XYDFp2eEGlMSE#)RL@#8M&c{hyhN@z8K!VTY}deSx6C0VhX2 z0h?zfd@qFgnd}5Y+Ce7C0ZMdY-iYS%DzHD<>vz1BJ+8_3N_3Zh3+r*iv1+xpA7CN4 zZm@4cycOO$hx0O^tq#rRExcA9(59o#8}O1t1sMy&Epp#uZRbtJZ`pa%Z_L^#F#EJo zh!h?ig%JC_211vm)%dR|Rf04;|J6V5=Du!qIos#~NzM)|CI(dSKI{6TuJD9Lbb42i zSX!mJG*h)FH%YqQ1aiLJMCJT@6EKo3O-&u;EDrA==L=13a#m(`khAzsyPQSXoBg^8 zxltdKvyjH*ESzC-R!$=fx*X?|&6}K0N@o!R6yKf5>=f8&9%T;AANYdop@MC;ffuQjl)QSh=ow%13e3pcHa`X)QVWH{8YxU77Jb z93yUdzNB{8nit?l`K!sJnzc(yMyWWpO6;1PoYm~bsGi5tUhf5V`<6ku@|I@S%1n35 z_nLu*x0`V^QXafPd?0grbg3`|gn>4A`5T-pJ8qL#MT#yRbwBn2^tKmJ3agnEo@EdJce zt%XtR90mYZioG^nCZ6ywKME)OIR|#1oaf=QP4nP(FxG+HT6rj8FBIoT-OzTeXgvCD zh4ss>C%cj^$p4Y7RdfG>3Z$$hSXRiok-YP$w(GYQPAGioR9s_Mb_VUYWL4Fm<=>Be zvzr{>%og0@$QwC5;c#N)Sh;^NPZ)6{uV+*Ct4*|?_*e3r$iCI^Sk1{WZD+*hE7$-f zlUk7}=g(GR9tgLRy~P=&Au81yW)-B6ht8>9>EBHb@X8lwlJiZ1-U8P{Y`WoVv$flk z_8p@0?+<2p>wp}8g3X`jNq<^lT`b4JwI~{(f1yxi%YuermUqQv7){paLC{`pktov-DjPOFxD1*ifzPHp^cU zXmmV%lmZi8ra+W`Q=r1X&F-WNcn6}K^iVn(twmL#jq+<*XMJ!u#dZxXhm;Dd+v|vB zOr`E8m-4b;LLQ#KzI=u}ZU-=K&4OU&?#wTReD+{czQY8r zY_pbERct~@@I@mbh`;n^6BTlmwY;HX1L)(JOBw60V(x_+5Oc|urI7EqMYSN59e;dVTmAbUN=h*xAErs z^_+{X^4uoYrVx2U8={gxUG8n!&^aD%%YG zR#+q;^}_vTSkVyKOgCSgMp-c3jPpCO@ZikilUzRl%ZeA6OX21u4ehV=HOX9{og=?r zm%{?V2PQ6EuNZy=0ZcRnf-hT$_pu(tGYe2~U^iqZIP;hiBn)>=XptJIj#H?MDGq(b6_8 zRhgK7Y)o)kf&`hCs8vIzB@d#2f~Z0GbXp=wZ0iS8yYZLZVOq*!9EkeIv=rKr;tPlA z{=^ET*u^M*ssqJq@1S^72Z|STpxED$;#PB;*{i6n(riL;-!_Uj1Sw7lQVfX>o_hZ* z6YNhE21(x3MzXjLlSuMeQwMX1AJV}b5(ZPMMb$s3Za5t5yCCQP9Hw$kMXJ*o)rsv? zD@!|4Ew1T6bwWGUN^J+K#b4X07B5+(en_{iZRDnwc0nDWvZ;ZRk@anvAf1DHBF(HO3zoX!^~W-!wPMZoD>< zD~zg`ad^s(B~V#hmRxpiL1b=3Md9Hrk|R8m?9RQU8R(q%N%6-aIxb=Ud(rBycJKM| zW2J^8)nVhVVYS!Hg+FfT)oosZHpW;(UsC1P^_w5(W{Em4|@%r4jo!Da}UxfKAc>6&DVshabb|fOA=zJIlW0|aNcEjSJD|e zJJezJrb|$K%F#IQk$G5hE=1<<>T4oyka#P^nDvr0uQG2xa#G_UrRhWO;%s<&=&0Aw z#ovSm5&zA4*21QFKh71^Ij37oPqvOI@j_te zmCN8l(@_=}#b#cQdF9JCO79${Ar+J)vkvlV%9cT(@1ykUhf-p8SNsl_+6rZI&Wg zS)~({g{ykdu9JM{ZPu+%<0U;T%zprd&q_BASBVQW_&Xd*pKWhh7-HQz7w^eoVd11H z_s7Blh>G?@&+gJ~=zC=Fc*(-O1e@e=vt^E2U0SLxn&^*&-rR#=~=N*}i2}2oRLXb57cEcp*91t8BA?rcR0kU9G+z=Z}M)%I-*6l0lfh z>g&rkLJ%J6W>;RZfMzvDE*!nmTNCEljQYV}FrBFhlUt5de)9QQSieG+^3E;#IUT>t zCa43AFB{D&96|&rbm1VRKOlIC2TVZ<%*pP|s~WR9A=y3WswM%VRG3OU(3?)G0XuIq zan$xl?7TJIpff*yn8jQ9)&hAiMWOmkhFvW@rHA`M=F2FI}m)66*-ONAEufD}`zOz4HMK_2wub9C!#t0^!8gbejzAh-Yx zWU>ZQa2P{`F8FF7$k81L4GSW4fgvOY5xPPV+Ds6t)k1p)*4|)q06c&Up$inDijD}y z(14So#}r6cdn+zUF^7r76tmeKe+|z03WMRO_a!P(useliUJE(A#N}Q`cV4e@&lk7cZ9ZginiykG5Tuzz*uzrm=pAq34~|# zLo^BmF1!{b-$==Sl_6IXOTVu-tp~;0NcG-(EEVb~eglN1@rIc{Y4tb-!&RQC`Lwv!+eF9h#Bu4;}RTN1W z=m=1M?Fa~uga~y|;iw?TMlg+WF_uBJBQi;?q#835+H|pSYdLzZepLhZh>sp zr{*#xfy<<%Pt9Q{z_nO1&kCk8_YZw~fIm_Nm1yUjW#T3PsjuW6&RV%-U6}{fs%GM{ zjr9?<4om~ymC_j6mHCYng1=^>&kJMw5$EydW&5ZAl-~f8l@z;w1reD@)&D_L01b<_ z?=wtXddP;REqxzGC9El2R#txvo(n*v#RRk0TQ0pt>Exm3f%3vAR_ODVlWq*~NZ2gp z0>E>YQ-B3QN(%|rVtx=H`##OY#fOyDZRzs_?9s7(!9z*VbR(GtW&?1dov{FXgVc#q z3!P2}z`^jE?elIx;C=v39>?In0pJ@JvTJnrf*CTKT3Yv-@G1>Zx`80ZPd0H8Au8k3 z5Y#Ua4|cP5vbMk9Gh5r)b;A$KBiHo~|6jv&F~JEg|1N}pBJ?V`*aNWIEdAhTQ}IfZ zzh9`zy zh4XrM(C^QJy!XSnMScm(P>_D_exG*-KwDO}tR*OJ{xrbb?_>b)fm*DAdrUbAgai9& zgLj)?X8}3FzK=90T^cD>fk#OCEAlU%Nu+|SmJcky!Uk6<}J2tSoi?r$B*^Z zEMGRKVNZ3KeJ)<`5DHAEXUNUhaBW81H=0(m^ih()VpYNNgm`!0$D3`2{Bokj%3!1e zpe@^2`C`Lf)ax~75+*^sWB^PSVtB$MOqZ-Coa*glkcPld*x?nkDF>W)6g_xU_A!6u zCtBPp6NM_~kmDR*qQo~pnaG~<^|^H$HG#wTxr zB>-yIGPsF6kLZS&U_uXJ3FNiiY!(KQ(T7ke>P&&f!6_eBHDsKRH(}6afC)B8^#&&y zFZnnVL|vu?RBxu{n=-(JL6;d4%v$bmVnLS?iTwl#A=ZRJml+bxbl~b|;-<6#K1;i1 zUl^!@fFZg8nK=45JB*dp*Xf<>-XxC!zDTXg> zIxxB02&-LMaaKNbyQau?8uj z>H$Zq$Ra@uGg0sK#~FF82M)nmLc>1zKV4&d5o0n(9i%>-VIi8lYX@Lc3%-@`s$%wz zsoM#AS6lRV$t^P7l0t0WBCdlvkJK!a+s5a+(W`;OOvSY`{T1iEp3QKt5AHXz(e27L zZ^ii-TyrS5jL{#4mw0D-t9QhdNqgn0N^*-(u$hXzGhr1*4j@Xw;00lbHqF|X>WfFU12Mijmbrapfy-%L2I}mCogA-D`2FZpz5$z2`>OonR)P#m$NeO?F{ z8ATJR*pC{y!EItMq=Gm?RDso_)|BEmawn*MU<{8r(&2-otZ)N`1`|Iah*`xG5TBS7 zFc{nk8m{{UWpYr`)IJazgE~5!60qNh^8`bT4m$k4j`}#8%4M(7y;8$PJHgX}6hlm& z6zI`pbQJnuFGg(wr+~M5GZUm3g}lWcdYu4Lb|Llf9XM5Sh*ngVm~CN$qhEysOmKK} z6f}b0=SXiJqMcM(Y{r9I=;ITAyFqYt`f9=u$WF>atr;spY#kPPq=v8r8Yz>0KS)^u z9;i0JFEGHu0sx$R?mnmt5q02!r#*B_?1!5WtAh18Y~vdy<%i9s@O~$9X#}NU;z0sm znTPO^axl)iG0KG#R4&V*0UIL0wr$QC-5+pV-wDFl)DprO7|%&(^9J>z8&#kRBOcgI z$wku0sKth?|1i;k--?Vw?-<>w;hfI7$;eq@yXp`-s>7#UgCl0aF;;xjNJq>^GoU@_ zt1#9w?rt#RO9B)Zn4L+RZX-@~gw^P6!dX{%!${{e957h#<6nn?fYo(+t1nU!ziPxu zja9x*DvRrhegSA4ZNjMHzG9?y27s)r-S z7AG42cpeq}Vr-cJ2HNoS4Kep0C z1Wy=qLSd^HeUsv1W2q0iNn3M^fB^`R$HY=BvCz0U%;=21W~`5Ly?!vgbK$HPU!PmJ z%_e&`yych`n>YDD**?dtn8Fk5XZ3T;8c_H}$*lg4SpzrmKuB4ywEBKx$Jl|4lU#i*PI(r4#OPJqc)t^S_0S4H3fY}OA!a@X?NxSjBx23 zR%rApfnWvIfJ5=Q(55iNjG<&nQ%WQ3L5)BL%mhw2@iRXYctGzCD3{<3`>C{~;53tK z4O0=T2aWkhd%Dt69D4UTym7}HDeB}E#=&U!NZ5w{=@(d(r74x)ClX1Z4gRd#wa{Uu|GXWg1S zNok~V|JvyHtol*|!5k_Elh%Z5DO3v_Se4p(N*)lI9edE&*;qVwyS5vj!Nyu+QqR12Nk`%mDAfuzstuv^`3`4Ve^Cu;G&N7u~El<1HP? zSqBAjqyF*T-Z@KW>24oYrkgbg&%B_J)hJ_-9E4N{_q|Jn_A7`O=AGJkPC6>RU=4t> zsD11KKNS44(svvxpG0+>f+)>oRJ;p#!NE4CWP1_~{8QBhphcp;Wl>H-UQ^Bq# z3^(E?k{u`wh3z5ZLsY5T|M#i&!EQfSlt*gc~QH^4dH zPzo1TueHK?oiOD3AEuF!+MYNzfFAT585Ve2CD{Ns6f6G##ce4Y&3%9y5qG?C`)jc3 z2WgR?amLblkj6f(421532nd+KF+>?)Bsu{%RAA1at7LGdfSkN=Yh|?LI6(b+Uz(&a zfJ=J)7Gtii&^ET$eMQeSE_$ZX7KR#lKBaq7=}L&mN#jy)#y-ZP@xu@vy`~R!tOaia z^)?13LFC(_=<9vB2UPt=kA1xkD0c>OX}4Gk-2#Rjwz0Jc1}B8f_k=zU1LIN>V3VD2 znS3)yfOKU)GtbT-0ay-0s_5 z4jok0#OPqk5JIgIDn{mUQL!#|COz0I`BsDL9EvqFy&m00PI0M;dm9YKwgP_{xQ*~T z`40=;DYP$40B7dozMAB9C1m8pN4&-3CNec6$CT{g)cifO+jvYQ^}~aq!gmI6 zYy{4=O4<9Ni_=g>F-GZb_(g{8zDB&3F%@nX(g7+CW>nINzlJu*H2<|hnguE_6YIjx zL$pzv2|vjo*Naqs6y|DDS&3!SF@Fv!lZpHbgOm@YmlD8Y6q%FnYh+_UcbtLGz&gJL z`tnld4Cw&&y&?*i`%ByUqxhjg2lCgUY{;pF zGlm>9m`ojYLO5;683^5hu=N82nOw+_eu}1vt$WIl6V1Ah@IK8)K8Pm`Io%*130GQZ zz7uKWTMX#+Z0`~$=tsm{IBo#rGT4#DWB4VgE<}TbW&`Q*;+yI1{YPWyp>gS0{}~4N z`obINBv;1nZj=-a+>+2m{>!<)?F{QfY?8~xN$zJ|amAE}i&5#w?D3<)FE1o_db%OP zd;g^Q;vs|d6(~Y1l61`=?c2w$!w+1pNi3`XaXT(Oq;J~RZXQrz3Ar-lwl!^#^g|iqqOQk~q9dndTrUj93 zmX_WD5hf3YYQQRO4{n^wA!osrdo<6L>w291Zs6>PJO8}1#Pr~u(_f}aS_D+g#?n6< z;0O-f!JaZAhEfa2H48q8wV-hXLrfqAVvWHk$FloRktWFt2qO=L z$4t^g`+$D@Aua%;8E!63#PkOSX&hj%kSMD7t>KJ35txrB8p%n4Nia$inQR3JSV5?S z1d+gdkRWZpX9)BIjIfxv#ZY<|=oa~*h*VklrRn=&u6M}JEH)8rHsC~nn2YZkHo-k$ z!hNrS+!sP9Jfv|IhJXY(RgY8_dVX(k{LWUvOezj)^<>87 zXLbYYwpcgBo?!A84{;WT<&WXuEUPUP0?v1-DA=p*r@XHZqyWZVtxZ>2<%OF_>8TUW zzR^SVX-|3TerO5&tIDUhlO6lDU6=p$D;z&>>{1=7tQi7&do$ups7ju+9~Po&aqn$7 z#~rHF4k3Zg=Jc{i5AUnEXD=UO$Q!lapU~NNB*|H=5k4G}yK8Jr!5NK8&e{)0a@G8v z+g!A24sS}%+)vN6ira>i|NQA@Ib%O4j#}Av9rynw>)z^6@#+wC;msM^yJErC$$Z>6bQ_$1CDRynmkL0C(ph83gWbBn_Z4#lc40g&F4bm-8Afgfn4AQ3!4lq^a z!uuT{I;GKY5<-y#JEpT2>zTqTgFWn-mhW@$Di3y5;duiGJ05ljo8ezVO-0ZujY=}^ zr6+d#42Eyeufnj^!+J?HP0Dn*%j>_LUDd(BpOEg(Q-r1I92vn z`y64aXg*x}7HB}i_z@=QJfyLI2^u52U3`JO*g(2k7_9G7S^pbjLi3nZI}7F&85*8~ zZb2$PWspzp)Aplg9pC*=$>jv3v9L1K1eB|!V+^K}YLc6vC>>hw`ZEANuC^YkykU@v zq2fXvya~3sY@^S&#IqM_C6} z9x;H4SMf$Y6ys;Okt$08SfrYpGTb>7WBil=bZnBo(lU z-A+?}Ftj_6!~~ETGh0N1NxFvng2LS(JQ}vDQBTbqp%6Hd1mBbbbP};!OLcm3F!`6g zkOkiWA|!|dNjZc`Z0m-e3*JiOr&98<9pOGkF^?2?a3D=)1mk-Kc`5bo_hUE+$Jf_b z77rW4r-$x)W2vevq$qXY%8#FyQ}+e^i9gd@W6DHB^yo0?#=5X2MS1n`hC7S^Gs&G> z{#z@Izi{TAoHY9e!!YLJA~PKx`n)@*3%enZOR?hnrB`Iv!xc3k>ZUc(83|WJ@snH=VM`JtqYvK-{L<U z!jG+q@b=La#PJpn|2z2$R?o^Mf9CdaebE5VD6GV16eu#hjCK(q^Y>nwp*(7k&om%a z!)aspGOC0WLyJ#7*#Jl75D5SN)rz0$v}gp1Z$o%LkMVgp3HaihTKQ-LXdf0)PFzJM z#t(9$oWj!jqz2#`FWOz}@R?`2)=?6f$W-YJ0V~UBO>@=Nv8fN-kt)}wy2emwsn`gN z48sHojHpbeGFhR93xWuBl0g;;0d&+6M%`f6fncC=QS^q!Fh>3agZw(97G)}C-5}!% z>D37a2m?;biGvKfGa=gTppKAHtX=_S`HP0KqE{~0opv?2%fdHgyH+-=`}BEvWdm?7 z9KScRsa6mZ+B$y;B#xG!n!_lz6wbR1X?W^;_I!W%e{*_L^>@!)9SjH32B%dvOpc5Qn&bHbOV*4ICS9{`l7^r|3FTgnbiP(AVPT6Rq|Kq zc}vG#+4KjL+G2wn(DlGL^1bq^R$JkygPSjazVJe#+cS_en1mLdT*e0%DP}(h(;t|6 zWW2W;Bpr;9B>jugeQ6-nLN<4?qH;bE?bhd-tJGpPPwgmXc8R?EN1)PdZ^p()>Zz3;g%rrm!9dIa$8@j zrWcy|+xkGcDzBuzvO5`L;ao+2W@l)yzI%rz2N>$(2{3*D^nSn}djF>oU-h;)I0Ra(F$JVQ>x#wo<6r1T6hmyi>Ch)de{>tazw^%N{{V%6vS->#inY=eiBu99k>aLz3K~XY zjy2I8uj6_=_*Q*T1y?Zogw1@;@2&DnU@udop1t~KNzc6Z>Z`-1I6Uxf2K3{H4ICLF zy^x8m^)g5$d*Q7pqN{VRl1%ZO-u(*PdEoen8+iqL-1~H}YbJi8=YRm<0(wK{(RJp> zB+m|cpoBAs&yN3y9-LBWN0FOV%Md42eUjx zK_3895(eM|tbT~Fh_)phq;!g}q`~mg!T9)lcW|jxp-%p8x6iW!zC#Qi++@c=$zC)8 z+7ec0_&m-XG5h=;2%I$9^$FHmi}SnS$&ml3Crcxuj8m^>-(O#?MmwBbq!I7CD*sY{ zMjp*>%ZvB5$`_yj1jQg%cST3*nUKx00$KDn{U^81goyIDZNERhbtc{{e+|E#w7_>z zVY_^;t-x8RP%VE3zbQoF!&`Vq&x*(mH#jPiytNVV6t8ThogTCV^3GtM+*1GfN1(-I zaoccifTm33v`sA{%W!Mdilq6+iZaKrARIW zBvqoj=Z8LUPeUb-sQ)s8xTs2saLng-T`Q9I%tF;~k%w)D|g6z_H~H*)>V ziUzB}`N>zN?=H~|+!)^&>V{B3y8hpCs^;$6d$s-PzEh~#EgNy79?s{_(#ki%x}(Y) zb+u8$E{N;RWxcD_@|8McGS0@Pu+=>Qq&WX3I2Kg(lw2X%4C@)s!*P^z{06=BQ=MPV zqRUg^))ksBF4DIIk>bez>!!UTb-W#zi<5@>(m(>{QLI4%yfp`MDm%a4xcRO>426GjjvdUfac%klCtl zJ*tYTy7OPfoqs>B@h-u`qxWN2wkp~d;`OJCGZ8t(IJjEvTD8mlfSHSPK7*Buk9U*Y zbz2?t7sqN{GchN2{QTnSC63}wj^aqyLRzM$^m5(SlKI})iLL@xX8m-Zqgd-G?&6w@ zIRQ|q(w|k1<2|Jp>bCl(pMjzi@dE&#?k808IS_;AYgOqNkOvHd7&@==UVkopQ`SRb z3M2$fpld{V1rjqc2NUxkA+F;`Ow;+7I7Tm&9;=(7ag1J6tu`T7V18Zn$!>>d<^59| z!>cvZ~7ts#POd&&Sp}mTH`1p-pfxQYX>V- z1Pv)4>$RF<&)J7(J7y1Y%uaI5PIk<;IcBFwlk2p-9J5oax%rEr9PiS*k6XC%Nx}(z zamDC|XD^;T1+d}fzk(l+L*A5!XG?K)kW+!pKB?Dou9!W=V`dbOd9Y-5VM)cjHLHrp z%x(-{Ss6#)+EfC1_ZBN>>C?Gx@tAd_AMy+JTEpVm^A?ZUyy)mo_fJ+Xb*#|)T8U;| zOQCj}V|H=>OC_4kd(!`i-?@`&teKZD?EwYu$E@55*XW=ygqMHmnBU@_oyaYB8gQ(u zln`f{L}Ud$85Jv$6p^QC7ZQ;`(}aGOMxMbOjgSUu83D4 z(^Y_Ult888Sw7w9>M(wU72hXF?Ihp32M0FcUH5lGxMj{(9v+~m@(TEON|jgn8~%=l z-}pBbe*eXLJ!j!J{@nq;Z^Pfs@EiYbfZw;^FI+|y@b5}EY_8mduDe8p|8+!`7kz+7 zWeLdbCz5hN>PM2&?H}*@KE&t#GKq_KUgg0(d;lIFa(#v$VHm57%D;I#@F(%-Vpxm= zKHvf{a2|Vqs<%2x)^d((6DS3%lM!8+7);e+ERu-lfs-ICm-K&rHD5{Bgk*Cw=uEc7MYbWBx+)eze zrWKJb$K`Xo8zbrPFTQZap-Y{DK9%0CcXz{5cjXK4$R!QY@r0hP7n*j_=o|y}(y84n zWQX|p7086$Q$^vaD^sjY@aoVY5SHU4nHYw%$oY9pI}?h2HGaHi=z2w{7O^%~jD{~Pz)OLP_ZXy2P7UC7^?RsMO9gPTc z_0%ck-o>Id_0UTdZ6wU1ttg-I+6YJJ=8{p*U~s560Y#$S{E{nLwIkG|8}(#jc=-## zh1CKK1I8jjxo_IIZqAQD2>=b@y4K!nsOeD!G3vmY*1+0U zmFr%nD=G-1mYv!`K`>(Ne5qU@;^&J}+nREOJ{7GQpydF~;!#hb0zD3^0yTl_ROW#O z8Oxva>P7$>;>!t(4)4SX#ep*nB6iKNsj3(PtLxQVwn{Dz5-12)IE<^J!WA&FM}Fmf zo(*uH*el0jOBeYw>Z^W;o+0<79NGQ%0`RxtH{~c#>j+1kyna}CvHEKH98RxtsIQ*u zC65Q>aK{4*@(*3XH^=3%yP0Ln|Lcl88p6=Br3nAv6-n;{M;JC*U@eRGp+EwTw99Klo=HH}Et*i;QDNF=~;b66aXkL+3NHKN=WxV^5p~Xp`iw8p`RN$}YCPS4KgTrKeQ70GjBGqu&9_E8%Rw7DVY=J&CW> zMg9!xQ1^kDbw%QL(!#F^`ovnA@j5goUaewC9 zQ=Ju?C1_i;TJzV~blkOkT}q%yCC4FC&{-g6B2(U?Oi_AU{orNZ&+d*X6aLmgz$aZ7 zc~3h+X+VXxhi=T%5KPfF<{4;$zwd4D92+UAmA41U<%eED0B|Tk-AW)S-EZmi3-+s_ z;14==V3$gMH&|A%U4i(<@O6IY7Q5>(PCDL-?K*xi9NC4lZrC(9<2LMKI158a({akh z>pIPha<4WP1WAbb?j|ey?_gQAXm#J426Od`L13c!icLQxdejfnT|4b^?2et@>M(fB z8eDkxA~IBe#@ppo^my5eaAZ<;z;B~;-%iXRldYexPp<5a%quXUJR%AAg&JNSzY~@O z%%dn=BiYJ}d}T7>10=ALQp#5n>!Xy14Qv&m4(>k9Y{M_^iVpCLijaQrA$~qDm{4~h zc)980pU1BMSU3|9~gAr>)1a5+P8IaMcR>9zdh-E^9# zql>!+vQ% zDVKQ31Y;Sd`Bx0Z#G5z=y{y<(m03J^6W6N1yy@V36^bb?V(PGBcqbNT)V^;!xF@~E z_WWsZG%duD^JIm02lb+eQI-cITW-oNJA>=xo0kJGzyU}y|9o<@gj-U+q2i4lBnp~x z*{tnTQk)9wTT~tXkw4d0q`tXcQu(SoZAA9)FB;0?Th>4@WK#VeoRIB`*8)#JbL&*{ zF0jgpFM_{vnUoO!b)&R5h)D(hs0JW23(AYn^6RO0cO%^1l(XO>xjSSy*VD;Q#SbwX zk$Q5&_CCHWUZ1WGj8X;EDq2~|<4dQjWcSYC9;|rrGPJ2gyzSH3p>IKKG%q=Lz;EKg z`AA%_KH2CYS1I@>cstD-Elu??CwQ^}w|fCGC!Db6<&vG~xnR?|@fw9Hj^{x#*ciJB zF^*>vnMaP-iMhOF-@)R8e{BIEF{97a&P-qQ`C0j~o!P5>I5lOwGR}qMXWr1JNL!`K zWO(Qte)EeA`3>O}DLe4?qwuGNVG}35&&x#w8L(lI#0MENN;VIHMCAv71(e6xI5^w6C*c9OEra4@$4*9&^4VoLP5}QP6e{&Nh_AFh7zs*hk00V*KY|lA}nzjt*1n=dg4%)5k3qm1GkZVWf*y+awRk? z7V?3|TU}>sN#8-UCV6jdh0j?F$dut;7hNRsBN7@T{T|ruKx+e+&2%#S!{GCrZ8JNR z`*^7Ze1&mXCJNlMSeU=1hx2Ja_ZZ ziW;9wKx1Wp4>)@ZOVFuUH8HYsG%Swp!*r(2G}<&ZV|M>bB=6D5m`U~e`=PKnf;A!R zo==%_W#-H){NRZE`&FG*XQ!k+ z&Lwu^k8orpcjC6W>y+fKv2*%|1jHYz>EPwlvdUz$(eS348>(_Wg!uuR%5{J=ZPr4& za-9Uj9jT)O(68ux-xTte0` z{79AZouLk#37qsw1d?9MaeG=pc&o(WLzI?r7SeJ z$Lh%RLE~aF%v;rg5LKnx)e}Ex)kGRasiCju zT+Z-*4K4dwwVNBm4OH)~b{ocU@oK5sJ$?+AneiD`^m@K()L6AuUc2XSaAl0QyFSG1 zMvY^t$}u&>s&hLqHov3yw!{?fr%g!U8Pt9 zBG}O15v~&a4O0{Imlvj>5l8HE{w`{L@C%1#glKQ1WvENHwwAuzTJh-)*F#v#^%VY3 z_zk1;1J&9t05&(&;r8WlJ%$KV$*JW%;VsL&{-r45E#cY-u#rzjz|7*6yNt_&xA{u4 zal2deYTQ?Hzz7uI3@^*`7V~5KL{>+*CSv!xdC*+4q+jnRe_+_@hUYrs= zKGI)dm)_frwhE6n}B9dGr??h_Ppfy9D|x z1b;=iittzV13OCKCN@A>uuaB8lqK1n#0OKhN!mvzRJf*N5$Qf4z5F;Z0cZ+UCOT7~ zJE%UFt3&yTDcS`SNHuXn%AAMekSF7ISi4|BVSLJ*<98uD#!z;I3gc41c?gm`vRxXA z`<}U>z0mIZ`TM!Wm07H&wmZnYP83v z=eYvgA?IyPUdoP_BBw{>*>-5H(~I(wcesnjaic@UKf>J~jOQ$&qGgc#@A2Gdr#Nh= z>vgPy3PmiLW!t5naK66-4{;#iVQk0aS}h{?G~i)EJpRC8lHkG6SkBP+sg|H|p_ZWW zW9Xh$nvU6i!loj-vaXwze^ zWoXi&E85Pm$E=JBdkIY7gv`v9x!I@RtDP`StA$915H#C9Dx@T@i)(YO`@IQVQmmj2 zpA>mL>)NL^=m zE&U2y1>iM<^1r*0gHc#juFed_VHN74OWTlX9Q+5{)!Nt6c7bmsBzsA1)+kSIm#`DIr$WK4wnM>hNZz;!ry5PHU=_RDc-B-`@3+VZ+7KeZ}< zyyY#nXcJ07P*@imnv0leQ}b_TDwp2U>A-lO6<2jAUR~opKasNxxwehKY4Upx_$qYA z{SCgDDwhN6oX)BBdYWRYv|4LtR~F_ZkE(TNPU2p2n#lKowfG4fs=e{2aGt=PTDnDL z_k1XweGuKyyzgf{3 zhGXVZ{C%3ENPs`Z=b7pH3uh9W)1ND=Yfr0deV(RoD@OnPZOlHLY&8U{ziO&O3Ce$v zNi7T+=-PyBX=ewVDj0YC{#>6&177NuR{kS`^petNIv{-sD@Kq1*6$Hee~Mi%VQp;3 zE9+dVx1Bdfs2s8#Gl2L~{Akl9_;mw)x&cWmpG?}Y1j?<>+nDXj-RAynGM7F%1Iv`i zNjPhGn+se+>F;81^O#0J(3On8Py1{B0K)t=ge0F_T;26Xvg#VQP0=uA9S6}>DO{txPX}_oGj7NxR(LMs_yz5& zrBA|(e%j8$h0v26cwGy+SBJPH%=d-syy1gR=hi%2qn?g#nR9Q1*3^0N>A z3`yFt#1&fOwm7%}v6Tc{sCf}kUw}XA=ij%Ys8olR;d_ zMSrfrq2(P8UYvn#oY}3>$H5UPJk=UKKJ4^w)zusfQlR&)Pw8Z9()K^8Y2?Jm!i@#6 z8y1CcqNoZBy7f{O99DHTa*lL_#6rU|RvM)~MTdT=bPQ0d)ExMsMPFrF%nab(@B)`KJ zJw6)eE>AU?%CW2xS7Xb+*^RqTrE>TeenIb<@V|wDb(%L8?6SdC?w$8>nFEzI-0kt& z&1CTX0wD_zaM3rr!f%{NR=c%RIn%(`ktA*J2RU%xqT4`R*^1`_JT^=}uX9hG%8iY_ zycG&jJK?2NW+xO>yQQhzq$C9*Q;V&xNrW|{fitlDLRe4h@>l(uv!&Jb5mqLgi4RF` z*yj@=5%(lj~tm-PjG*B1=!Tj08mWB=)h>T1o& zP|&+8N@VuTqSsGvv~>}wjTSYdYS4ZoE8-M{5?z51QsUO88*^?A}=$FO~`&Qw1a z1CXUFX7|7Xu9rz1|CTlZW*B?1S!?G;tF#(NvDqQMHUt?ma4 zxH;XU2vVM}9x4X4~i`Oc{gB2EUbz2KLbHZweBQL)4*AnaR?`^OrTz$NPd%c{ul(2~R*M zKl~lt&Z6wAvACVeJ1FCkYU-w*QE7IAp{B&ZQf=^-#4egTrAkLgvg+ z@!j3;-_P~e3SHl_{Xe?i1gy#9c^uFCChTGeDpx>2C4q2w5mJ&z03uzND`;w?NJpG*Q28p-pJb=C0WWP-~}Y}|M6;C^rPUrU4yteDRYD~p{v zNqRfq%ruxG00|Y1E!lzP-qBul_YXkQ6kHs$@gSZ~Xt1xqp1R^4oc6{O9o4u+{DD#hz?QET>4T(S%E01eUVI4MVu>=wk0+Y>Nz1rgyFe#Z8Orw`SU}N=Fq>9+55?Itv#^y#B-;@s3^NvK zAh@!Oqhyk(sMGnIC2b)us@$0coHrnHzZdCsVlcDmFK=%#y_I5mx!^yIbY3gg;QR`t zwrML?`z1t!Y|9wB^ zLKkY-M}1Z;8j-7EbsDPgud1Lrjr8;`5kpdH&F}kZmf0)EIJZnSFwPE$r2iK|{7wVNip6=jzZ_&gYXy)~a^w1_J}o9EvQc!n%b7u#uU~F|~)` zikbmEMR`@wIi2|Pi>qL8I!*-4V}W5@mQ%Q@zN{)@Fy25vLK53-vl>z!pbyuH87C_k z8lzb@K3Jy|j2jzmK?_-s4Zm&xI%56`J-$8v8`MpvPillD7AT0Buo6g+#*y(=!x$4% zWa^fz%=!;&n5C5?ZrYF64T)EcWM<9@tx_JyjIEX$9N?Wfn`^Uj8nwzYe`anq)u5N) ztO(Q}(<;ZJ3+7qCbD{K>G~Ro!6{_9y7@_ zzuOj!h=VOwR5?1;{m1grJ`!OT>**D>2(_+JLB&ksmhlC{w0RpN5iw)zIAO{QEXzt& z{%`FWgTfR_%v#JB`#a1yUFRjd|8E{vUX1D_jDHc;x>Oa7ChVsDn3*L2y!51-x>d|e zoU&Vw8w;1Q(PDFs5X>T_t9oQ-*Fch<`1k8kBUCa}q3^%R%~wSiv@6un-?R(ISePg; zI;n2A1#0zJ^A9ZWp`LinD`bJ{b6G7FTk56A8-hFPMK)**TBWCGA3v)``}mwqBJ#D$ z3!;7exSH9==WM*uZ_p|yiT3gD)o35va5d|-Nh_S9(L9#a+2`qc3iB)wmqEPwObg7< zAR2BO?8zc3IF><_4EAvb={_k&tg`6y{q7m#L+4Ev#*|JE{GGMYc#xJL+9)DV^vNpn zYkRzDTgYKo&xzFoBL;<{WWO$^AWpr_9ME9;%KIPOA|n+-VEioN?^?}z)x3)GWv-rv z9KH9ZWx}0mSer?@D|c24-YlvxkUdd*AhEi25G&dOZJ9_cdlu9|ECC7df>@T!=fqm| zFR}C)&xy6{Wnx)pJ}1_~e~D$8@gHLSSZO1cwGx(Q;n?z8CG5>2gL(XBgqnQ55{qJ6 z{nhdkp)7arKPS`}R#ltu4*q`;s#Q!ul&+CTsIB7;iG(^*39ro}8dv}Sp_JZ6DL2<@ zp^U{98rTylbyF4x;JASJ@nb%}$PuMYikL`d za!eOwv8>Fx@ru8Op}W0%gK41IBu`W*Sd$mhD?yk|eECV0@OT07f%CJ88$Y8GwAsWv zZ4`@XQ#s~m{$snYmgAfY6SfcT`@086_vD24Sw~`%HKht~>1;7i2sy0qyjblTF_g(# z?28nvzUU-#Lvd@V=y|e%`4IY6Lh2ke4E-w`FJz-Xta0UB63981?PtX`ec!^)KgJTa z?r%Igk9@{Ct5|@oGy~dK%j0_Phu!mupGyhTX=YPIx@x>`*Iaro=^OhYpVo1 z7DwpLo;Eh{`=Rp!tZ%>lHa^@pV^9YlW>x)%5Bi(I9ekKk^@0zY8^IlXm|pb~A1vPl zckp3S)eAo8uLu9jhfi5n|9^aFHQV@b&dm5Qi2v9uvVcEghS#%+GRB&YBo9H7V*?Kn zl{iznntGr7U;l^b$5=)pp)Bu&*ocm8ocZ@k%}|$(Bri5IlK17E?Zh(uOYAUnW2Z%o z*hQx2X=pxvhQuy3!LN&v*v~{^dWqP>a8Jb&;^%&^Qpjd;1Ot28lqrdu2L&rpq3t%o z+9kL~bTSJ=mqSa%z5358pHo{FqVr>wS%nlF%cTC}$`}3y>xy7y#26;^7b-<++x!js z<-y7eqnXs7t9;>a&@2m1IvGW}iBkUx%gU@9s(6G_|F*iJ;=b7gJ(m)DKFkDhtH=Pp zj|rwNCE@%)6Ev?vAFnHmA(Bn=#Z&*WT~^CCnOU*^`PJWDOD;(SV0E_%`&b_o_RIUb zhP-*h^Saq@aKtbs?OrcZuqKCuRBVYDh+3mgih83#cv^vxaiUS>XExn!sTdnF5)VTX z{$$V)r`xw=Cm~`P$>6?*i>t}oFmX9q;9+Ee*X3q&mDm=r&0N;`3TG?e`f{?6n-9y^ zl5wzS1)1bGieX}J$}S8t`J|7UEkrVit+A{`{@r}F0=!ldzs_&5reHMPO;-)g{%t>u zUr7R#75fE$hAzCqo=mZmINu5=T#1qrS7GCv6AS9#T;cxzaLy9+oOA2qpFPk2+AjGY27dA)4UOG@8Q8$Wo-=UVp^%YH$iF%U z6!{0c@l*VeN1Ii!?M1+VqMovuCpQ zN3gZAd4>!Y+C&sdX)|VE8yt5iedIfywdp!PVfx-1V9XuPcu-dRU7Js$5t z{QqHH@4YZ=Jz2@RqldhGrjg8z&@yu7CvdF?-mU%+ym|# zNf0*xtO!mE30K+3kVFh<$Y zFHu&L`VwU$|D~)Y`6bE@{g<+uq?afg`Y&ZIiT|bSVV2!Xly!JP+1he=Cm#o3`^p(< zJ)y3EDELF=aH;@@;DzPzeF1h^8gCm}HJ;DO`eV6B)-IaMNLKXfh-95n4niSucU;7B z6X~ky*Fo1$nO=H{uFf{PMmO&hMl)=YZu$>9=z5W1+vsX>|Cg@%_eHuUvIvZ>I_Vy| znlpu!!{ANm+?ZJolQxlFd}=x5Z$g{KwH%r@;cQT+a=5pNbkE{gJe)~qBdZnr6!TVG z6o-u(T)jKil?n5beZxQVIn$CWf-Qdil~vhP+vrbjQe&s=C1HPeY?TrgH3nEsX8ts zGe&4(V4Dn{{%5>6z7j>~z%RpO`RHGf2%{J=YnUPlr3;myEMvwOjeRspOt+?V{>`7NWtngchWRH|QrFHzzq*Zp^u1PBV z!upbb!>|{Ph>yItw>&|A7OXdVveVWoBo=E=bCkqOoou`-+QV$c-=n8IBCAH1E8la9 zxP8Z$C!-|I*Y>tu-y6}Mb2xV#>0{?D3;yNIk}ZwDZ6(9FwI|Au*#&$5%WTHf{ypp0 z?X~e*f3@8t>=k)!^?1SScgwJp^{YB?G*{Y9D>_JPQ9dXCF%f5R2afggcGJS=oZrBL80RA;Ld@RkkOFjFvTnrCP-HN-_$h`q z$wdSV*Y5z>Vno-Dz69!wr046wHvHoM#YYEdnk`|BSM0x6VPD|9i!W#}w+tN590FG7 zo~!=KOLtb-=cPM^tIZ~f&;zZr5)$aEsSHN1pH334N(sTq%kgrvnh)tE2}`&km0Y`L zDe7U_2pJ_LUa8N6Ve)EqUN4Cu1&es?swTgOMu3k?h|XQJ5~i|<{{~vt^sp?4=g(^?ceM@Y+e%^RMm!(@qk|U)~KL?IgRsETf@jrk*`&7FGKN$^+wZGf7|h zPi2~D5P%HjHBs;`kQkoZ1)WMs7Js1}7M7BHK6*DiDJ8@C(sCHKi%j8#a@f6#Oyg&j z!;@X4#7pA_H5pb{eAFzd_J1j1iwo40VZyk%;Z7MQ99jz6-DEm%m4R_Ld5g~|h0*0C ziJx2s`^w2beC}@8vj-E-+6_lOF~_u0m*`w4kI5LobA!V@Za4?_YrSS zYCW|R{3}R!mmhZ`O7suyY&l`%y`Atz1sNpOeB2+ZD#)-ww^?XMtG$I=v=5fOSnWEn z$4l_47jSDx4{)s}X>LVjW1Padhs{2>n*A;}2evf#(X1H@1=S>K=29k83J(R3M=P;J z*rKY)qMdnC&M3w0j{HNZ^p;e1S!&n(Mj5vFFqwDn0;gT7RLj*0Jcg+crKtJv?XVJz+BYj=%6qYEDi3 zP@E+fmNP(VdR(tEkk=C5uCK9gu?1Ty`wQcD!mwK6?&DF`!1LP-K1N=aTk90U6Uiy3 zGls60d1=KiACprVEUG1wdB>g5R!e&DWG6hRC57BASap!}#G&&2TJ(-K9VA`2HfTLa zc5(nS50Q<0{to#05Spc{cYs?Rx#1YHOBl5S^RHG3!MlKelf?RJcOWTZM0)UnT6T%e zNQTkDS%X^TwhI=#NrLoR2A(P}TF0Goyz( zD;L>`n-J^-fngAwxVf-!p1kM~Td6CoVz8|Au_G3YJX2JOh`7~USh@qAy@?A_=I?-> zhe@~Yw@U>jlixEl7hcF{lD|J#dMFxKJvf|D3H%P2co;`d2|Hl(Vd4?{)po?Y>r{$I z-j9tb`lYoKo?sx`#R;QXKBZjQ$f8X20DjM~!nCuntl_MzOj$CaK3V!)s5M8s!+lH; zH}iHnLI%3lmST)!5mL5z*SbxSR2vp|3gV8CB0jeizCD7D%;lwES5F4_n9DG0oUv1D zl3(=Hlvf&g`#O4LSH&)sFtZd=>(SGaTnbz2$q?@`B5nxc?vX3ye>U)4>*%)KM-Vfz z6s+|mmhV>zAq`{*?^6o%8%Pf)cNU{m)g<@!-d5uycx{Kh4P*uP0J^iN-Mnp0mxG+8rv760OI27F{$`K5+3a-B{k~IGe*8 zT>?KJCH;EGvrzI!yD)*hnAHj_`*`+RZN#^wtZB00CZ`=x0@24%yu1L`93v4!ogh$d zP=kkk6YFNG7YEAKYBpNi=uAFXiZEWHk^{~V4ykH!b34AH+SOX%H6D*I@pjfsfJev3 z5bh5MZX^S^A7Ex9iAeaAWpyQBkNomPrRj^EUj^(6)%U9^4aId+{H`5!orKFqM2Oj8 zy0o*GpF$QDg~*pDx>+Nusuvf3urp8|69ulUFfy?)f$@>=!GlKP&wT+N$B9qpfRf~J zS+u7_5sl62JVYNS$tcl#kCTzE1v_&Kx*97bQ0k!hR?^_Y3mbRBAIHfqe)>)*K0!i; zB<_4pR*if2j#i?Yuv4TeTc4iB%GLo_T+o1%_|9>Wqm1zE1nK4xxpP8FMW9^;J1}1D z&&5|L0|s@83qp;2k_=P!-I=+AKVOF~B-{^u{-7k@g{UT#K;B6b$9wFA&rg!qhCCFT zt+uZ`Csk?sea9}X<_}A$w#hDNS1VedyR^cCVk|?cR$-sA%k=Y(1ru}gMoDr~-7KA| zVA?4%fx8ZePm#6UJJA0$naowgrqkHxRY3J=(g&5}=cjQrR=5MWCNhlgd;oAO?C9tf zEJ?8{CQ01%;wUv+Gmf`+mA1^2<~S4WHsiLDXAo3SKRikm3Vd|5ME|Y@b-y+|GRUb$ z6}r<|J9!7RHW7FGNLGF=DyN^CP(l9+ig(cIt6{*5lYDe2u3{Hd?92ZGe?CA$21xYB zEa?>z%*L$aaU0Jp?W{<(juX@jsYxE&hKppV<@L^)WdqMUB2^`M&O|ranCTH`ZLnaJ zbd1>Snxm60$D#Jdxykxzd)yVN&n7$jG68{X=x|7 zaT!T5M88W0xIfq)65pdBJ|rG3JMVRQxX&!!M{p~FZSRuM!ITk++1z(Lo4?-PB)@Ju zF;Q>z!u>t(VI%r>8zP8p+Zuz{Gcf~Dk4DM6WFU7DLeAi1-fc)ZL#FhAZMg0X$(dyr zw|P7Mr|Wvg+ewt?l<`=#^KkhLHvH||z`dCabjY{lH3#ZeZ;zX?9g>B4#pbEJx$a?N&3TI1!)UJuCp z_Fd}eJ?%nQ77b+vO()&&FzhVO+dP4cvm{9U*H&8y>ta~W_evDqdKnaaZcvHXkc97` z{w(qBGJM-ho0GoXYTKMNkR==Oe>W#x-pV#7^?)Jo5hZsP;@=}NF{M>%7t9{}(<3aq z4wc%M70A}HRh2w%%9c!TQMMx`)n;VVCmn4Vk5JPVZG~I!;kKtGCD8R83G8hs$&zRJ zZ&b=qzYvLTeo0!Dk0sI4;^uzbV)o;rDx9ol&#Ce{qL~FV&Y_l^vK4lpBmMXZTj8T~ zB;eIom`W`jy;*LY=wXU1*)_T#R5Qk6VA@SqV8PuJ!&qsvET)K(vC+8fU?d_NC%Rjv zSgIH6#+HEgJn{1yZ6jbuMKH;ZlYunjy<7s5(lBZJDh#LP>Q%6R=OPyLfBAqW|fhi>C2NqLGYpro2F^3o!VUQ5eH_MLdx50+ps(VB@CEx; zT{S8?HSxRTyFADA5|%QlFsQu@1!`6;v4FTBcTJZ1aPA+4RP~9`r?w(cj@84x81EaS zq>`k83Tuv+@HvYpd}vg-6&B`>T9>pPH>ep4Yb!>rE2n@k&iJ{^A<|=w42Fd)CYU1mK&pZNzqJ&vw8%R z1}M!N)>&)VZAAk8mNl`FVFzdEUdI>=ARX4t4nrm$qX-w%_H zF8KmW(IL;XjW^!$L6L6lY;pEBB^!%p8tXHRpt?Z3)=oDvQ50fWL~W|ES{ho`NjpaT z$F4R|E<~}AIzH6+F#7Ly{C?%dH{;p!EM7CdXfh7Z+kU!665=AM&i7gHNEj`$MSLpw zrDY*~r5E1{ag`|G)CJ63%G!CU=`L?km!G^jH*CI)+I_u#$*RY*2Il29bTO$ z^cNEmpE%ggi+6SuCIkfkfhAhwS6?$Q)=dD8$$f z>={tj85N-!?+(-``Y0T%0aYEF?QZ%@bYE;1R~Y5_OMK#eSeLGI5jYkLeHQU<3NP^8^SN5C$(-fBwr*E znxhOi%v!Y0d@fk@vq){G^4Bjq73-?LaO@(E#4MZPn~TJKZ8?h)y8U64x@%OrQ<1o? z4#Z?`VKOZ*l3{jfldY3ME|}H!jKaCBEKwEQ0kot1B-Znl@gi$db*Um}l10vxF(g5J zPDRe7W4s&&YTH@dDu+d_#GU&SiduZah{5 zBl9bY;Ylme@=?Xm?_)C9(VZpce{uv$zH2dLe@u$JAF%Q>yXRVaG};;6ST$KoXqM=n zLAOifRX)BiOu9sZ?Ulv2OG$7p2ID27?fher4UzS(*`Gk$C2}udXkX#bb1;Kf=i#Dg z;WW!(p4{5IUFq2cZL1S->l5PZd4z#ctk8MhD%DSMR5(|}ufwxj(HqsXjSSV4vGAMb zZC9KS=^-8qt>Tv&FLm^Twmom`Rsl^hQ3*V6Dpcq%7C`my^FIwn zQ)gif2I(316X-rAE~)MeH%}(>|G>xp?vRY*u??Rj+KhIei(%~i4oU3Wu_j9a*AeLww0=rF``lvTVlkOeQ^v!mtZNkRvnTFnV2iaq zyRf8w0+-K-ulIK>put&U<7JSIm*@Ln2G)s;o9-~{GvYt2m7(3dvX!w^BC=Ey@-Iuz zi=m%vwT0P|@^wrqldgKA@YJk>i=UAZYfo-{PD*|Hb5ceg+ZyH^ug0U-l3m*XkEYlL20$gT?nNCVC6QJCulP$?{N?|N?<_2S5%H!( zH+7QE z0v_XuWgD^ydVE2;uN}*9Y^KI{eFX6f#Xu*q4yshx*Wj+;0&Ngi9ksEck@bPkVoW(mU)1BP~B?H`?y!E>LDaUp+)yXt>aiFcRCwL=O z!(qH}inGkLM5*|sN;vriNniW4FkQ{|C`4(PZ*I(k7_}ylWv?s9E)di@J6rxfV*dR) z^1s#Ws%cZ8dtC5ja4Zp)Yc-zDenR`9O8AC#h&O$=exN$8y)J)hDXK)~gqx#)nk~qat7RCQ$GU}}c`0Gnj$ro&ay;n&0E_H<%(jlulV9CD0UA-XeD(M?PxDc(SvaSU=tNt=ZIp#&-xdezDT=7VF%JfI`TbtX`wg_n~OWV^N z&+NSpoJS%~?dG=REkd%0le`5QuaZD__d?}ck|S?91)n+-e5&G;Q%>4{Hn$-y{RC=a?GMyp{>Ceoa!ne=A^>kO>dif9!zJo!>D$HnfV) zgtxyY0bO1x3_XfVvsuQ7cOCA1P1LRfL^7WHP!(&!K}od}_KR)cbB(x$_q24s&$O2a z`%p}s%}nUmA&Ia;3hCXPkf_c{@7RU$${BXreVf~U+>HLN`nO@;H4^Cmc1L*{*njAb zTPabg@%qqA!b)u&oT-pvT>E2M3Px^GB-r-=-njK?9Ym6%mTh}#T5e?!*!J~bd18}}3TAD9q(G{DQ{ zNXwZsQ7UDngdK?xUjQZFA`89|5mAG)|JaGi+rNt$F(v_NX5liy{sswh3Mxo$v=jak z`x;W965fZX8${#o&1z{-O?tm&CYBxFt7XWCld$Fn@#y94`71Odw{6f0}XKQ7HVP#1AKoA&qR2w2s(X7#*7$R6ef@HUFzB??U)bq z$SK3*VFMz=ibj|4QycPawaZJd3uD}uqdNxweNnEFn4 zl^)m`gF{W>3Hv-Sn~&bi4xRXmeKpSJ&lj+-N3iWS8Nq!6pWP+_+!greHf|qG+XM%# zxK6MF&RNMox0p?4ol5|oN$4lZ_mN04Mue$GZ-UO>qnTH@33`8zGluIn!PxK7dDeFm zEcu?qt?k81{1WG8Y!{}(t;rdK=6X4+dc`!vur|iM8G*pr@QFociIG@cZt^PU6#T!yV$p~zRbil z&YwAxrz$dF8p@5Z?k<*o3l74!_Y=l{Ua0h`94 ztN#yFn9N{(8O&RON5J4fY}{xF`jNbeuD>fkq679@`29zc!XMrMum42UZdDr)AI~F; za%B=EVJDF9-vIeP5x*{f7DWD0kXmfy{Kp89i?DP*kvCkIG5lzMiNyasW zT|PQMBJ2n57qW_XD1f!UkUm|s9nr+8N#zDOi9mP4fHk<&g{>fW#e*MlyPv>sfTzEZ zp5af{V_+Ef(o`d!L}yAa5dL5RnBhy)j`DvC75OVn{FV6Gk1p_5d}I=Cf$%F?#o@lW zU&-j+AF-%nKZZl#_==emM$Wi+`F^Dn@?{g#PkrTw%Em67%Io9>u;4y%lj{E(1%~^? zyRYTAej5^%_33Et_BLA@^)@P_>*G&@IZ&c3!?OS+t&UBOn&HrP9}kvaW32zt(EOv} zx_k`xRQj`n!qYmdkK%$=)0u=y@_6+8y)wGgEsB?B_;oRTXVCBQs3`PFTEXSxu^Xlv z27S5hTVlFquB z$*X|*4~YHRPYn92?iFKwuGMN58|&XUJZLpEw_=fw{OH3h$Fx5AE*R6{tXIRCGmkXi zxZ`a{a$cWftUqmd&|+vli>N`ISoW#7{SQY}`4sWB;|*w`>Wj?6X+vJ1q$mZi`jKI= z@K}-xbBD7433J%6Hpm{I;r2p*P$EeAenaJ`$+od%Y(P{9H&UX3ia zeU`J&qB0DcEwgO#h{l-{(+&eVm8_dRf_;6Ek%M)7q|f>gXM2<*1G^z8Pd7rjPOd4{ zw>aB-ojx+*k*xqqse`o)OMuWrlTNka4LZJfK1QV6a?@SA5KC?Lm0+dp$7dzkBVMCNf#uhFoPwBz1u80B)WDG5(qgbylNwuHkc7iDhv?`cGU-M_1{Qm z{Q!jO7kjW)j$9mQ2wE17zV?p1^~*7@qN|a?hPYsZPHV{48uBA0^}P)!-*<{5dl?$c z!)s(X0K8Ki7iefO$!hHI1Tup-P zH26n@i1k)+5G5MPO;^JeYH~ER;C}CqtSKJ#a)asFMnx-r3(l;>HysUEh)H5-lD3#+ z)^Q#;<%TOV)5DG9=6e5VjrF)m4Oi?;zu>20lP1;!&+!=A#9Mx;(0;$MMyebuz0SA3 z&NuPaCl#z});S(#KRgIUV!c{y)=0u-`m0!|a69W)Sg3Gf`KmaaGCZ}3i^jX@B&G)& zH4F6UTO0ci`5eE|0TcNPO#Pi);!Z)|KS&Pmy{^&p2Z`eN@f#bhe-b^Xc*Od6(xpH;n zo5H8?$={^A*F_dwp+;zhI`Xja0sCa>t`rHn+Z==?^zf5@*==l63_IpArJ_zZJo{omI|30)?YEm{|MtuaqZ+oZ4lyarRs z!+Yvg$J_Am5nlL#0d7?sxpxzHqdL@e{y`;ptwqqoiccOtXeC)Hg$sha{2dui1h=(~ zMoI^AeCM_BfjxbTzqzJybtn3O<7cjET;M8FV)Qcis5Ew>NBB0z&xw9>6+en*)NXr@Vd=bndG`JTSeHMCI~Fp z7Kpl=NRB(j{(iknox{(3tL*PcVFe4m63M=BBd$zXA~eQzp=+dk=T*?=Ondg-oXe7T zdXfAGPFEtE6hAX{ypaVR$8Q$9&Oun03*B94Xx~Nu|54ufPn6lYAh^(;ye=2aF0?nF zlna+!XdEAz3u;&D&xhv1SXbJe56*>IuJjA;Zy4@I18{CQ%Z>VS-$Rib65`v&LvHj- zo)26L8$4(u_qcIbH=4|Gm9WE;=5hakhZo(%r>y~t7ahvSt%2{@f8-iadD8^G&l*_b zO`~|PHE_}!i_moq-0`M;ddL`i&ySYig!ysPWt=Lj*!DrBXDw3pZ9UfSg*Jb>lwZ0M#s<(NUbhm=0W^Y-UkTp?&_VpjmEaag1Nn%R@M<6uHDo1B z3#1x8a3yRAqyc=7mGEXD5{tlx3`FB^qp*~c@9fb+K zkhcd{z~6lk$=tZR7p>+z?k>i(E>omc*W=lk9#Rt%9Iyf=_n|&~uNAPm5ADnM=t#tk zCE|{kVbIRJgDoYVUjg0w(qPy5ETvXHMCGJbIUmSfFDTJ{P1PqKafd# ze`at`|(S` z3s>29hXJL!0#C!K2fuhBxJRJWUw~l|bRJg+2P5bZbROJ^pfUUwY)(UH4?ceh#0{Z- zsx?cD9@xpq@+RR=Dy&>$oMe|bn=q@7*=X4Mb`GJ>_%Qq*N>}i?+2A}3`wX%K(uUEA zxU%ioFl=Zuvf<7!RBZ#YVdyJ#3wNmTqgUukG*A{p%y7EesV@^sgVY?ySKIfl6@nJS z7sF`=@3a_RiKJP$>gqrwmh@|Ii=u6)a_&UY(cE_EKZ5S%-&h2fM$mAsrLogUI-TS5 z=ELk!NXTcfWfXl=_31)=tP8Ht!*Q2lmU5EJ8;=O9(F!x?V}{MG3+r29YBYV-`Se1y z2cr|#2?sG3(^V(n&1f3t={CQpz~HRlgVD=mNML*(Y~r%*<_nd_M$-b$?aKUAT|hTJ zx~84{)ZXA>mw&Gv`^LR7^b_80AuJd})498ipN>J;}is_mhD2k=G z`RaL)Gmft219RZPI677%W$f0v?{x#vYGDD|`>!ehoYG5(s-;q;l2k^q0ZV9X?%!!HIdF11 zoyt$1*VrwMws71-xTd2%+)a3@qaNMAojWEw#lC1ql$%|Et1QJXX;eEd5RCLPXd~a4 z1tIBlDA(FJKb@Z9_@ueeXC|G{dDL8O)ZF9zc>dyU)tI?ZI1`&`*j%WcN!4q^=T_rr zim^-;I#*$Dc9!JLkZdfIiKC~A+KL;sPQpMIY@Q*hxaxx|9B%fTiz>pTn(IBzI>t#k z_URR=0?((DDAMa3g+PXin*?yOQgl7s^q<@2KiA|vx1|El)f#S%c2ZY3TpO$MoGUob zt>J@Y&Z@3+8(-JcK^%7(He}%cIXIO;yV<`xCl6<}by85}Qzbmipr7;W=D>%U*rzO= z1OH^ASVYZ%)-1FN2F`&_v#?tUoCDffw4CSWG+vs83J!-gcV^RJE~eR7DB;lT!rGb< zAx`{1F7*c>bPnz1ymxk!)Y9HnKZhV#Ie=^44GZVc@!s-G%SWV%$E}oByv*#M_Q(yh zLu8T+mkjOd*>G(R3h0d4Fk&v_@9J!iqfZ0yVxv*2ttJ%pa! z1v#{`@0(fLPBWu;Nw`+|$Sz7P**G&5C)tF3SxAYBj5D*e-z#JCS4+_7mzeOl;f1t2 zYRBmdsjuVqtjKP91<~KN6E8cCq5@J1Fq zScn}i{(CN>1$<-{SQeofhW{5A(Vgx-S=d!6a~_aA7!!|-^k&(qvS9gQBu%$0C|gWl zwUcI5a23K!G5O!Uv-6&@rcTB6y49Zh+yc3EcJ(#$9+H}|*TfnBkg zjFN^U*IjXC)oX?F92mI-=_ry3sD`5LK6lItlho^D^M~m1uV?$bh6(G{XD! z3`I9JFLB6Y%MNj$1rGSFNp?QDi&QZgaA*})=+z9Qw7hH5-=4)IGT`e~)YExv#)SBF zMT=D1bOEmJm~mty(A7v0{|pFSjpopH9qd?*9kwh3oYv4jvfFyycM!RT`gIws3q^to z!X-UYN%#U5twAg5L#SCp^Ey}SMH&Q@Iw1`XH-@i8f#av^AtjfF@CkY-%Ec@u>EU!P z?ZZ#d!@XRz1%~M%Ou$}4sfRTJ8qUROP$AIX@;_%{1_rH)*Td%mil3t%o(ZT;tq`4u z2K{x&$U~d=GHlAje(Vxh^4M4?4KC-=?{K_zY#q|?F#NoZ9_NJ_a9};H=X=a-oV0;n z<a>SI&U%H`4F;s2T8)fm%2ZNZmkvptyi;B)_F&75;)Ag*3?bW_k!O$?$bS z$lY|d0TFL5%(7G7lQFQ%R0Q9K*@aX;sg_iEuU@-H!*dWY&c^;c9)@PM+e% zn`Vi&Egh%EnTyh|i|SH3YEV8eowF>E35_7%L_N_6&}>5XZ-pJ3=#b#G>BZ~Q6}$=3 zgY1Lwq~M^ipqQXeLEVCag2F8>U4-T7H;ow7W=t0rr<<0f?<}G|v>@H=EV~i~Teng- z7+OSC{EBp#UPQa`3)A7*7TOKEY^D^-ijZ7s>F|CL?MoBIIA&N|M7=<{8HZev=`egV zGHGx+ys?>%=hf-Zv>9W#znq4A3k{UX(yzqBn_H+q+%KXs9PsM4&@njDeHGEAhWfAJ zt1Z|~Uxu4ovCldS5nE{xcN}JJMcy4|xSp_oD^<%XbXUxvD?)v~OGM=hbni|G)@ z52;DEH zF@l;Ex73p*A(OdQDJH16h3yQJ{0p=tG&ndv4PoYZ`)XhF1zyOreRYa*qN=vaz z)sA*s`?Hx+H2DxyA(TuIn$xEl)lNoIvrwm(X_5XFX8=j zSNI2x@4}wIYdU1~%2UByP80cr zY4BG$O6<64;J$~d$8AX!Ig5N9#y8+Lh!NAgPUWF&xX9GbTyy25%gu@-M;_(H5p^83 z^m(k5+hxq|pC@&Q96U{3!C{^A{3NV82BFh5xVaZw%)UL8@PX6d04C4-O@oj2&;V!U zf3bgn8+)-mi^%rVAYiXJ?1|lr4e${x-b;hA2~_Q+fzIDf{ZBp(ET&4H7d5T!A=t>jeK)z zwJJ=OS;C*+B#FBN`}X0euMB?QN5{KwoZ3V!^^Qp{kK=NuR%^rTl)hbs#Ho;4K_}4p zQ!h3OnN#6N1?@uzu#|-}@LdH>=r$Ik>CKMIXcGK+{wusB!-IuJ4xb9In`rW+ek^#m zBfG%C)SKl{<``YnZlv;z8a}_YU2$dOuJ1`nyT(qcnw%1(Jzvg@7QIY*zJa|UlXN|% z;&PojqTl9-Q?TjE2#29XIET7CWv7{jxm;ssDwld zTJ3|Tz(xzo)H9~ev_)ck{W)H%o&wDlIx0}fN~NFZ7&)AkDqhuvmC8@THfbhylu9Qt zIZlCoRj9=?lVNNX?eBC^OfA(`#pAs8J``4ATfPmK@XzJb$<|?xc;^0vPK;BE1|c{Z z{14FHPCHpNm2YaV+8S5QL0)wd(htxW=F&JoyL(qnUar-LIIfnXra=&}O z8Ezk-xh`>Hw%?>MX1iN=@o|eM!_sOxf}b@RPFK@OxNg(E29@g2$&gw@C-Z$L<9<<^ z;I5q9#B1CflM)_xzn|3Y&*&>CTBfd(!KaogW8@g9cV-l1%b`}Y6`7F|lig$=yctK1 z)xe@CJ;ib;ZV72gSOfJ)d3vHOB#~H$%BISdV-;v|OiqS1wKU23=p;txD6xpH)*N2@ z6?|Wdb-W1u52D+q5#}7EuW(18_8?8HAy0#3Hp!Xpx?)*t$I7Fj@^^=#y_I+i~T899~SyW*`lAAL+(uXDRWupxzS4>k=oy<3n^kubl+Bb+m^)&q|=$ zmJC&OG>rF|1UKsF9DdA1a5_p|?W_@e+~1J#CKBr=G{1?0@+I7TlMZmZm?~;&ocqZ0 z#Tq&!*~^8!5PX=b{ZFUHyUOm)Y;h%KvCF-Vdr5IJnXN3urHG?aSIEKyJ9d|G^N*hz>=lIPl0wQ*uVY0tpz%5+-ql?qqtsh|Ci zV!K|J1hNJ+LOP|w&;}&;Q&`qOgPqT?K<)S>CO6KO-#P7VIN3mBoWH~gY0CyiXfz(w zarUY&!SyY~-zDPv+wiSFa@rs7HLwDiI$Uay8+98KSXrIx{rCMNOJzDOmoz z$&xFHxa55@hij31YJHMs+eLdZs*M%P`z36A8_AHB0%zVvwHNrB!+=@kF| zEQu?LHVU-zNPzP=1?@^y#>9Zq9)Tm3@wDDQ1?rAcU;95;YgMhA2v?3G0bEm{>oN4L z$WvhaF*?Bc0t?k9PZTMjInHT+0pl?`((6_-3V%!o1r&BU%^sff-FY;~s7-irF zWz>`U_+)r?9P1UE3?3)2XO2pS5hu{u5|j+)6IhBK$+&smy(8uif0AqM9sKB#4BSZ? z>T-=WJMFAQ8v|EyTGR-!C+P_1M@cv_tLP{{9O>_cJEyQ?-U<$<(TdGWVj3g@%1_g7bLOzf z_Z&nuf-Up!Kk~oCV2OnsNS z^TI?}@-Di+4#Ow!q88ZI*!v9DSD7%;=z^OkC&s%-l7sl@%V_jwPnZZZn^8W8PlP?q zI6&(*5ngMd?heiq!?P75huI4b6JbFM?brQrqF^^M&@SFX5@6x;*GS_2NW=|0b~hyx zP25D>>xb^jpP{7o>G<^wk&(h8GKw{j1#GAD{-=kBwa+vxasv;w-e~(7?Tasu_ zkhb7q;Ah%1JcG13i7hUY=%)4-+KQPJRh!Vnv_tnzoI1&`ktrVhk7R73`lHnkzDqZoH=#b)Fbi6MJF^c^#dI$ zB7Bsy@kj(k1L-C)xhGmjI|$tq%~=xVV|LnYTk#{*i!76ofhkjk6}GXRs(iuCLo3He{+NErq9{RD-x!M>e^x9u*I!R=Q!TM|@vtxP3lrx)KGu zE>5hqOT2=|rAfWwZBywYEGWJ{Aimn(diVch>r3FGuC~W#zO#M5!xsdG8DLnP85kIL z29V8-K^PWA8B|=_9CJ)9D|+@^(%@1dxb%d|tCsK0P-AFXL5o^Z4l3nBrInRQsYRJu zxn<_U{LlFgpzr+b2`#tyEbA4wjuDB|&7%~_b$7gW$-2EobbcBPm zAfrl5qN-fOtLRgoDvZVIDp2h7b)c_$Ke&A8dzc)$FAypL+dvYG4b}Tqbpr`T4w114 zrst~K7)Q_F?(f{p$Ls8ntnfLd z;iv$QtRCa|n2aKkqgP3O#8Tv#&3xRpizU4_Pp@q&+Y5$0jx$Qf-Qe=LTB)!fu?bI| zirg0%KE;{xl)(z76Xc&Zdh|0zaoP8krouHHu=ryuVZUVj($@?6w{4*F(ipR-1xXX>z1&MOaZv%N-VeGYQHNXUB82KQP)SYpOTy6tmC zwmL(|XoL(X(svqj8f^4W$O;)QWc^bpx^&v%%foZT;ptg?_dnW1(4_HxSco3 z=7WUK6LX%8W*k*?=gDk>-mku^e?ajE!w6-Gx6*a167IgnnH261eJH?2^DQBSxGz!j z7YcRBxyt(SqWbaT`teNtczC3)vNb_e|DZS_$*}=I5z&v8?H4M+gpl-A8s>@m)+^Wf zD(J0*O&g@Q|5{1Dr)$4Z47Z%BJaVeib)=F%ocv(ly~_5ZmB7b-@W*wc(lB1sexkDZ z>&o5Q1Z6^^>v*O4cqOQ@61Ijne_KhqDmSW{zoEZj2IEQqc?g;E=DtB&BjZJ%E2>#?vQ{f$m&2o_=@?^vnOEQD4KS z{qNLIc+b}pQNXI0esSlIHhpEV$lOXVJ zt`cqA&-L?RPLuC8H;56>H=wxb+WFl#igjXU%p|(-IA|ubC(-rC6^X{ANgLSsjjV|i zX76UUkz3hv4fHekdL?wIZrv5VVG`xOQ$))#94>?nOyDG%@*QY2zor%6DaL3%u7I|$ z$E!_Lh_nM0*(wgt#95;U= zZT((R9Gx(+E^}RmO61r3;331+8Pb6nc2n@D9pC{om+6Z?*HuF#3@n_Ra9 zES6P%u8@hek{gkKcNRsDk9*cukR!b z*XvYvN}=Q26{YfqbdmjKntDp%W-3bQSEm#Sp$jV>t5 zKCP(GRabz4CaK1Ob~@p!6NPu5`eHYOtFU=u1+71=NC>i2RE3B%Q~m8l6^}Wkwow)I zgVPFAU>+9hP_wPJ0DOFDBfWAO_QucAq#qS)D`XY7jj$vYhEg0QI zt!)$Mx-!A|Ja_T>1kdji+OJP=U7v8;70E}rH{vlil=+Cteo|yal}>>A3X3Ic-bPP9 zt^1|q%@Ro2!Hj&H9N0PKCotS$DkkjQ{%Rrif2Rn=#2 z`bN$5LV5EGJ9qsCT5YDdoQnT|)04b%YW_nJ6Jajza)J>TW9*d)mbB1p%P*y1B?!ZYy%z=~MU_;xkl_vQK9j0HR?5r3ASD6;8Z|BZ0%uIw$QJGk z*};@)h^Cw#_(O3Q9IzTMz;5{}op3=hJmb|Oq>}HHf*JcO7{1G8tP-K7K=3amOHt;4 zZg>~w2z+Gzk#4@Ah_O9i1TeX%@6E8QGCb<-gPaTEifGeC_$sX`qMnNi zRdxkt%D?au2L^oH{jahn26yz(ar(7opq^vEAV%=p0n+r8$WmBDm6sH2naCo#@seVA z{Jp~9z`Hfc-T_QzX70_WbT^UgOi=2ADjqF=c!N zq`5|yIU2pYRIX8FeQ&akrGH0V0Gg|J-SD*`x6IeBoH7%eH!#p7t87Rd*v)0r z=F~DC=5g|281}t5kyj|suj*7nTtWhh=#I;Z-21}ID!bRgSA*_-C#2>f>28%mn8BjR z&=j;chHf(lmQ9yzQCrOZuylxkc66<_`sMAV#D#b}nJ%Y%`-0ZJ4B3ov{-I9hrDf+{ z28mU4MWGA0UfRjD@y=CF=Z1CUDt+vV;&tWzQs|B9U@=%?B>t(;mVHzzG|K#bX@*3+ zC1zauxC`k|ziHW3YW|?K9Lhrtt$X!k65 zDV!4X_rF`j$e$9G*^V-zh>WYT{uXEHJX@J%gUuQM{AP2}Lw_p5gUyIT^ImYo;;Q|5 z@${svgB6gu>B`xqXV@*#NtXLc>1S6J zYA|u?yQ+u{nNZ4044gQ^U?>w?6GXjITWKkc`b!bVI>rH>=24||{9lR{#>i6GTvaK= z;MHS`G1U@XI@>9RZFQr5WlK=&K0S1zgut=pU!WrnET#N4g>HnRlvhAgRu`VD!r6nJ zu#jxB0@h9m|B&WjKx-F6)?*w?YtF)IL|Ul*n&LIk68irQE82OQ0DsbFAWZe9OD40A zrFNINc9-yyF6U3YUq+#rI13@)ysLy~8YP<<%R6+@--@)d9!z!blEc{zX!3x1U5jp| zq0={T|1N<9V2zc*>NPFEyPHdlWvo>!a=lpMu3`;>%MM^Ao%2fbi}d{8ia3+8=yO95 zX)JlOqZK^Afa9Nzd19W450|+bN*v?Rk`5Hlmh3{Be_heS%qXFsUI*jYsuIfIP{h@a z#X$ofgm5|fkgKm)GFn-^>3TOjdcq-HQXft;f0~(wRnpMfjjc;Kb*x7zeEie-D z2_i6G6y(4{EP7M9P$|d-5at$$`xWUH?cr5x<;|Z`)h$Ivt;hQ4zCkG=Bc~7scFgV- za$X@vr%>2r1uW5%5ZmERws)=bWIt=d8vgQPM(f@HQi?g6@_u z<~8YSYOQoszoMY_QET%e>#F)ZxN&Z>jpkOc)(PJ7II_@MU|3gYa3&e73%n~Nx%TRk zW8iT`;NRwlti*0@nJ0Fn-*UdE^USxpW?6ZEn9<0Ga8MiInr}sm0PyqT(80Sa)rq0} zvo44A>=Cf0WsJl7tFNnC#jJZmzmeYPSNJjaS}E&Q#EqS5ZEh@bO||My>vTtT2iu$U z8_j*;{hDRGJRjAy*5UBJ1Z~m(F_HDLLw4-#nx<`t@rLUJ-26P6MI{ z>kDJqsPGW0YHVZ#DnDTdRjHiQ$loqJyRm5mdhqk&>JBf}p@WnkB;#4s$@ zwqc-95Ggu>hQa7<$3%3#ej?EjG|aZyLKlhIXW3tI{V^{tq)LVz!FOW}m-%S2myTyx z2m5sKk*AAY$;EUR!^Sbois?y)eU7OvrjJY5`OIjDOIRI~RZJNvdjYHqFH6}K@Uc}R zV+*1_E&_u#uEj2KPgZE&^N*a+Dc`CmE5|||uD$eA8T(w=QIyZ-`z(!mIA9BF(z_4b zbnm_ir)*2*?6}~@q5*SPU|_}DL7=i7GwdmCNq9fyrT*XE7eFeLj**<3HOqLB5 zGmVAx9~_&<%osyo=h#q{Z4BTC2YIKiU2M?@8uUS~ee@fS9nVZ2LybzdF=!$Jv^wiM z8RYvo&Cr_q9K3VhTr7aR8gi!c$W6!|Ze0U%m#lAfXfl>AZ1+kXQd8vo~f2{>S>SNQkH?Q_P^$A+_&>{9GUuy3IUhqJes zC8Ov89XlSnMy+RSnK7g3dOfRWR_D^)diH*1WG;<1uoX;vE?sC~qnY8kbghAnWG3a( z*9`0oMx0CKF|aECK`Ua|Xza-t;DL}_x;_Rbj%_sE1-Zfda)8PV{c!j-NpVa24GoNC z;i}8%ooTV`Yhvc9TzbODCW5&u>}nP=@j3LLacnZQ_vJWNAM)&|zCsyH0nKqum#YrG zK*_iq`b`{bXC4`~b7VYww>b9QY-rTL8ci%CAyVi8@4@#d6QqT6#O@caoBc=8_f2dB zvoV`~V`4`D7Y8J;IiY7qHp$jxH=h}~G<;3K))4oa>zcP1`x$z70&CJfoDFlzh3l+_DuX*oQ zB)WDD#2lUhCaKqF!tZq1H24}ko;67MDRHY*WdD$crL+G4o98v@Y{a;8$nFE!cF2tP zo(Dtx9kLE*AUT0K;9%8{ye5Ps5ZWq)q!8MIA*fYGUZH2x*{GmRL)BO$33mOHSv1Vd z#$^8s;ovh9F|H9xD`2y?3PWu+2(1*-r2G@)86hNtP<z`hrru#D3)5r$Mfenu2sQw|>uk@iDHic1T(id}BW7_XIP+$j+#5o}( z#cur-gRRc*l6fSFL?Y5wS9*IzF8w2ieUjOlK_AIwBg@`LxTDS++TOc%bb@mNB49JX zWh_`K5?$mh=GVLQt6cDO%|lfs>&VZTvMZ>?W%@=8+uL=nx}znOoTOjovN601FhfWY8&jtf{sZ0fh!F7ed&< z%Y={&LW_lvoF7RZ$56eiPTSb}`kHNRd<1z^$U|m&7(+0_wTD|@Z``&W^5zS94CFn4 zp;qS)of7RfXz?bDW;lO{SYQXTA1{QkcQ_%0y`#WTt8$RaV1I1p_@js_t*Y_a$jpW)Jg>E%+?%>H77m474Fq!d{vNH z4{tJWm3RN{g<<^7OOBWUS{OyU*#54$6J<@Kywx)ynHOeE3}J*iCCMO8A0qvTyi*E# z8<;3JFrqi-05p6jxu5^z*i2C*T|SB(p7uLt4G69nKr|2DL;{bizREx$WPibIiNqza zK2Btd$e{;Ev076NN@Pub{|@F*dzVv3zCk45OraH2L*y$V;s+X(1C$@lMht5iq8yH4 z#5pv3H0uodHajtKQ%egcYJpEMiO6*fu0pYkK|bF%hFuv*5eIyEfSv(_tISNVj)CpT z^>mszmNha@W>ec(b{y>5U>jc$)RPXt(6_Qj5ARvFg^0}b=dr9=^&!3?;ZsKW7Ve`^ zynvlx7?Hhc)2b#oDysKYopDF}>byzjv~0SefSt}XrqfFWY%z0p7R|FD8>Z8x7WN_k zZ?N^wgSw+qvFkX!WMQ`lZWWRS=?zV%uNSg;V7PInkToe=Ms$loDlqNqsCFDXlldi$ z{&O6gA9V@EHmJbK94uXRRE#)fVuZYZ1nn8en!sf1>NvJO;kz^dfXysuqGhm|bqZ1D zQFvn@t!|s{G&Ag*8j_OPoSaErMer@KE{z^2Vka}o5j47(&G2JJfR_eDD;h!XDrSpp zcjE=>41Fm4npoV^Jc<}m6x&6%Gg4nj&*aE{oh$t3eg&eZBv#N zAJ?&MK#Vf?UEb=m!@5Vo`#lrf9R-hQGidJKAo4W&Ez?FFk1Ln z>05Y>XfkNtc-UP8WYC%8Vdp8!perB__E4M0v*mE({(ajmukf{{(g-T<#31fZb+5Ce5y3^Vmi+m^Rd`1keh0f$m42T*G;ZOQ))V5xEPm z@y}S{+#H(TOT`n}G$z_iGbX}j<~`axk?m)m$e_)W*!$D$IPF@iK#LT0AsM}_L(`XG z+Ey@bfw8WCqYlm-@Ngrdl~iTWm`b(~F5t|qWD`S1Wx&3{@mE^Zg-^oT^D}lx+*i}+ zE0wIxXv~<=zO=c_o@WDB<(4M1;{pJoA2C5T;b)Lt4LdL!n^55|5HMK`RvvuD+;`OA zXBYG>J+edXt$W3ULHSz{tAn;R*1*qnIqsOecgTvlv6@Jv8#U$E={g&9?CUipe{d(2zCV@dYM#U2y-Jkgq%Zzap8=Mh*mKA&*`KpRs-t5 zxm9dDqe!R!s$xfI|3)^}EW6pLk0>&91(s~sX#K$pb~^Ug>GxG^2AIwVO=kZIH(DAe z!^g)v^vlWYB)Ib*JB7VhR&2Ie&2;4yc0|BPtgky-WY00%a?JGL6gDL<8PnwOT7(E& zW&F}>aLVG8W6V0U2_5T7;KTV2;+wMV8vrXLOvgeqB18E$e>{4mbac&X@+9d63hKr?F)r@1;WaOWIa=foDO)%b;wNgJSHy?0zglF#LL2z(w2r+ng z&nIc^-D&Ax=pe&5IjvhMnj5Ua^u1~AwR;9K+_toC6#JO|VOsn9gYcDUZF=aF_p#;^ zGvV2mH!+l=JiH0QuVdKCh}!hfy4Nr=C@A1*8xRz$G0C^7726xq?#4~fbnx%d>M=p6 z%04_{nwggqf?&Mb<4SAaoYpIA^@R16rn#Pl=7;bsA5m|Yl645uqkQQ-@+^k*jcFc= zeE^C~@RakB8m2IgitVT;u)`BZo}+v2V%5O{EIcD`BXwAcG^WvC?t(AIHmbavjnmA> zM9-o$&~w7YQrL8XJDzvc)Ot6o%eCO@TPSE0P^w44kujMeAhD;dY+=A`T0b#Oe#T4k zFma%b=BzaO@4Hz|Z5k$8CZ*XXr16>*2~TlT&|dfBWTB4>!QS#!Xlw%#`&7ze#oo;Ar*`u$w5pO#^RLNyg#+eSqYd-5>V*Ci}VmQ z*fYr!V_A^TIC^eaPit3%@=48HMs z8`C{|QjrZ$>xA)XRFgM^)Q_;fT7l6WE7g&oG&~`S$c!7ubRY48`%RHwW;;zy&vfpI z2}*qbZXOyz8n7HR-q&vOG)DR0fo3u|MBGp_C3zO|JOcD6bF|^41%vuEsh$^yT4}6P zTZ58s^Wg>rf#=d})o*DBTN&mnh^ge6RQlO{Y-Hgwg!44q(I(?EHF;b}eQF4M-x6#R z_%>tXV;FcQvXjL&ENK!GTPjVN#fH{8Zl(?hf*o=c1@|Eam@}KmJs8qYOZCjXjqWjZ zcj%BHFp>KaWGxcg7%)hz$yaa%5?hJ+aDW*)qni3}QO(xpr``=}0-%6AkqlXfm(jhm zShZ;^!gTx`%Ciz0z_<=NB9u}zA+gW|B%E!Q{Qpsgf*qrAXt3f2!iOiv?;1JNj z$lvi=S9o`st(UySh)75>as*|%7kTwzsSOXn#*sv0#ytH4s#twUD%=Eu9?@b_qu8X6 z-@t%HxjrCOeiT3>cQu^$-X7g0weFu&Gn}7yyfIyyc{l&wThJJHt#_@``mLAzo&qQa zXUMN9|KAz%6T;Y}sTOgn{YuLJ&XAMBXhaOmkc$Y5GbEDyfkFMRDW2MEDMK@4npz%s zhh#R9D+q;MUtMy?91+S219A%U$*(CmL$Z7`#7{)N#Z=EvLwNgaYVxI!_VZAhyAnBR zxhSGmm>oyG@;YI5e3?am@Ek zg|A^M+^@H%3{C}S5@h+NLJ%#O!%9ta5ZLp`P-X5cHMvhndu$*L=7S?sO&^-W8f$Y> z1d0BCC&cI!--LMEYh4Z#qWhwklpz*Ui3|V};vZi9s1&&{Aqp|WHz9IUx?jWzF$R+c zC&c$&eMXA>$p2?TjCa5Be2e1fRNMC|j7B;iu|olOV%v#7V(L+rXd{Rp2KBNOPsmUQIil6p zVYo%{97PL&A`*x&;5x)p9g+x1U7klVRVaz6N_tU9!VbAQ?Fi2=ZJNXQOd*DKvnDk&!|8cVC zSn}Y6?F&#hz{YWi&Ma~ifvOWD1;Pa?vwQ^wD)(S+W6jFvneN9$)o*KIWtz-%pY+OW z00(&ob3HMhWZw=8*R?)YP2LoeKTIB?7jA=_9$*XZGp-sW6i!6i$$EstnWrVsV^IHW zvS;%Uscw4ipVr{h2=co z*A1gW76}y9-9e}OS_pYWNPT*UPRCy%G@+;zLaO(&UEqz>}gTGnt5~@Xl>b4#;m{*TUrP&oL{q!+P2~t6K+KDcGgA zdLDKEBQ^Ojumc49c-T!f90y%!43-|;XhtW41gk|xjS&gUJZ`8B_TeNPp)9eX-rBPoX3xH|dE6L7JnJ8^KB zKvMMehIGG=uDkEXO(gl59+}UEmxu2}AnxNuC=?gZyj!Cd9Yk zz-|ku#0~Oa)Vu(; z1Uy*}()hN3Lsq!25*{m(MHu1=neI=$4a-EHqe<{5u|A+AX2<6;_`^mqD4|F-S=Oaws3_T8yHMV1TgTB$cGQ52IuX=Y9*@h{e zJwpvKc83r*qzw~!J{+p7Z(j(V@*tZE{tTXakd3KrP8wj3zT!cGfjyoY$-~rnV!VU zZI+~l$zIXj;At9n#+gE{rY1j$m+Etq_!s0)dP#|Z`ThaSxNhwTY1rlkji+P5HMvFv zoNYmn=CUM#vtja%@^&Y9Azi3VV5AL91H9{0ZSlgWWFxdNDjOM?{0&bbs2LNX`MF6H z5FGI~yyq2J0+L|b-g$1#C(+`C?89IJ^7cY@cEm6&MEsMsvhEWi$Mma$Qq#gEnUzV@ z{4g7#6ekHu?MxD_ewZx}`XiC&@EV;@PKaFRcD6qZDmi9uB0c&DsL7`!?hJnv&e0h@ zac5o)yF?t`9}iVj=Zg~?>U3A))x(zL@RA&QSpW0RgO7n84Q@N$`Uhx2n`!hS_E#n> zfpU+t--}P~Jo7kPBxe3)qN$6)5Tf2h?TgtfOtFbhTf%N*5=~UHluc*+O?1Rk_HX=~ zzKnH&gOsDoSd$+Um*GSmHL=E1*%NGxc??ov6@eE5;aUNjt5_}>K^2yR85^qVgC!d! z5si6O^;Kwun-NcEJi(5r?L`p7{}&`0Q&F>snnc0=rTw*dUQ4zM=`6g&V|tFf8n4sM z+A0|CSw#9*;@cRqI1bB!_Y2H1k zF38JSvKG^Om2J#RYkMV!JgeKuDgn|wH#m|s4j@^66Ve+7BBuP++vvvS?69QeLuFS8 zC55;NN~*|W%tCckj|7S?j;CKNhmVx`Lj^YXO5ufo4iB8wVw$ODZg3E}AA?aBmft+o zPVBz0(20ERnvPZ{e1&1!R)%K<$8zxfmaFLylPQ>5p*(!HjY)q?N2XzPtu#(6=I7mp zdrVBqaT8NZu4AA_i5YwnFxj6NNA8A+0*=6;M2~-mQ$qg0^Z|Zv1AlAeH%tHr zjLckZXq%Lr#b||+yodyrAFP&@HiN!F@Nv^?#pMK9j%`4xoQ2P0rGATvF+4z@A^kJ!G91F;6DQ{cJq#M^ubk1u8y7K_LpENDFu3BcsGSH%X>lYaEp#Qd$7 z#I4NpHwBSrjV*en&QQP3&^0gx2#Y|i2TzjY1_*eVxFbv)8I2rD7|a@&8bpK{^NEYa?CQ$J$xP*6AmX>${BfSRZTP+*_v4 z)#~-Tj8yzHn^qeWbHor+-nat=e7#*xwjrYR+A!F6)VLyJ+W%v;Xk%>uG4k?=xjoWe z*{oTMNGrlD&i<`O+3V+0#k6lUl08Tm#^oTpJpnOCT8v9;pw+l+Pz2X=G3IBDJxs4; zt9W-1c@EPO^m+7+pIL2I6UI`Mqx}#=s~&7{W_OFpGnjg;{FYTLvRpCPmKoc`yMl7< zNCo*%488R;8_HaYrJ7&Z1m+&z^&25X%nG&=WhxJf9hkOfmWy$PA2CDDUx` z%e(^DlE;ZmHXK6F$A%-_h8^gUc#=>foFWyK*)8LZyt*JW-Sd&*$T;JS8ta?hd3KA{ z2rs*U3S@UIOg{Kn!(aP2Qh){F>VQ_;n7ASTkY@)ozP%}^#m<1gNs^D527Nxj*6YW? zFDOaiG-VsIp^v#lBm-f5;?|XJbZnd^*iD1bgDV8Dh*~{T+tF zqy2$Ra$e~ukv7@^R~HlB!Gyv5>kFW7o@Fc58<3VNeIVE)P0ME*jH0%xzH+KQ#}?Ka z4@(;DTdS%H;hmfCs0*j{iuUEPmt3M*$8 z^4Wz$=KpcAdBFpld=e8&e?Je~yd^Q0Bnsf}M(JsZ{HR3MC6TskVg(cNdb`4CO+EzI zm359{F~ZcqkMEfCA(UkU_2H!}IBx2iPUd1NfE%BHZ#03Hf<0G2yg`zCdD0+X!C6Ds zbmKDuh*AW$!1ie|w(Bu;<8N$KxqEbSMCRh>e}BInTmp>3T1#>A<;u}fR@oi3BFmqN z8RU4!Z@!!3cCf-*=WMQXjfz?SJDZ>Hh|WD$4pOH(3LLzSef1Sx)j=`7%JzsJCSJ;pLOhW-pd0gn#=q5r5y4K(8-J5wn_m?a~cZyD(Ni>x`M+yHG` zf_+@dY>O)im61{d{q7Jf)*=1IfJl~L;i{01J@H=V|f!PNrm_0~=eSm^{eH1Xzm`AUG zeK0g;?G-krBzLg7ZL!#UgTgb@Fvv;9+Cd)#+n=w3?Tii)Zp~<9b})_T$oCl7Q$!f( z$UoVHY0!1i;Kj$qtDRuv|=7Ol!>C5L35p56%A(4HQI9@HsDqGJPH~ zc%4Gzca%}~lN);a{-11gMxQ)rK=8Kr>!B0xVc^>W%XNb98D!r(%jJv7FM8^Cm5r=* z?-rBqZ|B#W5oTgV}hvjvl+tj%31g zRCR-`48A(t*Jf;VJ>zEq3%ti~z}=1~b@b{DP>+8#oJQSb8<=>Y;3jKe3U&0rO}HhK zrK3@|*hFU8a9VbYeTt85G`*t4j* zjc;P=tKh!`B%!2lY5)5!a&9<{>t}6D?{M1V$3;`x&jv7=!|AL2?9&G65QQ#L72{{` zj~=RFgS^pTTQQtgctL&kGQt6}4a4bUUO=|$PGl#e5!sj*%$(KG9zED(yMXYu|3R2I zoZ9@jNM$7=9O)v(!|7r_ZVHnvAWUS|MAN_hxH3s!t(P_jap{p}XrM`sW}Wv8p|-%| zUVgUY(X^T8qM57Fw4LXwm^0DXzzC}I=Y}z3qN&**@Higw(iQ#y^?o$n?9Um3{r-ob zRnhc_KQ}!5O~fwBjOmrWf2v1fOz8(XzYJdgil$ruAa9AL_XKdsvNKTtMuTEGEo}?n z61l!=Z?*Ezh7(?DiQz)%9|2sfVHd&-NZAa=ucjj^J$(-NWQCS&PylC|qv?oYoZinJ z+7F%pp_1}wY99ubjEbi34C9iSmMHq;Fs?-6uy|=oAeSF|{~Z`{nC^)h8m7m5jBp}~ zt`6j)A|%o9kei~fGttU`bsGp*5w;6#PA^5#y@AltKSuf3ASZ|mVDh49Nf1CP+mTeSf(A{9qK~V%RK^ua-70P-vnrB`L%7!r-pH?W!I`L6{-&2qLYzLqkki6+ zj}bM-SPn(fPeV96(;G?6YA%t4f?K*qPDNLTb3FY>&8eBD zNP0}ojb&t!C?k?+p@vIfo{gjnHC#ONbR=D`;f&085wugo{iMvtI)S}IBIz4pKz~vs zy%h%akO<_OC~6Jow1K}wOnWNM`Xkf@8*j$ZNgoa8GU#e#uk`quVSM+6t6Eb!HB(MHgg2(DiB3?i_CSY{*kcS^QxB{fts^tG1!JQ8*nP%~h2f?}BTz z8_dla>8OE5ES_iOU&*lQrRVOwz|oW8B&o(dj?IE9hg+bLhQjhMn| znVuWL90;d%dM;MtPUxqv>bVuckB4g{K~N*b0#I2^IL$V2Pego=_j$U(Ujd90ls|~k zTtmUQz?WX3=1Ab?9}Jw1nIBHYF`Qn~7t~LUG2ARBDx9v2;XYy1;nWt(>6yNpbWtpK zZ`gq_d|(smIfsZ)Tn%e8*!G3dv$33wNeZK*jocXKU>IFtgi^+{)M@0b%+q1?j1l;6 zV;H?FjvL2Rhf!x7XNg{nNZ|1>#u@VzT=ySX(sP3E-(VnP!>BioD@wS}R}t8xMr4w^ zG4g82NnQ#2UlFez_&)r`Kw`q^L-E`u=4L2`E6Af5T^O~RxOC=ZC|zRWCNZ}{=>ZdT z+=rp-6S%vX??UOl30xU-Ae3%R;8MdoLjm!ca$VvcAY$Mnu+h+5A4)GIaK_g$D zcgQ;>4`e9GKSHT22_#2KD77X*&y5SE8XQ9~a| zh32f&(C1RQEQx#CEqX8&x^kbIMx=3B%)4r8OXD^pDHqZ>gEk$}v=)jY46Wdc<7~gM zjV?9VFRN*CIv_G=Xk|JV!-Q+-thtKl{aplqEhdh}Htall36OfGccG=#ZV z=!A-pnkfT7Tjj7sPsdcdO+9N{Ae7sxu=)XCi)zZ%Sl))2e5t*3u!I8eOu)qDJ0JBG zkn0?E1#_Ly3mTypJ_@1cEG{v-1BryxP)r^F0C^MRbG7Fkuit32?b#NzK~cA?i^QrQ zeZ>Ox?wV1zD$u1@)8;HLBt1&KXR#O(9$kWMSvq4-tDWc|8xf6AUu&Eg&H_OBy*`9~ zmBp1XQZn7?Jm( z_Bm0wzZqDJ7n6FjzU=H_4^81JZD$IbskdWON(`YY&hZAU^U3A!h%U@fDW&ynN z8tlWcZ2-e&ABI4JWuUq!cqLgvYE{&n2lXsgQCl7tr+pA}2dL6iNr#&DfQmNfaT?}6 z72TQ#8=J{0dJ5ocOa2QUzI)hrbN%#3Rm-n6F@kR%{b#BT;QKD8iHQpfUQ-%p3U7e3 zkb^4H<16Vppdtqckhnfpk&g$$yprs@12^eZ4Y_Chprwr=AF7aN6bq1#=Bnu0d@eKm z1J!5-Jn!7>m@d)3hWU*SU1OjgX#F;yD+i}!(6)P&Fc&sR$P&yqZRPzD&F(f8@>bpK zz`BG$ay6J%jO28)++%L&wsqCFPJeaRUG=ZL`RcBjq)vsuweUNGWWw)svSR3W8d(nE z>Ve-UAUu`e?-a6Z=yx(%3gIfUP^Dj@qCF$IN(P7@K8g#op`^P{H7M!aJ5d0l1Oy)r zGgSjmn7n&KKV1bY#dK^5_>2~AE@fL7{k_4iDxtv)9{~-jw~uuf(?>@E}t zl15^Y4riVAeXuqgHB1PhlKT>#6jdMhGdP`z?X8|z@_R7-eH52jn-UC&3iV^*7fk)Z zk}XEmpa-|3-vofRuFI*z!V!pcysOIMFgWLsj}cXsRMcvjGu!geW0r*mTh3^)X8+{| zFh6vEc}F?_|0=f|%Z(P_S*+VboufJbS$(Eq1~|wGbJjmsr&|Qq3y1=Ng{~nY*I&VW zgd>dsj|;%|AU*qf0_tPLg|T9TQOs+b^ktR=Gr5cYdiNPjhx}iJzroJJrwW8UQMN^F=?em>0exUXO#+yb85Q7zEMA-52^APDB7;R| zu!lRMhQ&YU&#Qd9sRq0;B61xH2KUafv~CO+R(&MMM>SwHGEDUX;gA}D#=H9T!>W~D zgLt{nfNZtR-`mE5013e*(lW!4k3La!_>llvF1{1 zr2$;%Vj9c~`5nMQCY;?rG?3@Lqg8P53A-KR;u~;+3>O4r8PGw$G&7fJ3~KHVqH_x1 zBXUMCU0c9~rc?!=cCwyH!6%Q@b%I08>h;IP;NLc*je&h|>l_ zkEhEmToLD3Q2nzu(;<$h6~&y1UbJu#lP?AGcuQy=-1`9!f)Il5C(y?kzn;2KS@7tU z_19y09t@fxuv`;S@?sNhba!+iw2~ zI!ebeo<1`UzI|GP;36`oEnkfQ19+ba%6&}0JA3P60$yaXrxBnngbc^Ou&A>F#@gGz zKHcXbo|=oe%G#;8U-O+fz!j(*ut3JKOgLkxV`mvW<13`c{G@5I}e2~2rBFe4^- zqrS`2ZJ zqif2!bIcpV=+g0=-sBzzrcUnbQ`awGOf{Ndt!cz3vR&%7Vt%de@Seo?`wmV$wm{rx zkE31VISaF97?n-njPXP$b#W@t(O9$H)HqbA?(m*f@ArA89$O~vn;u7P6X3(a7C_fd z;KG%nEd~zw0q~&V>89>iE;Gm1Wm#HxJX7mj7Cl5LgTyv(CE*RKq(rC%6*&*d)3oTLgb~dj$10>Rn0J@`+v(&nmPlc%hH&zf=07#@l=i-tLjCBdl zvTUI|gLd?X--37s#z8zS6oF_O5zw9xsT09**7So zQ1)Fy0FY5@@h`}ze+qT|cKcVT%lL~QU0TIGsrv{sMk|k%pX#pjl6QHC312`hFQ3_H zXg=UiLnnil$m72=e=_G1*EWt@liSAnRy5dfM1ImEZW25GHFcLB_6N!EBo6LFWfia} z&d4yld?q1QKi+>vQG%2Yo-t*{oEeJ@MY!PX^*V55ogJmf>%j(xjY` zKci^tl=H3KT5M4U=C{d6jQ>d$G)d;8lB8lXN%4ov*`R#U_|x8MPCI6pfJ~LA%}X?M z{-#BFh-}W*Md#~5i~=%NK&B=yV@mx3;GaBGQ09PLZJ~(l@sT1(bn+J8#^M*K z5=_fU2j;9*rVMzM-hOA^+y9;C7CI%~S8fO94e67}zdApf#(&FDgTv7;cly)sBWya|AQ?4Se%P9=g;7bcP-)J*lz(?oi0J(_NRDL()wW0ECs*ryMJdR`w`Tqg0 z45#Ba1?%H6BUXSU^`uMv@qLBWaS2XuMl|B-al|O+IY=nSk zEjk5?-$cXi;sR>j5BXQ;#~Sno&C!_dr@a6aE|jeYVj`>JH)-@rEWYUn`1&K9Q2q(j zd`Hg48YP%_ytm`kI^rkfE%HV_7QacYzvTxR|BtS3fp4QlQd`xrIZw;34MA4 zR$5Ssf~2vQa&u{fQdm)1n-&nXAif}rrYTs8pvz4HF8gj8iIz$WiKtzmF0D`z$}Zw% z5$i504!FiJePxBnXD<^pE z6!q3w|GR?oRs?OcWYeKEVbJEJx1vqIQRLY({& zk-9bA^gYAy)sryMqu^{Cg7Hj5_VgapS%%>YzZb_HBR=Z?q%JB<;fZi1&()1c6{kdC z5yQZ@sIT#@YVk)QyB&}DmLXr>@o%%+ZV8z$N8q%!F30#X0hil$T5&|R5;GduaXR1B zyS|^R8&q^fkNC>8YOV8U@?ld=C_6@$Dbn5^k4fn~Poa1goTffl!?Z`>6sQiD@odhF zNJ&eI)#G-M#t3_MA9EP=3U60)BhqsSCB!|`7Ll7D;VO7a7ZW=p!mJR+^o=&V&l%00 zz40|3>9oN#J;L>;r*sJ;vm(-!g7?iHx-Gf7Hq1GR=>FUqF&yj5pJzr4()p|rF z!X*Hr^N|SGk5B2692u0#IXc4cKDRvjNOGoAWZrRY%c$CL@6+5pecP~9_nts+T;Di z;Ckn2UFu^84KWM5Drl2UaCQzn%X-(f0^PuY7xd7cC9#9e?yHgJGR8vtM+Vamde_8xx)B4u(u2~S>E-ULxcdwI ztrp)mm_FCL*3Z)=JaAMG{(h4ty~sICrp2ETHQzVshiiY%{Jv3t20JvqMtym~pz?wt zh@UU!AdOw2a{7b7YuXyDDq5NUJbFik2t)KYg~cO zH0{rN;_0h+22(hVx%3{xnKaxsfBI2@ohbxo?-fith~5@Y+D1J%d!?xvO9%ssuQD#` z`ot`}Re{Ui1i}8c!BtbBOC9`YF!FlEPmGbvdl?A^J*UrICNt>y|C>SH9R}00de_iG zFzBiO%^>@m2Gbn9tE3PNdYm&z%)i4R8)MKE&Y;PhL6h%dP`1n<3uDl@|2Kmkk{Ps+ zG01*TA6M)%I@6>C#-PV!21#!agBCIdMWWDP&^?05%oyZP8^{<`j(tdoUh!{+_2Lyn z%*tEMp&sc~gRA@*U25UWhM1b`6&D$E!g`ql15h`+j^~mNm6Ul=hxdjXYcGuQYxYKs$KO6Vh59?i;VqIeNQ@Ug_ zSj*So-|TBK=6g52pmSM@b;XKIovXT7_uer3dwS&$PY6G_kwWS*xXUT{~iT zBold*CbL@Wx@Undq2z4Qld-r6>+uSTZtOEQ4KQlY7;H zdRz~dgBTGx$*I#bjr`aWaAn#D;^ zW3+Rm)-~c;U4kR=e+Cbw&&nt~8CzaBFndprU`htWJab#~XFc9TL*B|D-ee<0L$&CD z&xR_#>~ZQT52^ahu(U93)ex#=^H6~;Rbxrj`&duRbqy9&_0rRZygBgMXB+a)s+$J@ zjsqo)rTnI7lug?lB{=)jXJ&-9T9u~{GwHQvvyhlRL^2w#)L<0?CA$!g1jP?sY1Y%% zkMuP{51i%v;u@HZCuZXyg%!{6nY!^FuaLL-dbZR9c$aRP+VPgQCfMWrj(;&!(Fc|(xqBYQD!QUcd|k3XFz++ zTiK1oF{_2De}&se(~T~-3E~&7)^mK2Vk~U`Biwaqk$OIwhVa*Lvs`_2lboS2eBt8UH^NOD z!qeUMX=?0{Mbv6P+I~;9>Z7+3BSyi<`R4l-k%Dt0K^tR;_{ew(mXS!Is#a%*3C`Cj z{KCSon!|B5!)@HJQmC7oB8Ve8T@#+u4K{ndog3vPaKZT!rQl28?{s1UQ6*%)2zEcG zd%&@PqG-4V>lr1OKGjgJR0ovGAC!vI%CIJ-kPegOr^DApjir@u@p1xN`LE7;y(B z%oJdn>DBh+t)yjb`vkmfMLk6kxff^g^H zcJ+y}WZfHO8E1&H2o^!;yeG=i1C#q1g_a2|5mA;hz$3UV;{msy)-v^oV2S=Q)>1tI z_&ydaGZ22PNpM(>{19u|hfIgyPQjgr>x45rW0^1rZX{e5Tt3_ixb1LmxU6R~CybtO zb3!E$)x+(CgW#1#R{{nQ)WdD)G+MHr>SGx+ILfkfzR|K~zGcGb=aCn`MQ~3(<>+JC z8EKgieP5L2JOYT~eE^;}bLPx?{2qoo2KOagE8KawD{!4~XOO-HPE}-?poNQu8w8gC zHymy>+~H`!5^q8{IGcs<;2>~In65rNF3J+!WwcCnATS>;dUoc7MfhC?R|e;X+XHt9 zt_AKKT&W!Z@GIaq5^fOONVsuuQ{m>pErMGCw*hV^+#$GAaIJ9X;ev45Vh{;84$d(H z|CYg3!nxu0!5xA-1$Q1!wEzf9kO{6DrH#dJGTcbGEV!v~?g-0-`S`7btA@+yYniYg zzx7Ce1iu$^GbfA#;a|dk9_}XGJ`1dT=UW^TD*Fk-3e-{Q*G9`Y)MtK&(Nd3kI|fJ9 zk+m2lov*e`#qV^uBDf>ZSte`+VW;qW?pG9`S+J}FoHLN}eaMHKHzF4y-9|VUy0wIo*qa1pGo+H!y`*k*iNklVG|tt+)nAG{?RgF*Gmw(l@Rb4ttIvb3Wj`V2IwrK2kInwZvK@UWKbYHlxZIONsF49`Yty5dt03i90V9ALREJGd#H`(7gXr8MR$^dveTu;w$ zJ@|IK`VY&5DPLM9ypG>R2#1pFIgIb^aDuS!CJq>^5`>Mbklq2Mpxn;Vlq!2jj|%%V zh}VP(k!28OI@xr!#}%#9jZ_AY3a&?Wy2l*x-$0_zSSIAa9Y)@BaEDva*5S&4a}8W2 z+y=OfaPBPYgdpM|0&pWOCB?2_JbK~;Eo~iBHXcmqUFF%eM4;_goOAezE^w>9RYW2 zgWB>W*jovIHC*Ls$Ozp3kKjXy%K*cY;fO#G@5q5a_e%p0xHm}^$VUWK zv4sdjNyfhMV}>B~^q`RBuFgZeKwTjFoBk*`T~_%O2!X5o8ic^Pk?-&)!foOYAuIzN zPKF!zC$%O1EM$%P8n{T{#yHX2*6pnCE=zT-F4YZqAlTEmw|m|;cU4=@xgAkB5{sp$ z&5H#4Gq=)eyKz9^mu}~tZd|=^-T7WOdUa=Y_oiLlu78&5?sq&9v0?J6AE^I!x+reL z%FIpOyHy$tsWRW_wzizqq`h- z28DwCKiyUT)h(T)Rce^G*o5Ye9s>AWcctP`th1Dny{J1`QK^luIs9(MFb&3#3pir& zKi#I1?()4o@imd=y|-|W#YPx}eAoTyrB;6DaMjb@t9}r_l`R;np6a%r?KaKr_Lzm3 zB4e2INdnHvFwN*@k5{tMjB{o;MsD@mox_}ucbCTsYxnCdS?#0+{u3G$Tr_t9Gs|nr?uPY9rDEsyO%u9Z^Oox34G+s9$2N`bc5PUyOB$Hg-8-eV z|D%Jd041(my=i#2t8AIB|9#TGwHVqb5_K%H0EZ@F{Yys*orAkw?=RDthIwP2SYOqk zvVYc*kydRTTj=ah$yc?FwGO_DjpXt|gLFnqhfVM4cJ(aN4b0PZSC(T$xLxV#+izW_ zA-O!0?4ULmggcd#(~}#1%wO-Rwhp@Y#P^0i;vO4fE0?Sa;3q@rHjj+IUrpoXuA9A7 z;p+0>P1kcT>V_zOyXpGVi@E_0>7Wg>oML?pw&R?wl#-U%=MEjA=C=sfXHKc2kOLk0 zCQnrO>^07_l*luq-#f5namPBpq0a_9CPJw`)y_VG2bysAHol~PXtDYCDaC`LoF$B` zG10MD6~gAvQ3|hh&<3ECt#dZhClgG(z7Er!aOV*Uku8|3o5m~l%yAy(LDio)8_3r> zC+CyhpKJ)$s=SR_?Be)14B0-}V>ZOw;t5t#gYu-xepri3HI9x@I_p?oW5&_lM>iPX zN0WnHuhQw^nNh9PO&eZwzI)U4@qg)J3#)FL&CzQ&-(P){AdNn$!T{WRKsy4UoGu3F zIsw|b1tyI31ZO>m!xGl2&nb8jU|+xX=A<;RU_MzYF2K=D?O#-Hy^#6ZO;^Tp-QW>x zZo0PpZhkpxdV$lBSYDtg%pB}|kznC1r`~G*p>YtbZYyoB^5wAoDkPJj`Lqm^p-4^} z6Qg!M&2e+#Bx8kjLF4p#gVP=HX z&$io|s6XA9chfM%{$wc~TB8=?#9qqHNhBWL(=eNO$>u6ufraqlw`ncFtXTZl?+r>2JjVER<>U-Sy>@+7 zMw@*@hjaMNwOcYX(ol@C4H^ea}GsT_8-T#i8~hcvCU z8T#?03NP6zupBpD&&*7nF+zd5rQs$&wYk|gj?FOs1 z@JdtlV}lGQe7N~j^w^5^5y|RWb@C68iR>t$F>u2p;*AfLWG$`iwG-z8F(0$0%Z~2cSG=Rib{1t8tkwI&L+*GjNUr9NgkwaJwiK7JI7h z25Vo%!0x25>?=J6ZAQ~N|Jp6zGfNaY7o6$3f$1oCZA+jt`|!;6NhKZm*gL$DFO3`- zT>EBLwI}BKJuvC5ASkmv6&ZrftZ^m$QPP#df~J3=iwathneR?@YL1;JkHP zs{7gsQ_8K?W%J`>4hYV;8?K|Pbcqk95}m%}8wMOj#}V<7-k2_1)3_%0e5@;}oe31% zvfA(juIXnBaIK@EkB8u8;Fn<}6nn#!`7-RuuU&WEO9?%NFjTyeUZ|Snsa4x2cDP=C zSvPdj`Rf#APFc`*LHdHt3#GyeH+v`!0xALHcS72Fj z`nqe{D?0PNQU^uO;gPj+WW#k=)hjwtF}lNb>=j+k&^NA6BPCI(#!4i9*DZl6%qtvF znH3W|K=TTQWM$V~qa1*`@wzL|fsCmrmqTZcPwBvp1ini1YU9He$)5s)aSKb$W>i5Sy+rQx1>t_-M-Gftv8sruK-5!$~ zjfiji)oKRabK-N9kU;*s9Ve;Y>RTRWNO%7X>%i=Zg62`d`3Ofa;Bkf^og=`&lwlvq zBV#Nqax;${$m7h{T{UGo)7*558=HX4^dzLfKxXvVtz)ys?n=~0 zT2*+y$MXIbs;mS`Ld}A8{4m0sg7rpLdhgK=ZrS0|x{{r`_!uK4%{y?d`HPH!E#-a@ry3M81cEUYvX6M zk8J<2{pRHA{-~V2GVZ^3x!x+*B^V@sJH&)y-jZW#x?I1M>qNX))^9bARk^xcxvO>Q z0~U0pjvn)&zx-(Qc-6Wz&AJ}TsKW(CfU;UQO0lxb_0QG16vxW0O@HhvKNc+e+m`HT zRJdi|Fbc-5_}7~vgzoFZ+=&{j($tJusDw2;x2Zth0orV zO&b@!qOR;P{0hEjy1b7vZ9px&Tp^gA=!(e*PmCRzn4F%N@nB+(Yxx>1Fh0>`n#qVr zp?ghCv?6GFj1838k131$>Bsaa_tTHb%Kh|X%4B{){*|?or3+f=O%UTBr~e6$Hzs$v_Ic@^;RBD;6A}sHsmF8UyB3E(oMvqt+N7af zMch%E{)xh?8yZ(UX6t1G4&|n24s{MBc>YHA^gwuLuGC2=O>`2H-Qa!?_}SD?iJeO4 zxlW`6kyH%J5xVZj(-bdGxq$&R)8IHWqD(`OQ%xY{q3iY^%J+u7wr)d)K|f|kV)bcf zPiKZcu~+zGbIhiOv!2(^Moav0b6>lBdwux%;xcxQeuXV z$f(5Ncl+4tuhKqZWQ@5@hP1kiF4=Yu-GT#(6>4Gq(FRvhHJ)j+&+C8|V;eg8H0;e$ zP3+G`{$W7ieM(jUBel-Oy>t;*)Be)A-j-g7`GL4elWrcir_K7w%^Z~_YvahQeG~f) zOh0nb^NGPbrvtTVpVLup9yU#x{>jCO+b?>K+;l!cpgiWdE7v^^_r)5InBU=Xx7K*P zv+#Qg-}HOf?J4u-!LuI$c^&EIl-8l>vUBtq#+>MLv_q5EuP6Jr9?vI(#2Fo)Pa>r! zI;OnseWC+n`w4^~-8^)|+aC9t8f@`GY_V-&91mqko$f%79WTCdBW+=4 zt$M6kT&wvZkjtsODt!OjeGPWl}xq|Cb@w|4-tT#C#QcK{BP0j4s5-bV=F^^WL>nW4_{qfxaIaXC$%rUXQ5B5@XkXc;EUZ+AHVPVFGA z%=}VH2aIW8t%7u7N{6OH_S=&?G*_|AL~Vh3#N+`=dfs*O?ZSVrDtNuacdWxzutyu6 z?0vGsW=_4(A9qu$4eBNPIu@%v=3#!1#dvTIwSVu7uAOHg|E|C6!OgLsm77!Jifu<@ z*Cu|FU8MFP8B-ENI(+YS-2Tc#gGn{07ppJC_AmEL_tYLTR{C~z)Kn9^cRMtCG@iRq zh|{_b8U5yANH^!8%`@FN^Tfd#FQt9tHcTlN-qBIMtsNZU^bT}Gz~Y)(tG&;Z-!)f{ zXci?!ceJWCdBW}QejS?Mxz^X>3g5L|47$J00#pY+U^wjecNT)gI*YNm<{e_?y&b(I zyQ|A6;EOH@+A3n-2tD23_Y!$)JaMVeM0jv2i9T}+JI*bQnm)_FSZ_P3Ty@;-jr8F1 z@OX;zJ=rl=e^U9KDw++eyj#sUE~wx`tV!Xn%sOp<$L5Z7lzWuFE}tlSzvgXL`Yx+y z`Ut%-%Tt%{-bJ+7RUL;;V|SMo1EH)0qOwDCStayR?HkJ(EsgKQsz_TqD8Rt^8vPpj zR$Rr{&iShxc!hp*M|3nh&M8rOzWZh7KG*>S5CN*VnJ^n;buoeQ*b-Sogh)5qTOY_B z(ou0*2}W}v@Lq4v{!EphJN=A(`KyZ4Q9AI|UwbIBxU9T!x?$D656e8qiin}l^;Sbs zZ#5JlG=|qhkz5Z_sGUkwR}azA%c3)!=rYdq*VXrCWb#?89|lyO+GECI-;H+nJFM1T zrfQ^@9_yLdNmtul^?S8e$K);+{+%AAAd&M}@cetGal?L_#y+Q@%K&8yCV*SH_ z>#02lD-qw`b`IITkhsJ0bFuh$J1Fwhslb)mc191HhO2X*_Mzv-be&W)R?2KRCpQM~ zv@Xr}J-i@wsyjICV{YT@B%H6xIHjiJ<$|3wx(sSp&83F`slfO#yhB_;lr3{V1?H8hF?2imYC6%eXa+w z#!7$PXd+FP9TP|!N6f8Dj+|NM8`f3YQe>g~n9J-`$n3~=E_cCp*G<26 zyiy#{MXcgB>y%Yn-BxJP z2DQx5fn2ru>$ai`I8g6k80~vHGy{Y}Q^xWNU7_j0makbGm^a^E)4Z6sf#+*l7V|c+ z_)Zfz!Rz9u&XXF@#MFVY*yG*`l?{b0YnJX#CSOQ^xVo*ppRC{%d+O%OMShhxOgBn3 zotH{F*jp<1ol;3Z-Y(UiyGms@^p>}1DgU*@_1TBo@s6|qi@rUe5BiX*T)cXl zI#1o6-ri#cuMfAel9xeR-rk@@O?c{#7)P<1kiul;T6e@#cS=^S_P2PxQ^v}1@5!Zq zt~1?1J=rQt7rOn)oe2D3`u`P$pt&E~#|eHG1S z)&S}*Lf`xpcGU;+nEsh>mm`j@BK3O+pLcq4Z1v4)7h}e ze(sjPYB~*?4)PJ!nvUKmvB*IL(l{i@34DeKBw4t~WudTLvmI?LFY==+=~DYerIlCnVAkp$xM*S88ij_Llr3BczW zec(e*?Mk_O-C<4939e``Z;etgRW_B-s z=J5f@V{#4eox#YpXSFxuSTT{Z0;24j7GzXQD~W3V-W7md^(BMtAmGG&R3qS5eF;s? z#njt}iPt$sfb=(r*SS05<(&)hIwvO_-;R7d**KyLNP8RU!;pMSgPQZS8R@S0l7c*& zxReyTL&)9~W(E2x8Y3CAFkEE~aR+JkinDlxxYHLGWckJCSx=C?gnB7|RVSq{MtU0d zd$)CtKwIc!3B98U5hrL=d$B^1J(6zOx*eU~o;@#&7=h8L16)?gTo&^{t!mtR97t*> zaRvRF`GB9q{nRXp z%FYfLk9s_jGUImL@;f|{Gyp%yL+m*nw`1+eL=C4Usa-Qfp!y_|(T)bm?MR%0G=u!^ zhve)-sBa^hEBDotitt|J#7Tp1(_p{a0a5cLbHFJu<-BV;o?gcASJXC{QHh zOpKG*K*(;8vB*g55&sj3UEl5i|7ar7$=k867wS3QjTb{yW%pAe!*7W>r{oPY+1~ zDI7^?XG`zm7aE|UuEN5Q*n2{nR_Y>%^+jCu-3n#@iy=WdFkK^dOE*K=rv=i~P@%O~ zIEQY8G{-Q`L>L&P;taa(2x&fMl1(@UF&tu7NVA`f4GGC;hD7QJX=-jGnaZo6J*08V zIOD@lR)$0jhBV-UT#ic4tUyRpPB`VR}^B|)FV#_r#RvPD)}xyxt`W#bd2m-~iqLl7{|+`TKf zs_>q5gtB8_#A1s|LGs#?LPTq|q zl5tjSxeEtcJ8Q2Z9ud>PzA8&UwZ@Jmqo=bTvXbfc^f>mK}7wSD6 zY94b7RCuLQ+Ievb1%YcgUQZSge3Ksch9g@1G30wBFr{kxbh@f zh#>ES9aDUJLh`ETxlp;=vHvwQJ%Gj5LA`6yH*vjltepo*^&zs$V9W3XHoAiY`Y1#M zumw_0QfxxA1_lGPlq!8db;Qz$AIJ<^tD%T*Ks^@GD~D$OcFmF#xuIyTvMk5$z?x9L zGH<3fUD49=Xj)VNb`pjI&d;x5X>GAStxw?49A8A>b6w!1%KNZs1=jsmEO#mch&`!q z(2Q~Euzv3?>#7Lj1_t56JlIE_rQGFaSd&z)Xi$&Yu0XkE4IKusSOl8mix;!7+87S5zajX6tmXci`Nb<^j*02 z`T1*>Bk}h1UZVa@@kG=tMwET||03#xyNOcHVnm5AI_^*fd@<@U-#L4f-vH9*L>h5OZyIybT!ZRD zY(%+Pq+gM263WfVmR%dMX;)UWPxNb0eX!)mFqNvGS>vFtze z{=rwV9j8VJ1}qKA6HKk#+fGe}+t#gyiir>+XwAP^^JVj|JsD|+Xix!6xYA&H%{~Iw z(2hNXxU4CoW+nVM_-e~fc=r72RS>|MqSvOGmvtB%FCD!PduU?@oWpLr5T5ki0Pgtt=EUQG6cUlwY+e^+CPWyI}wjVUtV@wKh+9egm~~8dqN_1y+^83 z8MM7g`<#qG)m(<`v)kc$En@%1nR?BdpeEy=t@o|B!iMj?yE64V837US{?tRpt)Lg1 zFYB$SJ1q2z+hBSVhHWuN95IvR4+LZ=!1RnK)@~WHJ{=}~@7x6|8nlu;{cszYQdpmk zGWzk5!zKny>D1l@%kMsn$vENP%teq);Hs}y4uxvkPS#61mf%EVuIm-IMs(Q6X)YF2 zr)|${GT(RFJQ$mSesjF1aPa2B`*ug|FnyEuS?1W>^1>m1EBK)>e#2@UW*-O3By1Z3 zP6pF+s-%7j?`x!knS57mS-VA{`EOwiZm&uc%BzOsGkcXVCV6hT`#AX*!at(iZHK?& zDF;3x%H2g2kuNm=6UMQ}$o~g;K7&W|q)>4j!v=Q?KAH=JwQno3=i>7u#TCHw4<4S~ z2vlk0F9pP*M!K4K;kFLtG1JW8OQV{PXo#{gkT#!SzZ@;koV6Be2daNN7QH*;`7fG zwHThA4j!S|jE^9NzRZFCmBN>>43y4IQKj%y@o-HA{2k<9iS#k$RUsZ;Ueyjy_EG_G zz_qGQd^InFr;FlW6fkD=Er%f6%b6Y%e2y3K<#p1R?*(|JG8W-m0>3ExpQj8C9=@28 zzry{`Qu>#28 z4AIRPM3+ZckqZWxBJ0=Rub=1y>%WY zvsn^kHj6^Y_eZ&4_Aw#fOTFkG3}K-Tm)XFSLS~=We7khw$9IrQ`FD^?FWxSkeO9|% z|KjzaT!b!oSQT{!D^Tik!K_flobKKF#=A=V;T_~+?j7V< zlJBiL@9$ZGQUCUUj9j`VBNwj)eUJ7cOb#_DIC0`1Lzoqy#B=W|albny-g^hBH0cgf zsrWWhdydRy@v@B5;l0#b;-7=QBpIn_x{XwNAp}NLSni;-8}1ZTdiM@auk{X2@6&`6 zqaBEam? z-d^@fV`Ze?RvD>C9@cEX4YEhk2>%!(6oRabX0-dZ|H_52e|zTaUtNDar8VZ-{}t2> zMw?~={&kSGY1Vqa3Tli(_CVoI$d^GrM|>9zjFs*SO3sv(_yv!%d(|%e=h~5v+W*Nx zv2_37k&>JAmDu(?v_BiJ7bO4cEBcibx284>KT8Wp|4MnGN^!~Kzq(%jT>IcX^M75t zBNEdh%DJP{)%ZCXuN@5{HM3j8J16}o;KBl24&R_|*^u4QBQ*6_#w_aQbM%2d7$Vn_ zO`F&xQ@B-KhO}Xt^F2*b%8DO)#0#M3!GbVn@R!-S06Sl6Yn+eY!h)fTl~+{0mw!!n zU#wM+OfO3>PyvuP%qi z1$FC?E3~|QJf@u-!#6=+%&#zKr!>njBjH}}z3slfa9P^P9cFYDUoBAR|<&3sx-PQyQ@@sKJ3ptNWB=vbEe@xn$h0lL}rdn5K4){}tnW z%z(pdRqL|=OdJzGaoa@@-k_GLejrp`&_H;^&q5sE?qIpQ^|kVKOUA36BW~wct{+8- zM#YcWc9E_Ir;qed^%9oXew63+I=n%j@mEhHD{O1f7YF}vO4=F(gZ+)eIggKljoe(Q zw7neM?h7u~YS&Tmyx#=DY!Wv6bM5s7_>~s7qXv9>N<)l5v!J(N$hWAyehH;`w%vE@ z7xzQ)wGPIyuY%}Jc}<85Q4{{gc+S$pLErvgIREWW-mVIO8QTz}Oj)*z%KJv@3-FmvoLkn(gB&6<)`Nf<{D7b;S*d*8#8*#E>EjJJSSg#C@6 zhH!`F&=kAb2;_|8FY%7-0oWNHN6YA64k@ft_-sL-j{+_MN3-DFMCFV zAgmh@SG-CLB^j^0pWNb-zMT4s3Jq@GfQ>4W*!{HF#xC+nRwwnFfajcf)@7WbQZ{F( z_XW-%!YM6v&vVS-RInYk77nl$rcCT- zg1In2iUmQ>Cy@kuUU16W6fiFcE5#)Q=g>^D;3w&40Cslr1~U@ooy068w%fX7UPw=L z;i?;f!Uncc?;#WvUa3q#ZEa4B6P9eaLcRj!@=Ap@LGW$A!g?U@`Jijw8Ev9NO6|!p zRVqr4L{_fIJEW-(%e$<}{Ogs8+vR>vO6)u)F5i&Y97ZcExP0+OPrdp|9Ph@Spsp_` z4gb*fMgRZ1KJndKy>6 zdjhz!$93_ncK9eko%!BnaE&)7TGO%HnC55{a=n*X-EAkuvEv$BJKC<$WV)t&t2NKu z(udZBc)>>DMkqYgS*rpC+Y2glcZ^<_P@xhs5@Mdw8^)nOfIa~OG>HPPG&B$0@wqGZ zcYgO8EbL-?AKDw)Hk%U=N$bLy>&Qi?=rRg&ag;_>hR-8GDH3n^$Y1QTQBaW#ycaN+*oubQibPvcqOB;&R+MZj zO0gBC+KPtRiiTr%fogSo(B?ioX9j??!JiADPvIew@TFNT4T^d1AdMqldNa7x-MVra z60t$Z)}RMNDh1!b*%};tm5+u*?VS$79?ty))T?2B)`>{!U^dj2;BoKb*{}525{7Q@ z(t&_o>;!-sryPfDc-3=+9|%wjj%pJ%WCaHjMg9q$&;!oE!-g`-aY3IuK&}9~AUlv@fFlAhJ{ijSjd9?Uo z`|`IkhLx{Nn^m9LJ7tkZx7Vk6G6&ZxA2t)XQSF}0`wS6-44%d~=fKOZxlV0Dig$j9 z^e-FTdB5WbrM;>VIK=@?m05fVZ75%5H7DXsns#uCc(#pqR^PN0niJ=$tVb@++IHS^ z^rmw*TrSU9Y-j3Fml&iiYvl{2PF?^ z=eFx>{!dm17^0*V4oShz0Y9( ztgYf9AtH;m8B||tuJxds6elJsn(r5kC)MM=<=w5={<8k0dib;K%bU>d(yZ2+9EtNP zHo~M{iNVTu;T!Y!5w|li!Ho8>!KM8S7OeP?)_YDKa7u^U_|V3FxQ%C2#eGV=ctFl) zJ8HnE_e;tu&qiok$}~ZPoY#A(Ev`6GcYJrwXt%EAGPI}#%%p5`&v&k)(|i*=6Jmyw4pI` zvZej9aIRJ5I*$HK>eeT#Tc$|PJjXiow2yx-H>V(CyVA;rlsnQ4V|Qp{cB$v9Y)wXZ^|3Eh5HShC!Z4t!!-aGKiCime&Xr&;v9q|N_n77cr8W#*G0 z5B0v?mjADUx}Qs4)#QKF@?ti#+Q(qjHeld}{>@LSBFuT78_jc|1q5@|xs_&5T`8YN zy4zsP>x;Qm5NyR@`@5?QUv|gNwwAsX zRm%JlvzUA+-P*(tlEvd7S>M6tBNtDwJa6&Bdv~;zi^!iVt$FWFxj9m+mn3%{@L?s2IUwW^nD9I@y!EZ{N>uZg}6&hC0oDR>|tn;je?qu$#1U*2;rb4(sTUY za^QE%v^d*Zt12=cegPXOOJu4$`!j9LHx+`-eQwS~bm`O_#JAe&OHQg-Gw~ko26Mm}7#@QW-2B>M zcQ8@kYglRKtPr1;yVa-K41H0I(yTHYnnu*m(^(7m(i+dX*Cul9bA(m`#pE_dhktJ@ zq~^fi+`G#*&SorrDM&WRUZnBPZlhM%po|~smyU;Eg6#X1^FrLvhAhpWb3yj+9S1XFs%Aj9uL+^ZbM-56 z(e*ek4q`45izF*|P?EHGae7+O@nTemTz`2@ zYf_4hAy?yTIIJekM;UWiq?FTUXr(ezmtc=>quhIEtmLPG#EEU#Um}ftWFAHL1q|l)-7GS$cM@g18 zPgRj`$Hh{1Fiku`pY_XGX0L&?HUlX-NoQ9T@$m6&H?8KRekJAo%t=wLR{y8Nxnh*I z2eZ%ipmC8%n+J$7>9>597v;G9K~1P9xy0}IGy|ENPgSY!1(`5!BM2*%2@{ne-=d2|{XnX%27M{6`$g|Uy3RX;sjsS1ULYyG zEpPKvRxxQ%Xrid7SP<6ics|L|>&)Q74;N&Z;$EJF!R$)52vc@K| zS-`|Lr^9%0?VF0`VuinI)yjjgp1?Ss>UI^YTQR<^wJ#Q!ZhsGHYfgb}M}CQ?s?sbP z8&vs|5xIB0CL-8UA$%4@NZnvLp@0v!?%Pgx;MAf55D0PCid&m)Vt2U zq0Ms?awwNLk&=ptG=?!ErQi4DB#qEVMhlvM2=QghW^I4Gx`b~g=zC#$b-gepZLiO+ z?a7(d@@2((p>kqe<+_P$w`wXXh3#V|Puf1Qy2P&&hyqOyCT5k(U3>q8ix$?Aki}ez zp{g;)s9tzoVLLW8S>>tP+Mr%plT3p{?_j8ptt$`Gss&wyg*Yw@9f6poDw_0>IU)~} zLV@P;uw;mX8}J&`$tnP`5ibU|Rif72r;}0Z4O$M%Q{`~;hG-82l1mIJ$YaJ#(o^l< zp{S``=ZR5;6D@mg(;`KKmOU#EVie6u*(2xwHPEW4hy)#bxUl^a&=iEB^?0i4|0f|* zWE+WJJrlnM2kkuo6q3mr;pcz{Z@ED2@^A5j02-RV3dfkHuB=>nkZBP~1MPD}&Ts)4 zPElVZXYkXv?3V&)jg)hTFZn0dgNTu#7`-mrBtS^~?mk1QLayABh0J~#J|-s8rCuMN zmwslGc8ut~aI4}P6YpeMaNd%aNx#E8-8o4lD|oSe6D->7-vrQAtejb1SNa+qFa&fa zdf(s5zI99J?c-O~>^9?&2&(4mz)G{Vu5>a}JzoX5Mi$A##t2XJVBpPiOYp;8OYNj9@MTrtmlc)IP;clv7#%4teX6m&qk zm^eZmGb%!JAAlDEIBd*UaVzPQ4EQ@`K;&&`$Rt zYJBp(xZ=VENhuE<@c0uGA36wQM1u8oTU=K9C$SUzJLi`aCMLPUwy=G| z08(Nz>lThDu%ZaQ&2qE;|NVVjdyT~AqVO$s;7xG*vOjv?SJN|3*N%H-Ml z2>b3?b5+Hfe)CJriAmPt#CQ5WYfy|=%++WNf^Xvmd7e9|&G-5RHbECBwXq3$E_Ekj zL!kMCUPHjoVT0)xlT))&A?Fl%ybYfxcBR5rlRiIdLyr|V%G?w?@ohaw&M&FJQ_lt^ zVNOmj7G0ONXa}WuKMXK7h##U@$#|``>Eaj^>yw+#CPsA$O<|HTi*en*RU4!6`UB37 zCD)X#T6E3(0u_If2QZk4y-oEX)dgH@wrWig-aVXM;+}wO-&TxRyfpz$KB}-eueTQ6 z+zfqpKw~5GD~u6upA>&LpqX}C1dp&L;e98d$-#C2(v89hnj2|*0~*-LTM>qXak63m zu7Ku|+hWMaYLX}5(2VUBAKA#>TNS`uo=@u}cR-WYO9aM_Y!L9*fCifk0#2`>d19^t z`+6GPiT@qYB=!=5G1%Kw?41FPsh1Gg+|$V0`{#gW5c2a8&s+q&70_@y`BJ8RygLHe zW1!`VJYqGZof7kIP;vz{bQcgbBugu83t)E``iJY(ZGj3p3w4Bly%})DZzB=i5};v( z%t~$vE^cOFyaYJyK_!qjvM`yI^5L341<+%+Y^|Q zR$VpYrVQ2COk;6+UH)9vLl0i)`#Yrc&_U_p5lj}uZ!lfC8u!pNJvv_H$Ut z0AJZzXbdtL!|au9AP|cVy(gCD2dq4E7VhhDqs-qau(W`wJ3+u+d(~B(arD=@LCb*; zrrMl4|+Yg!C3K) zB5u?a^TaI|HN!BgO6r@V@VIw2I5ftZoCGTU>VR{Qv=%QZf1zk{?=-f+On|J9r|FT* z$fiC|23m^D=CHiJH=zehjKB{aWi;1k@_G1$z@VlvenrK4ym}!CN=tnFrucZ3q2I{# zkz=d!Ru@>S$|h&RazHhScKyX4(c^BI}L_)TrTJ4x>F?o zsZ5s*3ZOcSqf$v(IlR9Q)MxU1;va)~*B`(FJagTajoS$>*Al zTs~WI(#u5R32@Q^swNVwR<1WE1>%~{d~eD=pVUWv>I_Y+xwxXu(^2C_$4K5+hz&s| zP#1CQzz1bq5sUV=LgMko-b3VB0oJ+Mb)oz;XWIE>aj|-BdDwh)azfhg&QHo6Q?ANa z;gUzREraqx-x!uTh~w{7=b3OyD+0~Xxg&>ev?UGmRBbwE%s-FU^zzTqcE)uvR*>W2*mjNdmL4}d@r46c*N&H!7fn1I`Egkd{5P` zNH&YMKM=@MoNFdEzl&G+=s@#%Ao5i0^DU9HKa1@9db7V6q&2syeRBS^K;Gt7mVY15 zKQhq#CFOTi9r6{*07?MhP%nTb9KazNz=%Lh-)}H*_aFr|2K(?p^ARd3wgQM=Z$&UU zA@}5uakMfw3oCQc%0l&^*4UI+rpJ zrCywc+sy&ZU&6q2I{H4U%s2eJJSNFUv%8A*CrC4d_5%k=tv8n>88`bB)A@ALW8V7$ z8~j|@ehcp2)GYR(MzN5DgZ;+yT&c|<1%&k`bOHc`L)O4Q?M^lCjg=7&48&|c>Tw@# zP}RIkkdxZ7`_jEOdG@9AH^n@*?S;kav|B$`;-Q{eZL*EcQCb#8jLK6!R}n3=NO3jJ z!XKfv=jyMd(n-3w4{IQ!&YKiAUf*&Y{uh39J@DV!R7ZVS#-=e3Dk?t2j-1m@37Y3% ze1#T-n=PQFs9@s5!JP}KEC{Q_R9ar3T+7xUP#_97``wB1Lfp1CO|S=Cq^ppyfR!L0 zcDLV;T0-G*2LRf=Y*OYJehYxn_IvLD&<2uyd1iHbl4wp!9Qn+~_{4p2qkNzIm|h~X zVW!u{`h~qCjiX>a_BQJ+#f=>DNMrGV4|%UCnVITGGOqf)iU7(tg36~^5C)pD-bP)( z6Ks!HOt{79y}gXqbFKO5FjnU|Ot)}qy{20z0hY~r&n9*dDQnUy^Tc$2H9w8UY@Y6+Q{4*9pn{a!#(_ zq@pFE0u93KWdYVo3JbJ3PSWOlWlsA0HQfEstIkCS7V6{^r()om--P}NmoY4&{0-Mo zG7s(+n91i-;?--t+T0r#%ri!hdygw~X%e+(>dU7HSX=%-WW5Vq6jl2;J~O*4yN5yU z3v$ujg@FY@VZ9+GqBdok3U~n#nE!KT(fa=WejIk@T%Yrt=RD^*&-0vfSUBW1)^?1j@Wd>cjmzf> z*z_(vd>r-g@voQeEVmHoZ?*KRj=!e=`T8@V!&bHg3UTrW`^yh1%a)X9%Ddt@SAchk zlc)XJl9HNw=sI>U1DP}`t*nVv%rgJs?VnYaH$T%c^adH_#58aJPpe7`?8M2O31?PS zC}qaXEo>!DkdTJ+0j}&scvDL$X9AWS7qzvAB?sM4z9oU|CG+I{$#D6eoKn2pqAI7T z{fmG>fMJC50JbXk5#QLNE&db6<^D{0TynQslQ+YrCreo&pmc&6=sj@yf$w_!DDB-X z`{R0?1vld5xh%>UW~6bUQ{OklDob&gOZnM$48viaH;FfhQsd1VF&C!(iQNc*KF zb>MZJYl8#T_%kgvACSq1Wcx(sQ{3qm)dI3YfiVo?lXHb~vPCr)S}H^H)GYIJiz~1V`$)Dc2$X)S~JKb>uoLaZYgdV=XFJ8kG~) zFCJ}Cg+47DSS%6r?A0w~8Sg9{mRWL}kF==Zk``wJp0bg{Eo5cnYyd2~ba$py_tPkAX$v5`O2q5{QgPl3*T&D_BjvNCdV_XF~~+@bdGo$vAtwZ8?N zl%H1WJd?w|Pp;G=qYcKzHfRLDw*~4X^Dv=zV)^{81)Pm2CmZ;-MFpxzr~Ak^&cfw6 z?wb~3IMx%I<}2m!9<=Y5Tf#ZyFlS4ES_o#uujMdjLx5srLGCL#%!wJGnys?`Vuc*& zgc3-HK*{Zv!=Mtfj&T|T#GSBllEl5o7$Sm9bG^Z4I=Jg4#Y(P=dMfeS%Ue_fx+vLi zk9)1TCb8RzHEz3;-`T%(@;mO!mgEG9$|C)rEl(6FJ!iJqe{QKMc1{a&I2_vIq{^arC=>nD~@d5Pzyjxt}6i zvqF8eDmR0Q)!J~%hj6lO`2C=PHiDd-Ap{)~-z)_J-`Oo-34&-r5&o1PREwCb%!?=xd@5!5!`A=J5?M*r8>vA@+ z*ZrD{xl&I(8=MFhc}Aaf4FGnYhs?yliO3AU51LDM{gL+GzxK4f+%L}dnknbh$G-!I zZO1!qUaN4KOghWnyLH4#0&LM_cCalAye75mNg?qXOog^AUt5_{7;!BgK3KIa%RfKM zCqK(OKP?b8U=mWZuaT+1N%v`woxT4e170-6K2)avHN0h|CPZNe1ws|PjONEaaQt}9 z*?iuk)p78e+T+ z=GdH_4qLJAwc89nf-h+aTrHC2BfCpfF>A~0x4~ah*i0hMAaa(!*!MC1c$KD4uHE}_ zrNO^~sdkg7)1ji5^NWqHyhMwh1i< zeEu(TNgSMHTG3QNPBKkVz#oe|xru+b+p@eTBW(f)t%RFLg*sA=#o!J4p8ay=Sw7nN zp=XqEnoN(-Bemng0?l-0RTI8Zpy8NLn=o3f*}!Bp;V)KeVom&a64?Ppj6n7`@53rp ze&wdMr2BTQg!LjgsmKPRsZNCR9E0gKnxx#@O-U0y*N@RzX3-XdZxxe24UkLWA3>niZtwHnTSI|)fo=!P=wO}J{UWsFk22f&~)&n%=9Mw?mCUZZ8C{Ui6ggb;Kp^D zKyQ0;%X;XiQ0m-q7S>5ZQWI8xr0Lr~zNZZE{9(8qE%H!+%i6VDSisoNaj_d$tonXf zIdiHO0Po*~r+=g|=7y0xC2@s_)x>C?anim`PdSS?{a>6#n0OUZ%bZo_G{U%leHUf{ z9gOY?01j1dDqU89irky>jWjMn!icA7sej6_MOf9&h{=dmnC8%NiYA-Y(=>+?hLYrL z!0N!&QG#?8hkmRXYq(3ooJ4Y85^j?(=ieT#cZtSpKGqCphF-2vsKbB-yKY>bNYPVfY2|J?zZ&UER z0!0wZn9Hu>@78OU_gX=+#h}7lYs&=TDo!lY%+BTJR>{MJ|DIlLUU^k|ieAFtv#vrn zkR#Fg(B`t)SH*Krk3@gzDu1QtUD$iYW?sOnS~cgEpW$Bxq;ka!i}6bG|EuPc$XVE z6TJE#dHG5?tPqvrXaibn-UWzf)8t8mt)Ko z)}MXuvWhLNaCt|?y)-fX1GxJl3c92E9%bv8g%RJISb22!CC{{8?bvO;>Q?Sxqogdj;=2tI;#RT)}4`Jhn?a#HN!dTjfgn@9#TSYyH$bvMSMc~>HPH&O zJqR!TRTCM)e-T7Zy(gz_08&Zj0*YjgqWBMU@DIPjeN*;&ISEAT@^uErH{C?rj7(vN zd_~iiAo&tgDF2@#(nb-Yl*_G|K=Dff06@V6;WCNu0R}#vm)?AAYRfRZFGu*Illyc;b= z-(D_&+t)Dg1;;-yb&!IdwdJM^(;7;gmy--jBZ?zXT@-AjD48C~&JY0aAjt(S1gG#t zpI^pb)oZl5E+o+jpZ8D&`*WN?%b;!tWdGy@^+ep<&5Vkp9P0pJdwUQ}k;_P$9hSL) zZ_CK%TJ@c?au%BlE+-{>X0EzC_Y+T>#TQiV3OgUP!$1~#uxp}m#wRHjD{Zm(f@=jg zDaV$j0O`B%%}I-0D2sLRI2;V&;sg?|T}C{kExt7_6cj`h<*=l*_=08&lJK*GY+11R zK-k;U7I1B)3%s=fn%eo7@yEYu47odG+%Uy-aAaobCSz)8TF)FbJqNV!sRna!c_x^o zlvKG{yGA8EN1DSj<(ZLY);n(U14cp1(^i2Uxk4?-^aJfQlf6o$f)w8v(69*qA@6Xc`c5H^yu~2xt#(I8<7LGe zqU#lZ?E(82{YXUSC9@10!}`XCttiigW7y-G8=qk&fkZknGx!;5#9=aOv}=^Y4H6G{ zAq*t$Mq>|d`0a360%@HujVl^7x`5xHMAc0)S&~ki%ox43HlNzMMl3dH!gIZ42%cgm z9G2aJyIil_uT#rYOUd3dvHw4)BDdTDu5Piyw{l)5uE2ihsFd63?3g1#m1RyqxVRkH zqDflYb_oE6eK4f8Hob~8H}lJX+S^Q`{~t==Bb?3MtP(akn;W z(jT5dnor(9#g@6d)iDtenRHC&#N>7-&2S-4(YT(ZWCK|yHtH!F6aT^D>Pt-{|9@z- zyF1Z%Q7M=RBu}Zv^bD8p_Tcg+g%@4Ya7<_;F1e%`?cTdFXUN-HrlucN>(dCEqaZ5n z682~Wo@STkvZ{GSS?1{SGFD4Qx}ZJj+0)Ca@-n!VPrK;RrFSx6q%Ve%oWhLcVr>2?Nu`nd##7f4STCK};JqHrpy_b%Ak#$_p_nmt+{RzUVR6WMVrI0b! zS*AF+^*vb6#*#8_-_!cDD?z!~^L^_c@UvVhM_7C$V562=n)%`yVar8m{(c{rBV89F zlIblec!GdQ=t#u+j`tZKYJTt14)1wj4-Ocwm^T{Ih@$f_6kfbn69hsS+`mSUDC=(- z(BHx$Lm&kRX(ZVB7iMq>e)nS2G+2_7ogV?DvTOI`ciAr3bk8|^h?NvMQ-#EHBU)5- zfJf3$@-1exz=fwEL8g%XcyL&!udJJ4Uc-;BX!N;zNTq}jgs;fk&h7nn3X7a!+MS(_ zgiFv$xieo4n&@yUq{Wx?=?7G#JM&1wrTWZ4muAoPT$FGr>$k&iuly7+^c;z}>_V2h zGKTC~1Vbq#R0UfPq4i$Q*5`uyx~KWWNvy!i&6oc=$MIH5H5B%0YahDgyHHuy#d8DF zg)EX3su}eERKveWsu@5+SN0~gw3F9=CkfGV zKh6bGmtlsg0!fyCw`e-4%9n()KEncsMa6YooHt<@n#b&blio<(7f9T{>sH9M*8TGr zs-6HO{3+?>&I^#*+2T*2xk404HjkM{3IkD*tPy^{_;iiHci$zW55f~nL%k!48Om|x zBHsMF`sZ+xaM!bh_Ipng1`TA@!@MiV%|F6-7x2PXjX(3{1-!CVGgP~e)V)7EDeZ7& zwsOM2Gawxal^5`@t(wVxpOd(961O9rM1cxm(*->EzQ(|;zkp}n*W``*;6iM?PQE9Q zic7v28}I3S2i24?`eM@*ue^`^bOrQ?Lb$+>nUZGCo30aHCZ(1QzgRTlBKCivnao69 z#C^InZ{y1kG%qp_FW})1H7_%lFW}D}YQ`|(7xrCysL7_8MHle+HqAkm!$Q-xfH;9V2EZY2A#0^i&_V%QKo~b3jnK%6wJ9fo;${a84 zA3hmn8GbX1w4A1(%>2o3`|dF)l4jnn-xsJvKhx0{>NhD?`>YOK0CG2UlpXz4lgPxT*{e|SJaRBpdL?hMFGsVI-Ko_ zbnc7lg(W0Gqd|D39&d0({ke4nBw6qE9;1J`UYk#qy<88m5Slu>-sp1LVt%0>|KW-z z`A?`{ofheqo(z7&>6T9L=Pk3;3uEf>cr_X|Gq!%AqI4>#cg+3k(~otm{97uEu3yLq z{Ygo(rpLJuPIcBN4`D}SeOY8Z*Ovl&X?hf6v(iEYNiJ~pJJgL6fNAUX^|(om0(|u( z+!0dW5?sIMwhqjyM}q1xt3kmNwIn9}fJ=%GF+;FQc8%ai>KF+VxpI79wy!r!N)lX2 zx*bG!k_9ezWD`h`BO6FNu%`35Rm&B6hOpm2T!?%&B!I#bqK zC)}^YM>HrXx0$30KQN`hJ3D{{h2$ObEh~i2S*f#UbZ4tT=PBHjQw8>_y;gVRT3w|r zqwHE8=hGWvZjcxtvyFgcRa)OKtF04Ryc{9@z~4ymG0OCFU9gG~&XKPk7HYGy z!gu6*GCH)g>_DBchZH94uft~%3K&#b7tag}8&5RsWna|^b`nXzWUJ*haM_MJ;R_N5 zq-t-KwDTFgy$%Pvp}tXHkwVKps}qW!=5aQMb%PTJgv}(d@MIMul+!vJ>`Mct>(PddkO;bR+v}qq_?;US#@|Ki(+zT)WK;Er;ia*OCUv>r`GLIvhK?} ztH{0I=I86mmBKU<;h0ZN(T{h2=*K~iq@U|%-SlJYz9-T8 zG4OlY?Tj0FA5jN=Jb)Ac=r)h2%TP{sL13}0VqVxLwEc={cNFx}4AP3%b_zkxHa7;c z?q}Sq-1SD1ImnsWG=Zq|AlptMl7!48pQ(nr@h&WR0}o~jE|IOv`(RHMQ?3>+k)j$m z>$P?G9jL<3x2{0FYS4+Ef>~0q^ef)sj-qtx9_T1_EJgXgmz3D~mqfOvgE>cA=`AkB z_uWx{53x#P+d4aX66>~et5AOq$M! zNZE`YfGFFmRAT}gRC`wfLmn9x;w11RqG7Kz2n>~)7}U6i4;u?Vf!x}DG3fM8ZYF}C zgpg)P#XXc~$rPw^4m@A~P;q6Cv-+Y*a0Pa`X4U3VtBT#q+9k1XZ=hM&YJY+We=*mS zeWC1u#06wS80kNXsy57XG)wz}dzCdycC8#vlkiAQjM~{cAL#$a_mdL;hDV(%w{bFa zy149#WGG|A-n~PbZ3dcemq_PsWSn|g`0>hvf|{8?fb%DtLx z@D$IgPY2phNVT`6WLaI7ZMk6og(TyTOSOLjN~%~kP#jL{uR%i%Rwk0@yZJMai~k9Z zNwMFQKoOFjpwxST$PM&mFieF7Q)7a7QesVVV*5#a*aygu8;>BV_CP1!B-xJxsTp`O z(zxU57{%#8@rS4426s{t{G{CpAi+QEE>Pzir^>y&D$pB7^90H;fpj*>I0mglJ<3k8 zMiSIgVFzHd(8j8ZqNEZ{v4+~jJjLA*vj=5ACh4VaZ34{VzWS?pp)U%|wU2_nlqnpL z`vD-8fnO{9{yI6!bN`68#AEP&6P|W>fT+X+1grD4aVNWjCm3ND*%YUbUPmnqo?x~g zJBtq|)DzO2da2vuLY0P*L`F!&?^Emll+q7)Cyxhct`C7i6$u1nnLwpI#hHBo(nh(kI|~%W#<0c4P%QYNY=$@Dzx<$wc)Mg?-wg^( z)0n5#ZzF(}Lf4SCZAxjRu0woNgoI?0R5HfgY^MFrlXi zQ72=VSGVZj zf-+(V4CC-|Eeg|f0X<#X_ru$%P_5nIF&Xh;9xov~=P?qA;h6PDW9dgY%^yvrui-EK zQ6JM`;I+YdNr}<$Kpt+L1Q&Y?x^C@!Z{b`Q)MQb&2>ql-VT@`lu)nTFtMMa$WMah6 zaZ~^rgeIN^{8y-W3gMgp)SuzIa7h3PX1L9GZvaXUAJbFrJCab_1t=6&kV1>0&`aHW zBMm^erPaXmOubR~kOzwc36tfQNWu?Ya3^ok>s|R5Xd9$G(Y-e+1JY^@E;etfFi^Wy znI9R_m;pm&BmSs28mZ-OX`F*X33N;vzd#bc=)%`}BOiJ>e%Kqu1zq@sfT|R4^rUpA z%a(*yUDzCmeEac}rFAHoro^F=b&W31s9R6?5Gjp+RT7qU9a;t;95O(qGjU!Z>gUHb z_7nw4#Fu5v&F#X61JOWw1bz^RBD}f!f2Eiq36r{TOc3&?jd*MjGWHRFfoPD8q1>JU z&8JDikgh|4P>B|=4MI_U`BVRfmwQeUxPL*S#C1WapSM`^Pd)bWlHk*Yy@HWnpGGyS zmi6tV72G&U(EKa!O*|$T^@|pN{8wI!B(!zzCj8`)A@%#QMh)a<4^_`{5gjJo+{?<2j?Tys1y;-I> z<%x5Q%M;hxXOn#-%<2#Up{IMomg4atXn4@2&UnV4pt8MPOo~!f1ZDbFVN$f#gi)zQ z_=^zKhv8uVUI+@M-SLeO6izEK>Vu47BRjLg^y!bfYR(f53+<1~=`=s+G{Uv*z^%Q2 zHR%WA^ghUxy4)#%@OnvD+^Ox5Wh^*R+e#HZ27dYvGo9unW}QU`gTw&j_(8AyFiLCe zWe<_`b2_z~-L>B+f+y%l;|qOIY#6r@CQ+z5bxkk8m!04=Vm2AytL2p8OItk>2x=U_-0k*r~lm!6N32JFH4FN0Ok0HYkJ>PkIKL4iFy;^wf%jbO>P0|EHIV_Tp3>8lWjS?v(^p z2<3RS4h8#()1yeGXPq)%Q8!HJWu^Fl4w+)dJdwv}+`1PIHxc$t=T5xlO~SA zujo;b%6_w#o$<$cdK3aiohWftFL2ya7_4&)Q$3wzBm9p@PZbJ&G_KMk9c{)}^e6(2 z>Xlp%8b&H}KlU)d5{dh>mw3$GV5P_?o^wlXVBGL0`=_Q)ge?Vsr_O!yv`Z$-U9v{A z$c|qypiyc}=uek0=IpJe`oRiS8LgcuWLoJNE}D{X%}N@ghS551E>kdJ%Vv43Zt*n9^($*#`_jior54Zd_;-{woxKdF>f6 zH5~xVmSM3vqiG8cgTn{v1l{Gc_tkL5PC_`X|5qNogcXJ}H$$#zO-BoC9J1+-ZD( zL;dJf{0E23%-+*DG91c_#>>J{AG!c<3P)@EH@(rBSfWZwJO&x9kCGCb?j|Lkh4&%X zs7Zenn}a9KWYxvy5NPF#@8~(47J;_siu;J>k&K2j410>*DeisxE&TKtPXE#d(1q6v zyvqY7?zFG)D@>?j#0K|}=GfHE#BI-aCYHm)79}MnQDh5|k}8GoqtA6F?txzlWS*tK z2ORMJEj(6u!ak#tUWDg^lOX-m^pU{bkIf++hUk!ZTWZ zYQ#SpQ6If{i%qSUres?eE2$}OTX(2(T+=c=tM$Ixw_KL)6>25iZA2pm{2-aDq^wNO ze7$FulFG}rW`$Gf;dJfyAbqldj_-+n+Ta7vIc1AkKM!MhB7jz9R$r%QgC|?{8GB-Kq&Sg z$1|Gewl5BINncD?Tj|!aUneIev{l3SOxPYzw{`&_MUVHd?ld+?@D$o z3-@tb2`CwgID94sxqE&6ICh9Fc8GbHU<@kj(LsIPxqR(;sDA{MZ!;po4jw*;2X99^+CD0{=g?CGlJC+`wl#10NPI5aQgrhMJsSOZg5(4EYb$Jv;&`nLJI>`FOxkb&S?G-z88y6l;_PWf8PfLeBVgUDD%QtV{%nOz=Q86Vo%jyUj6?7G9cy!zS~`JU z;5gg{)e1kh;g&eGxtCgk)Ww;@2oRsP;Y}v=F|+Y!95oOLv<2@Thz!1*k2^pFHqO~! z_P}F5fUgfk5fOiPwQgNn!PegHa>V~^k0Ycr5+l@;i`5HnRWa2*Zfqbw78!j~R2kl9z{8Zyuk>*P_dej2;A_G};_AW3 z3I}MuIs^@1$9L6E=yG5(8ae#=5ERdFakya!Dx|^9YbYwB-EiAb^c?*KPL4+r%*HPK z-*}WewCiDky0}46thtljTX}j*&0TtTh0y*G^bf_x1{}hyyhT@TopZ(=?sT+OGtQO^ ztq(Cb423e#?_jqI3ss%~nAu5eU=>?Ct&6+VZ94*2Pj)Yk2-!WZLJ2dN*^Y~bAzzo; zheGW`ymJ_Of≪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 NeKWPX&z*N?{XgOh$HM>s