From ea4e14ce670a26ca2ec12a6783ff3d89f0d8aaba Mon Sep 17 00:00:00 2001 From: hamhochoi Date: Sun, 11 Feb 2018 01:28:01 +0700 Subject: [PATCH 1/5] Create HPCC_IOT.md --- do_chi_thanh/OpenHAB/HPCC_IOT.md | 149 +++++++++++++++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100644 do_chi_thanh/OpenHAB/HPCC_IOT.md diff --git a/do_chi_thanh/OpenHAB/HPCC_IOT.md b/do_chi_thanh/OpenHAB/HPCC_IOT.md new file mode 100644 index 00000000..1af7ed1f --- /dev/null +++ b/do_chi_thanh/OpenHAB/HPCC_IOT.md @@ -0,0 +1,149 @@ +# IOT Platform OpenHAB và kịch bản triển khai + - Hệ thống được cài đặt trên zone_3 (phòng làm việc của sinh viên). + - Hệ thống gồm 2 Fog Node và 1 Pi3 cài đặt OpenHAB để quản lý các Fog Node. + +## Kịch bản cài đặt + - Hệ thống gồm có: + - 02 Arduino + - 02 Esp 8266 + - 01 Raspberry Pi 3 cài OpenHAB + - 01 cảm biến chuyển động + - 01 cảm biến ánh sáng + - 01 cảm biến nhiệt ẩm + - 03 đèn LED: vàng, đỏ, xanh + - Chương trình điều khiển thực hiện kịch bản bật tắt đèn khi có chuyển động đi qua. + +  - Kịch bản sử dụng + - Khi cảm biến chuyển động phát hiện có chuyển động, chương trình điều khiển sẽ thực hiện bật một trong 3 đèn: đèn xanh khi cường độ sáng lớn (tương ứng giá trị của cảm biến ánh sáng >= 600); đèn đỏ khi cường độ sáng trung bình (giá trị >=500, <600); đèn vàng khi cường độ sáng yếu (giá trị <500) + +## Cài đặt hệ thống + +### Sơ đồ cài đặt +![Image of OpenHAB system](https://github.com/haiquan5396/K59_training/raw/master/HaiQuan/Homeassistant/image/serverRoom.jpg) + + +### Arduino + - Arduino được sử dụng để nhận các giá trị từ cảm biến và đẩy dữ liệu cho ESP 8266 thông qua các chân RX, TX. +### ESP 8266 + - Broker: cài docker image mqtt trên Pi 3 làm một broker tại địa chỉ IP 192.168.60.197 + - docker run -itd --name mosquitto -p 1883:1883 haiquan5396/mqtt + - ESP 8266 chuyển dữ liệu lên/nhận lệnh từ broker thông qua giao thức MQTT (Mosquito) vào các topic publish, subscribe. + +### OpenHAB + - IOT Platform OpenHAB được cài đặt trên Pi 3 nhận dữ liệu/gửi lệnh cho ESP 8266 thông qua các topic subscribe, publish tương ứng. + - Cài đặt MQTT Binding; JSON Binding trên OpenHAB PaperUI. + - Cầu hình broker cho MQTT binding bằng cách thêm 1 file default.service vào thư mục service của OpenHAB: +``` + mybroker.url=tcp://192.168.60.197:1883 +``` + Khi này, các gói tin MQTT sẽ được chuyển đến broker 192.168.60.197 cổng 1883. + - Các Items có trong hệ thống + - 3 đèn tương ứng với 3 Switch (Switch 1 - đèn vàn; Switch 2 - đèn đỏ; Switch 3 - đèn xanh). Mỗi đèn khi được bật/tắt sẽ gửi về 1 topic trên broker 192.168.60.197 (topic publish: zone_3/box_1/led). + - Cảm biến chuyển động (topic subscribe: zone_3/box_1/motion/id_1). + - Cảm biến ánh sáng (topic subscribe: zone_3/box_1/light/id_1 + - Cảm biến nhiệt độ, độ ẩm (topic subscribe: zone_3/box_1/temp/id_1). +``` +Switch Switch1 {mqtt=">[mybroker:zone_3/box_1/led:command:ON:{\"vang\"\\:\"ON\"}],>[mybroker:zone_3/box_1                                                                                        /led:command:OFF:{\"vang\"\\:\"OFF\"}]"} + +Switch Switch2 {mqtt=">[mybroker:zone_3/box_1/led:command:ON:{\"do\"\\:\"ON\"}],>[mybroker:zone_3/box_1/led:command:OFF:                                                                                         {\"do\"\\:\"OFF\"}]"} + +Switch Switch3 {mqtt=">[mybroker:zone_3/box_1/led:command:ON:{\"xanh\"\\:\"ON\"}],>[mybroker:zone_3/box_1                                                                                                   /led:command:OFF:{\"xanh\"\\:\"OFF\"}]"} + +Number Temperature "Temperature: [%.1f oC]" {mqtt="<[mybroker:zoner_3/box_1                                                                                                                             /temp/id_1:state:JSONPATH($.temperature)]"} + +Number Humidity "Humidity: [%.1f ]" {mqtt="<[mybroker:zoner_3/box_1/temp/id_1:state:JSONPATH($.humidity)]"} + +Number Motion "Motion: [ %d ]" {mqtt="<[mybroker:zone_3/box_1/motion/id_1:state:JSONPATH($.motion)]"} + +Number Light "Light: [%d ]" {mqtt="<[mybroker:zoner_3/box_1/light/id_1:state:JSONPATH($.light)]"} +``` + - Chương trình điều khiển đọc giá trị trả về từ cảm biến ánh sáng trên broker và ra lệnh cho OpenHAB bật các đèn tương ứng theo kịch bản sử dụng bằng cách sử dụng API của OpenHAB. +``` +from openhab import openHAB +import paho.mqtt.client as mqtt +import json +import time + + +base_url = 'http://localhost:8080/rest' +openhab = openHAB(base_url) + +# fetch all items +items = openhab.fetch_all_items() +# print (items) + +item1 = openhab.get_item("Switch1") +item2 = openhab.get_item("Switch2") +item3 = openhab.get_item("Switch3") + +temp_item = openhab.get_item("Temperature") +light_item = openhab.get_item("Light") +light_state = light_item.state + +topic_sub_sensor = "zone_3/box_1/motion/id_1" +def on_connect(client, userdata, flags, rc): + print("Connected with result code "+str(rc)) + + # Subscribing in on_connect() means that if we lose the connection and + # reconnect then subscriptions will be renewed. + client.subscribe(topic_sub_sensor) + +# The callback for when a PUBLISH message is received from the server. +def on_message(client, userdata, msg): + print(msg.topic+" "+str(msg.payload)) + global pre_motion + + mes = json.loads(str(msg.payload)) + mes = mes['motion'] + + if (mes == 1 and pre_motion == 0): + # pre_motion = mes + light_state = light_item.state + print (light_state) + if (light_state == 0): # LDRReading < 500 + item1.on() # Bat den vang + time.sleep(0.5) + item2.off() + time.sleep(0.5) + item3.off() + print ("Vang: ON, Do: OFF, Xanh: OFF") + elif (light_state == 1): # LDRReading >= 500 <600 + item1.off() + time.sleep(0.5) + item2.on() # Bat den do + time.sleep(0.5) + item3.off() + print ("Vang: OFF, Do: ON, Xanh: OFF") + elif (light_state == 2): # LDRReading >= 600 + item1.off() + time.sleep(0.5) + item2.off() + time.sleep(0.5) + item3.on() # Bat den xanh + print ("Vang: OFF, Do: OFF, Xanh: ON") + else: + print ("ERROR!") + exit() + +client = mqtt.Client() +pre_motion = 0 +pre_temp = 0 + +client.on_connect = on_connect +client.on_message = on_message + +client.connect("192.168.60.197", 1883, 60) +client.loop_forever() +``` + - Chương trình sử dụng thư viện paho mqtt để gửi, nhận dữ liệu với broker và thư viện Python-OpenHAB để gọi API của OpenHAB. Chương trình được lặp vô hạn, tại mỗi vòng lặp, các hàm on_connect và on_message subscribe dữ liệu từ broker và xử lý, ra lệnh cho OpenHAB qua API theo kịch bản sử dụng. + +### Các giá trị trả về của cảm biến + - Cảm biến chuyển động: Trả về 0 nếu không phát hiện chuyển động, trả về 1 nếu phát hiện chuyển động + - Cảm biến ánh sáng: Trả về giá trị 0-1023, gía trị càng lớn tức cường độ ánh sáng càng lớn. + - Cảm biến nhiệt độ độ ẩm: Trả về 2 giá trị nhiệt độ (độ C) và độ ẩm (%) + - 03 đèn LED: vàng, đỏ, xanh. + +### NOTE: + - Cách lắp mạch, mã nguồn của Arduino và ESP 8266 có trong file đính kèm. + - OpenHAB API xem trong file OpenHAB_API + From d017c5a4696bfc1f9b1b9033073d8f58cc4a6bec Mon Sep 17 00:00:00 2001 From: hamhochoi Date: Sun, 11 Feb 2018 01:41:15 +0700 Subject: [PATCH 2/5] attach file --- .../OpenHAB/LDR-circuit-improved-1024x729.png | Bin 0 -> 12727 bytes .../OpenHAB/cam_bien_anh_sang_arduino.ino | 65 +++++++ .../OpenHAB/cam_bien_chuyen_dong_arduino.ino | 123 +++++++++++++ .../OpenHAB/cam_bien_nhiet_do_do_am_dht11.ino | 52 ++++++ do_chi_thanh/OpenHAB/default.items | 8 + do_chi_thanh/OpenHAB/default.services | 1 + do_chi_thanh/OpenHAB/default.sitemap | 11 ++ .../OpenHAB/esp8266_cam_bien_chuyen_dong.ino | 139 ++++++++++++++ do_chi_thanh/OpenHAB/ip.txt | 47 +++++ do_chi_thanh/OpenHAB/mqtt.cfg | 41 +++++ do_chi_thanh/OpenHAB/openhab_light_on_off.py | 75 ++++++++ .../OpenHAB/wifi_cam_bien_anh_sang.ino | 174 ++++++++++++++++++ .../OpenHAB/wifi_cam_bien_nhiet_do_do_am.ino | 144 +++++++++++++++ 13 files changed, 880 insertions(+) create mode 100644 do_chi_thanh/OpenHAB/LDR-circuit-improved-1024x729.png create mode 100644 do_chi_thanh/OpenHAB/cam_bien_anh_sang_arduino.ino create mode 100644 do_chi_thanh/OpenHAB/cam_bien_chuyen_dong_arduino.ino create mode 100644 do_chi_thanh/OpenHAB/cam_bien_nhiet_do_do_am_dht11.ino create mode 100644 do_chi_thanh/OpenHAB/default.items create mode 100644 do_chi_thanh/OpenHAB/default.services create mode 100644 do_chi_thanh/OpenHAB/default.sitemap create mode 100644 do_chi_thanh/OpenHAB/esp8266_cam_bien_chuyen_dong.ino create mode 100644 do_chi_thanh/OpenHAB/ip.txt create mode 100644 do_chi_thanh/OpenHAB/mqtt.cfg create mode 100644 do_chi_thanh/OpenHAB/openhab_light_on_off.py create mode 100644 do_chi_thanh/OpenHAB/wifi_cam_bien_anh_sang.ino create mode 100644 do_chi_thanh/OpenHAB/wifi_cam_bien_nhiet_do_do_am.ino diff --git a/do_chi_thanh/OpenHAB/LDR-circuit-improved-1024x729.png b/do_chi_thanh/OpenHAB/LDR-circuit-improved-1024x729.png new file mode 100644 index 0000000000000000000000000000000000000000..6199bef25a46ff6589fdf1b4892648fb94f005c9 GIT binary patch literal 12727 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 Ct+O%! literal 0 HcmV?d00001 diff --git a/do_chi_thanh/OpenHAB/cam_bien_anh_sang_arduino.ino b/do_chi_thanh/OpenHAB/cam_bien_anh_sang_arduino.ino new file mode 100644 index 00000000..1f927fe3 --- /dev/null +++ b/do_chi_thanh/OpenHAB/cam_bien_anh_sang_arduino.ino @@ -0,0 +1,65 @@ +#include +#include +#include +#include "ArduinoJson.h" + +SoftwareSerial mySerial(10, 11); // RX, TX + +const int DHTPIN = 2; +const int DHTTYPE = DHT11; // Khai bao loai cam bien, co 2 loai la DHT11 va DHT22 +DHT dht(DHTPIN, DHTTYPE); +const int LDR_Pin = A0; + +void setup(){ + Serial.begin(115200); + mySerial.begin(115200); +} + +StaticJsonBuffer<200> jsonBuffer; +JsonObject& json_buffer = jsonBuffer.createObject(); +char buffer_temp[200]; + +int LDRReading = 0; +int temperature = 0; +int humidity = 0; + +void loop() +{ + LDRReading = analogRead(LDR_Pin); + Serial.println(LDRReading); + + if (LDRReading < 500){ + LDRReading = 0; + } + else if (LDRReading >= 500 && LDRReading < 900){ + LDRReading = 1; + } + else{ + LDRReading = 2; + } + + + + humidity = dht.readHumidity(); //Doc do am + temperature = dht.readTemperature(); // Doc nhiet do + Serial.print("Nhiet do: "); + Serial.println(temperature); + Serial.print("Do am: "); + Serial.println(humidity); + Serial.println(); + + json_buffer["light"] = LDRReading; + json_buffer["temperature"] = temperature; + json_buffer["humidity"] = humidity; + + json_buffer.printTo(buffer_temp, sizeof(buffer_temp)); +// Serial.println(buffer_temp); + mySerial.write(LDRReading); // Gui cho Esp8266 + mySerial.write(temperature); + mySerial.write(humidity); +// mySerial.write(buffer_temp); + + delay(1000); + +} + diff --git a/do_chi_thanh/OpenHAB/cam_bien_chuyen_dong_arduino.ino b/do_chi_thanh/OpenHAB/cam_bien_chuyen_dong_arduino.ino new file mode 100644 index 00000000..e328ec66 --- /dev/null +++ b/do_chi_thanh/OpenHAB/cam_bien_chuyen_dong_arduino.ino @@ -0,0 +1,123 @@ +#include +#include +SoftwareSerial mySerial(10, 11); // RX, TX + +int ledXanh = 3; // chọn chân 13 báo hiệu LED +int ledDo = 4; +int ledVang = 5; + +int inputPin = 2; // chọn ngõ tín hiệu vào cho cảm biến chuyển động +int val = 0; + +void setup(){ + pinMode(ledXanh, OUTPUT); + pinMode(ledDo, OUTPUT); + pinMode(ledVang , OUTPUT); + pinMode(inputPin, INPUT); + Serial.begin(9600); + mySerial.begin(115200); +} + + +StaticJsonBuffer<200> jsonBuffer; +JsonObject& json_buffer = jsonBuffer.createObject(); +char buffer_motion[200]; + +void loop(){ + val = digitalRead(inputPin); // đọc giá trị đầu vào. + + + if(mySerial.available() > 0){ + StaticJsonBuffer<200> jsonBufferLed; + String ledString = mySerial.readString(); + Serial.println(ledString); + + int index=0, pre_index=0; + int num_led=3; + int i=0; + String subLedString; + + // Tach tung json trong message + while (i +#include +#include +#include "ArduinoJson.h" + +SoftwareSerial mySerial(10, 11); // RX, TX + +const int DHTPIN = 2; +const int DHTTYPE = DHT11; // Khai bao loai cam bien, co 2 loai la DHT11 va DHT22 +DHT dht(DHTPIN, DHTTYPE); + + +int ledXanh = 3; // chọn chân 13 báo hiệu LED +int ledDo = 4; +int ledVang = 5; + +void setup(){ + Serial.begin(9600); + mySerial.begin(115200); +} + + +int temperature = 0; +int humidity = 0; + +StaticJsonBuffer<200> jsonBuffer; +JsonObject& json_buffer = jsonBuffer.createObject(); +char buffer_temp[200]; + +void loop() +{ + + float h = dht.readHumidity(); //Doc do am + float t = dht.readTemperature(); // Doc nhiet do + Serial.print("Nhiet do: "); + Serial.println(t); + Serial.print("Do am: "); + Serial.println(h); + + json_buffer["temperature"] = t; + json_buffer["humidity"] = h; + + json_buffer.printTo(buffer_temp, sizeof(buffer_temp)); + + mySerial.write(t); // Gui cho esp8266 + mySerial.write(h); // Gui cho esp8266 + mySerial.write(buffer_temp); + Serial.println(); + delay(10); + +} + diff --git a/do_chi_thanh/OpenHAB/default.items b/do_chi_thanh/OpenHAB/default.items new file mode 100644 index 00000000..c755181a --- /dev/null +++ b/do_chi_thanh/OpenHAB/default.items @@ -0,0 +1,8 @@ +Switch Switch1 {mqtt=">[mybroker:zone_3/box_1/led:command:ON:{\"vang\"\\:\"ON\"}],>[mybroker:zone_3/box_1/led:command:OFF:{\"vang\"\\:\"OFF\"}]"} +Switch Switch2 {mqtt=">[mybroker:zone_3/box_1/led:command:ON:{\"do\"\\:\"ON\"}],>[mybroker:zone_3/box_1/led:command:OFF:{\"do\"\\:\"OFF\"}]"} +Switch Switch3 {mqtt=">[mybroker:zone_3/box_1/led:command:ON:{\"xanh\"\\:\"ON\"}],>[mybroker:zone_3/box_1/led:command:OFF:{\"xanh\"\\:\"OFF\"}]"} +Number Temperature "Temperature: [%.1f oC]" {mqtt="<[mybroker:zoner_3/box_1/temp/id_1:state:JSONPATH($.temperature)]"} +Number Humidity "Humidity: [%.1f ]" {mqtt="<[mybroker:zoner_3/box_1/temp/id_1:state:JSONPATH($.humidity)]"} +Number Motion "Motion: [ %d ]" {mqtt="<[mybroker:zone_3/box_1/motion/id_1:state:JSONPATH($.motion)]"} +Number Light "Light: [%d ]" {mqtt="<[mybroker:zoner_3/box_1/light/id_1:state:JSONPATH($.light)]"} + diff --git a/do_chi_thanh/OpenHAB/default.services b/do_chi_thanh/OpenHAB/default.services new file mode 100644 index 00000000..1e528947 --- /dev/null +++ b/do_chi_thanh/OpenHAB/default.services @@ -0,0 +1 @@ +mybroker.url=tcp://test.mosquitto.org:1883 diff --git a/do_chi_thanh/OpenHAB/default.sitemap b/do_chi_thanh/OpenHAB/default.sitemap new file mode 100644 index 00000000..62176d0d --- /dev/null +++ b/do_chi_thanh/OpenHAB/default.sitemap @@ -0,0 +1,11 @@ +sitemap default label="My first sitemap" +{ + Switch item=Laptop_Thanh label="Thanh's Laptop" + Switch item=Switch1 label="Led vang" + Switch item=Switch2 label="Led do" + Switch item=Switch3 label="Led xanh" + Text item=Temperature label="Temperature" + Text item=Humidity label="Humidity" + Text item=Motion label="Motion" + Text item=Light label="Light" +} diff --git a/do_chi_thanh/OpenHAB/esp8266_cam_bien_chuyen_dong.ino b/do_chi_thanh/OpenHAB/esp8266_cam_bien_chuyen_dong.ino new file mode 100644 index 00000000..aad7829e --- /dev/null +++ b/do_chi_thanh/OpenHAB/esp8266_cam_bien_chuyen_dong.ino @@ -0,0 +1,139 @@ +#include +#include "PubSubClient.h" +#include "ArduinoJson.h" +#include +const byte RX = D1; +const byte TX = D2; + +SoftwareSerial mySerial = SoftwareSerial(RX, TX, false, 256); + +//#define mqtt_server "test.mosquitto.org" +#define mqtt_server "192.168.60.199" +#define mqtt_topic_pub "zone_3/box_1/motion/id_1" +#define mqtt_topic_sub "zone_3/box_1/led" + +//IPAddress staticIP(192,168,60,174); // Phong may +IPAddress staticIP(192,168,60,173); // Phong ngoai +//IPAddress staticIP(192,168,60,172); // Phong can bo + +IPAddress gateway(192,168,60,1); +IPAddress subnet(255,255,255,0); + +const char *ssid = "HPCC_IOT"; /// replace with your wifi ssid and wpa2 key. +const char *pass = "hpcc_iot"; +//const char* ssid = "ThuyHuong"; +//const char* pass = "09061994"; + +WiFiClient ESPclient; +PubSubClient client(ESPclient); + +long lastMsg = 0; +char msg[50]; +int value = 0; + + +//unsigned long time = 0; +void setup_wifi(); + +void setup() +{ + Serial.begin(115200); + mySerial.begin(115200); + setup_wifi(); + client.setServer(mqtt_server, 1883); + client.setCallback(callback); + pinMode(LED_BUILTIN, OUTPUT); + digitalWrite(LED_BUILTIN, LOW); +} + +void setup_wifi(){ + delay(10); + Serial.println("Connecting to "); + Serial.println(ssid); + + WiFi.begin(ssid, pass); + WiFi.config(staticIP, gateway, subnet); + + while (WiFi.status() != WL_CONNECTED) + { + delay(500); + Serial.print("."); + } + Serial.println(""); + Serial.println("WiFi connected"); + Serial.println("IP address: "); + Serial.println(WiFi.localIP()); +} + +// Ham callback de nhan du lieu +void callback(char* topic, byte* payload, unsigned int length) { + Serial.print("Message arrived ["); + Serial.print(topic); + Serial.print("] "); + + if(strcmp(topic,mqtt_topic_sub)==0){ + payload[length] = '\0'; // Cắt bỏ dữ liệu thừa + char inData[80]; + char payload_string[100]; + strncpy(payload_string, (char*)payload,sizeof(payload_string)); // chuyển về dàng char + Serial.println(payload_string); + mySerial.print(payload_string); + } + Serial.println(); + delay(100); +} + +void reconnect() { + // Loop until we're reconnected + while (!client.connected()) { + Serial.print("Attempting MQTT connection..."); + // Create a random client ID + String clientId = "ESP8266Client-"; + clientId += String(random(0xffff), HEX); + // Attempt to connect + if (client.connect(clientId.c_str())) { + Serial.println("connected"); + // Once connected, publish an announcement... + //client.publish(mqtt_topic_pub, "hello world"); + // ... and resubscribe + client.subscribe(mqtt_topic_sub); + } else { + Serial.print("failed, rc="); + Serial.print(client.state()); + Serial.println(" try again in 5 seconds"); + // Wait 5 seconds before retrying + delay(5000); + } + } +} + +// Nhan du lieu tu arduino va publish/subscribe len server +int person = 0; +StaticJsonBuffer<200> jsonBuffer; +JsonObject& json_buffer = jsonBuffer.createObject(); +char buffer_motion[200]; + +void loop() +{ + // Kiem tra ket noi + if (!client.connected()){ + reconnect(); + } + + client.loop(); + if(mySerial.available() > 0){ + person = mySerial.read(); + long now = millis(); + if (now - lastMsg > 100){ + lastMsg = now; + + json_buffer["motion"] = person; + json_buffer.printTo(buffer_motion, sizeof(buffer_motion)); + Serial.println(buffer_motion); + client.publish(mqtt_topic_pub, buffer_motion); + + } + } + delay(3000); + +} diff --git a/do_chi_thanh/OpenHAB/ip.txt b/do_chi_thanh/OpenHAB/ip.txt new file mode 100644 index 00000000..e3e15df2 --- /dev/null +++ b/do_chi_thanh/OpenHAB/ip.txt @@ -0,0 +1,47 @@ +laptop : 192.168.60.246 +cam bien nguoi phong ngoai, canh ban: 192.168.60.173 +cam bien nguoi phong ngoai, tren cao: 192.168.60.170 +cam bien nhiet am phong ngoai: 192.168.60.176 + +cam bien nguoi phong can bo: 192.168.60.172 +cam bien nhiet am phong can bo: 192.168.60.171 + +cam bien nguoi phong may: 192.168.60.174 +cam bien nhiet am phong may: 192.168.60.175 + + + + +MAC Adress: + +cam bien nguoi + nhiet do do am phong ngoai canh ban: 2C:3A:E8:0E:BC:D5 + + +Qui uoc dat ten topic : + zone_1: phong server + zone_2: phong can bo + zone_3: phong ngoai + + box_1 : hop tren cao (neu co) + box_2 : hop duoi thap + + temperature_humidity: cam bien nhiet do do am + motion: cam bien nguoi + id_1 : thiet bi so 1 trong hop + id_2 : thiet bi so 2 trong hop + +Dat ten topic : + + cam bien nguoi trong phong can bo : zone_2/box_2/motion/id_1 cong 30004 + cam bien nhiet do do am, phong can bo : zone_2/box_1/temperature_humidity/id_1 cong 30004 + + cam bien nguoi trong phong ngoai, tren cao: zone_1/box_2/motion/id_1 + cam bien nguoi trong phong ngoai, canh ban: zone_1/box_1/motion/id_1 + cam bien nhiet do, do am phong ngoai : zone_1/box_3/temperature_humidity/id_1 + + cam bien nguoi phong server, tren cao : zone_3/box_1/motion/id_1, cong 30004 + cam bien nhiet do, do am phong server : zone_3/box_2/temperature_humidity/id_1, cong 30004 + + + + diff --git a/do_chi_thanh/OpenHAB/mqtt.cfg b/do_chi_thanh/OpenHAB/mqtt.cfg new file mode 100644 index 00000000..8bc9b6bf --- /dev/null +++ b/do_chi_thanh/OpenHAB/mqtt.cfg @@ -0,0 +1,41 @@ +# +# Define your MQTT broker connections here for use in the MQTT Binding or MQTT +# Persistence bundles. Replace with an ID you choose. +# + +# URL to the MQTT broker, e.g. tcp://localhost:1883 or ssl://localhost:8883 +#.url=tcp://:1883 +mybroker.url=tcp://test.mosquitto.org:1883 + +# Optional. Client id (max 23 chars) to use when connecting to the broker. +# If not provided a random default is generated. +#.clientId= + +# Optional. True or false. If set to true, allows the use of clientId values +# up to 65535 characters long. Defaults to false. +# NOTE: clientId values longer than 23 characters may not be supported by all +# MQTT servers. Check the server documentation. +#.allowLongerClientIds=false + +# Optional. User id to authenticate with the broker. +#.user= + +# Optional. Password to authenticate with the broker. +#.pwd= + +# Optional. Set the quality of service level for sending messages to this broker. +# Possible values are 0 (Deliver at most once),1 (Deliver at least once) or 2 +# (Deliver exactly once). Defaults to 0. +#.qos= + +# Optional. True or false. Defines if the broker should retain the messages sent to +# it. Defaults to false. +#.retain= + +# Optional. True or false. Defines if messages are published asynchronously or +# synchronously. Defaults to true. +#.async= + +# Optional. Defines the last will and testament that is sent when this client goes offline +# Format: topic:message:qos:retained
+#.lwt= diff --git a/do_chi_thanh/OpenHAB/openhab_light_on_off.py b/do_chi_thanh/OpenHAB/openhab_light_on_off.py new file mode 100644 index 00000000..0582fda2 --- /dev/null +++ b/do_chi_thanh/OpenHAB/openhab_light_on_off.py @@ -0,0 +1,75 @@ +from openhab import openHAB +import paho.mqtt.client as mqtt +import json +import time + + +base_url = 'http://localhost:8080/rest' +openhab = openHAB(base_url) + +# fetch all items +items = openhab.fetch_all_items() +# print (items) + +item1 = openhab.get_item("Switch1") +item2 = openhab.get_item("Switch2") +item3 = openhab.get_item("Switch3") + +temp_item = openhab.get_item("Temperature") +light_item = openhab.get_item("Light") +light_state = light_item.state + +topic_sub_sensor = "zone_3/box_1/motion/id_1" +def on_connect(client, userdata, flags, rc): + print("Connected with result code "+str(rc)) + + # Subscribing in on_connect() means that if we lose the connection and + # reconnect then subscriptions will be renewed. + client.subscribe(topic_sub_sensor) + +# The callback for when a PUBLISH message is received from the server. +def on_message(client, userdata, msg): + print(msg.topic+" "+str(msg.payload)) + global pre_motion + + mes = json.loads(str(msg.payload)) + mes = mes['motion'] + + if (mes == 1 and pre_motion == 0): + # pre_motion = mes + light_state = light_item.state + print (light_state) + if (light_state == 0): # LDRReading < 500 + item1.on() # Bat den vang + time.sleep(0.5) + item2.off() + time.sleep(0.5) + item3.off() + print ("Vang: ON, Do: OFF, Xanh: OFF") + elif (light_state == 1): # LDRReading >= 500 <600 + item1.off() + time.sleep(0.5) + item2.on() # Bat den do + time.sleep(0.5) + item3.off() + print ("Vang: OFF, Do: ON, Xanh: OFF") + elif (light_state == 2): # LDRReading >= 600 + item1.off() + time.sleep(0.5) + item2.off() + time.sleep(0.5) + item3.on() # Bat den xanh + print ("Vang: OFF, Do: OFF, Xanh: ON") + else: + print ("ERROR!") + exit() + +client = mqtt.Client() +pre_motion = 0 +pre_temp = 0 + +client.on_connect = on_connect +client.on_message = on_message + +client.connect("192.168.60.199", 1883, 60) +client.loop_forever() diff --git a/do_chi_thanh/OpenHAB/wifi_cam_bien_anh_sang.ino b/do_chi_thanh/OpenHAB/wifi_cam_bien_anh_sang.ino new file mode 100644 index 00000000..44d996e6 --- /dev/null +++ b/do_chi_thanh/OpenHAB/wifi_cam_bien_anh_sang.ino @@ -0,0 +1,174 @@ +#include +#include "PubSubClient.h" +#include "ArduinoJson.h" +#include +#include +#include +#include +#include + + +const byte RX = D1; +const byte TX = D2; + +SoftwareSerial mySerial = SoftwareSerial(RX, TX, false, 256); + +//#define mqtt_server "test.mosquitto.org" +#define mqtt_server "192.168.60.199" +#define mqtt_topic_pub "zone_3/box_1/light/id_1" +//#define mqtt_topic_sub "light/switch" +#define mqtt_topic_sub "zone_3/box_1/led" +#define mqtt_topic_check_status "light/status" + + +//IPAddress staticIP(192,168,60,175); // Phong may +//IPAddress staticIP(192,168,60,171); // Phong can bo +IPAddress staticIP(192,168,60,176); // Phong ngoai + +IPAddress gateway(192,168,60,1); +IPAddress subnet(255,255,255,0); + +const char *ssid = "HPCC_IOT"; /// replace with your wifi ssid and wpa2 key. +const char *pass = "hpcc_iot"; +//const char* ssid = "ThuyHuong"; +//const char* pass = "09061994"; +//const char* host = "esp8266-webupdate"; + +//ESP8266WebServer httpServer(80); +//ESP8266HTTPUpdateServer httpUpdater; + +WiFiClient ESPclient; +PubSubClient client(ESPclient); + +long lastMsg = 0; +char msg[50]; +int value = 0; + + +//unsigned long time = 0; +void setup_wifi(); + +void setup() +{ + Serial.begin(115200); + mySerial.begin(115200); + setup_wifi(); +// WiFi.mode(WIFI_STA); + client.setServer(mqtt_server, 1883); + client.setCallback(callback); + pinMode(LED_BUILTIN, OUTPUT); + digitalWrite(LED_BUILTIN, LOW); + +// MDNS.begin(host); +// +// httpUpdater.setup(&httpServer); +// httpServer.begin(); +// +// MDNS.addService("http", "tcp", 80); +// Serial.printf("HTTPUpdateServer ready! Open http://%s.local/update in your browser\n", host); + +} + +void setup_wifi(){ + delay(10); + Serial.println("Connecting to "); + Serial.println(ssid); + + WiFi.begin(ssid, pass); + WiFi.config(staticIP, gateway, subnet); + + while (WiFi.status() != WL_CONNECTED) + { + delay(500); + Serial.print("."); + } + Serial.println(""); + Serial.println("WiFi connected"); + Serial.println("IP address: "); + Serial.println(WiFi.localIP()); +} + +// Ham callback de nhan du lieu +void callback(char* topic, byte* payload, unsigned int length) { + Serial.print("Message arrived ["); + Serial.print(topic); + Serial.print("] "); + + if(strcmp(topic,mqtt_topic_sub)==0){ + payload[length] = '\0'; // Cắt bỏ dữ liệu thừa + char inData[80]; + char payload_string[100]; + strncpy(payload_string, (char*)payload,sizeof(payload_string)); // chuyển về dàng char + Serial.println(payload_string); + mySerial.print(payload_string); + client.publish(mqtt_topic_check_status, payload_string); + } + Serial.println(); +} + +void reconnect() { + // Loop until we're reconnected + while (!client.connected()) { + Serial.print("Attempting MQTT connection..."); + // Create a random client ID + String clientId = "ESP8266Client-"; + clientId += String(random(0xffff), HEX); + // Attempt to connect + if (client.connect(clientId.c_str())) { + Serial.println("connected"); + // Once connected, publish an announcement... + //client.publish(mqtt_topic_pub, "hello world"); + // ... and resubscribe + boolean boo = client.subscribe(mqtt_topic_sub); + Serial.println(boo); + } else { + Serial.print("failed, rc="); + Serial.print(client.state()); + Serial.println(" try again in 5 seconds"); + // Wait 5 seconds before retrying + delay(5000); + } + } +} + +// Nhan du lieu tu arduino va publish/subscribe len server +int light=0; +int temperature = 0; +int humidity = 0; + +StaticJsonBuffer<200> jsonBuffer; +JsonObject& json_buffer = jsonBuffer.createObject(); +char buffer_weather[200]; + +void loop() +{ +// httpServer.handleClient(); + // Kiem tra ket noi + if (!client.connected()){ + reconnect(); + } + + client.loop(); + if(mySerial.available() > 0){ + light = mySerial.read(); + temperature = mySerial.read(); + humidity = mySerial.read(); + +// Serial.println(light); + long now = millis(); +// if (now - lastMsg > 100){ + lastMsg = now; + + json_buffer["light"] = light; + json_buffer["temperature"] = temperature; + json_buffer["humidity"] = humidity; + + json_buffer.printTo(buffer_weather, sizeof(buffer_weather)); + Serial.println(buffer_weather); + client.publish(mqtt_topic_pub, buffer_weather); + +// } + } + delay(1000); + +} diff --git a/do_chi_thanh/OpenHAB/wifi_cam_bien_nhiet_do_do_am.ino b/do_chi_thanh/OpenHAB/wifi_cam_bien_nhiet_do_do_am.ino new file mode 100644 index 00000000..db621181 --- /dev/null +++ b/do_chi_thanh/OpenHAB/wifi_cam_bien_nhiet_do_do_am.ino @@ -0,0 +1,144 @@ +#include +#include "PubSubClient.h" +#include "ArduinoJson.h" +#include +const byte RX = D1; +const byte TX = D2; + +SoftwareSerial mySerial = SoftwareSerial(RX, TX, false, 256); + +#define mqtt_server "test.mosquitto.org" +#define mqtt_topic_pub "zone_3/box_1/temp/id_1" +//#define mqtt_topic_sub "light/switch" +#define mqtt_topic_sub "zone_3/box_1/led" +#define mqtt_topic_check_status "light/status" + + +IPAddress staticIP(192,168,60,176); +IPAddress gateway(192,168,60,1); +IPAddress subnet(255,255,255,0); + +const char *ssid = "HPCC_IOT"; /// replace with your wifi ssid and wpa2 key. +const char *pass = "hpcc_iot"; +//const char* ssid = "ThuyHuong"; +//const char* pass = "09061994"; + +WiFiClient ESPclient; +PubSubClient client(ESPclient); + +long lastMsg = 0; +char msg[50]; +int value = 0; + + +//unsigned long time = 0; +void setup_wifi(); + +void setup() +{ + Serial.begin(115200); + mySerial.begin(115200); + setup_wifi(); + client.setServer(mqtt_server, 1883); + client.setCallback(callback); + pinMode(LED_BUILTIN, OUTPUT); + digitalWrite(LED_BUILTIN, LOW); +} + +void setup_wifi(){ + delay(10); + Serial.println("Connecting to "); + Serial.println(ssid); + + WiFi.begin(ssid, pass); + WiFi.config(staticIP, gateway, subnet); + + while (WiFi.status() != WL_CONNECTED) + { + delay(500); + Serial.print("."); + } + Serial.println(""); + Serial.println("WiFi connected"); + Serial.println("IPu address: "); + Serial.println(WiFi.localIP()); +} + +// Ham callback de nhan du lieu +void callback(char* topic, byte* payload, unsigned int length) { + Serial.print("Message arrived ["); + Serial.print(topic); + Serial.print("] "); + + if(strcmp(topic,mqtt_topic_sub)==0){ + payload[length] = '\0'; // Cắt bỏ dữ liệu thừa + char inData[80]; + char payload_string[100]; + strncpy(payload_string, (char*)payload,sizeof(payload_string)); // chuyển về dàng char + Serial.println(payload_string); + mySerial.print(payload_string); +// client.publish(mqtt_topic_check_status, payload_string); + } + Serial.println(); +} + +void reconnect() { + // Loop until we're reconnected + while (!client.connected()) { + Serial.print("Attempting MQTT connection..."); + // Create a random client ID + String clientId = "ESP8266Client-"; + clientId += String(random(0xffff), HEX); + // Attempt to connect + if (client.connect(clientId.c_str())) { + Serial.println("connected"); + // Once connected, publish an announcement... + //client.publish(mqtt_topic_pub, "hello world"); + // ... and resubscribe + boolean boo = client.subscribe(mqtt_topic_sub); + Serial.println(boo); + } else { + Serial.print("failed, rc="); + Serial.print(client.state()); + Serial.println(" try again in 5 seconds"); + // Wait 5 seconds before retrying + delay(5000); + } + } +} + +// Nhan du lieu tu arduino va publish/subscribe len server +int temperature = 0; +int humidity = 0; + +StaticJsonBuffer<200> jsonBuffer; +JsonObject& json_buffer = jsonBuffer.createObject(); +char buffer_weather[200]; + +void loop() +{ + // Kiem tra ket noi + if (!client.connected()){ + reconnect(); + } + + client.loop(); + if(mySerial.available() > 0){ + temperature = mySerial.read(); + humidity = mySerial.read(); + long now = millis(); + if (now - lastMsg > 10){ + lastMsg = now; + + json_buffer["temperature"] = temperature; + json_buffer["humidity"] = humidity; + + json_buffer.printTo(buffer_weather, sizeof(buffer_weather)); + Serial.println(buffer_weather); + client.publish(mqtt_topic_pub, buffer_weather); + + } + } + delay(100); + +} From aa81ac361a8f37ce23b3f78b4dce85fd19cfe421 Mon Sep 17 00:00:00 2001 From: hamhochoi Date: Sun, 11 Feb 2018 01:42:37 +0700 Subject: [PATCH 3/5] images --- .../connect_arduino_and_esp8266_nodeMCU.PNG | Bin 0 -> 5132 bytes .../connect_arduino_and_motion_sensor.PNG | Bin 0 -> 112799 bytes do_chi_thanh/OpenHAB/openHAB_system.jpg | Bin 0 -> 61823 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 do_chi_thanh/OpenHAB/connect_arduino_and_esp8266_nodeMCU.PNG create mode 100644 do_chi_thanh/OpenHAB/connect_arduino_and_motion_sensor.PNG create mode 100644 do_chi_thanh/OpenHAB/openHAB_system.jpg diff --git a/do_chi_thanh/OpenHAB/connect_arduino_and_esp8266_nodeMCU.PNG b/do_chi_thanh/OpenHAB/connect_arduino_and_esp8266_nodeMCU.PNG new file mode 100644 index 0000000000000000000000000000000000000000..ec17b8320cf1eb762e3715b1abd3af46fe82030c GIT binary patch literal 5132 zcmd6rdpwj|+sCIiJvmPyhpi-sQDUN$LuD&DhGIufGmhIX#%aP}uq)^Dp`4j0Br+j{ zG1@g_B8L!@8OC$W>$BFn*S$V#eXr|xCEl_! z5fPLXgg_u7W~N3q5Xb=p@11)15btR-rAy>h2hcVq*C4fha`QZc&)d+_5CW-77ut2> z=h*@QrVeNbMD*jIP-MGmZ4O=tepB8;9V5s^`yHVKT z@qzApu7h6=dLEX3UPJBtDtIVks6x0j=Uit4?ZoWE^c2?&q>=O9_X(!?jPCpR+Eb4` z&tay{X;p`cKp^iPVGclw3<(fO-$~w5y`gZ(Z|4)FAn#>JLXba%0e(opj3>Cavxtv@ z*3Ua9H;_06``d7ZLNoiJea^(bq7ol?6o8T}E+pha<4+>W3<)thye1JqnWT`A`zsW# zAZkc3dW;bWJPatyk}MLgL*WA_5!d7%VG|N0}j-23Re6O>aPL2i7-A zbCbUPe0v@a?o8}5#XLGptmZ!^a`)JjnZoCkxy6|>fV)n;tLQ@Hn6TQ0e?jeSnXphg zRN^*AzH={ecP}tHe-W1%9W_V!<6}n;*Dg)Zn4=Vs~<12 zwxYES;sQ^jWwuW-(Ajp#wv__^a1gs+IN;}HC5}f&alS}Rh5_8^iRmWQ2NAoSEU^{~ zP(@*>(7z*jYL!VbNDWa#mti8$o3B0q_eOUS;}f{v3A*N63ckIfBviVRAXa$@EXg-~ zVu0zJ?{vitcpH{X-`J6uFiEo zxQtVt1$MHvnDlua>!!%)mORW5Wx}t#%E0Hxr}LG2vxcX(&6g?ZsG z2b~6GWy*7jTIaMtmkn8PB!9WG9d(s`mZ6mT#=Ow+wPU>?kf=uRo>L{E;w)6WV4$NTL| zgus%ghLEX+H%DD_4S(5Q=<#*x+I0rIyBo)HqWWt)jAMBH(yEb0vq_=9s?8FNpetQ6 zv2K*RH-0I*d-pifg<$*PI)VC0nN)rBrD9ew6o0zt6?22+lN_CTxFZb{A41kaoJwGS z{Y06o>M=Vf&VDmayVzZ=H<7Q#056Z&i<}ug1xu!Gh2Q8r0`_@5>G#Ys&9NiYw=+~G zeyC)L9K3=it0C2d4>mU4(RCqAam%B+bovrQ-G$+jqzLy4{yU%1<`Pr7DZ;2}?43Sw zd{SLc4d3TnE0EHt3-*nl2a3B+);aP`b=OEZ57;T$d;98_;QJf^)cLSwcgZ3X#32O` z>qFAt{QXl3#>9=9A7xl023$FP>g*JL|G9IS^sG^4;>&T|UYowQRsyV4jxD0?Tadt znk|$kTAq5FkE|$?s+l{?jlf_YdVc&A1}HlT{oO43i-5gtl5m9>UtKD27Ch)Ha9>t} zB=iSFTSO4x5BRO%5I=ZO=O@d@Jp9T%t1#pNSoGG=GaiEf@$%j+DEzk{zFtsGka~aM zUpCAyq4^_`hsUrI1gBjcZ|z3kTOIMgg($2XC(48dcSy}H)EitF893Lk;VYM2L+4KXT-=n*vMhT~|g(d_cMAHd)O(%EN^>zhVHrWk< z%KpRgzT%qH*7;l*TUEj)zSw!ofEkr=i zm{7;ex$36CDD&_;nIhH0j`!5PE?8cCmNlsdif-s(dnM~gKPq+nZq1wS{EMy(7#e(nar$uP z#nF`y+pgM9HS?%3@FEBsLwhUDKp?mBD6mL z*3dsg0By^^;)MSIGgN_*OL1YX?zS-4Yu}ba+OCTAvS!^oGW+|*P;|;nIp>N#vHv5Q z753|XOIVa@Gx|l8(r`?+lNNU;vBH|W;C*Qhc{H$Y4dq9z}5dprSM))-F zk@M1Qt?jk2OY<<43N3{0!5wTx7!k%-I$2k=*$N0tY)PXjtOVW0jHJ$bHMoFDV`t~T z(sSga*iC(#PT~zu(1oix@-&Co(8-$wC?nVn$?W)AhwC;HLJJ<15*=3^u^<}c(gUFBm^D#1ldnj5+l(lzJviPsHk z+|S15+I0V(aYOr1>57@D%fyKSib>0IO+b>_aPp->Pd6v9tU#K5)(n{5?(twn@qq>X zFPA8J*cuVAfX&-f|KhDOmzVLWhd}c-v&rB(qbI0EvR)weNq8IWKKprK znKq)vNN>tBeWDL;55*4U_R`sGs)eSw$2;OMl@QrI<|&tzX3cZAX2oCoPcnjbQ#F&t z5q%Fa_zZqmrBbiZ9vH;Vjy7Mt^8#tRcA8UXLom~WGhZndH~6r(1})=2#G;gqrk!1fT|$uV z{EdvL65O+G9rkTdwm;xDq4RFZQIgt#_n^w<$3cFm%b{wFt<@XC$>KF?FRm%gXa=r{ zQq}N7%7V`PIQ6gExo5sJhnKQN9tGij&uLMBR*_HIqco!8bQ+^*4tIe_+w%X|S;?Wt%(P{@g$ONOWpQj;|bN+am=f%^D4B zJ$_Mxv8ND!@QwVhPdt1ZjAKe8hXc&V%m!N({n|>PsVq1V!#Lpf;aC}}*=1$==jVXs z6sBr%;weU`$_`$)7n^6D>_^Xs(|&Xx0z||J5v{g>Kz2Kw7?KsttO4?LiK;JEcYMsh z%zYL~2*ubTGo1kS1s2%Rdu(i6IgTnhwocN(0hKZH(m26f%6s8Ycl zUs?liXQQHKgJPpzL+z-2Cpt2fz+LRP`lsZR zrQA7KVAPHcfuH>DE8s$%)gF6_X`8*|Sv%uV{KO;b&)<3UYj_20@&h=z!=>zzPc0_b zsnd2H1KWbR1f(%Cg=3!?ObIoph^FHl-6W^(SgE$8FYEY}=Qmn+(JV7NU5nmM%8qQ? z7+l})_V!JsnoA=`ff=(Pg#G!hnc$z1Ex{StDb6%0yGW=Dk)H zA;-S7MJ^>|geyij?h@7NQ?Z_izQUm4TvqcqMaKP3$mg!Hn2+3f!5V2PQpABInkw%1 z1m8=z@g_sU!wsMjw%^0kmgKGu;-~e3CTzD4FNWnfZQY-29M6>vWzx)8Gz9vI<%CA_ zz$1)@e4k_vqfMEdas$*zw}?#5pAA=Ht06d})7s*cmRctB5#|Rq*j;!<_?q=`d03Rj zv)EHULiV9v{Ibi69ermUVx|Pcnqtu2+(k}KV=6u9NHgkt!HkeX!nuwa`efC@bzq}v z31{B$QTp>HG0tE|J*nBJjC+%<2V*R6g^yWHmXHfeKCUjM&=R!o_m-k~-;1lc*%~rp z^fqk;)}*{}3nNZl6bjf9t@r(T8QLE+YhND&S7WAu@|9UwI`c1&eEQmNXL7T1M_tr)Zto~`$UAN27{J4&Lo3K9VvW`y9Av1D76V&8D6$$*kp)nH^d?%$G<;SAHIkDUb`+YWb zM)Yw?waXW9(P&;c>6RjBtX43`VFY?*+O(mpRJS1NxRevx6gZnJx|>0r%nq-KO`OfO zHn;GYrQ%+fowk|-39Y$XI@pi;TTeQl#~JY;Q#ym9Nox-_uN>`dsI^gqOTgqqpF_N3*wz}b zD>BZlV}W<7t!dC7dY<3s2%9)utIF@z7o& za75t4`KC@KCG;1eF8~vqg50Rbu1Gp~0<33k#DK5_Tiv!(Ep~-F3OFM0VRbP#StR<4 zGPfT(|2{k5M43eiSX3}M=CT?-wmm9Vydu7eko-ZNf=sZtMaj#>#zV1KM7>3NY-Sts zf_y-NMD#@7I>IiTl%H!sf^gj)G>whZo90VTjfoR1ivzkopCgd z9o-pri8C=xxvV;d_i5S`w6Q;$fM!z7a$L6SlOtvi-c7|w-ZbdLaOi*5~n}w8fpJyKbv}emPXS_ z(2Ljb=yw=AoZMl`wRWE-4k@OhV9>|-&aHDSF`p@hl7`fAtOs+i{wKYk`4DgX;(P)qc0qxi#6#f zvN}bl(H7wko0qjrm$?iBTcGrNirQ^<3y>P^Q(v})nkVmK!ciiqCU?Fc%GS$+`VC*% z7QzjXW-1J)J;><>=YAeYa<26xZoQuU)mBPxPcgyq|5~d$mkzmknXS==sy<|PZrqeK(aD?ixJZDr5PW#vQ0MP)h$ zRUP-=*|`V6nravtuT+naw(GyKlY>-pqH!N^c-KS@JB5D7GaJ0-RuJ?5*pEvqXuDRfv-3uV^K2CP_)^eEN1TyjIcrZ3_?5RIRMnD3Fj#mthLC6st6RhG& z9)VqHi_P=(OY0LZi<{LJr{oh5!pHf#BfU+8T9@*?|aytv6Gft&V%PZiH)fRc7 z2CS-icn3i`lXB&Kh;?NuE{|r8LvUSb?*^padIQqbN@n-Bs`jIoxDVKd+I6ItZjt4i zPVhJgiX(LuBAh$x8M3SZ5<|EXb~kWsK#tgWLRS4|`~G)L?NmmWR10*5acmQtL?-Mz zAHP%?0J(Uq`3Zr#qVxymm4aD}MH2SV!TpuQW)3kH{QFLitAjyXNT%aF>S-|ju}n~1 zxKsW)kfL286z@4oJvB`+UY-I9Ybi`L_?~0b*x-KzEqSgtWva+^o&eZAp%kW*vt%9* zfpBQ=hBdS|rYDu^Y?SKvi5Q;=*a6G)YCaeuT)oJk(=~%sp#h3zWa24qKxT(q!sQX4 z>Dv)yy)T(E5=Q7`a_uVsZrUQursk^Kr;rPT99>>5n)leL&;SLooxEBEyhr{#mYtb$ zrLe6YIiTx5cfQr&co*&r;oWXk=;FJ7 zbLE%m9^*>OVXcis5H9l#CVh0(O!Nur89jX_@@xxeZfKGQ=ztKis)-Y^`$u=PBF1R= z=F_DUP@bVmWTr}W0YpQKS^dpZTK$e!VCk%&+InPyAz|pjYZaB`5n-d4c<2>Vfnn^- z%#kVvN9vLE`f`owh{>{@$oy0$g+8TY($k~hEOj4iKf+c(@WW}q_d6(zpr&?yWjF3n-KaYAZ_-ta~W9LZNsmfR3p4~sU?D#OM<0HzYA_E2#R3L#Q%dgNo zhmP-(<=QT`+a(D=HBRu8o}GkecG<4(kOJ}Vb<(XaGl%derhoN2C3~r@i@EmIU$msR z33y)A;0hMoKkw;>2+w=%l<3CCi+d)m$Q}2KgkG$cE`9fyLjYHPMptf~we4r^a5|hR zXZNcGb7Q&^*T_iNcl*ac^03}YwG{~kbW$JEU;TAfvz7$}6gw2rTnT9+$VSUb(DCc> zmtom;SqJCd)zB^6TF3d5)%w*APs3G_wYUp@AY%uygjg`0i}ts3BheR@5kl74BuEED zSrEdd;&URjD-)eFlKetD+t_*c?WQt2s=qw1vTmEMv?%esbS==W9tbWrD8I?3UFgKd zyPvOBtd39~u-EZN*9|tUqRs?93y-sf?HZ7g6{LJa}p2`?7c2p^F*A15&Crw zvNKgyuY~!nrWwz`)IXgH6W?Tto6bjByU&863d`VB>RsKA{MH1ea|OIxuXqP{`|PY@ z;=AmWPRp2^8u@|FNmCGrGe|@{u>NdoA~v>$sye{C$7J6cx0Qsh1>7oJ;8y9vB}P&u z2}&UA+11VoSbMXUM6izO@CK^U znj$ygRJhAv);vM*^eJp(&uy3}fG&#U(9!k>{#pSj*W3g}UQqeF)eFR4rMfDeU1m?S)j)9qvz3d@;f=jV+ z++N-NB1=UlU;VQd&GiEWnZj6@Cm*Bs&}T z^-igI<=PMmq&%q4Z6uiGIEz}-ldCji11KF*$+$Mt88I!ZaE6_yr+csROD%zT=Hb0w z>HYbd6Y+|3rHr^7fQPXhhQ1W}<1W!$6sHQ9icW%4qiKx6rN)OSA4lp$gCENOgh10=7xTC_NP>!wxUJJk$t z_QpUzori<91<$u6LF4llCHyX#gRj+DJLCMhGed>xBSlGTb0K@?x)#w>$c7>oX3)On zG4$TPyGuFj{Ugo~x+r;06RM)uyFW#ysAEdENiwLb;IY=|FZSg`(p z)A?5l$2O^XpplSWdjA_G^gpU|cyT&Dg!@{ET#)&t4J4(0KngBIzciAbv<+QTV?xRq zt=Tp@!)@D|xZt+DS4*W10)v$fcME-R4TZ?zlUsq`j1NZAL;H7VG=E2&-shmayPE<2 z5QvF|N6@{HSEF-biKoqOyba85Z)4rcn9=ZzdukdFKusLMjsL72YvTA76)SC{L<1k! zEHHqi;!fRJLr~$OZx$N!3djm{Y-xuj$L3aZ1>TgPGVl3wBS95PRr%0y5Pg}HEu>y4l*$j1UwMz~F$JE!gYKs77=Ze)U^=&JE^`d$%w5Rb zeG2Pq05YivI0dnBJij~6u%y7DUq`MO!>*pffkg{Z-d~on=e>TgXCCj!0qGpM&+`tC zlKu7V8x;;Sw4quRNwa;zbR63rX7x$r&Jn*e+%gxkoP5fzSEGi>Q63y3#|AEn92g}&E32${ z45W47v^!YRIua9oV(FnKjN8Hx-u<3WK%dB>;3nn}AD`Q$AfD$EVc2Zf#)lya6RbJO zGWm^Hmvig@9--LRQ2Wh5Vp1_td8lc856khmv*&AVFO1kfU{#QaI(4KEXn6k{SS|l2 zSgpOJ>Hq2RsP33)#j)Cw@KvPnM_gvLNc-oEuepIN`!VdMR0={Q_IIz){NYgOa5;nP z^z3jLIShf3l|g=j|5;RG8R#71(WTP_+K2A@vH1S6j7{Oymhs5phriPO11?e@cyK^u zzc3G-S+!zW&e1H6%N8aE%X&G8cSrv&l)HtB^?H}ewslaHzHw(?KKG-gX?EVwa0g*Fy34?fxBuSay(;3a4a6YvO@Hicq^NpVz~#I7EyI70!mpYV zfe-va+ov#XQcw8T?B{PSzBi#eLRQImT58?rHp?zA*~$3WY)mQ zMt4U%zf3DS(jkS1Lb3M=?|zU}_TuAv0B#->cn$O|yR0jxeKRvvuEDmLf{NFA$bZzh z2LoSkm_)~~gp+0Mp3Na(+3+ALlbBjq;ay_@Q&1n~!yE*~RrjAjE0(YK*v1R1Thtw> zIp76+XPM`cMGi}KHX=PNy4DB!u)^kvxB5Fd^_@ZS+Qzb-l{%($a&Et1DX&Y@L|}#7 zOKmAn+?LwLM^e7bCUTerv8PtW9DTN{Xy}Gob!P4{G6QVm8`Uwpx8jaT?5YsR{J+x; z5#x1LKm{a@oIOiVqoQBxb7%oC?? z;?>qTb{R?V@zo=rHqsnbbsT25Wh(-SAK3P2Y#2kF43KvK_yzj(2ifR8z5L$XA8Pc! zg1Dc~nSU1nV4DPssT2Emk}&Q$dBb$F#IH`Ic6|dW*?3@m7oU6sOUz5_fgZ$5w*)Vc z>e@5beKlq3mt_t<*ozgwdk9PL=rGS1moLQ9) z(Hl(&G&`Q(+UxMEShb4^76q)}l&q0e=X(-@YtN>3 zaEw{_7OUcWn%Q6q9%-7)Q{$=tk=NeiH!;Dt2H)6}_q;l}2@qAqRB4qOEuT1nN|dYZ zC()Ofw1BTQGi@51fBU8Z;vgsfjSq&;h5Afp$0cN@+D7|LU^|JS1-xW)?yTs!p-Z@C zmF$^kY?9u=FP94UV^LYSO9``-n;`jU{^aVwn0w z)hRE5RKN1eMC7pzL`=q4uKV-0%s@{P_7Ix(9q*sy%9-smY^2P)6$Cn^07QYmsa{M{ z160??39ycwx$0wdd_WSL0`!3Yo1m}PY3a)$YQ>wm^T{d^WTe||YDv+ge`1Qs+sea2 zH(5@dEDWYAob@V~%YR+E_)R05;OuD2HyI0SioZ&xI>0?&>1alZpW!u=LwQn?$B>t% zHNe=#C?}S*h9$0q``eCCJxzl-)GjCDJg}^&?B`^LM%s{<+I0xVR zpNNTu4B$qi3xkdN;*J0U=5JjUvnrg-=zcNp5vmTN+XxU+*0`7*;2^km#7OqH9-i zR}pC~D2V*S-?ud$BtPi+&3tNtEK>oNzJHPr=%$ayoHbP%^<#uY*8G0+_s|fQKh)>S zjh%M02auaIuZy!R7=B_SvCi^+IMA$*7wC8Yh_Rs0p5EU9gl&y-U$#u!CD=NvzJ_ zGZVKIw+OIZXgJ$pt|}50$)<}k=?k+jNcg=vDJ32U5i`h*PzpK4vt^*)*P`Lrt{RIJ z<=$8LyHI8YmWBS1J-5nAgf&EP9=+ui{Q-sO;HF&|4?vRslYqTgs&n}Eeqma zv63c4y3qeox_qG@gCxx8#iSS>3##eM304IJ(MNIPD_+&JUv>1qOvL4|3uPTG9xat` zKQuU3e=!O9=9YL%VQhNdxHcyaflvQJW$F?(#os*Wm(hi=**!1b-(6~e_PRYgUO7G4 z2NH^7T1R#pLz|!Rn_uQiG~#r|UBPW*_)EK|B@fzT&wo@~Z|j2^j$KGhHw5mK#}wMZ zQ-_avA_we6?Dcrpc=iQ=^vrQt`v$j2x;i4??usmnG%5^Z__ zDh@U3DF7=B);g=8KcoK8kN>J%#r-?gzA(6NHB-Oue6Cbjy77Y%$GdAPn{p4V&M~qs z-_r2#x!}K#WPDDCDNSO(rsl(UXZ{_#+PB-Rv8*30Rht8z>31^d*L&B`WUtwim@r+! z_i)n=G@J?6bW`)@mqO<~TSYKII0E}XyYOOTI77~2)z<440gVqnRvBJJP7uAn3Z`+` z@;>QSUAX%h@yB&K*XQ$cetNNy`vRJ#F}$ifQx1q~NNVrphgsONNB{reIY92Z5Pj3w zzj1+PzK`{>rI|Z|5g6ze9uqw5Q4PD!mr!hFUpT}vWi5UMj=vbeD^ZXt3h*KvQaG$t z`b_UA7eeqeoZpc(OEHyhs@zOlnk(w2lGAMpvNe0W*%#TcD4CwOGQ00;KfE|rSIvq+ z<&ZvI9M2Ju?wP)sHW9U55=U2<>iI(?onD`=@UbEtQ5v5u!aRs7jL&uBwGw68&sMKz z8a*E2b)x4I)^OgQY_44##*SDw7L)qb^C#ICp1ZnWWEAuJrQ%+w*r4)IFRLmmvH>@; zf-a=&GPk>?vO(-Dg>T#91{0tizCvq;mt;KvhD4)?f!2P6{J=*P&jnn5f#d#|!&r6Gli!;86!c!GH&3f3`{P6XNH_G74 z3OW1hr>w8vx5+B270dFygC5alZ3wCBPiQ7CVyVyLP+{i|{`fA_{5IX21FOi;>+&!h ziV9Qomy!!^4GLJI=uTj{fRP%LyOjA9WOy(wZ1(K$te?<_ZxW*Jx^6(6sRKdG{cR{R z&vs!=&*#~#ykUJes=oQGboI5KYkJ9^ejLrB^J28x4259ld`I%`rFiKWgPLYd#lgpR*i1kDx>r2KN(ftgSO4jb_1EQ>T5iR{= zPA*-VjF(t%6_4)+)?qVe9C_n^8!@AqBRRXDug%^?AL=b<@wr*tV1w!l1TL2j36*%c z#!c|J>6QZ~JE6H<4_ErEIK9#(zL$RE7foi>j2|s|1kZ+rUx9v6OX~^v6Pl@DPjDKY z*sw+6vU&K2cTck1t|y_pb6`hw>1B}9t4UyS=R3&9`fuTPvmYQ1^$KsFdpBHQ}WuLRtH8^FTuew1Q}ig&nIZpj{;M;)>F`=K(^K z48~`+K}l;P56I$TkJnC~q##K5qJB(r%^?mFcI3OzO-`rQ0-sWCyxGiqiH4q2R?xY5 zO#H>(PrMs9MGr6i#w^x4S<7LYb)~TPuO~eLwda3GimHu(X5K5h_7CwDjb{OY<=0M3 zH>&=~Tu=g)%KV9fGc~Ut@mwB!o;lvq^SXX-c*p$4&67-55={ z<{!+FrpAbi#{#Y=x1F}(fkyUJ>8J_ublAlHZGmeN8WCHJ^P^48y;SWRnM*;nt5=)u z2e+rI?5R}fg+CR?7IgZPnWkU01U!M;KyDo|Y6M%9_lblYH*mQ@I=bRC0D(4c@iku; zd2PIQ)p)FEIsjowOAzv&91r(6-QF%w9p80aYEAjJ)b3ekb6lM0R{qag2v7wwHiV6o zR7HA`4HSyLsub)KN!Z6fDA=3=fwo24WQRvA5Of-C%cez+`$>O*2a6#B%`A==w!|=i z2Af-I_}{(}>FHrHqwnX5)TCR;-hQSRV_onEzUp<{tzXv%rJPy!{uf9)C3vVrDOz;8lLL!ik1FMh`tKwP9$R;v^Vg5GFPTRwzNs8}S z!F%VvK^t`I1Y-BA_@r+Tk`2?ED_kfutvi@K?o5fMB!#PDcHfXlIZBfGKx4c`}qqRFUC@+oawdyoF=H zN<4YoY~+u@|=RqeTj z6uRx%qBem3YOT5fQ3a?v=A+2}v#bPYFYe+Wr_m&xU2Eo{4Hid}ql>tNq79RoQZ51u z=dBdW=YkW}P&&~)3B`lHYR1%i``E6RWdx%W)^aF8#bL7}tc~gW4<*y>m^WGl5Raw>Y#pzq&TORTVc(u zZy4kO4-_OQ_H~^$T9!9wO6_2jmeWvV8udBTknFVI8-P>!eu zcOR28LWR{kjq5^aaxtX7-(9~1t*YMy2M~p7UAAoRBB+ejgn#KqQD0EFx*xM0S4+^NKubyVjKmbo0AYP5beFBNn&g4}lzSuAv8V*MXJp%-}mRUx*iRCz(rd*P3X@V{ctHPh_Vu*eCx~I!- zu*I^suErWlr#93M3!6C|^dyscKuqL{^#r*a)Uny)c&Qn%sy^u}2IvXR)^XppIZ>4? zZHlz(;x~&+GDh-rwuKh*xgxaL0GinNYi|#DL`ku^S#O! zXdS<`Rokzz=QIk!cTuN(`U={czS8~&GGl(|?H4f?CGB&G)GZd)h3W$)D;t+JVWP-v z>ij>DnOV)q<>r5ulK<^a894uhHbuzxz)>%u3m}=IX2%m7XvIlz+xd|>{?PY1dvc~w z`cQ7;E~A2>8oQ#a-Uzx>J8K)q^Va2^y zH&wfq`x7Z%YtVfMfV0!#hamGwjK(q(nd@AF46lXfl+Nn(m%f{v2JU6Ov zvV02+{XaCyF6D_u+QIov`$W2UyU-M!nXfTm))M@?^BaTiLH_sFC#PGe-*)bWs=H(wGOk4# zWryQRjkh1h?8jMSW`?JDEP%-M4|m9<-dDt;3~}Cs*2x9J3U%sm^7?mrW=h zYMf%J%_d{Dn&WrUlK@M);<8-B59?bJ$Z?+{3&95jtKM0Q=_aKKIvD9GNYQAElq`V@@O%H}~HlPQeZv40?n z^R_Wl>Z*9J$*phRd9db8Y9f+zUBmK%c_lllDT`7?;ph9lM+*zCh+}j4^O}2Ns>i!u z$sCX|?rTkvCBX(Pn2HA<3aLu?GCcJwUrvV7u~QFeyvcv#dB7G%;-Ns^MNdfi`n;BW z2ppQwD3|$Sp5?=Jn!=fZ2?QyaB3SgQY<@K2_r2$15{Y7y)kPWi*%s7IQ77vGbuR=O zEz>Tb zGL93yT&YSg+Em3_3F+NG^+62$R&@M__OGRKs;BcT1n3G^Ev7zFih?g%oO1>;cTPzZ z)lF6>?$+4S-ed>+f5pyyn~(7ri{0ARkagvV4J?hxa^t&*cfl3s`s1#Pi^B=LsVe2o z-3+;WtyJzOvu0%&F?adhVgCx#dFm#Br3T2e?VtZLx>@=;qrqvBD4>|p)HrOS375nL zk5$=&|1i5<+1U6s&+ic9fNLR04euTty%g_g`Lnwz`(v7_9UH?RP@!XnK~lXrHjnHR zqMqnI5GO!J+wUVKF&6~wS0p)=HCFT)ks`ACT!scRzMsD$`h7L{*1H`qUVZ!Wu&=#E)cg=5G`JUtI-Ue5f~pj}3z8CcTmJ%=;_H z0zEhV>#mjZsAOW_T>y4`VNw7pSWp%K{%Y^?e@w|Zx>qgk!g<wn#|@87Rr)S zPlm2rjD?g~&b*@0BXkrtt`*cAXvkky5zy8tR35S{mFpCiO0J z{&-Er*A@Mj#W*&9j!5+4Xw@mj?!TrjsIXo5(Ig6PXu3$w=$YwelnDIwT{_^-SA`gM zsNu`!-y8xKpJ-Nx>vhco?F~?$#zu_JG2X43bI^w9)saeiSwBZjDXKw-o>e-STl-yC zsoFRUCg@nXPCQU_t2!evgOY^fdR&wenD*{J8~Uz{?wMSp%eQ|k0lt7c2XOR3ea>Bb z0a2hSRbtb_Y~-}&*RX3?{|@6a-7~bz;U)9bOis8_CYxOx7)JHLwt}yt3oS(l92wNc-oiBM?Ws(1+?Vez7!|p`V^|%7xh}6VpzSyH+h!R3mdj&>EbX72N3PtLQlsCp zY-B^ve}h`ZnsTu-g2*HLXMmXYQ2Un-g5-`|prStx7y%Gnp;$UhlRWa+oWk98R6ym@ ziZ3(C#L&#s$leN6Ac$ts`GE<(3B?9aXLg8!DQ&&)}Gohr{`UF=pN zhxm7!%Mb2_yd<&_8gB_?ru{4{yF~QD}ptR`M2ZN$uJ%ixusoUx4-DB^`*Kzx0uLTK9-E_P4Q-2x# z(%>ZIyx7uppQ#7sIIVgYyE$~JYUaLeTfS}S1TD)DZzU@bYvtX^pL#MifdyV}v|Of$ zb7}t=1FF3Vovb~MeKsK(u@m2=Ce0aQLT3sF%i^uE?Q zHgZw=k863r^aKry&g5Ze!TUcl6n}97qzYa{tyy$t9rdqB_KHhf;44+)qE4V=Cwr%E zef$ni2xRK~8jOPHSmR2el@a*?I@ICgQ<(jn>|OY?p>;Mi{jicbf}ZIBL}2v92!C5W+E+TE zdjB`Q?kw2DL+mWgb&+%hpX^`zEDZtbfPWPgr4agOJqWM12=e+RLS*LbX+V_?kIfPH?-g~h?yPip@2 z?o)g;*Ti+0NCcFJxUf+gjQ5c$j+AoUOIFIH|5!WpDd6Ahz5UYx8KV0 z-G9u{)KR~9UyB@G)SR};3sn8Ofs0gNuS=Ixo5;J`cCyS$QVdPI`F7lH`0!f$W6Vu0 zruQw5#S&~3&B`xAwK73r+$Iq6@cn!0DGLk)6s%tsRVkha{Gg=Ze2I6%m!S4r90S`! zC2 zo$13Xhbi~GNRJAMxM=6KP5`6Nv{s=xLVEw~wn;1weNRKWLY2($<>0DraG6N&tNf4O zf9A7&e_bd9i7EE8M1EiBDf_8b2622DxyP!Z0!<+pF8dMvokhpwasJ2WNVZ4XnXzM6 znO-xQG71creTN<9BJ@wORY_9)Zu&5xxxcU1WLd>B2Fe&(m0OtIQvn9-&W&o?Yd7M~ zJ^0D7Jzsw&tA9>f7Tyv-y;!Kcsi%UND~$W17=#)x>@vmFllxI+)IBk7>hhls2bCfb z+%M(#3?ic5heoU5#8Yu@w)zq_FP-c@pb;9AT-B!$I{Bn#Oe3O3h5MP9&isoHZX$jo z^InwzB#T}pB_U|k?7AhJ&5iu_Xe>XOs6n;${#jL3?VjbiejPXB`?hIqux?%Hp3`aD z+^y8w;ruUL5^P3`?F6rPm8E#wu?0bGWJ*x5&=}H{R|GS*2L&?!BJ}h71I1C$tT$yq zq}%$SoV>7XrtXlmJD(##j&eNKHGX7xE$nXA`rXgcskrIB*EsIHRs>ASDM5J;xyG#6 zBb-a#4c?*&wUObMe8-EpNVx1|P_I`Xz8v$oqI$7OO7`%Z{LnN#zP#0y=-X!}?LnzO z=Ndhj9$Qd*LoS&!cX#fcyj^y;BqZuc=+_-`A0csZYM*f7wq-Kdc|I6=ag!@FAs`zC zGMX58dMou<`2MZLkP*?Y49jblUemm+?N?0NDN9pRx43!&XER0B^$;V~=M(*nQ`6tF zkafU-8X0=Zt1kZ0LwyF~Rh>HPMxa;kZ+m3@MdU|eU*9Oo4uHhPG=@$0^KNgyWB)x+G_H&Yrq<}pmE`oj@>PtL zvfFS;^Zqu0BTdm3kg57>F+K~gdDWj<`_h*AxpgM$rVQ95YBw%_h3waC9=U)gBN;KR zi^973g9jVfG{XE?D_rbdKP}{tLe&h)KF=gEXyNPOBO#~};)tJO=yY68|7YT+C^h1r z!%3)zp^h&8DqhWU`9_(Y-?TFm_RO=%-%tVOu8(Oic}{b!w?jEGCF7o1vv-El2DWB) zK2XGEi8YR_z;EgDku&N&DZMLddaE;_;Y}>*2USuN<#U|33EiKh`PB!C=j^js&FHT; zf!+_UdPS+1a1IJk^qs}9se&=;$LKkrj)x^0M68K9lZAamaYKLQ8IUa;_q?ejPiP_R zh;-x3!>Id*1R;W!AZWh5!vR<5q->B1{^dQoxRJ0FTO}7(W`IoZid%Tiw@FkRpG%u1 zifGHzAGjI{Vf}3_y+veqm_VYdpvzXb`)?klDPXykH!KTvmj5*mHGY+sh~@OdZYhSM zBE;ZsjD-qD>uWWD`&*%7>@?eDA_;Z4!Fc$v`F`tb^(_b_*$mFwk_K?m&**T3<`6;s zKhV=q+NHV;2k;SPhxu7#^-r?t?EDD?OW2zg{(+=RGPh$7_LgrL1F0%s6DJT(wT~TU zNWAdl>g;?aSm`)ZRX+!sMY8TVu36rZ(H>xyK6xyz7i&y@yWS|dYahx9<9d+h)Gmo3pA8@y(g ziN@IMHYFm1kUevgo`@Uqyk=Ti`v^h%<(Kpc52z zf&R?LRu66~^gm|ramK&v)3elN{G(>~F3mIIc)pDb z$SioD`ap?FC#;*P=k%vrhz7F34~v*{XU8U-Sz>=X;%CYjXK_sOqyZ-bQ^fg-m*(=q zQ8b}|-33lBN!-_Wh5ms`5{XoA;rE1Zyq);yvv=G6#-%6tt4k`;tHe$G3Sdm}-uAeZ zCSWvp}3^O2zfXanqW!U<$ltS(|RDTE1?MBSFZ1=ZrxSZReo zjd(MR?XZbvg4jRwR?F^^vF*X+6B@z$PoN8OH(90_=ZY5yKO z$2HFJAZV^Q&@5u1J6#WAsYxR`jZ4MFNv3a5GW~=_~9=?%~T_+-qIF$Fr|@feCF>O-I}JhB$a}_qpD@pB1=8D@v*JZgDv)wWc5M89n=(4~qiG{)8uc&-G;=%IGQ{Ii#we zeE1=NX=KbTGf+ItrWTzzVY@mPU{Lt5k?9vazTq6i1*q9~yb45wrme^?(_8$J#LE@2%DvM0d&3G>wt^HQgs)9(b#UPeE z#2ajW`BaN6w;fOk^eS|UK9}dLzgk*}1?(XFMFwyN*BZA}ip|EVQ`1G$({5C*?ZP5u zl8`7#SI8+Lo<#`uc|KuDZ-{+v#G}QC8#SxDb+ilqFf%gzAsBnt7{$;yRV-(5Eb}B= z(fvYx-Ndy_$NaOcUbn@l`eRWrU~`o5R83qk!5UNa-^DS1{32>~D_aUvXNobES=Ab` zHjfwppCh0i{=m<8cQGO0*-cX#%3|J0-7P&rw4r1>iP zo{L6O!@V~2PR0EkvEj^jopvc-R+yremMUq!$B>>1GsZNp4ez~IZJz_C`5IvWQ=@Xm zj2_igT8}n9WMp{aeT~R58A-zKny{#BXg!Sd1IBDQCx+rhdgxPkh+Ti_TGe_8>$Rww z(TGQ=V5T$|oiDTxJ4`k=-vgQe&P}l#i73yOcb6Bbp7vo$itdc%eL{X+8qN^fCCt6E z!%?iXPj-v#E;J%1dEVdmK3r2BJJ>Du(V zJp`Ax$PI#r#lf#rcvZy^9Ix?CU(8l#Kk6dn(rv=(#lwJQ#S-5eZ#5508MAk~=i6ZT zI!bp>=m3NH#4;H>T(x(<2BFt9Qr4F&J<*7wqN zt2viiK9bmNy}Wb7x=8QE7a&*{#`0{kI2P9L=Ab5uABkMBTF;X|b&(1RTm71PJ#<(; z4|rFKjF2q3`Loj&CYao)Y129fB%Vs@)jc_4XHsu%LLjH8rzvuAkJLLIy(7SU*I~D# zMxE4LB0Wt9Z?YgI{cf;-mP1T8mT7_uP6FJ<-93YQM>YI`Ui=tq;_Dv|=#Qm^7S_Zz zik=+GiK?GXX-9*;t0dQb(=JX?^PmEKv(^uvki1Ozsjd*BdaBNqb(uyzqClH9c71*) zZ+@F~;@*>q$Rn4y0!>9-jSA|Ih@0_lUo?6Jx5`$9Hp(Vl4QS5Hz8ojq1OxVTw7pj3 z@1*AE#MA4M5e7$xb0-{PnhQLtLB^=Ar{aKtRO4gO&KDofWP;oEYa`6pTG?9xCOCTG zq~Xqo=;?KL1-@dNj^VfW9>EkviwO0a?TA+fuZtQiad8fkMG}ZfV;3<&$QX(`CkD(A zx?WcA9UUZTV35eey6Sw+nU~HxHy~F-fP?*yzWnO90SR}bhchIE_AR&X;~)o zQS0U?Nq!kBg6`XjFiJOu=aS7EFg{5y{i09=42NK6MojT*r&yIQn%CC%+sq31@|vyS zVO-qxCnndjVO!7c&|UBp@OT)FQS=q-?)k6vO4_3Gf_EH---CeXK^Pcn?z>IhqQ4;` zM*mToXUbSFQKRTlYCGYkdeUf+K@`^)mi@vYkrr0;}fJi*8lBatS+e38YR6~dl+ z{%C&%Q@y=8HSA2&0Z*fA=VVpL!DIMPj9`Hh2!nv*2gl}u00n%Ue5Ci7Yp>qYik#~A zGaQUj^~%8IU)y90+^BF_;t}idg-whp4>SwbCL|dI6KWTnFxU0p?j%P~P)RkBlK1lBDNLr%D_MxI ziB%1QFagwcl)AhWalo}+U2+)7ZGV^gx6?!u#S0Lo68j^oce@fZn>%L3uiDF^(L-1t*!7wSlFj;LIzv8w80BS_M&d)% z$)7;fzaMF(DGKLh3;EDIMTW^wXTHk0Cg(F1nR*223@M)>+ZUMIZ`uebqoV8W$+Rj2 zChFOAExLR98>%V~^rny-ByIFh{`9pIZ>yP?PdDm;nf|Ne_0D=x2D4k-hWodFo59gf zM5vFZ%Vt|3ji_#5cAzcSvnL*6<2gaIk0+05lI9RNEHpTChzXnrw;9pn`8GuEFq6$S zcdS|zs8Bg61@TPmx5bqru|sjbb_04k%@^J50Hr$GX8Rtqz?rO!BMUWa_?G_`!x|!0 zzq)@=1dlVwCdeU31BZ(UR+)Bt_pgl@RU)*R75#{?%7BgdW`XbyV+(n+OPtns@=smC za#n`DE3x{dzSL%Ki22Z<*^bU^;KCalcdm88 z2l{fBv$3H2A{~2HO+<73QcNqC=ao2i9ulsA4w@_9ja|rj0H^BU} zgiFD^5Wv>>`HQKS7Fhe8K#R!d^{v8!W^X1iBK6)S~fr9(tcZ=Jfy#`EAM^2+_}Xh%w~2dBwhT2&|m z!<7gDCRNB)5#Yp~fOs=*b=0}MuRO?2-ZRw~NS20HuObPW<1plimv28kYMK^MZ7YoU zK6)tx1}QD`y-K+kZol?aosCVw`O;{VwCXVqHNWLc`g3G8YP?7{G&qspNPp+%1|j^b z)96axD!exznec=b(oOaLK?mqo?R@C@)g9PnXYBpHYI3ORTDBBWp*zX{ROohY$7`E$ z8Llp1fXI1H=pa4u?lJ=~R$dd0cF`+;=Qr>Dtnjq;&~a`D5UG7;CYYrEJaUD8rGIDk zy1mrn>c`t8fe6Wu;g4|bmqxPRWQ)6&-6g$R4z-_paG zZQHdzof{%AKo1|^-(||{ z?nBB;F|>$Sxn6p{Bh`$$@zRPst2ayv+8%^4u(5B zWRdzjD&INKUx?#%K<5>2S?i@JwC*X;@ zY0)}gYB}hezWwG;D}ME5je?ambli_QMPl{;A?hrc>gu8`3j~6@dvFLA2=4Cg?(UEv z7k7fYy9IZ565QQgZg6++^S$m@{Rf~5PMx#Y+H;JVsJJUR5-Xo;V4r7c>oDuo7Df1> zvA&>COqd!F?f@+2uC1&$w6e~o9T_7wRKp#=knocD`*_jsjfZ0?6CO}74GkGX>b*Sp z<#ihIT&=IQSl?z{6%33t3G6jZG;BOk2W+3$#G$Qdf+u&8#+BCq8>& z{z>((_1+jH*CwRzEn4e8oi>&JSD&MsljXN{S1)2W3}xLZ*;*6(^3wfkA&^p|UvpmO zdJ2z`g1i4P^mEi2|*CEZK3li~Y zA)uoV%{#k0X#1c5=+7QBk^NW#Ok^TeUwHUmT=_BZNlDE5Hflz z<4+I^lX`in`H;HxtWoDY_d~WjI_RmM=e+r;=;-*O3zD&7{Wx<0=X~YM;Vd2NHCGHV zVt=>Kg446dC~dFnnF$mTPaGjEN^?JWjBuf@Q^Z3oxP0t5v%-&(GtYZAX^Abj5wDf-!EmcMIt=k5ko|)@^Cg ze_!^*>(6c}DBz2ZXD0i&*Y{7kr56aSXooX}pNg`AGJsbTeebROM8+edv54JB7K|w- zWp6;SY_h|}uc-gn{7wrsgI}^ir@V9F6PYXx8jNx{{!J{V5_Z_z_f7jHsf>|7I^4=k zJ@|7fPE^`iAk!jGI$vgYHe43mlP%LBTdQ+{0lToy-BBI;QtfP~T|Cx+oM_z;A`Hd7 zKe@vAdQE%iMz7^L%MJFCa)Iv5#4g+{cD8WTBf;q+)B~koeltyp zCmjUIM&wADStGZfXsKJwi=R(#DG->=6pArZbt&#c3m}-e;)SeV_{5YL*v5!BdPkH5 zBXpeyXjPln_(UNwzEmt*c^BU8N&l#If6;I?M6cBqvh5nJ!Ti>vd)}rQ1bx{;P+hI> z<_|=$y*bLz{+H4fRQ@r01uL_)D@%x z$#@6eFkw$`d;Yyi0Z==FzP^W@!~DR}OxIH5 z5={eT@T}2*gKURmYfcV7)xEC08*X0V+-SECi^j1|JWtcL!yDyYEc&$T<-=ChC#0Z) zpM9jmvbz_@vYf~8%DFXM(V9QsQkh7xd%>}vUPgER9+|laBRc8xB;vi?r(pH6<1N7? ziPPMRFX5ie>>r0xBls6$LRc+NO%ZFB&t01MoJ4gDDpOIxMdkwQ;TaMYUOvA*f zxRC^50hEFGft3uMU&%QSWLfZ|y9@XVFHFraN)t@i5v6%h>PYA^>%IW?uks6h8J;$#JdS!qSqSxs7PE(f=4%q#uu)g)a1mFlQG#Tr*AUt$PgbtcF&}X4 zb_2_ll3f!de=RToBb4g(#QRr4O3~d-y_<52JSBvzOWsD519QICcmspo2@d#5hR#SA z)cBdexp7@0EcqbFP>raH7If?EO&^Qdk$nD7Ba30mB?lM4RFd1qo_dF#tBTC!G&UJy zQee3QwA6?gQC(WNbV&A3U(QOIl{``!qBUk+aB+X{T5YsAL~-eqkLxQ46?cJVSgBLj zYx5O6UsZwO9hb@A?-L@f^YJ)$@{(WX>pEz3sv|l5so{WmyOH^+?S|{eVnanOAt8c^4a$~`Xmlx@B{|}UsTE)V0!A0zJ~?Y_!gP1+rg|a+nf?6r9KA!; zDkT^2w}FT0*JHX7Pqlg?l*aj^6xo=#MQICDDZ=23zbw-KpJWXZNw0B{OJ6w*G_scik zgD>7}&K#lR@5p_AT6r7{xM%DNjAyipDe(TQPZZ`QEW`IYh-$PNcwkwqhEfk@Eao^| z^|2I*4n@JiD0tJl{iP?Zu6=igH+un#iL_7$;?+XqiDTLX=2#*_JeUk%9w^89^`m!D zP~up=CtxnVWXR*uXPWe>Jyvog;Coy%$Z@_>7dQE<`X3t7uFwn1p95AOiyr4I)TJ6# zJT?pE#ic4>o5SUMb#K8g3aHOMza*lM3p5tWX_6G7&z!+Ar5aR>0_0 zp`%UljWye?20Ox7v7`|G@m+ybUBJi$)nqDRyHux1z9zf~Rruh?|G0 z^?E^@R{urI3B#eGV zn~;M)Vi9X?*KqCzzit^V$cBwK*iGG69di8WzD}XGHT6-;K*f=p8Pl5qS$_9MYLDk& zJ*qF=3$AknpgzD`1pJ#cY79z?f1(PjZL-r4vY3YuTTXI!*LzXx4mGRy`1aO>IKS6F(H5yYYd-)R#!HJlE@6ZSztq z0B2T7yg6FYcW|aY2XpzlZx>$C#cY<`nyn}=?vuQi1 z&g=>eK9kIs%Z0beCFLJK;jrs1XFsXUFp|B_*X1xBSiPfN_Nnw7A*TyS!IT`U09Kp- zO-uiy=doXJeIT)l4XgJeyLnAJ_EdW6Qg*s@s5Ib!(^7UeOm7IsN{0{O)yal;6lXdT@BIiIRC7baXwKf&JCHuVVBa8 zgPPXjpg$O%hzX;o{`YB4y6R1L>CNd~&8Bio1?D4jStlSvtV)uuHaW!+tJys_4*QVh zJ%${L(X$cSDw$CS51U?7_)j2AJeRY{>(vk`m-~4Zl-f`%X-}j=7FWK|(oSC(_OedB z8T?l`DSFLLxa;oA?rS@`Jm56e6P?6)(m>{6af(X&-HGRQ^CFV<)9?J5LvE?(BM7yM zEi_jcHuVYv;)M!rwFU{~c?=~xl{*`DEOpFsvg>wr`uyn%QZn_Dnd7R(&_2uUsiu>p z2b)O$>Z(l6GEQ{dD!m|^px?BPDXTQgqX6^qpW6$CPJxMd_62x{Ih?LwQYZc>)dkt@ z*OBG)cs-zqkDpv0^0-yByI-K(kkdH9soP&N9?Wi?m%2pWTx82QFe2+5G%(Fx?S(l5 zjwp-D6b>vkti^r8D4CQ?AJqXI11J=}Kb6qQ!8rfGi4q~h8 z7UN!)nAhD-{cde-z;oq7zoWGhZ^P|Bvj@h>T8Ad!OEY$h#6hrw5sZh_tvAz^f$k6!^y}`0J3E9ol%UsA3VqX?PaP&*;NUZ z(h5Hq%f3yTM~K=4xz!tj7*Z!HGpS*vqg1H?PbQTPR`BS1z+%1m7~oAvo9&fJgl`^Z zU(WbujS+!09!uUtC@zVVYP;^b(JD4ORr+T2b$sA0L0j>(mkyFGJf~`XqZQQ=58*ze z^j^03(HpDYdlobKgi|7V)m5oWfqx#29C!^?6N;xIE|fgGKa#(9d2ChIPoi0C% zXZ_;VwtWKr+{Jua=$sk#SqHjear@y~Jyctrpda&3;|=2p+KtY8)UF$MCqd{K7zNd3 z;7**L_@N(kmbwhwYeoT|^*O_RSit%DylNXdBm@NIlRG)|3V*l!KKM652l{GdDlnj% zf1*#%Aga5rbZ^xPDK9%H4=*TwW=Lazth4L6C z)VwMKLot8MngKL6!Uqb2oJULo*oi?-!oSmIw|4ZWVe`7D1MW)t{u&F<(Me$yHvG(# zE(0fvk{Xa!NZ>y&qHi(TfpKd7nTDC@Qu6|6;j1v^-mG-86lecfkerUa1Bd<-UG4p6 ztC%&i4wIXv*QoUG=@Aroy%ZhK;#Q@8yHmz|yFXh?hRyf;cz@haRJ`m%6{M{lfY)6z z&K=g4z`uc3K*VMGPyI1nXDXSzWE3Hm$KvPSqfX{MhvM#=%PTb`31M)n@H=kVNAE}?&a%rJ zNsceB{QOjxXXDSD@XwQPM|w!v^q-fqd6%4b_vL~^)&E3CT00%I`&UT`>h;7yR&Xrz z(iaL!);9-8tx``1xzl^HDsC(qLRPI$^@OpC=ZbVbUSUtmBv6L8!bRf^7XOp*Om=lMAx<8e3^!Lh)1bP8$!88S%eO| zO`e-P6RA$WceKqyQYQj3V?Gc(>u}ltoHT*6T0tWO~CkmJQ)0LSDP3F^$ zjwSG2{bY;cetXuz&GOM)Ng)7yM_7!fL3$>72!vn9Q%I6)R_oDfRO0!*KUtoxG)QL4 za>s(%;X_ALnPUM%qojV2f4~7|kvYzGp8#6cr5+=V-^~PP@@v~cj;br>>;7>3Cw!Pv zHmhj}WI_(HGL?aN9#?AbYir~6m~rwH#vF(e3|i%aqt>C{T&prRP&d@Oy_ zAlkCHe-xOFB&0Ftoy0+ulNR;pNvt#Y=zR2J;xRsLJ>NI=YFL#XH!Q|Kby%5fNXF!< z3`XYAV+16ROc`{R=dkjRJeA+K$tLNV&s@W)m;Ac=7d&#vd0?K!{fu?4CtCoqWVi$G zyd&lyXYfcKaeo~4$XL|^v0woLZ|qW@K^Z`yV7SAHY^Dl|g)|X#YRvvcJKZo&5tk;l4ufDP?b!(v~F=|7BO{C4iITcEcXb2ph z=yXR53C~z7HGAP=El~)$O=DJS1kX*Yit3#gSY~lOxmGh%tEWs~Dx?!bJw7&4FBb`! z^9(lHj|X77@N+W3xuD-H?+=?}9(#8O%DO@t*`)B^F_{Ut6h|y;%;xfvLnh)fz2HAe0M@GlqxwXo6JN! zdS%}#lYDtxQS;Ri>!lAYZIJ21?X(Rc@cw8@wN-B(2?g7JVTbtVOThNaMNiGD{Sq?2 z8=yAf(`j+2O5u6(I!(O!CzXu}<6#Gc!)%M~g%dt}9-W$^@cu!iy(04kFfL9Mi%O&% z%#nvH7E+hY%!4|z6qk?`4y7kc#(EsKgsOJ7`YsY7*x(N%LTpbcUiEOmE9BelK2+?@ zVaY?1i8>=@<9L#V=hqI!HhZy^8#D#uYq?~S7Pc#w1_3zIUQG(a{9aZUB=a6mjAkc9 zw23ta&5e-3z^8`r}vxFoL|d8NZSmWOc--at2u!7 zW^v?}VA}Xaa-&&bFilkSTuNiJP*w7mx6$gI$HH#`*%V4Af91!_4zbOWg-2NV;p@{2 z`9(y$sBVGuo?r0qH4q0zURG zfw-f0u5b#CS$R>w8S56IE^GS?cw`W6i)4}!rUYIXt`DYSE43TGLb&Y@8(VMTL$aPZ z?M0AQ8%X`q@9>iKV>UipUBKh>_+~Q(9mn#+VxLJxOuX5Fp*Km0(SEh@`c|J9_)Mz5 z84<$g!CC$6VOx45x86t_T6PunX~+Wb+2eJpq0_`ycgL<`jseGHfl7tM&%*GSCIeCU z%Tu0*E3Ce#F7l{;N8fa+UC14|OnyH@%kC}~#^)Cb3Vf8eHI_8`SE{v6fct+vwz}}Z zS}=id%%AUtUsDRPFZ10ajY(exh@;+bQj8vZ-=z{5Rz5*8Rtatr=DHvHhYK=_J;wyh zWbW>L<;TiXf9(#y@l*6{0vs5@0zFj{H;y>F6GuH{E3o`ZncJl*>fX;+CwR*TpMIV_ zem1a@$Wv$h8lwUJx^M|vbD!xs@H$-Gu?J1tMr9<^=g;3bevuxk8(wNAJzl7xK(%Jh zw`+5eqA>M0Wzjs>qt$I^BVecD(L?F6e*|7$Pq9pgAB08~T; zA4^3YfkvC&6GtVa@n}xnWW3KjyP4-qvEI0J?8q`(ivITkJw4%lB`ybGI#VggvZ_Tw zakq|p1>(yz+gfKUE(_)f_f|7XGsE#e4So=4IJyvMITCt3-Hyk~ETKMX_yit=$7I>z zx3a<&zuf-O^keG-t8!naLNJ0i+A~B})jn61_#uS)NzL;}fm#w;@IzUHeizOR*!Ob3COdK{%BpJ~-myUcU zTb!v4VhwP9Imvfx`bztDS|PP=O@z>R7Ww(khCWXn_{5ibQT|97ADvq-m8LMW6U4IC zlMRb~vG9OmjNyN`S7dPBA&MPIjT#xEu~xsP*7PAm!`J{c`~LwP5em*YR!8vqiQIHA z30^!JiEmtq<9qM$+`?Ei`b_c|dd~O>VkSxu(3ww{xZpDAg8?_>Mf8Tr7x zo1+VO1*7|+7gDZ5Q_-i|GOY2Sr9Yg7Ly^P|6=jgb^T8wQOb@E62hiQc%3xX*gQ;yG zm2TCjtiL1BLH~SnG@-X!Q-*9|Dscw2?Cz|tR6aU`RMkk9F|Tx^C61dRrDzZS`J7?$ zCG#Hmd}73i<#l~Va(%I&sZ3ttEm>?(7(J>Oa_!dypTF~wtK~? z1`<~oR0ZepQBdP;x%JAbh*rgJkX1u7g#&eiz}o9B16w7eH`w5ZkK^1R5#LWO^cx_y zLCQ6Z#-Opzt$6(gi@NuVFUm8O)Fm;|!za7i08GGKoFz(v?c{P1cVhfhmn z?qYs+WW1r`Y?ID0OBovWBvb;<5-0c6G$mQ~m;V-KU2cF==dkexRX<)T`X{+bxV_ar z3(&9oFLsu2_ZJnFe=)KIaW3tPv4w(WLurcQO|>E zYBv=+Q;1;iv4P?mQgYES<6j?7V*7qiK57iwNWQ3-i)3BtxXk*0*R>nsN^FS16DGWk zOH`8>FSM^)5IV<&v$-gP9dmx-L!=*K9V@cxX<_ca-^hDDoXi~9(Xa{mD|W5aD|As8 zq%Fo7Fy89?X!;{4{vxz*#f#Q-vefruN}%N4sD8rR__xRa0)k`1Rr;O$u` z{~`(FiKFkw6ci>9)#*oM?#w&Y1W3mu#v2Lm013 z;3UK24fCU$XFO8p3FLxQ2W`Jm26hW@4&HeC*c(JH%^#dx!s<*m*H0wXp?sgj;r{qX zeOuG>PJqv9rj+^byZICUJ*B<14;%)luN6)ZeJCPgMg4buig?-k!90?I8Y4wyS5sprww=E_pBd{MnIyN>XAe z)Wfs!oGK>ev(5pto=_M^ReYBSa?zR987B~yaP(A)#o^CDmY5I$DCev9sI70FPZny# z_w0`W2Y?SCU#x+%vIX&EK@yoPu*`--13#879z-h#O_F(B2lYRwRsY(mk@nUtc zKTg*u(UvRNquWQTPFS_b`lQDHZm(VPB;_P%1PN`uN!R`Ea?q#PJ3TDRk=KhNw3zIw zl|jTCjWX}6UTf|1DAWnL<`-EA+%eZK%2jE@rMxKAB)#8n$C-|5yyH z1285P(|9SoBc=DYpcs0cvCCz0Ofbgar1m_*Cpv7j?^LyH{&nB-De;f}{GBfpl&JMP z0L4`N?fInU@peuT(7hrib3%R!_{0|PiRD%P->bxtaR-qw}kHT~@!*!W)%ck8M*6W<>Uk&DRDQ%5F z@O!l~fYkmW&S^W-qUhLpb-$K|ffXE{{@wHjQ*m1|{q~^IE?f}&oXzu7Nj4-3c2LU* zN&Jr!2HP{+JDU_V2-@8a_d)NfeI9x1+K$P;s(5}NP3N?ujBt?A>!RyH4XGYjp6NqM zZg9F1-9Tlva{In13L2}8CTTG>$|I3+j$$H_pw${Pk)6lAj?5h-^Qru5$Fo*pGrJZZDmG7N-w}GjIgE?SohzB8x>XTT zW5?HP8p2>1bs$?`$=L6#8-6{iuD<;Fyk?xqh+ceX#-m`tNDVtrU3L^7C-9{M>uQ}~ zLAlIWwaA{6Z?y2P)#pShh{3aukkclZrvDs`!PyHcoXq*O-zAVLv}Wc@#GkaWWcm^k z=rY0MQs7RnRIMywm!S|hhxvAzVz{MzLviWiAI7#YMr6s0bP@%6g!sg?0&(lg2yoC-;;k zS71%|vrN~Hq=`YUVgcW`Z%X)Zp8jzCw}Z~3Pt9LyMw(|HZ-V}Ieg@x4TzL=9>&(3-E5Yz^5xA%)vn4~+ zGw>866?nQ(e1{_{?TPL9lJt5x81SW1Y-ZH4EHNnwy5_%MGcKLtmu?=Q0e_wUMwc#< z(I^@!bJVf_LT1I@-~bInE%s5^u&g3NFGJXrfGsU%SQDz{(JU2IBSY+e3~Kt9NUuv2 zVxC``hJK$0ZVtrHc@#S~^DyJEWv4Hf6K*fIfQ?tj(6?j=reguq$Zi{#gZ}s1x#;QF zKF!Pb4(4|I&=%@<0*`KOOz-O%dXI-QT%`^N{rPGg{Nfy+1#C&%Z{_p0!5OT-D{SMy zP&z4+C)R-Mbs|P))6jJi$&>2^C-ah?Tz1J7SSVs-Pqt~+ zaFWKzuGxuGqfikRvdn@O^)Pg_$AxT6Ngrpk! zYQxZgx3UiD4*DlsuJQ2Sqd7N~AVOpvl5X@2`%U3!;jCKGv;BVwiFhSQWicG(n-I}? zdbf_7La`WRj#+eato8P=3z64V-3E5u&dS0eAgBn1EpdROsuezo)rtiDEnz1q{1XAw zi1Ov2z1W$|A)Ye9 z(Z(40T5M{gNMTvOM7OIOzD!oj!PTEfXi2o_8tDDu4o7dhPks+1j1R@45Ae(6wiwNw zx{EZRM+=kcYSC{$&vm(6i_m~IS7qpr|m+9v~N!u+Mu$qb6-7*mCUovL*HO-6Q?=;49xAlY&M(2_@6F% z`8U_W3^{s~(>3)MGJoEg<}n9%DO_HcX`3d&;^!)c(RU#i}|v62DZOg;_{P zGb1X@y(aX{WE8|dy391n4mWpZB*4n50!nCw4fq@ynw1wq!cxIR;)lj7;x|x7@w6~Y z#;=>ti!*i?vpsHI_VNlkMTGzJh(%Y+u1XD_c`lYjB}%+<%eP1(8U@;LANy`PfHvo%x~2Su{$BtqEc8=8ybh(yFV&anKvZ1I9iN4&D^T ziZJoW-=qA}UD-oN-%FhJd|xm##54~k4V4;Q7Hm47COc?#{J&K2s5BEr%@a#X232}N zAjeWke*kS1uDEo0*t9|wxllUEz&+> z!{-bR`$~U}Biv1~1O*MEs^`1o(iW5z=JT+9l95yH`a-+(Su5Hh!24W~ib4wJ*MTM^ zFk^XSC7o_XFbc%~UehJpX#3jLxFmBh0$*?#JxjQ9BwmEP8$?HHfG?E}8Go|mm?wk> ziTek4%2=P^r}AJAycv9}2hyLE&wh5W;YN{b)H$BVbl?C>lUK$!do^la&HH|!fr?Ty zLYIUwy%swp#5gtb-UTW(JOjkpmc-ICL}jU+#7FIt-6MHT2?g15Lp8;^IMH)aZkSsG zPFewrl%G|1CM1e=o4&X~DoW1hpb`)hP@T{5NaqcpDpmaOnDB8qodO`@T<{FfE!JNV zKin0A)7|v;${ObyP!sYFI9wT&nk3>b7?+Of_As|bZ`Vf z$5Gf`l2J*%tZYwxmsZ+BW0{g;MOMAVUAnK2KkuvizL{uz&*DwObSKBCc(jPuR55vJ zHc8_zq3V8d;1J<(_%kB<;&i$Vng6!j@*N4$Hz({|pC?}?#Dz9Rum(!I3~LypHt!yB zgnf@^n4CXQC~}K-yuY|lXVD=4GxABH^IkhJ+jp-{PcCaKJ2#q*b2w05OQdAUhPjrj zi^o$llf@%k2<3tKV>Cp)h^i#l3yb?WZ%Mxibq$R3YY_CN8HI|)B?8iX82?j<$Q)WI zszB=QUw!;}qG2fNjzTxz4R0?op`EGxw{pOoT7YoA>c0It4X8`mxmz;SBoTr7Dv*`o zAGx$sPcAq%$g$j|dt2>H4xeWQ&Mi;bw#!!+;S zXHk|r5X5Q=yHq6@ z|H5n?id0ISI6fzzDPf;=U>T^8BT%(!TSNc5JF_v;s}pYW{!G+L3T_Y(`on}{nuh6F zhBiLEv}_F;aG&pw%z0Brv1-Tx+!kQ;fMk@P*{u2rphlpVFO*LnXa*PW7#xme{<^6u z^tG-utdI&siSKgEL7!{bBtlX%_d;;&XSUBi^6lnu<0?d4&1f}nxX0ARV+fF|z<)mo zhRNIf7kjYr-YpKZW?<2G2mNe)BWv=ri7l@?SHz)hE*5$GZ3aYp6I8YUXW zy!3c58qA?IAFi12((NJ205)n_6P5dZVDudMk6Yk*UC{i1=lNz&z%-s7v}!^d5$Wt9 z6D5wxf|lz02>Akrj~OC*w&979%M9;o2&4B8(e*z0Mtc9wC6`Q^!GbI~a2Om-6b?_P zVkA2ll?G&|aJugRzuHFFK0%n}cZFfe7Hyg5ME^*l&wFg*cLt;eIFJ zzenG@HDq(W8{z_zp8{jyYg^?cg+!#c;d=7?SvPtAy30Ciuc^O+may3qR1&y)tKy^#hC&51^l_TW#HL7bQnp>`|f&r)lD z1UgRs>%;_Bw{&@~-p{um(8TEeKeUk)DOjY$2ZXTD%b7oYj8C3Ric zJ9?%jj^B%s@v5H449hL9?tHqTHRlu#&TesK-tb70PoEA&^t1%#fbqswF zuZG`%!K(M0M%Om94Wco044Q&v8_3BncBUuKj@XVJ7US|OfRLEB=W4s4LI(f%7rxA4!}DvW zXo#dhObQHZnn<&q@MlO(o<;1v^DBGXRamA0^j0%mG|{-i)XU+v%Au_!(rlXE*-d&( zGi#@TVv*21vN~TT-1o=5SR1-{KTIV?-G3;P9wd->C)=zPJ-`1{;d&b4g$qT)T;|9q$P6zb%PqLW(LrYyqmzw$*q8 z`jRn5XNy&J)m}jm711gWzmW;mppTIM{DDKS<{091j47M_H*L34%Vn)1H=InU2@^b{ zwvjRth6#y`!>_WhNwI&lp3FHm@&qj%n@aO!zXSA^e~>WZjs)k_&smxIbP$gs3YBWr z(|%222>q*=EYc@Ib=end?tE{iu^tm=4C+H&V*Wiem|VOgc!})&Itg2<@|!K<-&hDj zvCNmHirg>7o6sMIP`VO^xsQ#^tQ;31NV&HXgIWnZ8k5pnE<%lyBw~)$KV0?qq4l8u zQhsKkqB9!Ls~52uQ2__dOL*oyoThOPFZl4OU|KEM2J5^AD^6s5H4Bcwq}r#80W1le z4x26=sS|vpOb#v#cz`k5rlDQ#83^0{PfZ9Y$7kG$2;J=4BNHSRzwoWu6|%+exss_; z&ZN6~J!>eVI%Ll>r3+4C8dM8t5x>@y54Z%lm{uaG%l_qG(DqRaLt#9DDxrU8t{QH) zI+^zFfc${mz=dwBQ~bR7Ld!f%YZ{Hx-Ylgs3BR_TEFGlo`rLqzE_4{Q0grPyi+slX z@iV6*#`tD4tqf<1B4 z;jGVMk=ft6BFyug{3wz7bLa-OP_!e(b>=VCfznBw+9uT;jsv({?H&R0{>u=?LKd|Jn-OYT#>3%6bRDaq7tdJOb>0ZJX>C1w&Y==ryezJw12# zyf!zy5Be;RH2gXZ79ai&{GPPaBB=3ga#99bF;Ck;sF!n!H_#C1X4)jB;@AEXLTr|k zM39M{XC+Gs&X>~|Gdni` z)n26|Qxta6KXc1f`$3V#j~iOkok4MsB(7aX@nD;)VNVj`fGb&;4Dc5LaLsl z51XcV5mHY-DP>>hul&rS7E_Vl0Vz%sX<5OY;0z0zqA$y5y8RYrekX#jsBb!ucdVaE zDioj0-b~nJkkcaCDY`{dmBO-@eD7~fJ6O%M?h5}S;cGTY`m!mmIgdye&EJ^bV1=$ zFWhaE?0^!ihF$pv+*%v4*MpiS=6%Tb5p;rMX0W6FAO z=G_q?6#n<_g)R(1e6erhed0mIYto-2D8{)sq2;37EqpR(e(-Pp`V!|zUSD<6j|NL6 z8_EtK+@^z3c*KGN_e@%O=kVuCCcD%i0*(=Je0KHoT{fr9d#kby406YBCe#?E{5mAm zi_2*L`D>vXM{yXV5R$*rZxo?zs45;zW)I91hQWw^7vY2a;RpbaxSZ8gN}E-YmKb9f zD(IGz@6?Ga-sxPUc_L*d!%sSqhi?)<%YX;cuRQ9ZR8!^B2THRG9-OxJXjOkLSiIsa zgQEVb(6XrmK01gnRz|-^HmGo2R7@v!;(##@x|)T!fs=(6^vtN7Xl6fyfR>WCz^vJS z%7El_h%}X4G_`Jcu9=izzGWBiD}IarW-KDEojYEBp9YF5bXE0FIx$#~KKLjD#(f+j z(WvND-j+LjLMZgEqwFG4%0tdKwqbIoMx}r}xej8{hXc@jK zXpL3Ef05&+Y=8x6DtM_>-y&j&0Ijaz-TjUR%f4(P&5*~ACiLNq)6AjsRuFim zK8N5gvG89vpAMg6z5Nv^E;*{Oqac zTO?1w?NYR=HRa~Sz^Vu#fxp(f2VW1@jDSUp)-)7lB^WOYsNGCv}NTnnS}^NcGQEathzgRaWVEc6_TYV5Vmh zi~Uoa0N)!v8%E;4B(EE*vaI0?=9m;=*0Q<6-YtNbVZ7$`{k13geYfW1YF^^0fo6`}?jX|Rqw3hBUPScr(~usH?1n;6 zA|Cd#|GIL&20|Me@)uBN}xt*~PmO?8EyTnOoi3&w^tt={&FlaE+ay zPLtbU_)Drs+q*YXKyzxt$9oUUM$8ZED4kgjS9;9hN0l+97yQ?Ux}v@aX#aXTD1^3} zDKsCLA;*)B`y!kq8QHrXA6ba)EDDL3;`~8L`iPg5Z@k??FE<)Zu-$>-}a=8ayQGx|M;D=>*?<1P0(mSZ5p>bF(a zRpS`r3rK*g=fXML+Q5C zsA%Dsr~yT>$lQ*e-+d^CsE>^$t%q7BnAqfy2Jx5nOi64zr^8n3(LHooE)jcdw&ckl zj=mBH;4W6<{D3i5!#iCJzVYy=(744vuz3;JQ5<-N`ba7CTr;Vf@B@<%zH)E0gqNbdLQ6XKk)_I@Fcw?S0l&p?K3gwU>bjFvB zLM%zyY)44`)!d&z5S*ndAmwPHKvF7*FtF5p6C?>qe>OorY)t7cF?W!VeQ)wc3?aK@ z?a~~+Woe$dOwye^9NYDS88-kYmP~4YOpMc?~ zcf6ILx|PF*XG-i7E@ABA+u)2!qDuz^jlfgS0D0dvAiJ`wc6KI!Vh)irv@*tv7 z)awrjLM)z&c6$FQb4PuYeFE>aBPS5`c4xkS$|L6Uk47KX_URje-GEQ;K+8kKZMq#~ z`NIo2p!T=Z!Hnq-*{%H!+gH=}4_?oSmq%H0(q3zmx!`^+I{jQo}KjSC;7x6N;HH*qGYNaQ~Vw z+|vI6o*C5}TAOL1JACv<^zLR%P2~aCRtH4k;^h~tIQxOZLBNM@_F-6U8iRz>oqL@I z3%L-{C0b#UT6EZ`C`=hh*4=D;^Pg^f0?X|ZYI}7f^dWRcXKV$V zTUf)#RUN;Ri5{i$4g4DxzR^`YZx1S#JX3g%X+V$omQ;C&gnmj+nQVA8wW680CJ`=bGJHVj86xjgFA_ z)@tnoLHrYi2_sM;y7oOJdtK*S})y}F4v&8f2LEuiOLHZlKMXG+gY5*$Uo2!kW z)e7b3um2+md4Vbbf{5gax#B3IvELG4Ja#os&_o3biG5cY_U#bN4U9jqTRcCW`)Yds z$cVdpCOpBv(94(ZSxJ|L?P>)ivC+=zeDZIN)GC%S8VIG!k{M(0y7K6ExMJp`b?xtK z)4K4SV0avy4+UERRhH4lJow%@!R0@y=YDF-iMQvbu5VPTy>}hwV!l3m%KHK7R~pHtMbjpt15+DLT8M92E49*tE&n{oE;5aO{{Op?xkQ%?#KyahfWlUi2I3FQNpO^ zBUnPt(0%oiXVbw1DA4L}{F8N}1_WW0al1lG(QY;i3=SwE*6dw&%iOz!(^p}Vuz0YP znSqbr)XyS~CWW2-jgm4(5e41PXq5RFL>Uo)URj?Z&uevnAs=j&ZWQVzde%MSX*hN_Nef#zL*kjafcpi&DW%(5S)<*QZoxn%0xK zLD0I-1pZXXMv-o$eEwg+ZYzmlf4v;qtxgxPV1{^gIf%LcO0wB55U9$;Z2tO?v&UsI z1|H~`GW#v4=lOkzoF)d3PPGe9eDXAGoh{eUkVYX{5J&+*m2ayAjsl7Vet(@e;gF7J z+HdRG?9KjMd}k{cy{9&^jyFaszHjO-g_b;6fE)wF+HMh!JU|>>G2?{ZC7JK}D1&8&#LLK9^nO>N z>(=QAU7uLVedx?At3w8U?9f4N1hQaNq1Niwxf-`R5!Pzh-Rd3It|VZ-WYI|AK;FhM z-JCN1oL-YoFf$DFr3C{1MI`LXD%$r4Uoq{wQN!+3=#!V*qVt4jbcYy_L8E&IBgo5m zdntm)!TNuof3j%j{r-gt$9PL!7G2&c~^A2sR5wL)ZtXa1r4`-G_|fJ;o_yyUk}z1iRi*n8C;42;c^0_%?b9Pv6 zvB}|+MtMol#WkVRek=KzL|^aR%s*DMDdeG5Hw>&lMH0|R*tXiI;c^lnRgnuH!8sqQ z7h$qMZ|W{_L@3H(IC+3WYEYsBH9!3=G$yEou?q%r4Ht(n{m@9YPNK%vBH`e>85k&= zGicI$Q#_&a)RA#h1MBYP6D5rY$(4zoPOFe%IDiB)X73I>O_aHP%UdC zKLj22#Y*{$R9bAk)a+(qt(MWmiTDh_r0ngzUG=U*KM&-AYdDQH%V2Dm^c9t0B^{S{I>4 zMHvE3U|o|1(g19W!;7v2;AnWfNv_K z68}So?j;lQ1`vRYfG!7)%*uD6T)W^28+&o7h8l%VNq3!;I?kBC(O*ak`R8U629IM` zvOIj4X1N;st&oH>n`ONnr|%|arka*{%VojU-*+r87a`k5X|2&uLm$A>a>Tr)gX2XKMY@|Wb}z!$($kGW&?V)90dyk-Zdqos63Mx92oHYz zOh^=^>(j`XG#_nAb0_4c-D$9z@`@+9-_{@#8Dq__3o%X-Ifvzn!6t2i-@A#!HOAlU1v2zA|Q0kra6m~Hb z?K8yRex+XaFjN<*Qn4R8lCJDwCa|6eOI0q997Ev*eD`tZ*y*e6OS^*eUT zvJDGi1|iYuF?UVbLBt@UK~W0*W<0ozHVX!P%mmN(Nt#oeE#C=<_&-;A;0W}7uDPG2 zgk{nDi3t6<(QG)_!EEbYT@*b9$8B<&;Mt$tS%2c`&~L_p=88Dn_iC5cOPKW6gB8(T zf{|QKaSQFy*3My_aiL|&+gFv%H0~&(qAeRceDP*_S*+dNh<48@q({-|K{??&2U5V} zok$v@rgn$(dFM`$&T)5q5}Q9Inm<9}OzFd^)J{q;$*-#DXpW?VK~4i6x)R<+6F2&GMR_(RAe-mT1QlXWhBKwY*$4?t6BvhTh0N+LU^|A%&STpU1*E7LbHf zLj^=N*qU}?6`1S!t?xVsucKeouHMnKb?zh*T5na}x8Y@;zJA5=szG4zQ$zf>HW6CL z_ls&d;a}WdFH8L0s4Vo0RIY88Z1X0xAmHe|4%pWX;2j`e=r|UFTJ#f&I-s_M8oRA3)<=qf|+}mH2@3aSc8T?h$mjrSkFFs<2DW;(lq z+|U zx6Ope-68#ZNXDRv>V?|QIh&MMl>wO$?x1+FN$e1sZT8Q&4McjN*K1e4K7d_x%=+1t zD9`~fAPjrC_?yp#1j#x(8uh-S_=^U0+(sSc13xd0&|Z~V9(6PNn5vLo>(~k(LPh60 zDU=-d|B3kiHMgV^*Gj{wzg}d(rB<`U^0g{SoHhDQHXG;*UJulH)|zqClxDy_u0vvx zvKVu{U(<(@sPVCi6(hgz9#d{gcc`#!__T!aIq711&k7y42E2zC0ly)P&6_Eh7@zQ>&S%js zXvHj-4XtYmy+IuQtxRt}8{-lQhdd=Q=1T2Gl;}6GA0f>B`HI-U zpsq{~^3UG|6*~L1Ybms{Z?d!dqQNtPHHnh`s5$BK&&F?_g5*LN#}CK1YI=ydbFG2e zfL2)^wEv+1EQQLk3Sa;t2!;5-;K%L{WL~DnxSzG0vSf-wsfV-*oXHuj=#|;-Myn8<#o_bckwZPCSSJovj62gUtN)pjt*o_4JYR&U;S2#EKan8S`?J;6b{&+?u_8$_ zX`oez|6Ca~9~w=ZWdEPYIrYEcv&48Yny_EFR?TO--`sRJ(azV`vPb(l0Rw;3%kn|U zX0XsG$+FblO-9W;GCoT6zOPTW)`XGqV+;SbOo3eDh$l)c*KT>FTdlo8$ig&xW02jq zj79E7rvyRFH0RJLqnw)r+-IV>rfPk9omP6JPIZh&;gPTvhy8(($)v?WvtE5@dJnSh zCsMnboiDyG{;TNg=Vej1%L|B$ThdvNPKO}`&+=SRC79&YM08?J_}7%C_wMo1#}k#r zsO~Z+bkA~uJF+~2$>i;OwNTr;jsQfmFv>62p5QFVtqzS0(q&csKw1N|d36W{&o+;i zn^=I9R?!g;6e%S9%CaRYnO%=Lq(QS%ArSW$AIF<~8rHTcRWl8RIvN(MxnxXilC&JH zmSQF$+^m|_6H~T56?Tr`DjxG!9LY#rX|^=pFOfl&>c!mIwsYj44yUF?B?FV+=D!_M z{g@P`B@#x&woM}g2Y$yZ zjfJ7tN@w!tpbA~h1jG_>^gV5TysRJ2uK=>|oLSP8>Vvs$^juI|CR>MJSayJ3TQ>PU zjN^7|VCiVH_o3itbW#ja4h_*sqjq`_9s3IrvwmlASqjTm_hm2A4vnhAg;(Xm(mfZB zOK{UROX+&!t8)Qu-F!J#H&XNt%bV<;Y?UU5(Dn)fbfiNYyo1i4DLcDI(WeG#@<5fkM zoip5yy+dcE57LNj>Qp|F$|imr4T>CeQWX^PIuU?M{cqTw_TR##*dS(d-9-b)5(@K~ zaa?hmqWkxC2X|($hS1Oe12Yj5;bJ?NL=BrxF$!8d@%kFe7s&@0r_Gt$F+;3aCHSuO z?($E5;2S6pUXhH*{v!4mVvJ)d1-Y14M=4|7^9?G>4bQl zX(vn*QQ7@$DLmvEJ>R`)Y3RXPO6{>82}>k{;550uw^QhOcC7}SCxD4@$L-&ih@)%& z@NMfdlc2?p^)B?Zm#pP(4@O|}j}PI)f=r-;b#cFR)yJM@R59M_=iEOzt&||&?P#7v z;w%Tk8WCIK=K=qTY$07gNLDp*eg}@VYX8YI!V9rOXYL z`}raPv3;ztoaFuFlruVK6Hf-&A5a@u&zENWCTE|ICUK|Ot5R%bBKW@IQlin(3N1(D z-&>=0__ai{nAW-JFcOD5Hu(uwsqS9Q^x>;it)0-)ckkQdyx%Jpd{_7q zTlIu-)GqL96<-OXVIA25X~ndxHc5Plc%2en0Iwj!L~>_}f}(LM)PU<14KU-nP*a?U zqmw6TYrlVFN8|bH@{iSFtz9J#13?V|_AytAc=S?9ATMaXK!(UP9$Oi642?`s3+y*t z*59(Dt|@~=CcWJEhHZqURf+#R^x)(BEfCm2#B>d-Yeuo_18SS~30Wt){+1%~U=p+& zV6sp)3AJ?HqYMoT3m`9*NMGVU(Xouken2BpCj01rkyv@&-7U)1Go|{OFQp#Hz(n=? ziNosbJ!ZmM?GRMQ!bE2i`uWZGn1loetF4l>-ypG7mn6@~{m1a&Qnu1UWN$8%qWH|W zJY8!hH^+0PZyZ3s{rDk|a%ZW%md0Q_m{V8H^pb5G0 zW$Dc#W*TUnY&58Q8>ZT0-~Z%a4RVH3Xnz0B5rNJk`g*d`4?NWEZzpS_BrARh0)NX> zHDTR3=~rx(3asw3UTH82*z#*00T4stzT{{rvGDEm!*uiX#@8I3iB<&PQsSeWH8xV| z$jptT%LanUIBfJDJP`xAEX(SC@0e`fA2Mu4uEPlreLzD?!3Em_k~uhQ+<&RN)rXMe z6G#cPP_H%b(Fz81o$Sh8#;$vTAdFsYM1dseS4V-!5zzEDhX_Y9sFz7Wfw?x5K1H`S zAl5%o7KH(T+WHY(me6VAZn=@2q21g^b|_$4NeJ9E_ByrT$6)Fax;~8&HauoIXf|3c zp!H`n{0uG{p}ZaJh-wwodfsyE5rys={~zyJINtpoit9WnJu z4m9-%N@7!!#RO7=Jv8H&2?CE6;8L0ak(S;$MtrA}8||HQK7+tyk664Q45+zSV)u=` z1^`rgR)1w1ZP2;~S8u#O#V*@*n^qqU^g^?v)eC}6j8ifq9mh7=V1F#*P^#XdKd#?}IFNSk|e%suRhhLg;8AnO5+lzmA zLO2|MYujI4r&M||p~wDIHZof8>Gga}N|{TY6^%5ogvNjdFUbw`Z+Ft3PLT=wHrEEF zb2fX;{&E`f@JL)s>a^vj z8ESRpTd5cW1k8N@37FyPfwyYeN-HcAtoqWinCNE=DLyDD9ooxFRDgM;-(O>&Gk9Uo?bvu6uit|nk#*zK*;@0snb8^L#W3$eaD1;fsKzUPSJ zxQ53z_LnLTFx=R!{?>~lL)AQOx6rzo0PaE_=uBGF;mxCD#S2bu^YT@^E zqm{x;I)D%;(BW3bzqiEYueft|tv=D}suMntF@mm3B@{f93|vv6NCGab10eD+Xx*%-kIl8?@2 z%C!z_M6>pbJx8+Uv5K3Rsu_OuYs6^ z>$F}wY>Gdwcc{iBbwUI#IcRf;B1K|e!#mm}CcHnPFGp90w6Q(!kU;4bRA0^NoM7{% zpn3^cjlX$LN81wzVLkh?00cKF)?Ha1*jB;Nz$1V}rUsw2F20RL+e_7cHNyBuNO13A zcxFV|sViws&Dx%`W9vz8=qLz=Z5W~i$DYNaw8b%!(mVcBX7_PR!c=6PY^~=iFiP~1 z7Lw=m>J3C~!j~3DcNM%>{~%cYQ7OY?ZzMW6o5HG0en`KUnn0RU$yL+dVNpkegXP?1 zRDoB*V~V2MWz6eAX4zha=oHN1uU`0NZhhZSI8U6R_8_e?gpN zP^o2NNMsHwKH~IhPe#*4>AyDV>~GjEbGkav&=YC{kj&>|!rt}5gi$Gjkby_)GRLPy zJUz^R;oHwDx%-|Cva4;MKsgH!^!P;zxpQLWhVnk?&|8&u`ZB~B;Fz)p!LM2$2@R+oQ0Ko z(S@OSzBErOb{4oK0OlxPei{hVSkhD%rDP9YK*bq&L4z$g+7rh9OHk73Dvm87_jlcz zR@p z*h8{ckL)@VaXr;2$?G!YuV*!gcFm*n6 zvNIbF6?EerUiGg$_-o)=1@Pf8s-g5B>5^5r;DGM1q~bsRuw%3)mspi)Gm4u za=`syY?qSM8H+SBJyA?(@8EWopA@EZfy6W7j})= zI6adgH`ele%;&CiTB@ML!FSt>4xf676j+a!ddT29liD|Ogid&{UPxdMgF_cVM{+P`PYShBIW%V(JHoOt;euXQC9eTD zAnb?9va;kk_jP9?f5!*qnd_-sqj#Uv->s{-KvDVw5} z?2>U=fkx-LvFv*_cNS;AXrH7EJC6jLY8oRGba6g}1&U+lNBfZivD8Xw7{=_bNay8- zq!Y@6J%i`U7I@>Ez02s2%+$_?upKhK)^r#AZcpW{=mdX)1|o)cIBk!>62m#`P3R^w z#e-k?JnH1p3e4D-ZJz2Q2(6JPflYvDS*SAjYRN4wZw_?dgtpqO zEDfB7jA^p)K}n4>mW3QY1L_2icr{5?DCAsNL`TzE%Vk51$|MjKd5hQ_mCZ7FHE@7e z5m4NE)uAodQAe!mR3>U+;7LBNF@SQ3HqHK2mHR>Z%=Jym%|ry4(41bU#~Qi ztJFeha0xr@C((x(M9Wk{T0K>OXW8DrBrW@oUW-ef{NdMR>9SX4E0^2|6hr%NwUy=x z)P<>x;ud-7bEFh>zC)LHymN(M3g%O{(oju*S#Ln;gXbi)oj%-g19 zaz0;zpwskk=1u#T`mre&-dR*KarEJ>^Vmv)c_74PMF+g9@sHxKja>I!LPNBk0+!RD z$c!oN0UMVz^<{V|Cpu-|GdfzfvORKVRgH^%xUI#~aTtZB6xZO}kA!;{l+8@mi=X64 z(lh^CAtT8@t4N%V4PZL;EA05nO`xnAVeQhK9oCHUrCsZd99r}2j=AJ7-1;OOU#B&V zdc_Fm0OK<(DEMUwzTw1p&(7pyEw%LKzQLl-isdHb@jI>vY4B@H%;q}f^5?|N{c|%* z;5x!%-@taM5z(fpsz2sbpxUFUE%S8F?t0GSS5;@iiC@#`DSOtw7m&7ybTD#0j8mGp zv2^nmw_2Ib+;~BeFoCW7!+harSIde;5P=l>Layk(Up(>9v=_Ok95x*> z^T%H^ZMTQTNf@mi`f`7PeBV12Ikr5h&8T1?9acOn_pty~n`(CXvvQOzxt-dv3qLC~JY*if|v*2f`*lcV-V{Q)Aiz2_l zHsc36bU0xgTp)Vq|F+3uwzY5G;}@WF1MkyJu)_FW8J9r&WP*b~gobQLxpiijo5))6 zT{D?zeIV;~L=g;QC+lt1qC5WGvzg&WF8MJa8iH-uF(ZB zsPaK2h8`~w+ycuR9SY}prxT4@)h0m<#hDpf``^cVEWYJzc8s6r%~UFCk+tdtf!*FF z{8DR7;M317WA1snVp%)_!rcVsC4<-+6Hd9@OrX{85?*&RBxg~tf7^SOmlAVKB8XQ~g|;dMnuCAuMKY&*R? zfARgV!WlH3`C^Z(T6=1$Se$~E##oSn7 znVh}{AMa-*KV^iJM;e9YM%I)g)LY`q-1uVKUfQ{O*SR)Fr5Je2&f)4-CDR7;bxun7 zNJ1!k$_?^O1rAp8En@G|06QjM_r66yf zs-hA~PAf0y5PEOf1=ij>f1xJ7`3(X!3Q=U$NQ8$Ob76rtbJcd4DJEo$aARYFKHkeM z-rVHUZi4svuR^U7+Tt}A1%%l?!wfpu);Rb^hKaHxA=t0~2om^^zmn-ZbSuf6_?{;S ze@+s$nn#7rDuq6mBG4sKTJ?oeb3w1p753gVz@5YBvI&p>zFs)Sle%UVPP_a^u%6;GMG0*JG zrUH~=N(;)?2!}nM5R~RbW=}IP$dW%YVx3_#F1&xa%izBc%^Wpx7~yNOUyD*FsYv{! zD%C$VvizGIs~%C56w0#KA6;s1qTpidyO*c?3OfBK?47_LHY$u8y6tRc!aDx%0$=WO z{^Un>aX(tXb)O{ED{aA&$>mDc(t>S1)mTnVUvV1X&HUEv>34aAwbiDipqeo2X_Ctk z@3e=B&ozq+tZ2SH%>F>RJJpJwD@nDu^%#}Y-<1~dd2q@a$WKp;%K3b;nf>$0?0>+W z2CsUmXrIi?zDeW-hn4OmN5=WNqR|w#m38vRt9|h&&O?K}!Anf&w> zD9v?iJ6aF52`965t6Id9nB@Z2Hn8S;XrapP+yuGba4x6uD~(Nyzpui{+8 zqZlFZ-&*ecH^2&VCHFX(6#GF)@!zc%&nhq93@U`jrTL~WJe?wR@Inuo1r5iZ#;gR| zzH{EW6IU9aHySoa3!zX;WS6EBQ-(r{Fvr`o91UH}SpPqItJ@4KhMuDdgPC9s8IgZ` zq8+u?w~X6m55Z7pcoVaA1b8oIF^t_6OY5%(t#-lH66+wUVGK@h;em5wC) z6f8=l3eUvl*6Z(F!1z2~tmWO{dVqp;D?uSuFi0n3Pg5k^km(jp$RX8#kpG<39o6;0 z3|4o?X7`C0HtJ8YHPqw@Pk_?A0?dRTQ#<#);p8HILh+u-pi;!t6Y@e|?j@J|0Bi&f zj72|oYmnooeHW91Omdv=rC(f($uvqah%MI}S7|QuPEkD{_a`}Ww=JEh+u(J^cf1X@ zEgQ}vX-=i62JuZUru)2(u))4FCl#gFxXn*q%LZ!XZ>aol%_u-R94AfyjXK3nt?G@# zxWzB{PWB$5p3@1Ma*;v1w*JMxXsXS_j6_I}q>1WRiNnXW_Dmuh?gh~b%GGX%PtJt# zWUU8gP4Bdet%kWpw^DJ1>z<~<@j@}lfgT++3M?oog*F;x!4at0?$?$86tX|JAhX#^ z>H00E-F|g@Cu+|1@e8kgbGt$DM5bgciw~8_X_U+|4S1wo9p37wILOfK_^pGSAz6g( z>o5$w9n5_YX52;R78aFAhGecJi_j_gpoeYBi6G`F%dOaIHQCbi%VR|qV`?7;*3Hi4 zX3{rJf~pwz1oV-WuA(3n+wg@gapqG2a@R*?h^J1yPk9Quw_prj4<@CEe*cO< z46hdv!$?_?>fqa}-ckWiB*l0XT)*Hb{WhDR2Fyn+af}P^@{ENIVCHvPlNaSSS=Y<` zwQ^aZ1wQ(OSPcDGvsPcg$#Gw7Oo$5~CI-EGM?Zn>ppW9k_s9aSu$dDGq^@T_;=#nC z_3f-COuf4Xyf|&e(m%efKC?ZZn4$;?;v~2${SD-RseU@JZYUgjYOp_;%dfflO$<%u zeOvN@^ly;Fqy%d}fevhe4o|BCtp16JkUtQ1YN+Rt!+z&ZL3e9`*Y&L}6x+>E^1Y_F zNoE>(r~%8bF!l_G$+lg|dLuf$`J79FDJO6`H@0KdTby6Zq5xzE9ig;b6!*5}Ts)l_ zJi|`eX^YD)7WG*~!Q5{VtVTr9hHr+w0mJa72b@S17Oz2j9Qb*^->%S(rmyqX|ZB{WkzGvR^o>}Zd|*z^NxKQF|I*r zpt%x{cx<-NtVN~F%YjR5b_Wg}+ZzCK?r=DD`lCa@GS3h?Up3cb;}$`wvQ;>g!(s?r zi26x(i=FfI{CphPd<|yuBkNGPDaSU&1f_u@ed>lj?e`MfAqi;#ymd`7ui%fTDkgq4 zcF3_aWEJQlFUl3XO!}?z|E$jhw$CN_mNg`v6kf*n8OaQtF0p#LBZ!Fv(l&$Hq*^t8KYmpq>K3$r zQ@PS_tFeP{Gp#q0jBrP_~544C}4ikb@bIw`-HYfc1Lox{IY#E6Y7}Z?D>bkSa1(prbU&DHy<6G9O zeFut=p^yF?Gco|8!|r_Fz5E zkLxD+KF^<$?do#dsa#Fk@EM4XE?vIwoAJWf!5MBt=+)d>J#+BpzPL=oJlr0n2K0; zE|IUT1P+seReuF0o1OW@<97(xdc2Pv1HF$~y@&&F3x8pAcM#I-wIF7z{B7aOCeBZ@ zAfz)L5mLASP8hDK>41m#8+hjIp&!f8^$5*W5R1R%W)Q9C zMjauY=f;&AT;x|PJ}4|Gi~#&MG@1@+#Sl8Ta+P&IpZY>H@0y3JUW;|G)C9}mR+6m9 z=1f|ovTL{Nj^*kH)FWNd$kBBoUemF}%QIe``;95%X)}+v){te79ghY_SEHJZ*>2{&SPMTAy`88*Kq1+!9WH)#|?>-18oXwi%9Z1 z(#~D54;&xuR7igqq5cPPtyIuxA(QckX435$B@y-R$hF_k`i(n$C-_2|K&r77I%agI zCuW(VnI#q771r1~HaU*eu5wdJ8zJ3Yk854m>#Y87%| zR>J#QG0{IP22*Be2Qg|^Xmr5o{(MKiN+pbovR~14C_SER#TZOqFYFql*dFJ%HHSCj z_(|N8pM)2SCyLw(Z=S+73H_U(kFfbPO1udrh_;&%92fU_@eL;k?~1pD5QRK~kvS#6 z6#ja|ZugaJ*9;(|?m$8eR_4i{D}NncBg^&Bx}jX07(Kx#8~5Nj2QT;&_1)pW%B6|A zl!x|s-}59hj(~p4p;!)Ulojke|H;9z6c$~OfyKz%P6aW_-3MkyNFHxRfD7e|H?OYK z4GV2kFsF@PP`sMnJzMfLEL!Tm_`&Hw1XUIF!{pB>_AV;h&eWkKI-VbKRRN_HQjAMc{KXWogA5@`qcA!LUrcK{rneZ*Y ztww+nz!HqY3TY2eL_jeu5z?Un{b&{%aJC_N^LiO$03DrV;BF%8y^t>}}KH zbibcI=@eZ#5i!w>JZ}=u&Ife~8xP4A&~;(@I$Oo+9TWZRxc1@&FEc)`?Ng?ZReY~q zoLm*xa=kZ_$yfK$O63;QJ)Staw{Mg1vbg`FP3|)jCt3dV%zDqtp0v z>2Vy?icY;Tva}UzdlvTuibV28jiAn?z>0E5*2js zh^<`{Z5X-ZOCBUXsg$SEP<8IQ8gFkE8g;gRrRXc~#dacvu72YrN9DFlSTzn{>(ixV zo2|3NZ6UprR?MWoP3K9`$PuP{?ex`vpYzc$2$nwHk{ch4+UM`P>aCNA!mAVy#OwZ^ zwsx3xi2vopzxkl%EB5Tfpc;MPk3~-~Y;M2*9k0g9b}_B3T$|p)X5nyx>t5b5{|+gL zAhH>adRT!F$x}%8fhvvO9V3n((xdOgImmxa*OnnY0dH~ zjrZ&!72K)#(Yyp=1mTIw>HjqE>g{@^?O#Su8YAbP>$w_G(vejQ|9S<0aYqV%z@buj z0PNrcBk0(9yClGFounh%Pl;W$4MG0cIBsOc>;F6Ph*kc|e@=;CNuM5l?mREVYd24X zpn6WSg4i%7qjEkm0L@Z}0lg28hoT?!!DXzRyh+VF?87m4qKazd=+t`0f2%ZyrHy-? zF$djWj=2h{h7Poo1EmYnT&a6M=F*X3(PnfTlut;V55dJ*Hggw@+X-R{oGE}Wd@=1- z)3KV1S+x!_rnEwCRK&CV=QHx!QDTe?7o5n#nR|gW6E;$St0|w4YBb1i4KC7BFhMC% zLXX88PJYD$!#jO2BIUm+yCK!l7Or?qbv=5CI;k{Nf3sgvdt*OO?HczPYLD7+fT4;} zOf7jdlzPh+)ZQbCn>(*)GVQzmu~V!WIpU$76TiRRZsb`$0NcB45l#T6eP1M~n88Ge z-GDZ|qr#&($}4n)N@m2fy}XxY6%_QTR0nq~{B_SnADt68Z%-gWdEbtGGxBVVgzc67 zT9TL-h_~{UsqzbnXfzSm3k)|5TZoV$B}@B7aC+>f$7XDgjx7icMDn2V5Mupb++IA- z!pPk5gG_h-UvfU253~PzvhC8;!wyqLxDQauvrRx46pK5OA%_`hVR+?^(OP-UwD4BV zg&=i2;1(AYUmxCh8HT#3GCE~l_ddNlZLUas$Wxj#md&pVuSiH=VbPF`J1W17vZz(d zDXRmqqZOw^P3D`ikb{)27CpaA0Cxb^`oAoCwpylby-f&jXJpcZ{E}TWR}|sLPPZ$< zn@8#j#iT~?DOniIrKSy*-9<4dBHVki;Ry;SPKi5h4|&X)pd|Qy&&{|S{B18e2rws` zb}uV_U-WNe34UlTrYX0 zRj_vTujG??-20axsAL>tSL>)uCUn1l;_Mx(%3Dil$@#FWWpE#Fj7Yx{bSp7VUg0Ha zXgvR6a+sM$IkDS)vIZBfrsA8e#{j<$zY^3!kABma`}6E1U2Dz+WX6UCy9E7kP$UO> zGl&&L`h?+M>tC00gvE0luuRS3N?s%i?~VF|Bc~Z;{%Ur-2IF02xAgMtPuS#|6=m3H zzl^TUxPq%)(>?JpM`Yeo4p#`z7NIE3?W z;Ar5OnjsT$IX#34*fD(9b^t+pDnInXG39>P$=zQJBsQS(?End;_E_GI!NLk&N)M2; z;t`qu%~Q3BY{4s6C&?%s1Yru)VG7k<>eO52X<(YqId-_;kqsJgliR#pn%#B1zbeI| z4jKL4;wk8if0=sxNJ}Y&6+tKC+Wxo|2{sDc=Bf4HM$>L6Nhwdm{U}F=n_`wAM;M;K zM8^|Xn?U~iAfEuFr_@RpQcxa#B zUY~7zY?s{zavp07R;z`@d94rWF`f_^$@bg=iRQsiGe>-Q-AOFQ25O*B=9bg$$o0u- zryJAh4wWI-l?YJv+z!j1q{kzXprs8=KcJJ&?;GEyH+Zk!kQzl^Z*0l18^xRthJ?i) z7!|d1w-by<+OJm{auK|R$+0BC@vP9lvggoAW(OEDvy1MHFjSySS|5JUVUESC%h;Iu znycQ@sb>xkS>z5WwB3*Yn(Gx%Y8I$b8q+%~`EzcU4+eVeKtPcJ^--*{Y+mt-i(0Cr ztI|Z8N$Y}wRAT~R@^Ahw=>p6L*sG=~!Z7k%AEiczR>Lwwkl!QpYxAl9@>dBl!vq z#xk0~>aBA8Lt&PJY??bHlWVy>a*V@7c&Gh7-UE0ry5_TC!oIHXbP4}0NXq;5C^yU- z4nOZs_45Q2uYf zVq+3M>B1x<==IML?Iv^PsDS-JkCio3jzmiyQU-Li!sbKBm)@C09Yt@)*vc8ggGlg&j7lh+2f zcKSY)_RFGBEjw)$6QhcnhI|GU<2avYn$3oHO|292#OWQXUo=@D9B6l`R6N#kRas-h zyRU(G#T`WF7qX07RybEsw+vNXZBD86LG$Sdvr&ch*o72n&m#wMtrhcdnS}35)dsKd z|M7I4(QLnAJFzRaidCCh2}SL#MbV;45Y*m#Z-SzzQG2wg)@X?>_9|+&cI>_P-s{c( zeb0Hn+%|bGiq`6#wBc5CmUQ5twzq2r4AC;{Yvm@8GG22nL4$r zzP-DqKi1uW9edB9Se5RbMwQ}fp0~bHXE?UrK?|;3ZLAftlJS?BDdP2j5+#`7T_Rz+lRi zejAKRBlS6gkB7{La1Fy(dKCbg?Na(M4H9M--^$rQ=p^BKuNi$G0_5S)fok_VUz+^p zQ#oXi4J{Q&oq;Sg8AgeOQmip<3;eu&R7v@RDG6)uf>U*-NwaUp z&tn}Mn?*YJ=&#$+GxmjXfpaaU!5=Eurm#BeyA?10$~?jTMs!(q!*<$r{R}v0@>>qtz34Z0VBTraV{|{X>-9|DlTt`C>N{0ui=Q_g z!oi+}_uMgwCVsfI$@lKDltbVWee#M9ge&O+dI4|)cI)c5bM&ot7>mKfH%@!L*R0)oh9mNRd zE`k2#jfi7`Q}A5Mi=H37_IkS|I`6ZR3{Fu>rv;U_k0^8DZ*WY`om08B<5F)fi2EVH z6CIM|&cNWp+ve;dMUZI@hE{DC0A>mgxEuik(mk!Q#Moj~l@qfBpA4C`=}aWjHtjL* zt(VS|jQrgC>3+6JR?FAy7Z(-hUgvk5G@NAq^KGtWi=Qtypn5m@0e~dNvq1{W*=GUa z2G-!`h<*UlSEKjb*D?tT$Ft#(&NKqk=ceEc@zC?D5l>cvktyp<=K)_Hw6CAmIijAF z?wNAf1fN%dp*JIy{CtW31_Z_Bz5v@A$X&-NYH@wo@2(1k!uorbr2U`MFtWab7|ab! z9KRS0;-a3|h4@CNsC-oh`Qd|Lp?HffzuN}Ri8_af+x8yYH9p2{0rg{2IYUf#en;=E zox_b)7NRuzzZpB9KE5MXCC2Gb&OwOJUD#>X1tE2L6XM|EDXfW zZIk>Ut7{OW<``boouq_f7ID#ua&(SqKhGz?QP?LCii*4?_*-(P^8jeh<#nRRdP zKF{r*_a`Arq3R$U%X_#KJaVOb&Dn-A;A-g(|E~3cJ!p89eqh0%QPpyFXE5h;nZ0cB zDanShPsLSZ-#1XBc`w!^pbj7cwva#4Z1i%(g@4O#KK+Qr#w1p0664JvzJcp8b@*u+ zPw(i0KulpWdx%U9j4nKdS3zi2<_KLn1iL#qe!n1iyR;JP=wh1a9%MfpjT!nVxL*LF zc!o7zV)YCk9rw2#zZTafrpnauN&ETlQ;sJ!`ek9iF30#zI~7u&2)=stYAEedX-919 zZ2=fcZL{~q80Iw)3=cv7g0>a_;Ji8N36_Ik-Q0XI6x(d}WZIrkheRihF%TY@lv)0U zD|aoG938+0R5wlilZiXY+Pzncu1@)Y`)LpQc}w-gY|jDjC$8u``#ZkY*T0PYlm7S8 zQIj!8z(NkC;4(2745oy(J*<4qRTYof@isO2D$A<~L{uC#p3n1Sr33)&yxG&Yhxg{| zG-dc0lLQ(C&G^;+Q>tDqc)^*L+9>0k_n3^k_syJncIKqa2ZzUL?+ZvXU)9>G*p0Im z5b8n<_07R$XZuL<$tfXwmqz>qfTFvopPGpDoaGPkIO{De&8})%*5Jz$Vo=bOtAYUh z3q9FK&sfKFM}lDRDfy$lmQ=I7$iBg1QI*$?rf%=9_}K+mVA!=42_`8l>yH6P=|I9m z8zbZK>h4*4#G*MAeqy-uAl$O9=Y-XRiPpwRdV%gen{t9s9=CvTbqwr_XLj!eg84{Lz|(hkN|H9&C*| zQ(tbgVJrvJC9HtqoF69T;VA%6`?7&k%G;;>8JzFkWbP8#Us5Gv;exiPpa0f%48hpL zAfsc)^TOAF6U?bpvmff}AoKy1jYIV5WkuT+5gNv|iW9Fa>cOBMEvh(oGy<&9>^;|M zYNTHiYpD6NxoN(pvc&kLC};Nca=zGdyD2ZRc9@!O0{59@k_m|U#l20(`{TLFvxWj@ z#0U4`i7FAFAE=vn#-zxdi?JIlf~VQh{>OLG#BQ@hp(Wx`GYKn8+u<7n|FmWgXWrMm z1eRV8z%xr}p#Rzf3yDIYHBb*E60t;;1Hah%P`@`0F$qG8O_EgB8{d{A-MA+Vm-j1J{@V@#MFuf(8x7#^yax7lDUc|#4Hf(f+KdkE4?0WKMJo_wf@ zRFUblH65oDaY%32_tC(W_2*;-FjGV70nu*H+T3crcV-usI-MfJOW!y9NpKV9Dnj`7 zUrqlOK}gC>11#J({*JapV_?sy|3D=VlJuXF9-Fzw8UxAZWLD*Pb-5d)U&EEIcua?C z{qTZAhaP>f4lFUrhRQt#CIozyUs*hMz>E>*=TCrp|HYZPn1*0=FUKdDyT@Tx!#m>0 zZ2P6mI+0THd7jd#?WMnYZy?FhTXfmbbB#1bdwJ_A5on=Ixlc|< zwSKsm8tIak|EVB|h>zmqnZiU^$G|*_L;A9C<+q^1lG~XP;>2WanLyg7*yRjgxXp(% zmjKXWHJt%KkXHzJdE8(KXHlX|0YA$2JYzr~r+$kHvvUbiv%HGtT-)**Z({bXG7_xk z?k4cQJp}>&tY^&I=Yb2A=}yPQ#0*H^bbazPIGf*>@zKMc1L~gNV$!~KowTKeUP$Mz z%~7I%7&f1Hk2@}SYfcohPqrMW{FCr7KdUauo$3BgW$-$hZYX=;``YIvrL5biL`$kq zYia@dGWAy^TmJ8#UhQMNMMi(sH4)A_bR%jYC*a)RLZyqN~HeY`~np^aR1=VrCs` zBwvl!2+I$|T8GB4x_;?jucaBEV~c~T74)m|t`O+$q;eamPE0B_QEO*4G3(ow$xAzj zxrQ24qE}X#8`YCAzeP@~g)hw=AGEncdV^-YV zA~k-O>T7fG?R;fmp_b6(&k>iAI`LCtRKVsTd7u?0-OCaH6RB|mqG;GJ-R`>ZQJ2dY zTe)EjeIbTem?1#6=`<1mM@+5Ze(H1wAHL#uV@9T)2 z!Qw#fk63&k#KXxgfibvW79KK!-GKyPxg5BDp!&tQ{ZW=!E=x4{ zTQZN1RtOjjo&DlsdnAhUY{@y(o9BRZ-Z!;QJE!IyK>k~&GEtMG3RE{j%mXnw!~2Dpe`h+f z+l`Phg2&Ggh*#pu8xSE4xFw#CUNpQ0)uwy6kOZ$nCKnIqcG-2vs|GUL`3 z6tNcUUnHOKgsGo-wU#>rpK-I2Z#6*8P?Y}(#7R@EE-)-5+UukeIOG_>&by=OAGNi?HE9}EcIHEC;buvG^UiueJC+5@hMVS@+ddG=%Q&e}88o8G zCt|W)u>CiG=F)ntt<)e;{&=G|d(ZpT=;yNZy^2k_X`0b z5@8%3whY;K{_d-qxww;Um7t;JjNg9YX(1PECZM4%eEx&5#f^gn)~4=~L;A&@Ze}!O za?v$hFjaFIHrbUD&5qW{yCs_DJ4Nzx?)}H}WnE5ve?^uwa z4IjrQA~E#z;>et0#x&jVrgeMddRfiFD-|L*`brY5DFhIT1m>1Z55}b3nVCsVu*9gQ zZ9RYeUJzRt+jUF5!_%ZY^BC58P+*r+kRznz7Aa# z@|Qnuo#VO-=HjiLu;ZbolS@rhk-4n11qFV<{narD^7#4VHUF4ku82w=oJ5oCWe(-o z`;plfpmgwk<-41i5!uDx9n*S_o$RqWzxO`YJYwGE8$X#U%ApF#kDPChmd3Z-_x9Ln zS1l#%iMA8ae7`HB>hx<|-|6R=rWxh(kJmp7S9>SiR8G}&dm5uQ)HeM26Q*>H%mL_F zLC$_*K}r}us{Zv%cNmtSn)tTG>CRZnVz@B5 zg9FJ&i|+P|?90HMXGjn)H?|!!PFS73{@seH4qYN;l*v?xp9EZC=nXp)V#Wmsor-Xo#s@%hB-aF@%wAYI_Pzy#P@4apZL+soL1Y$d2g+xM?&Kx z;q;`^i&6S9h|-<%(B=s}OoqeT+Pi*0;sPnd@Fk>(d8E>27`!hKYDt8!451e=VIsMI zZ~YSeylpRONmkXY`?H(-m4uccpZc;fKlfnMR~@*lYs+bDqf&!Zj$%;L9v!XkefY>? zpZyPy7M$MeKO2d~T_y+90|@oSn!tj+lf5?pSLzh?f6{kR_#HD((j>%PGwMiy?0O!6 zCj&C8-^08qmhkG(1kC`8qlyTfe!Rp;KavNPip57u*T4khpsRc=hzvW>fUE+Gd5ZD3 zmK?2PcV74TXOqkSh%8ueq6VUAJy8W9&<$_(baSqOa-41HbeFz_Q+c-RN)m*+2`Y7*Q3CC; zk0wK@KbDPS-(2jN4Q&KYYM1^*tMkkUM80lWW!3ljUMn?taxu?#Wp4iCmA1BEGj9xoCsDoQxvNovJ92f=b*KA|o-B$&~<2yX7~ zSuzi{*=5>_5f~kt`?w=2eM*Ah4L#-!ybGg9UgnW${jKX43n-a=bJN@3thCb^nfO(? z_YD9!=@aEE`S!ivmf+S^C&x(RVv3feOjUs2N!PJ@+!MDQ{Ik{N!G>O39fSTP;)Z_L z5-q90e~8$G+Zfd>iya5`--@^hcHEs_Xmi-z-a49&$d(i5TO9#(XgLg5S8D$S2=-CF z>kLn`{dl41EgP=&^(?I>*3mhwPLir7$84wOLPObtlfBZypF8GxVI*ngO3 zNu2#}!on_PKvd*TR%RKf#Lpwu;^!GhkyXBMzvI(QM_OR|kA6>|OrPqK4|a{kq@~{j zDjmHsY`7bJaoSu(x7O#T5u8gcAC@v@EFA~zD=j{o;jq;nFaP9wsQx~CbF4gae+#lG z1)2$!)+=RNw`fwhZ>0TJG$$J3aX7ZYuBQ8`2x3Go0>#X+p&tShq1yUD1F9LdfBdb< z2i9Hv71H`r<(`KMSC)4j$4>Et1I5&AJN5u=^hV?;EXYeVsj{%eYUH4eI2?#T2=IX4|oU! zxKh5*?i0e%pa$u2qHf^x3}W(`87CXg;(AWMG&OvyRnz?8(b_?;-gCQuYl82aai5OG zCeF;Jr5E-U6{lDePLriCNyj)G3%#jatHP}=Q3OrUKE?--^qto$bW8R&V8Z1Q)Tw{u zyBl{F04PIyaBD@Mu=BiBTV_{gRTKRXHhYE5lvk260>+M8NQ9vbv9=RQyGcHqk&Y@k~J;)(y&J~I3tDN=l&3gT&kTjoadm@Ax8JGUA z>RAs*m^l9pcEg`1VYB(;GyO3avaH_)a|-!7F+^VWGO0{OH)=jE+~d`gMv@8}ff-`z zB}*M5vg0+cMN-CeA(ElWwlj*V|Z%P4D1Um5+4F*jI<7RCf?j++<7nepARY1 zeHZo(36Kg%6f9rK4x?o(UqJycSOonlYUvO)Fk*vpt+c~>Busfrz`O!2KpWb5S2sR} zy7O zBo9d?H0gh$oUzL5UyTC-(>2=sP*}jmgNixtNjUJ#JY>iAG_^$KAg*=Ln2AQ|^`)#7=w`4;js`3qifyNls zn;hH3vVf;yOAm+o)qWWlSfwvyR3VE12Yp?-1CDIy{2R@g^1~KfK14d5uwBvG$Gv;* zT+2aw_fo1f=I7GqaEwg2VkK0$C(4#>ug0+jV?Xm;DP}b%oovh-Q$rtMeVTGH!08cD z?O)m|_%0w=50IdoVnxF`mZuFdE~IIWj-W}9WpASkYmSY~d;P3%EduCL5nqh|@({m| zi6=N0HYg4NBe+@;(+LNNBu~$$hpI?us^$rb*5ju`iBT(X{rwQz(Gn?A8=OTzbwq&l z>W|PR=n$dufr&K(pXi1)ijAMKWgd=l$jEa}_wBs88VS=FKrzUZlJnmEnc#g+U7C#& zb)43|iI~I>wRBvtc}N#Di49uT!|8nI45SJ5cRxXWbsGzq+Zpp>d!6ESvT(t0nih73 zD3`uz`nlT#$Y@ZfJKM9V-&~HVag17@su$lGPuyymb@NA}DBcy6B**q~=uisvBhn!w zoDV6-3K;`###=WWEIjZ^U0cjj&ylU>uiU`vItqq}zK1h9q&BdwfTrXHaT_hjM*k=- zB!#oT`!$hC{THue`N87`g0mcaeofuw;f1oKx9?PYnrrAYQ2zbrT$-xb4!~@HZrK?v z?>n>uEJphvLv3|m!f1@JO9XtXSFWi3MW>i)W4jq;65}y|aD;%uHjtXSOc&udmhqq8 z=Tbp-o#Rb8gc*^niZPczim;FYQ5pl0q z{E5m}r%3ZT7tHUi6vmU7q&!}(Osw*O4ui%jXOi zAN*I)xSR1$&ZMJ0CzESo8nXePVy*mWENBUAV5llgylUE|O5R2_R|rjeN;JRuEzG3t z=~Mi2g*LXT)gd+j9U{xF*{)Mtc#FbBc_^kj(?Nfz~aLmf$7 z!mf@FHwzD^0bW+@zXwE1^qU5Fw2N{b^Rq<)rJp19BRLNw3{B;TrQn8apw43~R#fQ8 zsMEGBCs=g)?=C9@HlXQo6G2Tiflp11el~4=6EPLx;=bgE=q6;gw2p<_kDva0XITJD z8-1Pq`1fAFE6QmhANa4E;Jt|3ZJjPk{EI@JzQR^KolDIDz;EH+Why<5#kQy(6~o`~ z%3Oegf?}gvaVz+-Wnpj*$b*{D^NHf!PGM_YI zY{Ks3mrBF&z4LH22@bd*3r&;&fkXSHM04=+6v|=hWYYfofbdwUk+M9PsY!3WZV}SPkRq;NInEIF^HSZi{i)QjNxt~Yj_g{Ut+E*kR3oQ10Y3o&$q=P zjxA$}09dLK*x@_a(3Y1jqOf1-^*{P;qRwE_e{3?9>+(U+6F`Fc=HU4y%-l5~E>`Ey z`l77-L8HsH7nn6%8lYKh&;-lEhgD_&#w0jPSSgIX-+|Jr0sMDZGTtUp~*e&T1RU$ z^D1QhZam*JAE@ZH=*fX;MR|L3ACcjv^9s@ImpPtEx5FwaHCHcuL z`ev8IZSz_~ulbh$^K2%fCL(1v9YUd*CCQRb=s^j%gzbJfi@)Va#pL4ujbksCqyN*S z%wR<*9GS2@`ER{qB7I}<3{Sw8s~MNQl;e|m{zM*?6WY`c3{6w!t!ZH?-1}${IqA4n zOSwnSySc^m!L2;IMQqLF@|hofRm#IS>FV#3LEYH1W zKG$91a8u~$5sFK}OU&^>Vqp;2M@>L~Uof@}ORq_czDM07_c15-1$ACN<>0|>++L;z z&7i5ngr?EvyzQ-87a@uY68TqzDz=TiCu?7WRxB%luMdbW)wg3a3OtCm?}cVuN%xU6 zZ(#d}h%4jZEct^=roOSkPYMvDA%WfV5Q32dd{W+C2!I$wyCKOPgV{#c;kcM{W4qMe zy2cTGZBU5uc2PT>4|#|^7YH+*<2RNwcdA6|X` z)5Pce#oz+TR{ch{+LA&w7C}4RKcPSVgmPhxWQes;=<++?V13a%nWREmhx)d@^*St| z4`j}&>=B+1#OZ^oiKDfoT&j^1z7`CST4S{&(y67qoPB6&eZyOKz}kNJfc(GF4wrdf zZa4MaXcGQT@0=iJO2@3_|9wuKM}i6qiJpm9Nx`!fW85F!1-@W}I7wTcOVj${XPtyr zf%%JTkEt;?@8g4Gq($F5!_xX&Ep9u6_VA{S(ad3-q*L1ErWiN8y!1(BSCXVFfWEIY>98g>&5J~=CSo+JHcbuzu~m5|G5(H zKuJe?7+z1ro7O%$!$^5K`x~i2&pNl0(xHLFwPJI z)uUfhz0IZ4d9GB7+|;jz#Dl|{L3NMiXxkP;kq_V@g(h=<6VNtj6u&@Yn>6rEkhc{( zQ$%8e_}>=Xtcx^O z$A~`SwH=iJg%YWgQ=w}Ia_8t7VtY_&$7N#ITEnjbX_BGeerAlY2caFA3G0qL#Y&hl zM4^rh_*NvSw}GqzFw8jr4(woBZ-)McYoLev7-?okL7C~31N<-v%Na}p7*b9_TjI1S$MGiBz4H$$%~)vXdx68OV#pum{YWmVrRI)m)|)&AjX5+i%%=)~ zIw&U9*Yr@3zRAmz`@zAQW86&hNVUci#K+753UQ7=*sIGT^ z=jhkbRdsOq^7s=ESK6$5)GWDs<7)gr{;TW(-th0=*BS`36+vbySXCK!e-;S}!IpRi zl9$sVm#z5KWCxdeKV68ITg-_&N&N%4W<+F|gBcs-+QC8;%D0AE``1lTTas4nekT3! zS}yG5%0RTr+V%Dxb{pvhvjH-$(vuW8%joj!nNJ?6h3|~3GZ_~(o72P!Ouz!PF>JJ>nd@$3^-$ zt}0h8M|VLWvDlXLntZAJQga^?8`=D@xry{1UN9JeQ0fJqBrSeoK)-dkyCT0Mw* zo5WWHC54 zm8x|&A)k1MCO2iov(BN<;;Sb?vqI5H&Rc=Ds3&A8j4?2|XHC{&$IC`!CTH9TllyFk5TwFjetO_~ncVU#cwr$UTaC5cV&O_RV%fXjW!f*Nci?5sAvs;D~ z`kwFr6D2vl`29wn4V#O1hPBRP*Lh*(yfWJzt{b3q3H$mLa9*En8EF;R!L3nrwctgAf)EE~SE#VZz3N>2n8UI| zO{!_eb|97P~JkvD@KTc#QPf_Z^d0eYfyKHnQAxmKcA0&zDh+9GLJ z-jg*@SK(eRUDPhbX>HSk0>&Dw&rO5n5kuC6bAk<)ucA`C?2$EE&SDat!2b zuI;@Hs>`D3US!Z)?l2PSR11U0ik;vFA6u#rKUnd~w-Hw$Z z>JRHV$x+FW#JDX8Zs5JtKcpfmHEhqT@!cW$>ZU$R@H=MUulK>3Sct;bm0+ZGKf2z} zj604d(6Bf}qRz~>uEr0f0y(Lkb(!#Vv#c-v(T0z^y0pQRI*>2ae}~a#u}$#=a*GC{ z^=0VJzt3uY4{H*22_^bcW!UFI$HyT-lvF@z)!S_BA&ea$INlLVZKJP3l8FCOV5MAh zbXw5fG&xvlnF*gSNm1=s#qb2~mYs9o&h}t20<6LY8r@m(r*zX_kaICrE)zaqBw)4- z!L=vFY8f(B#6DFwXw>(dWdmnfnc6~hEhXZI?#PxK%U^!QR1gzaDEzec*rv-@3Xb44 z)cJ@Dw;Lv09zMRzOw6&Yy}fC9Vb|-qGrQ-rPRc-1;_ZI=ZM%1h|I&FK5g)vdtX+7U zCQ&MmwFHEkcL#G4(}|4W76MJs3YPMeGcEVmJF10Pi$DPRC#RJHm%qY-H?kMEC#pz< zT6`eDw&}uU&lSRM{m;-(eLekcRTcIm&~Z zB9rUagYNKE2j4f3XW}A$I5zv8z4iIgWOm;oaFBHOZGm$YpY)sTV@>K@(Hmv0KPngr zq=48%n#K7i+DeaM)~&g!LMfB?Punr1u?xORnWieT%% z!b&mgTt)j{p(sJ?U7HLc=j;Jt1mD=z;Ew?TM+33ome8WpKQ@kY6>55dYnM#HMJ7Ss zCxQ5+H~sB?K2_&TQWRRGg%r<8>qs&@z1EZ+ISgvR6uNoI$pHm*7J+NBxASfWHk!{uaGxBfBZAPixN* zG@1A#1#>rJJSv9)Ir?fEbT<0Bd7dw@7NPNA@LLRb`A6ILlvX()cYdBE!JqGMz zoVA{U9*Bm?;-ou$ZJZ0j{)A~*w|cL#2y`?Ux1I5pwSx|(s&sQW+a9$MI?0Wk?@1|B^eDUDR-Qto}=nNHwB#S@Zl z=0%z5Qzqb-%kviYI8Bx^hf6`0yb)G;!Cgf{&%TLJ_5O|gKL*Yv(Tt(%lK{Xhu zK9^Txp|g#lmwK(!E>dpaT5AEk(RrSEr7!G#%Pq5VHcMUvXM_&>m%iXH-HyO0O69Su zG0|PBX7jNrJM(qwl`Yvii~(!%zRMNeXNtl0`4MgzK;A=}3YnLwV|Z(l3}hS&?AaOT1H74NGOaTve3&H~QWQEfRxqGijD>Zce_L4CSf03l`%<2EYzv^&>dGPY{{wB9*g zhvq)8Lpo|e;`ZPN!H`5G2f!x0+~zC65d6ytW>0I)OC#eRzMi;734Y|nrUB;XJyMK$ zW$4k=nHH5+SGdA1BO)IS=7YRd{C+0|$D~OEfb+jcpyQ#ywovjf?dU{XR`T4nXz%xJ zsimLwaFxzrBX(o`ZYI_u*7Dnu`R9wGZyqR`?o(!U3X`OU>*Dv7jc3e<9+Gq&M{XJ} z4#~e_PKcagv9=u8>MrUu;r*YqTo6zcKMN~PYG64)W;qO-fmy4`F?>2VRWNj)H?_nY zKZuhutt_o1$1Az<*H~KThfVir<$m;(pT@>tg_>ULGRVqj77m6~lto`T>i@a=%N%=ngXu0= z<@))-4#U<3fjTo>i`NcA29^FhMugSnP7L>FBDP}HUoe%h>62cyI{ZP*AOfn#;T@3u zgoyMTciTt*=q^AEwX4BqGR1O7!GG*lzt##7E5E{T^K6FkQF|@uz{xbRQr=(HBg|Lt zqK5_V`tC|4tumkA1f_O*)3Au9X*`9zY5#61_v+cub*+9i*?sEk*eBBKTMga^1xIiI zoqca*)p-fP#w4Yd8PtY**k0KgREN9ZyTRbeJ*^)KmI4+)4l4ouSkFlHd=Vg*@UCJ^ zSWd$in#DLVK7aLp;WOmAP_S5O)K2vTp;~KA+uv*<i`=wBh8%eX_X!a~txt%Ae zm{m{2@-U$XL&55BGyrOhxizq>u^@1c>~jR{Gpkm$%UfJHT*M5D@kDr*OM%~+Ylp87 z(FI!oaR^G3XqqZ)$Xyu5^MY|~e!ASR(ng)qyBZvvLHG>1Y$Ga)K!R#Yb@Ykfi2Bs`cT17Hd zRtB^Y5f;wvWTX+}?#>Q>2k`YRKMw;$#2Xfr!Uv@_R+F zk7sk0wkUA(Kpz5gn_A(PbQuE0MH<~z_Vc|{e+DX52!XbJ@?^n6`8`F3EIcO4nb(iB z4p;8C9yVJXG|DSs|D&YVj`cQ?^J)C5$^aY2*C$QN%7n`Sfj-l#CemYhb%Pp|+*Z}=-gl9;{r828TrVpl_2nM?BcH&+Z4%etM+6+3l}pb$&$YRVY1U! zrrTTlZe?wyEV5?;B+_?x*1(mHHPrS!yx)1^{)L~0$~aLQ3z|^y9fG1%X=g-7Yvh7X zZR#JJM-=0^xSd<*=C^RMw~RXZ+4dfeG$WeW8+ zApwc9Ep>)>{Hw!xe0roq3eHFwB)sNWsM`Rr5=!ef>rMdX$X1@W^?J&Jh>Y#BEUd z>9L=TYAM7$+)!tqr@nskO=ACS*kn3uVzV1|eGgIgpeH?d1rlHFKk^lEb2o9hU;T#7 zPf4p^B$Y%c=L;tO8l^X%;R~-n8`yhcHg0%I2pFLXo)A^MiavQ?mz`fR%;LE#uCS&dyvdrJD zp2nGVI;`(V^rh^a@p~0znJ~6jXI@HXok?*%MVbukLG8-dsrt!+cM2RuvR|*c4)HUb z-x`1Qe)B49t3PO-NMjTXi2G{kGk~w9#0Q5SIYz!ZAC%->Q!=|L8#gL~;VmrIdQC9) zp6e?I4@~qzFlWLysWp7>loH`HV>TSB45CiGfi$ko-H`AMrW$NG)%q_01OLAf&7NK$ zx&oevnx8o|E&yO7MZ@N6A^1$k{Joe1nG#&Y*PRc%m~)m(+)%<{KPvUVbsc2QA4HPM zP0gkbPYI%tO-e50ZbUNb;*s=+>TxdWL6mLA1q1IY9lCg~My2qaj0@*Q3-$_}9gWJf z{eL&R?qHo-J-q4@!$_Zyn%FK%U|i}gLv0D4N7;L{E|0PuCB1ANu&sP?CL*#ruFNqr z#4LZ)?eDFJ=hv6$)beViMe)3XSpXQxxzGpAAf(TwN>Sm{Xfkw@xi9KercRk59%^W@ zvc7tvmO>8ZySKTFx0Clp&4^-LcBPEg!^N0OjK(T#Tsu9}8IMXI*GA%}d**5y(?gn*Nd6K15k)`CZ5wMZ4i^TA zn%%hy{kUC>(sJJQz$HDDRz$$yi9{$Dw#v!V*zqj2!AEPWht8sYkYoJ8H0c?}))>NWtFfT&uK~%;@k?EeOr<*s z?HT{uazDIlKV+Bj6O-vhe|8uEuYSRl&5=v)5(B+dfM|nZJh_|h5X+&kEtBB1{5jFfN!XBOZ=#}6bVo$|&v~D;8Fw%1w|k6SHOGr=fPHBMAJnexz-T zw__beRlw`EM*I(%vA42QwJRb_6KG#dTgag0ytz{_I8$V3@ONdLHCNhsG-$--_VrcJ z6`p07v7NbBgX?-=fwi$7d>W;Y$#BA;<=)w~u+JC)^5x zB6$j*o_5Lhe%H~vstS;TL$Dltt08(vqy@cL2(xm?q!}VWYFF8}alyy(6X%e`vV;`* zQR(1_tYLct=6&od#Ge0bTs!;S&>)z$&C_K9I%2vD!XuNX0XggQ;=UdbWT%i3YDZrxeqYv-b}!V3FI zqQ6v7wf0vB_!C~G`qe#G25i3je)0Dqr!&s2+@seAtq*+u7rUR0TJN7qdf)xB+&)i# zQsIZum&=SLHLfwNckI+Ic->sMUT`k7xToEsW=0K6WwUY%$^$n-Stxuv^QiuNQ2+99 ziQ6!ul{@TehR)C9#k$3eqDc(7VP`~>OQ*Lag|)526|u#j{0+mUQ$uqu>H6^*$9EWE z&p8k&YzshYmUdX=*1%w;hto;$g&%0|b5V&I(WTRNNAFq?xR`CD?%{DfEEx!EIOGQu zyL<*%`9R=$Of(4ECwKL0P0G0Z!b+^{~0%!p}-cfQdy`yaO6GAzojZ5y5e0VTae5F`~ri2-_Q3x@3y^vl|OK|3`6Nvio5jRow4e0y^zx8+D(N6S48&8_;#h1J%T}f07}%YSQD2ih z9`1Nz7XD#+AU*Q(U0X~UHA^N*!l5VRWuEO}YO{W9%8jZommjQs-rw;Y{36KZwxdfX z{8h)W(*4g0MD&PoTq8X`esyXng`cA{qs3wQC73%{bctW$~u1 zI>z~R(K=jDl>WOuzvt{H_G*d}uz_fyC>dvi_W@UAy=!VQ*VN#V(}IIfm0>&91Vem* zbFEy7eIRDP-C^YPrjuOgV@KEbefC@5#L<^jJ!7b{h72$RnLMGi(X(wM_s2Bh z)8yEot$tB@=sw6|vcvpcur~SD@9yzcp8-1>E_XajbK?}sna?>Lwd{Sl$?uhnN)a(w z_|5;?iSKu=E_^{$8CR!NDom;as<74&srE3GD>Wp=YgWnpDXzYOe8B8aJ+k$wXcLqq2^)6n?R`e25ouRo8&4lzM&9g5g1+B5dcaT@OBDIAcds zKwiUVAw;1I$kJZ$#K1PE%F_Ek^Y)2r8LtJ7)M{6m?Js!kZf0c@ZV`@dK>65a_JEs9 z{yjcf{JW&~MdDS$E4Fi$A`RH-Ms}3RT%Dt@M1V@(&d(_ENn0)aZ-LCg#*T`S1A+n% z)=^Vk)sQ4$MvSpu`#keN)OHhHTUIK)2n2e`e72thVQg>|qk0&K6&MTj*LX-?l4~_` zrmaz;!x5&0*6z&${z=seBPmK=t9Y!ZXuerFFYEEInS}jp;}7Tfi|Y)kt<)p@GU#AQ zFCkjRY1hjkbn+b^h!FLJvmXYJNeuf9j@LA%iRnFS0+*8!?yObB3h~jEroGRCPSiE^ za!tbd7hJMe`xD--7=4nh!KZDOZ2xt+8p`DJ#INe=CTg+gL|xpYdPpnkb%v{Xs3o_o zm7lQGR(Kjq*&!{%l%{!!q&o^6mhbPa8OaA(&7T_*l$LzWt2WhFg`OH;ui@8R3AyK9 z2nd&X^OmL`Ce>@SXrolcs1KW=x{FrD)T`VPpGkNCH$LRR*F&@Z@U_ z?|x@e0hiG-i$~52Wt@@Bvgg|6Y3=%phI1~=b7o)XRF?^`D~)pIs)l;w>eCO!HES0g z8-Fk|BH7rde8ztpG=D`6fD0?8&aRJF=f24`dS4_^@p)t!)E7PCf-Ko@I@V^&C zH1?5--;T|CviJ{XhFqfKH+ddK)nUhMwe_WE&Gu|{(f&8iun)F3(R}gRjA@pgib}Xi z4zCaWZ$*Mek@T%URHpF={<_d18{FFT zs4$`7o>)MZq95+<1|P{}-tTp|TIr1lOy2ej^CKEz*KyzMYX=1G2@xc$<&hQ{z1a&S z&YOdQW<8WcCfjq{ynf%BYaaeqzyl*$ZyB!rYTXgMnIw{NuT%C{a>ftVyf&iyvQ6(O zg!PR9fJY8%WTLTd5IqJmng>8e1Ax`!P@~nwgctVHuL^tDgwcWDGJArxM}0hFMfObH zJO=zrSGGg8_Bqr;E}zU;A!0YJ`2p&E#3m|u2TLa%rOLmOee{sRfsDa#r&T&siDbK3 zCGz*DxSBEt;%9B(5VC??U`_m8|dD zNZ%Av-MP$4fv1dPkvr%GWIflGhA5H|mb1>CS=ZM$LE(R%@7oAY3VDCO)}4{cB~_rv zP@fP95}SG?0zY4JbxJcmssDhnZ1r%R7jkQy_afP-qLWvS6jKxRu=3+x{W1k~6Q-p) z^*Jv$3ee6=$>nt53IOiO?y+r>F=+G^(|BdN_|3eNIw;&sO)5kb^$crz!mQ$le52g=8+% z`x`ckEqX_{*@YqlKv5ZJ@eS)o!gMY?d&isqu7vIXO0nMpBH<%y>mT8io;HK+^^;`= zyLeQ(AmF}wqEt_(YyyV?6~WhjXDmyK;4&i8`OA25hf4#oW|Fm*{n>{D!vUja&SGnH zjqO1#5sl&c(Ud_V&k99oWL`@l?$#;swV#+tmOe*F52*=+dtyp3_mn+;z-Z#@5>%<>GDw z=_m|mv`kSQ9QASJCZP0--_@y=&mJ3GYHbG))NfCJ?f==MBU5a@((}6@#8Jx?BGSxI zpZ4efN@rI()4nUMsE^?^8WHjUtUwwLerbuT)4I7*?(RuwrTIGVWB(GLWZ-bdTU~oi zN9iLIaQ4WWcZj$9;YY0s!|)JaCrdkIzSR*c(HL%RjEtkx z%odZZT`(8uOUuJN+oy~C0k$NQ&dLILKQ=GTz&aqj=yG`Iz>c_Bs#14_SDY>;ok9dCE5~eaZAQi zh4`4!J&S~A1&%ygHTV?mYj2+j!R;m~O8A_@pl=9g-MkmHL*?i$DnnES=FX)wquv(1 zesJnOtvqTAk8Kin2xRvcnTNoh(LvztLC&(FkP^-nJz+!4tktdh+W4vS@c10Egwil&n2zsIl7DLlzKJ2WclW5ym+*x@@q&DzF6ULsb7d`K@U z*Y4Chqp)`E8HuFjCTE>~oJ1R@zI1d8zd}z-z?s6|$5Q>ESk3aW)XL8_X6&U?VWu4t ztU-|NAfNU$J^FE{f-E_CLL>+nDD99HGQW90$&(C;DzGbr=@}s8hsXS$ZdApx%ZJo- zqU6acp0`q~U*TX1eopI3J`*)MIsP!S0 zkIHZZ8M~QJwCsT%=c{|qqZ%9M7S4{%F)G5{L81OQE%-hBUvYJh-^5bry}IXpkE)Zc z;#qyoONLa0`+LeH%8ff8x?t}Ug6S==Ryp{B)+CR-HdcP<<*~mF*SonK(qUe%nf1zA73|N^^YEhVIe1mJ->-K96?RfgGHtoie&z*# z6YhV6F;##~i;H47ygVjpS}T;Dn$d$)zIOuua4<$HSDBtd44fgXkMGB-kn|cA4xY2b z%vM&Or6VN=_T~_BTjA6H?jL}Vw2!!L8P`fP@t;F~f@1NfIH=dy?<}pRTpynqrWTRp z5|Gzqa}4rDO*V7*JtGl6_#~pW!|T!g^lHD#UKZJF(33!zN37D$Xj($OO1SbJ`tG0l zR(-c>SLkgm(m$a;eB#;Lc2WwTef$V1ad>G!YM_pqpg-latkzXcrp(x0jq@$*J65V? zoj$`@FwIm8rYL^Vd~5E*K69K>Jl&!YTk|^>EZ&g^i}qREq~er+;(jE!E2Mm)rE21Y~zg!-@sRm^Ak*bnAWC{Wr6BbBUj0 z4fiH)q#!o1;s1nb+)P&2SMkgKj?9{hWz1r&+~J&qc17e4v2Qo*}L+} zJ6nRv4Z0yusR+d5DYt3QKsN{=mEICV6x$y-xI9U&ReD?_lFoywo7N8&tNM{Z3pyCHN$`Tf>x_aX?j>Q%vr9G{ zLEy+!)CGOLa&Fn0O7%b4?Bu^jSUhs!_lFE9M9JF!o_Bhjq_wnzUs~7WFq=6IWgI@{)7l^ksl-p`1 zBx@y_g_9&L{Ud+kImE zqq|1lyOD2*+fhg~|M2r*3{`ODgtp`P4^?q3y}B016Sw)2$>wf84P?rdpjU9Nn8N$O zyHV8KDzTVR>>6EyL>Oi%rPr4^*p>nO#fHn)sSJ-auK%!TWjkyRqESj>)LcrvC|`pb zJMULF8IhIU*A2X3C|Y$@_R?utu4eNcL7so;d~>Vt@rDdCGqm(VxD&h0v+3DvpWMh9 z)klB+;4&2MMp*1VEj3KEO>=K9&LfPPBuYq;Rr3zKudFzHbiBXXlTGkgJXyH*hXomn zhHB+sK(kPk+~Ci_h#N`gAyI#~@h^juoq5D?O%V5FY){-%h0C*}wdm0x9D}3GG z62uOt0PE+N4Se4JL1o{4Q=Y6c4W%i4W`@IMymxuBmfi4Cy~$!v#VZl_7~G!giW4D9!CaKdb#byT zJhypNoYTu?ZWM7w$cZT@5rH!>fmG&$c^T$E8w#Q=33x5PGbekNFp%JXcHdLQVU`6{ z{B+euE=p&mcP_hA5PyGH4JCX1snhk`%ypVEO_ZxaSN8mj;>MKM0WmLEb4MIF&{{tK zzT3!~$AgRp92Lvd{U9N1PUK@@Eya(&_CXK9v}l7(14ZcxbuUHi0v|uT$=Q;_xe+a`u58WyJ~djJq>i%FYAj zK$B*ffl$2%gWODfofOWyCy>GYJR2^5#JysKE|_q^46`zu+wMmtWY7%~si49hmAYHXgTo5f-i zrlxXru^`qhZ?A5{9jbNt{vq?!;zq%n^>7)V`mYCpKW~HgtBS2ZR^F! z-0A|ZkYTPa@q_2^NyPM|BTXK=Wj(QS%El?U!@oe>A!0DUFRb=QR2&Z|qFplU6G@RJ ziS`f5o=X%Z>#A%%sumszt%_qw#+LcJqOVir4ote|)>NCu_?^Z=5V=|} z!{I3UmiLmFZv-6iDfaa7GK7q1U|j)o97QycUGGij>ox8K$xIj%ONE5%A0zJ18E0339Fn!St8YxS~^^ z7W5hFn_Zo(BZS9FI}*g&um$Ap7jGSyy!q8Iwnc?LR`KbuC+JVY*#wxij(EsBTq7DY zjA!>PjKm_92w+V$oD7^98&+)84b3#jPajH|u42tLYm-(#?`7Ki*}!CORGrKHN;lq$q+ZPa}=L{P5wH2Pn zN(%OUmYYx-^VzKGUWkxC(fUuJ(JiX)Tl2PG6_n9>qA&hl5Hq?Ouv$?H6OhA(5EhV+ zlstgU@i>Z<7RtG6#*h}y81g8sG_KLWlPeQ^tHKPV}lAhc&xGEa7!Yxkg7L18+wMF1@VpD{R>-SPV4Q-9*O#@N+ISJ+mP@H3Z0QD47O%`Poa zrjNLE8FIgiv1`_-Hgs6{3oX>5I+aIxVMknl@I0dc&Q!r!p++3A4fHyXlNT7t`?|e| z5H-sY>AsAYOvo69##J022RjWe}qZjkR)7+S58gH@Otp9bm zVad=s!_FI~QP{qRYmplw)5q0;KFFPPEn0UgrXYR@sPmj!5ck3P9lvX+TlisTd zyLlms-W-HFuO7Ahd~y(iYmwZbW92$N6LNTx3be~kvfcBDhTdj`a9{O=P|pDGtnAbu zj&6{jsd}?fBrxg9!&`lSyeoS`S(JOcQQ&mt6|vUmIF`E^ti5j(WltvJxT`x=aYa0m z=-;fs!kft2-%J9OF+h6CLa{vJ^uJJ_1#XhIY=*GQZP(%2(r1Bn`AR8yFV_3Fj8*a% z0=b^u$xxE8_o(@u5qXzBiuPfsAv<%hzumEvJ%D-+Y>}a9#t!UT+t2IBOGB;KAHovj zoB6&{TabFrb{9*!n9l;o#I_J(8C0Dd;%!UYTRty#NFASPx$|oVe}W%1v&Ec$lyW7k z1B}uMy=RWrJ(~N>%rQyN-s3-bqjF%9Cc-oXQ!Z!Ha|xf*s)*5j*M^VXkm`8s5R_H` z7ydX?UjrAWY_&;Uy(}#Iu^&9k{+`nx5d4KsnNWBH(OpkKgd%91=o(+^JaOi;i?g(@ zeMTk1W&YDO*~(Y)XSvU=@99z7o1U4kQQoIV3Qi7Fw)-a|2jM12gtdK~sWn>u{UhA7b%bTX8()6B19*|a) z;uUuu+QnGt9xT&`WFRk*71F%9hW+naV5NC(F>elM2Hgv5kieORm<@^^^mC6^nJbIG z$MW>=11g>}5$!z(qK7=P?Ey67P%+~l;csR?Y8v>cONUcr`nPW}M^Ou^A^^vLlnHYN zPvI1N0yc_YeSM;d5rEQl@_n_!QKcS4WLZi3x7fO&m8}-q{#Kf zL2p&3Pq|MJ?bO<1y1iBY^VxH&-Nl(oi+@yn{uSaLk>7h;StnwLiL(0CaWlygHS99!W|c`tpaIF1lTH9Ku^nt0iK{NFqh*=#hZL|4wm1P)k7{Q%$U# z?yx(nlveh8C)uY|l47xHY9~vhL|7@3mjL3bJYUM?G-5U5v++@l>Q5Y0%64_7cROb= zy4K|2ht2+aO#gn@vSOv1m#ZcJvFMoQHe$Ea!j;ny-Q4fzoG=6X-+x9aRK#|!o)z|p{I6LN;K?9oAl`_##xIw2 zsIG2O!7XmfMjQ4NRkq0CD9?V5&-x#%i8V zH*Tjh^*~Ke4pN&?Z4hQ4%SGT2=E2Z3XNO|oTYnZs9zLwqb%Q4>G9v4iKTzd>#S}hu zf$~&whnjAP;0Q!)rvHxRQzVO%L3pGJ)r-lFgM_bc5X8u zo}?4G#WC0(?WzAUWWe7VU{1VwcuDT7#AlC8`{H8)-{YU2MwZsC;M33>XNPsuBs}b9 zRG*d2Pk$hL6cd+g(v^8{!byT_7^_<#h%-50#X9#?Zz%E$)M25i(bm`x8Y z$5+~@kodbj;V*hJC1)|pzQ=s=HSdXQc#~b^(6=S94slv+Z$>yr5aS;%&ZugvZB1qaZqBzmU%wCo|5-D(1jsnK6r+Wm_cxfPSqh}i3AqWc1#*F8W6^r27w^A5 zJ-IUbcCF;0tJ>rD7E~l+uI53QqCAPrBrS+L!*4E-tQ`XXVCA>gBSbNMY`Ci~RsZNP-2x@7sy6n?S{N#Ma zFLfEFdU?)nMdUSS}1>mkRR#)ZqKdV zpZJHF!;h@@1gwRf5FGFxO>X|__ zp3^)UHy%RxTOyp(g4-R87l{PDaCwT05e9Z;l6mkFfIP#c+ z79WbMdE9s9vGro-pA5vWTNx9squw4~ZEg(`JQ;XJcQa0!0~UMo=DiX=L&F|7X}KC< zf$V`0vSQt-m{D_$Sg4t8uI~BPFG_E0GdcL=ZlR~BuBbEp1 zp_DsHHuDhhAhKt*|K@dm*@h_X5Py#^SwNO7{3_U-Z!l~ob2Iq9V|{=+^#3@1SQ9yC z=f~%P`t4ymSgloo*g-U)bMk5td?eL=aMQDu-_JX|s)*Csu2A1!k#PkXqFzz?=Nh$X zpeXNWE6!JwJ+$V$;B9G7crn>fF!y3A0qD`Wu~Y)53P;?y5qD_GlbGl)GdaAvH#)5u zE&JG+N8Ww?l3(F$yO#G5_mHCPy#!i<#=lrCe|gkyR0R7=ibCH0cJ4rMX>SR_Wbr+I zP2`ntiMMD0Y7TzDiXA*Xl)HI*KC1s!bNS1vRqYU<8txkwd)uNlsjno{a}@k5yWvf{Vs_1RrswvZjJ~nq6yzSS_s+x|M;b@jy8x zK4Tr>bfYp{+ovI8jEaoGcvlhYWf;A9Tlaz=3pMx!Vg|q9?9x#?>nKB&`DsG;fF;PyWP~>ipt8)2QjJ6(y%} zl44ri+ts}_c^gj~WpYZ<>bkj8ZPNN@w{7a5>)bw?d@1iI14yI3n=#Qe{)P!%3etLp zyRZbEooLh`)g)njB_J9|TY*M<>X;ckiBB`mszQ;1wmMyB&qGxERSkK`IncL!4_qG8 z3N+WQH(IzS0)oA#?v~oy%xujI)!LxVFnT_9Et$Wsh}D%}8+@^)1silAZnxrW>T^>Q zD2!grdXE`a733^8Zg#+%H3Xv~_tQg00KswO@kl#ea!Fqe-U5>K!^IOwUkOx%hUWs??l)c7)IP@Ac% zRncssgk$44v}t@M9JV&XHKf8BrSZ=}F*wKn`St%pfm+~Zi24gb*;#Py+&Dj^-zjC< zz|Qb34{E?6R=LOdGh!x$eF#ZraXaH9{j*d<&*Lhg-v0ZqZu;CnGH%_wm2s2P@AgZPo#W=EjN<_qAcQ5Txh19w!NekuBxsO?8h1jga~gRcYnb@ElE zt+`H-$*v$c4 z{G92?s}C9sV<|_x8kombbSDaWAv7VDUlJR?x@?ccF^=gBC-psi-t@A_>TCz}n@p2&1`Ml@DFK-I^CM>3w48VZ>7ggzvsR%kJV5YUw3$)axn_WrzI{J zNT)xHn)Fyt&3Bqm*JM1fQ2*nO5~C1!!HjM99Gj)D8mREgKVa$H-1w_6vD1KMLvvwY z8&z5|sS!XPPZ066Urjz_F_W5esQts@apBr03U+^T^vj-hpWn|JV3vV4q z|4wL)|Nhq^718Z%l3tWz*V3~*BA@5hmWAkt5T9tf_Gvj*P~T+f;E~Y1X(N?a9$b9& z)zj&i;Dlc?k~j2cBLX0$8jVa9Pl+Tv*OwR)Izbj0u#P`OT~7buIs2iTt+T#32zfN? zy6-~@P?P9M@ImAMC`fO(S`8w9khVcM-LG#9!R_W$AaRgr>VVbGWqr@Bn=ek&_SMp% zu(500=CfRAs)vUOFnLDexPNnUSxLhqd?+6u4U=CD7&lKz|Ja24*DKbW|zh{uQ72e_& zM(g0?0r<>#3-Y^o2wpJcoSq;Cx@~pnIrtUk6#IX}e(&a3pOZL(dV-`U1rweK_35c8?9 zBw;`M>|^@s6>jrdjl2QNJ7x`Mq*LXPdJVc?rrS75&ZuX_DK&~xY(*#>Z0k4YWPt}5 zs<`wyu#V@xG7{&l|9yYua$2l65Ms|ZEJP`-gW(am?6k2;9x)ACi@v=@W9WIwLTo~V zXXzau&f)U)45baI=(vu8=4bMfw+=M3+9A4S+l?wd*wdA^1QY!JutV9eEzr8mpVXNG z-(Q9n1<7FIgO&%TOrH5b-W5d2U>#&Tw#=#_4aORK=d4}_pyRL<^-xF z#9ujKnqiKDxtF0F%XUU8=6g|qoi3HwZ3C%gAN=xTR&Aygh?CkmmB(7}KbQWzqJRWx z)jmEg!z1od5N(|hDCIwkhaa2xt+|5L@R87wEo%p+*-O*~hXJb0q)@XL^J$d^R zB?Yj?Ig36hSEkSg)s;%9AhDSKHF3 z2Opt2A?)!=7`m7T!oE+|&)di|Qj0xVt>+t0WLhp`4NEJo&K0l zG{HfAnOlQW&DJBm79#MPND_zPp(+N;9B)sCZBEPT_~6UnM|M1a`obDNdFhfhh1*#0yV1V+InGQ zlXghrxCgSj=tnK*bMowEqZ;i9jJ*LesL}2Zn@-4JqAe9&^b{avARaY+R%uVq&_mg4 zKw$v*b)a4yyac!!x#oob%eWG|aspd*E?2iW!w%duWPpEl57oIz}0u{SE+vPks};3m*qB$#jIm9Q)bj3?;j zk1KuqV3SR9F63dllns)j^|I>q!`9AbL#3CxK`_6hB7)%blXq_~BQVk0A&H;Q)l4^{ z_S-Y=JS@W5YpArcW_;Y7#qwg;Huuk-rs;Jgn#T+?1d@ch^3GRNY02)}=&3-lCMIL6 zW5MHi#2HxF57ciAda^rAH$t<29UgrK&GpjGRyx{U2)lZ zS^Q5k!<0(bD%=LQ_ZHZYVYcwt=M8XkcN-5U>vlUr)3XR8fo)1VMf7t7QU zl}GN07PGiX)?B+Nu1d;zR40DXWM=|eZoA#SchI1+hYmFF3OS`gbx!2hTF9OZX&Uq? zRfD}j0+sy8Uw3A`!uZv`L}l~MeO*zbtJ3t~^b+?wJr9>hMn!J6Kh8H(ERJZ$({%60 zZ{EBa1)0T+5K{?rdR(>VA6r3C=EDPs6f~%H0^0=gPg%=ZA#MiO`2g|Xjb)#QKxQzA z%VMe@2#Ta{LnQyx7TG7ZaW@jD6WVpvdVMaAL(|V?;#UgY8>z9?(VHSngKgZ07;Hev z{i$YeDezP=J>p&a4E#f2um*zaRjFK%i2|XWQZi&8Cr5SFq`DfZd;Ll_kJmQ_n{%iS zb`&``vqJo{N5GoYFOx&p%~R$etP+ zP-oQHM^<5)vKw;36rRRmkf$3mdi`!+JVJ~*ikxtPy*a2WTmAb`wt5d?)2+7##<=So zKNREkgIcEoC?Akv^96C`BoNLOSBFSh12z-a;wTDIGWJ9>2HTZTfLYu9MOTI{C_Rp3g+tD1BXg93_j5zx<0XK`7)22@Qk{AZDIyF?U0 zUjVjee?d3>&B)_T?(yhmW7JyPpcio6{1w4&+KH7anw48XGOSJFBXZrb07o)4Q*>P4 z@F$Nd&I3j5iN^;24?4#q?qEEUkw|T%;lb)6TDp__blv{3nyBFU`}34X;y)JS1zU91 zk@a@P{mX|CGO@^Sn-vt$@o$@!=OaHY4{N9s6U>605Jv^J$t}FU8L9O>S>ddRMHY zA_&*gZ@Q+cWR1dWHAZHN8fT&br3YmnvKvD1QUdl+yW>eA9U34%AzGE9hsi z;pT}l1Q}#{S#{vymuL7%G+pfXVY{Q)uj^7>QY%%gKDSedF?Dm%6)wKTvuD#<1%;a+ zB7r>?gvq4X;ufS>gV`1#eanyl^037rVVqV}$q!qroEYlzE>s56PInD{4ghBZyWjcGO+)*pwWcSGD7Y6u;_vK58>AQ)%6& zw?7qgusWToh-)+dD4m$y-e1F5yt!j@X(UhqUt(#p9(|eUfkN5$^EM!^wh7yAq!wQm zO9+NjE*Y4A-mr226>sATi;$BgJ`HQ95T#Z-+L{;>>RU7kpzw6BdB|^9eE$}^it$p2 z5LTZ8X0n7#M8eYWB%jbwVk%eR!TjXteR>E<&GPgY>`%CDu@la)FJaalD;?Di1LP{h z`?Y7jSLdj+ zA9f7?Kt#nN`%|~Zo^5zVH;hmv?VZ2IGvFF@qB-+G(X+v{Uj}HnD5Ai4CRGV~_arD4 zZuRfYu=o~;z=zz$Zh5iHc})@gSE zf|{Exf-Td)+s}9sq#`;H_F!K;k>y{uBJYq5gpQAlMsD41B!{`9GTho&w3|9qQaf); zj5%-B3))wjVq)cgO_R;abuQ3#mkyk;08K0aDLT8cWUl3s9n;TUij2!z4kYlA8T{ItiD4U=H8_;L2^fJmbpqirtC)xqe zv)4bsko}paGR=9`P0gA=w&?opUp-lbOA@<*oFGD+bm}!#L08r*;n$yJSm!|qiZp?t z$@vG@TeYxeA8da@@Ux13AzM_9M1nqnyw>%WwIx-8r5#oO5Zas5a5;R-R(~w^`V$#P zDZ4sS`7uYdcVj&FTO zdxh}c%b2j9G&;RN7sPIEfAHJ|aH`Od0DhZE>F-ccJzmXMJco*_WiQd*zCk6y)v}It z%C-bK-$jo^l(oUDl@$-EqscX@dZd7VV-zylbNFYAfl@8lb3D0o?iKaZQMY| zW>DX8ZKL=%Ul3K7U^MwIGf?PgVUXBZz6EHJiY47+MI4YK(`aaVI~9IFREToyKLnc0 zU1RF%I@Whx0f?gf69gM81L_2}D9ViUfX$PZDx_?BvVzI*+*)3fS^;$(Uh;x%&dE?9 z+i|so0t_zpZ4_+vqm2MaZnSdy(`o)*s1>iK8#e7(rNcPW^2Zmuh6|`X(-wDPU#Eu2 z24G3?FjZN+iQ0OUCoBK2JmX(+hF`A(If&$+Ms^SlZ;t3xAWCy&5X7A-u!oG!c%JZ|&S1fzK&GV}ArnU3C*zHNWOe6V+u&kxtFCoT zD9|gX|80-?=WOoR_;Oxnp{zG~sX$FGG5_NV_#B;Ccth8Sak6b}&~kG%ak3nK=BAH< z%M|_j-X;0%8usGxH~N^f7@PUO85f8R?`oUvd7pe2j9psx%U|`MxQ5hR-Z0-F43oZp zK(EcZJop`8!kmpkd&z%k3aND;=+YI}uEkyY)cAv087EzQZr4!HAr%H(9h!87V!W9g zgF;anq4|t?4w?5sWLls*O3OcK^OErUEp7B)8eDj9zebpqpvop)hU?x24S@MBAMq?^ zlUnR;AxhTuU%9xilWaGtd%{xiZ?(;_mJL>U)C9}lm;`iUS;s8FlY9Dn%B;VR(%(3U#SI9qM9wk$@pegJkhYgP0Q_R z62w4D(%}5<@{ZVwQ(rXynARpPQ8{nG@_<#nG1xhc(Ea16>CvKOI%Cr|nI6Ist1iRU zGaba={gjk0o;ugLn>0#{>G>~@J~*)C{JQA(1@SSDfrjDiBp-0fL`Kl|m7FKZqSna% z&w|{m{dHq7FyiQa)BUV;SVzDg`MQOxGB$}>$N_EUwJ0{}BU*=7*J+o`S zIDI9#XoY=F8Kl89@{G>?i@XC+kvS;7Ihv!h{#>-Ye=br~0 z2k~xaQHhFl-fM0;q89!SKq|d<^gDe`qN#V_)g*2|ODgbI@W|J3J2jP~OBT+KV@pBH z{ZQJ1X&1FG(6S?05Fm?# zL3QkXAEi&pMhh0v#Z<_!#|wsV_l!&O_b5nK_Fa0=#>D=c)`V5e>2MD0_)XWtZ*W*a zBp1z`Qx~Du|AAe($NbLmt;}nmU%AILp6)c$nkzpO zwSz>BJzcx<_Mm-!W=IS3*O-7<xJPbY zA3MF@tWr78WrUVW(ltwhnCG=l+C{6#^XD*Y%1iv=!iyu4{r0vyPE!v=R|gA^p762g zFBHtPzp2E<@BW$ym zn>`5_=2!m(zw1q%~=d9UM+I5K$a?$Wy%uO$bI<^r_WQgk4V8(pm;ddOli=|t|U z=l=Kt2)ZNcK1;0;{vU4oKKK;AD4xLae=kL#U1u0T_v#DtvUk6bOX5<%-EmbSLRub) z0P;g(o&2?U7&m?|(o*?h#t|U}%y)dui;OF~biF_%nR#5KCQmVs;xHXWy! zs1$Y((a*p?vBl=5R>0AD?`MuyL4Jn=9^RS$fJ38*@XMR;)a^uwhW7{GN;;jy$t~8v{tBOr_f^J7Y?ah1AiFX4D|iuSz20Ya6x zhBiqXlU&x?K{0@kS=(O?!6v`je*N<>j=z^Y+NcHV;wmXvGBY{{&&F|4yXowYbo1Jo zvasyrC#4)i@4$E-It8hFKXcnsP8qK;I5`eB;jh;Eo}L07o*9kwf56S*t}=K`55L1r z%?6S(A=djja$K&57JAk(h%2qWsA{Nk?cK3puS(6Kw1&f>>?n~!(4GuGnRiP++!<3K zhv_pMF!3jv{@h7q{Fxrl_>(p<_a|*aZk~w!EN61FO+o{GN|ljxm^AfLItTtPl(;k56g>*e#%hFkZnsRy}R9UnFLq#z-ve?P?%v@n6F z_=QZ1e-?{7q?z4O6dBFXh1Y-Vvki+351WOEx^U{{;HQQYVB*w@&y^M3HqdK7_7ONsum4`)s$|T~Z z0R(Ig)&Sx6e|>pY;0AfGQ<#if(&@#O(wXAI75NOU_ro_^E?n+(9YhKuj@gp`9t?3A zPOEJ4o0K1Jpk;(kHXfxmAmSc%g!I(@{LxcuEZv#T()%Yedow@^8uGZH{99hJ`IZdG+yI%6%GBvz;;Y# znEF);^ZSnlW%O#*jb0S<`EHP45Su^dVt;_AbiJ=)Y%S;osS7SuLw9k<7(<#AhSekg zy4LApsjNY4zJfu<{&P<3gezPNvO_4$ zr!;H8+0?)B-ZD_tn}dwA5|F{0E3GQ@BVc+J^2lOcYZImD z;&?{06e+Wm_jw|V@#_zxxxM}vC0j>U8J==!xA>+OqZ_37cIF;Y{pS7h!*xUkQ)3%r z;JVF|VfUdwSy*QN6Z^2dl12%Sgj+%vv+FU~zy-ULmrQ?q&qJYKqU~Uj46QT-g);0> z$aOx{3USRvOT8H$^O#2+7P}dJ8m4^@MdI-8MaX5up0JeQ{o8^{SpI@#-UJ?*<_4!e zXx*7=;~Pl!Ai2UjH0`AKtqaY)>|FAalZTk^xMsO8XWD%_;nJ@~+22`<9<-@f9uc&C z=Y9!nbJJ@0KghT<3LV;)-_rm*4VZZ41cgH%0};mRIBy z!_^MV^`|9k^nWG_7Hn#7N1OHD?nbJ>2lE5vu5HRUKYYaUfK zh$13by6`vv#;@wx^vp9sEsZlaxOs{U<_E~UR0~yA%`=f>WN!W$DIBlBDii6&OF>Ip zVw3Q&r&Ar?Cu!iC2>c(+Q5rQvLd&1krBVIFK}%fuaj@JAN}O(KUWv` zkzUemY_?(u4ULMcR2F6QIQVrWt_g&#=^}rCQC$b9u}%LKo%~02v63(t%%)!>pd<(X z{G?BVJ&w-rss|g6uI(u_;A43v_)i7oJFJYCKG=Kt6B(EBf-Z?JOe-V9Dh5iSRYA@! zMJNk5+k(9Q%yIO6BhK5@&u**ub?1y`K%%{HWNRCwOc2)vS_g3lr+*YvHAUv#Tm#$u zXWo2_sX7*lGVA~RNI}yfRqoOGOhRs7qG#V<;PBF^?Z`gLZ^`&az;f2g($keU#gG8X8d@hU9-XQ(+(X_P={y`Qk424lv($gDlGU{KoKj zkeV{CMHfZ6@MV`8WdWs4dZ(S$!Rb*4LK4*3z6=!0OGu~X`7na)Y8=*jrR43>vIQ}= z4QMpI)uoef$Shy{|Hs&SN5d7i@4v(7JrP9o6d`8RL~kL8E<_u>cY+9`4uXgT(M60- zgi%NDEz0P<_dZdgMnBv8{?7OO&RXZJbN*y0YtOUyexCcjuj_Lennk9dtPS8loyEFO z>_}?>6l?dJyoO5btH>24r3o_&xaXqhaOb7}AR_k$D>TJyruxcG%+CUA zC{c4lZrYcB>o{e+b(|7A`rIPB&gN=C4O3Dv{Az&t)M30(Bu~}4{|B_(y8j!!fK89P zEHd$@|C_rrQaa}6ogWkY`83~4zft`2gF|a$Ku2gM92ZJgV!Bp(9H9eAq<7!wQF%lf z6LY!vIxs#6O37M-AW?*E2bKVBw$_L$BM{ZfKaxuELHtkU8$YUSztzx=ND-)T>o>q! z5`1=A*3ciFbe*SJQ^;RG_y>fKOy;DwQ#`+NJQuK(VhG2wJUzQuO?+VC&~-kBy^?kS z;+4+LSJyss+yH&s(23u=6yp{FCa{MZ9;!L&ssQP2$q!x0sd!KR;CC%`+ozw zK@D_L1*huaIgV4cN`g+t+_7SRe1XM^P0%D!IKWPZ+9P z662d3iHNy_@Jq~E!l7W(cVm4&q!z$>5e@&iDF6LK#D6A?7IzJ#srk0nxUh=p_RAEt z5uoDoz-xZfXZ7It9cEO_ z!P~9jyL2qYm-;c2!*x(5QE!y-W{uY&cO?Mwe~MF#f^KaV&9RBa*dQr z@DSzk3A;a=<(dAqOD_Jqat9mrlaUniTLTGM*8@nh@r~w8cm&$(A_H(gp!xu!wT>@{ zBtjVcd3I$;2)L7Sb=VTPmxa^5B*i@(hrXy8MWkG8d&D{e8jtez*)$-}*yKxcZt2^n z!-Beo5edU$^&_tnHN6XNylN)VE94{VJ+c8B*UyO**$Tf3NXMRhF)CB*p+x@NAb`XR zfd1sgGd!uBG8BdO9GkrA8u0b0DQVSS5ZvX>r%&;ghKGw19uh@IU2B2k|&$ z0cVC`oJhOaPwo$y6}3v{SI>p+WEu;Un*e-|>H*uz$ot&pCC@_! zSp*QPlxbMrIAkR?R}SYFq{FD?@%8Mc>Wo^WOVBiP_6G8uzp9QxnYWM8w>Y+2$AyH? zwcB*ILX_%oc_+^>s*@mmJD!8`s8*eM>-eYm@Wr>mVeB1v$v|*So!>5XnQe_}JFN6) zN}aG`?m#jML2zos-&_Xjit__?uRkNufR4}N{<73(jC%?-*j5EYEUL=#|Y)#s7o4w%Ot-3L4n=6#oyuU9pJD_eLBE-29{3p`zb($qovk3xz2g= z@=s~KJ6=$cWpjtiY+|+G1_bug)OBY)ZX8-QSCkI6H5wUm2>m%tVRU+8h(3GtSw2>D#NW2N76u4yeq;WspHq*BZ zZ*@CY2N;qj$N4XXM;k@l66dNZdJ6AC94FCl?}oN_H%PeseDP$ox!5g88iUV9qDI!G z1gnr)Nn3Yd9Ou_x1V6`N#RPFR39~8&YL!XPMPJSkR_YY)C(b#6s|0G?4NrYr5EvIb zfn&WYkRfIqHFh#sgl-s=};kjCwXB<1DbffMZa7Eqywlt@Qe9xErRPyS(_`g=M zgJx0}jO;)I+tmD-3U~4N%eBfX`>x>J-Rq5ogc(dD`)QI>d3-UC?sviA@grk8T2$Tk zd+kIv?z%`V+8*770ZFz~ixNB#6qBV5O;*6*kB{o}k1QU-(=nTzDc6m(5ju{gmdwxv z_jn+sQV9wJy4pCf+g=ASl+YIO_(z-QUC2M_;TReaCq$<^U8zIYc>9w< zlVuHI<7KmB$X?Qqw$&3u!{A!Fui1EphI^X&CBljTKz*!W7{BtTn09)F`P!5_6TyLP zd^`X$c|bN$rtsz+pmuzWf3QJXVryhi(2ns77S*A#ZsF^~O(z1`=$NPSX|2r#QfFVS zo;{G>!9lsd8)us^J*mt0mF4`Qp|VW6mY9iusO*@5dzVF9+MJBHVdFSzt&*}yW1q_A z{g7lhG-&`a+Uf>0OsksojWV-H01FkJ&B>Zxh`IUN?^A3~{8qgnh)?GULR|&h0)QsT zz-ZdnTaj&J!|!FB+}m-X0M$G~#{&O-yDHA2aOJvuiFM6A+7o|R0UcuN^1vk7$v}Br z36LXw!O=ZivJe=!mpPCGF9N}Ura)2Kf7CUpfNnJ5N$JNwF>7}6k&L(O>x6LXr_WY| zeU&%q>^zgYI*P@yAk}tB^nJsx63b&!W4KJ{156F{(1wEcS*A5dWq`ziQWym4bMI^=*q=(k_Zb?*EWMQOA0%f!7&|G~Ay zRR<-CA5{}h%^3snNtTgy<4e@;GkYhUTR_)o&eRM17--?O;`$C@P(!`UOpCAW^sF>iM?<2?tnA!sRUI)}9KUq|D2$xB z`D1Rjmf|Qr1UbSd1gAuofhz0nwkV@n_#^XlYnMs(N3=yT_K%)ov{Dr~2H9vKqmp)t z91*lfGFe)aQ0F;-|Cj z2Y`&W$0p5>9Y8FeV)d7;07159<||?&x)Q}$b|8=a;aH7ZZD0c6?uSUa(=kN9SODvj zf}Ux-fcy=F5Dwyj3qkL!5Z{8Hq(KCl+t#nk?9^Ys+#@t@wD<=~T-U3++&JiuG8n-( z>`otaee!()0sYBoc%W0o;&}F6A6@CVkk9zsm-rD9%O+wYS^*`*!Z~-zv!v_~EacOA zv&PsVQR6hahD%wV`#_J!R0o^VEm}Ykp_8>|-NRHNhN01hogs9%YO0)tZU+^1Lh#1= zxq$kqqOaU7;DrQSRQgNFY!23QPd)Uzi#5n$%quzwD_?1;CThE2xYiDSmc7lO2?R}Y zGEx@+c7eBMsb;zb(+(%u7CqndhB_LBZdtFFM*&19st!|wD@>;If z9al&vmbg6b=@4u{*U(enjJ`0EjOudqIWa2VO&7D zWAr|XGZ)2qPlK<(N91hBxz0B&ZEpJ-o0VD$Gg}M*0J6K{f3yo(|IgelfO?u_PMr9a zL8u4N^A?%}Lt*G>KtHl&`o$kWtkgPn$2?gBW@z64?qYX;su)eWzQgzy0gStAFbM*d zT&Iu5zwiciX*Ms{lHfeYfI$hkEY0zhWSqhWf%&Tk&!nOsny4Abe5(7py9YM%{~L(1 zY+f@8!}tG?khu_F-423|P>@zy_orr++AKBGp4ow6`?kr6_jnXO{-Y2Idm2Hf&mqAh z`JeHLf{Op><_atq*l80fZCkS9bG!++B>lb>S#_C49cQ&JhR1Z1Rkt6RI5skom-F@jzDu}R~l=3_y%Opq2q zI{V{xOlLf%yBYanHDX{sUL1Y^_Xf8EA#&f$!%GjgItRKZt|ViXXs*={B$5>l61;x{ zok>?GL1vP4C3+3a7j;AUhxLtalFqjifJ^#?yqeC0N%`K!>qJh{V`Rd%upt~>qSgo~ zK!7^ryKh{-+U1A85ByBVm?gAZhEoU(1rEzBH{Q72de+ap(9H0oJ2&n$k${XQM48dl zG)@1sX1@8Gf`X~;0)q2$z?QX2Az6)rO@EO>SMt6jyNx7j2 z1rCXi=~UmRYfUAbHW)LGR&6R>>M4Z)$aI)(eC7Xc5JA1-~k+(|DOcnFK1kXDT8< zL}Qxo1;Vhntbrbq#!=zFDNt?v?i*jIR}RxD6qIq63-CE#%PpKKPrD~IlPYx!=7pY+8K@NLS`ofwj>88 z_l{}Z33y_$0%~_>{7}9Ipt6t@&+QoQUKw%Vz*Qd>9I{Rsx7HV~+cU4Qu1d_*awm#o(I1b~a?UVeq~kv`w! zSqoE%J72N3{W2Ls5N)Q71%}cD>uD~LFQffq_pFs#bYxdU50265NccKEry=_1O^x@z zZwjlf9!v@QhGFXuK(HF4iHw`%CvdASo~xp^MVsmDN1ZX?TCHuA11}nRrFoHZ7SY7% z?#rXk)Xha$O(DApHVk7s!YOK_@}9olF!_&GjYq$MM<}_LLcJCM>N5X4o&B{mgY*T8 zJ|J?r+_r|66Et4jbp7D&D>j2l$2ZD!5ijdldwaHUVJ)l?azBWD3Ddny9}`*T3$rRi z^^jhm2)QgK#2WZD$*;G*(mhYPCJNsuzHz~erqSDDdfMEx2I3xQ#ov?x8FWv4Z!H79 zO#NEzj|ymzKX2=)p(ESN^5oEw|Exfl@Db2kB26Fjz5JY9|GEX2WY>L>A&SI+Qwij#c|l%d({6_Ihc!Qh3q#Q6PCo0tCu#uDD89^tT#=l> zaF}o4&ZXmD*XxaEEuis-_y>xO|CVu%D589)jBvt%m;futBOqIS{~X8=d7Sz+jxBfz znq2y^N064>{fF^Ha(yB5C+k}o|X6dVz zBZ?0Qx$EK)D*A)Ad&$C9p}tZcwMW;^F^?-Z3w+;fPCYfknQ=6z$Z>l!r*(keeIZQ& z=by-m5!-n5^s!#~fw)(bxZd;mh~VKBBq9acoT)AS`QF#@sSvr0XVOHWr}}83FIBa1 z-UwPWfgJA9pk1>GEs3puG=6%+*2sxw!ve>d_3&GIDfq81SMXXi<5}uz;ek4yg!l10NS`M{ArU3-hGTkDdOlPZPk$dD#B$d&luRks^+ zL-5p|_#s4RR}2O&KDKB+?Tv91k=cu`m6X||QnYzwB|MQq8siABz@c>Z1FY`_Rcj+= zLvB!E2nkADUow3S=Psh>Zc`mE>*5?;L`Az{7%W-GONV`6Z6lBkqQ#{{h?{3A4PeC? z-X%h?z8=QA;rPb${*1vZ`ioXjLr@Wjly1W6Blf5{L0uC8T^b=dICz_;+YB1oz8++aUqd5fUns{|Ze@n>+nhKi3wahn zgs#eGFa4`7c!3O)#*#EHzPvf9ADeI(CnzxO*^Dwv59+3XV@gfqeOh7FsLcX3 z4Zdm`UQjOjWwKzxU zSjaU1*6XI_AT5EEJS2S0=5TrD4Xvx0vp$AN)0sz^1?r~Pxz^ND`wIJVM>R0 z7VH*qf31IS{2^(P+bejbVgk1BR8Qs>3YbT`t>EhAG^iT#U$@K28~BtkL# z;D>Y&6{Q&oT43uO`;V|n@V0v=*#G&Z=X!54KY+Ken<~rs!Xjn7#RNg%TB@c=8Uda> zE+D6eWO2&PqC$<{_Nwen3toDV={s68HU8${q#RIm$PXeNX+6PeY3m$GBc*``hED+gv-#g z)fx)wyZTi;FU`%xxo8APj3RXSvXoUmCEBLV|F(U@{ot#l4uHX}_#%hxrlN(OZ!Y&h z*S_)8_Bevq&wSE0urtX7?fn9NO7O}PrU|EekoWaS1@nXcy3e$RtD-xd1r8Zrz@w-RRG6{TgUi%z7R!`u!Wb2`k|MWG$J5 zXU3i8Fj%R$GA-`w()5m?LTRpqJ0{}Vpe}w;H>?<>?r)k?_Hz8pawqg_nR6D7|LXZn z>j=w>3pSuy5qX_LO@^;4P-2;UxnT#Ot&iwoNJ)zX2yd|Mf~!=|nzlix#CVe?V>*78 zkBVX8+nddsY@AA6N?dfz!{erb+^MJ z+xcr^j#dHX>hVO6QlNN-4b$EC$SK6|$92EQ-Jn9dTuP?}H6*{$Mcl#LSRQ>|6UiMh zrI*S|4jF`HAX5-?(AJ*kt~&>@KW)$xs9)shk>s48hiEs`3$ZRSqsD}g!}af#e}D8o zZ*~oY3r69I7dX><<3o4=Mb!TcX#QgdfWra=^xlhmhpmcM`R)(i$&nWRAfCfag&#&M zZU9ti6mvM`Us0s36(3Ewuh%PW0vj0p2Zlone~!HWCnsF{m!OP2Fkhu*Hd4 z9Gb3&m)8T38MnQLQ>8EpruQdo!F=AUz4#%QEuWAScEfho$ z8yR=jGveq}4~h>i1yYeJjecJPbM@>pla={`NJ~}-^$3WTPRbXb(VIRAF7P0DixM)m zPOYK!FBXzk#`d`cOg#-u$GoOmEGv3N`Tj{Tbf9bv|Bny1I^}cR650#HPmo9_6b#K$ zFs|vYVm_(!gFC&#FAG1?nI%Z)&1D{O|jwU!NWb*(re}8rUvO?&Twm-Zr(Yhx5Bx96ljDca0 zcn_Jroih7s7)K!`h}(8AMy z{0)Ix(qpOn>DGG!r?c~(edMM{Ubww9Z{q}kI`sBimIJA&??v?vhtO`6PzYQfm zgAT5w@)5L|m+^R6Gw{n`-gEJjWZkV`&UCG72q@ANSbiaYTn(S6xB~6UWNhfu2;l-# z2@gWD`%{!`oC(ELfMwtxsO*-B>+j}gahx|SL_ox>lH(GY9`*=Q^FKbsY&lY1d=Id+ z9Y9Xy^eUtBsxPYI<@uv!S%a1m)Qn44SAS3wX;UbqgI^gWP6Tdu0{H756-Oal#RJ7jU$ z>twRq6azN2pCTbJkj&J=%49?R3&!0>tVfKeodU<}LrAU0ThB;d={g$*cpHT!U7)%b zy3a%_)=d3i02^W3#Bq1*k4X6#RPNpJL-R}DGsfir+TO(VwoWc#6050JnogJ5u&X{$ z;}=#hfp>1=(k+f@SgKRnz?tLFFK@V1ZBNIW-b$7!@7FKdga#ZQ+hp5!B(ClVr6mT1 z)LVJJqrdA(L&w79()9O>@7t|_gPt4YH(dOzY@+jrNJ&0E*t}0U+E;T64&R-+dpEub zvC8@PZC3?_D{AfMh+=LZ5_O6{!R8lX<-lF)a)iongI=iA1-|rSASx>njr?c#tME1K z=SAJ=G?a(86TJU%WI$-6!%eZ*h(lt4ytx}_#cZxqP1yE`GaP;yq<|J+-T|#pj?`p~E13?m`jz^r`TRZcv8^fh`}xV$97Q zcgj^6#UJb?z%p6O|IsR9p}G)hFCb0m3j*=U3EoE@JOoePH)KIgj43ch*WWZ5tE80L zO1$0m27gF8-!-m0i}ow*!96Z0oLYGscl3>1 zCb_Uh;2H-f5ieJgdgAF{12mDX&_+eeKHc}mE8j(1{SB4p`;ZWKtK2hH$B{u6{}bWj zOX)s*eW-Z!@yb1YXX$as;g>S0()TCEb*D@PkGaJGJUuvW&?1~9htL$fIxAXLxT|iR zO|W$=)GQ7}CF!Wo+*%-xTwc>-GOa+dTnK91DhW^Bbc#0!gyhHm-EzlcrSP`Qu{IEb znk=-_2R!H`bUxdpA2KM)r%JXs9v-%7_JnKO~6MPky zL+5@T{-<%%^iF401wNpIz1CD4#v4 zeQg$>)Ee^s_mV1$Kj*|-yCMXMsnu~Q!N(SHOGkQzg9Z4{J~Gp>nqq)wX#4v4fP9H@K#IG?P+4%9pN?YX7gCZE zX%hcj#XH_%ynYt^)3h0$pRz~30dq~5lW}fQq3dJ4#039%__sGr=GTVdEca8KBgSJT zBgS)?#4KA5tRAG`rymsRBegrrt>LVA1(ZdVplJL%oQoZZ`^{wO?2|@GjvWVuz)ER? z*1%d#j#HUsaIUg39+=Cvctce~5I1SHFSo*MG*XN&#|i^BkXPA#BXyro1);%T!^iIuX=!C8-nP`e=ZkyGQDF@Z|b#tU=** zDy)Z2E?o?FiR;2kbXCB;m$tT;A@f@safKpDKa>FW|GBf(Njt>?XOgKr(YA0 z4fSC^7}CHZ4-`V1p%)PSS=n7KX%dGlpW-<;pq@e`TB=j(sT?_Z zkBpjZ#txP%Z0Vei4JuSF8rIgZ^i9zDprrJ%I!DykL z&Fv5F5>?jYq~b7Ve7X4i@+PJSwHms;6PJe3R7fwMLAsky%m1Oqv>R$S$RZ4lP^sIk zTlwYZ1>}6K2!ygJ6jJ-t5JN3n2{1 z5w(?Y0$>LJYm5#v12u2OtP#A5<}s?<{%9Dcht7p2Jt`pANEYea{w3a#! z2{=R_64-F{{{CbXpU4SC zL*xq*ZH9jF<_0(_=>+w% z)((@+ehrI^SLUkXW&Kri*S<`iNx4dc9g!jof#{7+EjX??VY#&EG+1O0cgc^L|cG60MgvZ1CH8R69Olo2pom1xZS`;k%;W!1Ze~xU zZz(rE-P^Av8*XYJaz4797muS}NaLMOf3LXaH^%@CZ=CZNNF>PHzu34OX2Ud3I;a#T zhYkOr-h&1}ptCmc;G7h`ayK=Q>_4vK4hKr-gCvRK` zS}Ss|R29_X49UG;H?lW8c3GK^^lCbM{;*0^NPXOA=HvJVMNNR4Nd5f9&Q`ETw@3a~ zO%eKtv-s+0OT?2opdrO)d559!G}0j5j)h*>^?M=zz~fUA(r-Q{bVx;YHxN>AP5@D-33eA!6F~Urh1OPz>}Fe4 zD)#e#xf`v$5hCBExEm9$FIRXDI}XFfXBf50^V9*`kFVKZh4hQ^hBNzTl7-c?GZGR2 zGHopLg-77o!E>Hgcm(Z(=y=D5(o%gr&rv5^;Lsb*(Z#>0vQnn=q>e1v>i#Cb$_Kh! zkiH~oLIuo80AU~YEw%1Lccc;fjYncax2J~9%S0S=+V}YpLxj~qEeRfv+?b5($Gtm4 zHp}h#TAB$T*roJKqf21~roU!Jk2+*bG{mo7GR_=mJ6JWVn_wiEb`|LcYqNlCNOvXZ zq1C@C|1-BHFFyC1vmWyJHlN$b)F@WIdSoICkH@U9bQ~9TH>Mh>tiRWyhS$~J1w~S#K(LbSm2;LSHrV~hIn_YY zG7`Hzch%K^6Z`TB+JB)%c3QHETdxUF*doD%T1Tpg`5$7IGk#Yp3xlDch9Os;$m9#R zq?XCqfYbS@%b(r!f53YVZuABC15A5S8s7bP)YO^4&#vgyq9UCfjmnT42b60uLDtQF zI&=I3kiF+s{d1B2YpM7D8zCifkx>QIF+f^s_Zw7LvDO?O;W%}O;VXv%A}WL>?#9K zLKCBXyzhge`}M)aP-KA` zyv%nTA{|v>UBjw87cAz<@vaPn0qZpN6fG29ve)@Gr->?puMV;tSX>elIv?covm>$)$6_z!2R=ZZ01MeBOYBqNp}!$R!Ha- zqKtQZ;25f0zaMKP%}LE;?SsmQxljpH%HQsD)fzbz>O2lno(J7+-1!hqoCu<^JN}xs z$MI_TC0Bgo&_?Tau-o~lBppuYe*74I_8vp5%;p)0$jjOBAf8_D%8yQFKwxdJj>;R9 zxg&OZJyS;DdvV?m443~Fi322@)y52NJr?3n^&FSs`(Z#RIX%}c0!Fq6{0E=yI)}%E z*=yUWpT*Pu2ObQ`5HnH7!2`a*#M<$_I&Y`t9Q~V(laa&-FuRU%jK6Z_w_2sIQ|kzHzfO#pf9;)DQ)!=+0r}l z^^tYFM3(fRH9{T07=Pv*d(*h#**AA?;_0KqUE$0*2~5_0J2?@*XEPtuETOqqkTc<8 z!+Kr_%XRv2l7Vk9UnYyhQn4yEa@gg+XP8rVd*AboJAzgkn^tBUG7J{HfB$u5q$LJ~ z|M8yEfT=yy7=Vr@h*bHVg$^I~hMkL6tx<0=q&OxwDx&s)4`4d=yVXNfcQ{$t`hp$RxRh+JNUO;KpfC=n+T((@EHU(DO=M5!zf?xQovVJ_J05JdDn7R8jqC}5%_|%0EkSi zPY&G{#Ipr%6Xvc1^YV8?W)hl-OYB(w%Z@#MG@m}=(SYhE`1XxYSai~bZ1AxfX!I+a zNIXpOmfGZB)~_mL7>byBSYmAS$)Ldt8c;~PE1Rax^^PDD$AI8n&09)zyw`KL9nukh zWltQcoHSYAeK7&Iz$PjE|Gi4YMxzz#*nx~E?u=rYIt z&K+mJP@7bUU7ECD+}=I4T78EM+f?7+SxD^pow1HUPA)65$8^rN5X|@ z4vVdvVOX~}5>62R?i^T8w<<1nD{mT7-J)9C(L<=nEBgRoX18mc~I2v^cx8ygT#d zorJk3n8vFMs~enEgvn3YpqBAs0^6N~nmaU(PMyEj@O~Q<01L(v&Zz^SP(kgB!YIr1 zHN5teYmnD7&ou;u^e!qrZN0K1|WL;9TTw zBBGZzo;h6q4ourjK76>W0=IC;G*D=q{Hzg_ru@Rp8H5N_`$o96SMH}(H| zU8JCcmbMsZZGb;DQ1d84DdnC#%Ylo$dzR3D%pLYV(UN69j{4qCznc&|daYDy4HrSYS}E6omy_!|ch-_SQC*&!_}1$a{PF7D zldQ^sm5V24kb6}n6#9{ropc8V6Rs|1$RZgf|8TJ!;c$1BSy@yX(k(|abxSMHg>jDs zx8(ynrp=J%X$Ey3eqI8QR4WYi$azL&1l;lQToX!lY^kgB6e6o;CcO2eWxKonRVO|t zMN`K@;;=NeBDT(`D=1-K;-k}xss=)>Sr;LNfe&%P$9mAkDWFYyzPQ1z*R+@3NxTYR z5IJz8-^1$+yfGo*c*#IOZTrHO z#j3#l*zWXeXW~7zftngAXC`==#ofI=Or^Y-| zQmX8q%I;cxc+i37$!_@)8YBGtM@XuUY@?ROYj*Xs{cD#koM5n|P`qwPxuGNqOh6|N%R167cZ0v@s zH|1^&9sZ&3_vxbVE3eylx%T@h|H>(*r@v==H@R{O^-2C=roi^;g|@tvl^@r`XP>iA zqKXU?@L5AiabQBuJ?3o9+XFF&$W+@vzbGHf3ae@~z&CQdzEbPoCD_Z!eeUP& zNZpX?A<<-1{?&=jX=G;rJ|b9H@fFTz%P{4VDkKZAR&pq3AcBrG4;}z&^%Fn=x>BhXI8vS7(p4CEkL(pji7r?Etq}x^6wi( zLMT@HE+CsKw?UV1j4ixy{FecOx|K_Qo`-<-5kK#A!Lq$rBKYZ``t><`37gKZ8A7Ov zjkMDRDOi?=KG(p8vOIKT6G_lV72;3Z`0NxmR<1u_?X1+9*#}bLXpSAKotD_JJHUVS zz7A-*FM0Z$8AVi5!o`X$KDpGcJ}vigdzX23YCOpxd9yPRR$PBbbF~n=^mqL?!0{g` z{w*laZjq9(BTnCFGQj760zNG>H8{VoQIr#;5H=!ka_}S2&2Q&Nc+jSmBa&?Ih_x$r zDP-fI%<^B91^;Dxh~m}P6y=De-^)QgpyIsi4Xvf2L}v1)lO2v!tvfT?+B#cFZ;ntUYg^Ez(nJ=9z(Stu{Rn#pkq1lP|6qqxtGy%y zj#d7x2;JyKeS6vlCJ?8W+zU=&q;AA24(wZNmhUGxmB0m-W@4Ab{AzmrHx6@0i`xag zLeG!B%*8IHN)oR!qh7HKwCr$`!m7*Dkp0v|6nkK zy?tfuAzLH0sLGP8F|SiPKOF5fVTP7PN8qCT?%4Vr#=C?K_&xGQzxKUZ+wd3hbvm6G z1)8GlVSypBb%Q=;r)P7<^K2s)DbsT`-36szzjaUMT8W+79%DtUQODM|kKL*5*zx3V z378r~AfxRQ{u(@(vS(uJ-p%1&*rCt>7XNB|IMchLdUB!BQ|z*ztBHCcI0*i;N*?PVDS3-pPw4#Q{tQQnaG4EO2(dHpu$a@aeKX))< z*@GGDwtfP>yIasKM(9Ba^G*MX*>-E(^o6rw)oRi#Y13(dKacMgif4=OV35tUSvCyL zGP`=8xghM*VjorXfA3^*_RhkJd9tbBvSG}k@2CI$U$^h_Lp3I756R`(i4^4s-ATw) z1Yw)W?iFVLEK#z!Z(E|{fI|IaTK%;*U_hoZRiRU7Vivxa)&q`ik0HVov^tb(io?E> zv80J!F7{UIaY}Cnv9|@>FK8jv(2Sxr#nwuARI^6N^p3&qA#%d^i7hiGEWKJoz0jKB zVG&;F=Z;Bm^y^S{W~dul4OE8b*x|_xx*FLFyE)hnplJH{hbOeS@kU!hes}0IGW`G7 z-7H8mXuf<{y}wodkcJTy@S;Gp^nP0_@1{g_y)(O2?fAl?~BP0M* zRmrj6y2AhL*O`;g_CD#7f`JK*DIWn0Mm*;hYm18(Wrp?*#jt~(cvs*#;ux=MArlbE z^^pl7lmo`i1vC-ynvsEtuVPK)WPI^p6Qc$mE7rYZxQ6-y(H?$B?MoGE4}A->JQT6- zJGS@Nhd!$_4ub+aIbXWYio;wNXr61%2M+$63~VhN%6cMA?UGQr+1Dch8}Qu|!GWbQ z0m5i5(}*zg5($r94#tZvAt|w6Sstep^AB*M-0G#y^BGTBY^{V6)Kkt*&&hA9)%ARk#$hYG}@hWoh#8N;l zsN{FHu_#*^ejI(?DQU^jScg_s7?`wTIgqUGE+iDWxOFLyCB5lSZAB!9MGRqspx<@jz2e>$*!ohVgQa4JbtB- zIzE3Un{rH~W_V9Ros#ILM8JESYlmtnVZh2Q@2>35xe{%y_zX3uHo5L1IAjt}*Z4i( z82%_^nJ8}v3d3`Psy+K^p7SVLjzyX@YJ8%J>iTRfVCWsav@&VJE}>~h&;Hy~%6tkQ z=~p1);syE*+m4`|^K&K~ey>Qf*`Er^Aob2Hxqs2(sC$yV4KRxV+6V$tQo5XaJv%&@ zZqc+4rIhC0{RNxir3_pNqm`S+Kjk5XSRn|I|Vj2Rk@F6jmm$XZ2f&U zS^smZ=FmE@_rfh%%oCP|gem$e%o7SFFIYRDY$YFh`JEpXl-@3kD&_;Qq0fHd+2cBf z&Mdxp<}@;dad9`^@Ou|qN^Ze%{99zV!e4m4_I8sqblLWfOfC}QS9dsPo8ir)1#IMW z5=-Th|DQ*z7yqwEtKMKNTBJ)hEL>%mlxbP9G@=Oyai=R22Yr1qwBIg-B$E2)>N{cP zi?8lGk>QQ@q8WI35C>xVOC#=80eZYWhU=)`GCaiP6{CP1t!@vNfD=uAR%bRI6h|q0 z0jgva_ar~1E}jk?Y{@Cj056vu^?bU{lc1Ac0l9;G09)~7vY*s=z>1mo@LDYS!Usna zrHs#eba8o6FbXp^UN_jZC2Z6dFY*~|+<+?&boaeBc|#H6?}c}RQ@%Le2ghN*y3aaX zMTb#Hy#IMa>+LloI9Hl@o`D6vBSZ)1uirQ1j$P6{)!Yi8L;9|B;=rWd@`mKGhju=! zPVdm&&wfgo^A#!nn9bM#*I?D|ucn=hyH`{;K$zRlShrgmQz~9s+LBfMtj_idY@l02 zw5X)c#;zgv>D}Yl*!b2Eoj-8{QSHHD>U7b^Z3c%z;Q+p7ua{db*sFq!vytaRq&@D+j<>L-B4XG zV5Nw)%FE4^r1APdA&sF5h|oX^V^snFgXmMHn0rwQ5l<<#B%n}3(ck3T+j8K92@2Z_#RDy)xeFwWGxpPEx25zCiqvCN6PU8lc zQ3;KEr6gl83Mp?)hlFBgGM9)~#C87)d3Jv|qT>xBw$w-LWoV^iIRYYt5^rk7|~`kLjedzA@BQtqXOz7 zLLVCGPE=HL1~UNG7B1vSt_MU;%A&c<21i4DU$+TZp6MUrI^WaFNobm+r=&I|mCo+| zi$F#2eR&-j4+mVYUe)L)??T83quCCR*c1<+TS`yfxBTmqr(h;qklImqA14@5_z!JH z#t?}V94%p+FWel;)X2w$wEq046|3v8cl3X>_T}MFzHj@+E?G)hva6^p71_s9NRcH} zj5RaXF?NmJsE|Dg6^2L>V;zI6CHp#d#+rR!hHMS*Lw!D<_xpX9%Q;nJg@V-?&mRh^KOv$U}Y=dWQt#KCSya>TJcBa7B{S%_l)oI%J5Y0Kz$?3p}R2I z2fMe$Rn+G#0ppx`?SozLc9`T5&5Tq|Y)QWuaIe!?(^cqH7dItZ^gt6V=Ii4g49*2fq`YxqqoErfoz=2$9Xs{E)zE{gUVvz6cVug5(hxHp(BgygC$ zC3Mfc*P_Cf){e&*W1IwpK!=l~ZMzKF@Yt zmZUbGy!DY)<3l?uO7rF;ax>?}q7O*4$%W^%HHBcY1DZD+jbZ$?n~o|(YrBDKUPY8J zBUh!nYh;bT>}uc8Mk95GM5G2YaRWG?1mFIB}2J6{OMFRZj6ts{+tKavMmLo z#mAGPUNt5Mffu)>IcJAFclZ+JUnAwaU5((z_!Ca{hn*(8Kqr>yDHTR??JE*~fqU@w zL&07^n9Q@ISW{+8`ir9;LMzwhAlkBsE2+R?r^*Fe%nkP!>WieNk;mFKT{zS7SJL6k zmYddt`=q6Lm1gkElng4R=s|hL$!=eisB-K3^KRs>X*QabkS<#OAA?Ed^1f4gSD0UiUD}T$OYLiaMM_@uEZWFqXyC!HOGRi^ zdK(Qe*KCdEa!>S>g{OB;grWL~1yS+Czvf5y8+;^-(=-$wpJeS-B$0aX0%OmZ=`bHd zoPy;b5k((uh7&8J;v*}2+*;i$frm{h0bA0*oLjW*{Ap5$4>v}UaHIoV-YRyxT|xwI znCT_>2qa9fvR@;eL3zKjYH6{fi34Y6sOHAACW4wK*B)=qu+Qm6#|JYr*_p*FTG4iD zn2DZKyEz;6y?LEGKdu6@F!<{5{CJq3X-%AR!VL=ZhpYlWlY0?RdEl3pnRKwb;W{E_ ztjs?FQZS%&B5NTwxPbvyH)MnoX_4l9mNQpIVKTqZQxF)$peC4rnC(%O@tJq^^jbtd zI*GmEzB8KQ@}hU7{p(DcKF?}W$wtJD%(VC0T$o})uuF+6BG^G?=M$FUM%NJ;Qt6|S z<{(_7zSPe-TiUz%X0i z<05*-bXzfyYzdn%{`a>~@qsxzA1r;nV}6PKWYA$Xli9LuQjByfYHUgSpfVMq<5onL z*!77r@3Dbhtb_z`{;TrwN{_FM+dtl15uF`Q zf6xyFfK(Pi=^723>+@&k5xo^6)SgVQuAOqCJTvnfy6NuLsG%O%b)~n9Iq^n?^7YG# zPeqCL9CK+hp8_$4=GkP%=lRaEOsk_b$qZhhA(bl(;mT%Xs-t`ibmWq zr!;mOLh6~fxY<*dp1d=!|CBe$V9ns^6*zV7NsAZ?R^h6SkRr$if8QXviRqUMg=Au* zS)VTQi`~u-5?UPpBx6SoS-{J&R~nuWSwfv=YZ>*Sa>6O&!Rk@{w z|0DfEK%(RO&d0=lUtx}58o3JwUK{(qRu-^0+LIW|*X*^lE_bpE)hA}!aNW9*pP|EV zZLuiBCrn}NTmc~yyHdomQd>^tN$vou8i?}E^#W->d3$P^?0t(Zlx3Y;ULN z=_kKjsCUw>hJC_mc6C2AR&P1do4}IlIswd#XqntH$X+wYs~;fa%hweZLuvRz$5qYS z+}3nuE?5Z9!0WE8Q)5p$;P2d4a^BIEas6dWZj3L_K<7EgBgim4O99<>rXujdykFFO z(aawnL}#j@)aI@|6{&!{4o!`Z4^-Wefn5>}x&v*z;Y}2@wx+aQeh|%z5akigPTwjR zKBM?X4zm13`f$brixt$ZM*HRUQZ{dS1vK@SMD>a0rC&@UXMCqli*mnXxrQV*2J+7{|d+g=H-Z?#imY=#zk9%*anyAMA`5x9-=kZ z35GncV@#3DGE1ZbamWk(yt4Cx|9jXY&9AIH?`a`7WX+WOE=9Zv6s0h6KHcSYYRh-S zumFQ#8W-ow$ZNaXcA)O$QLtH}S0qFaGMK58yPDL=FAIUp8K78G!*!vIh3x8?GFd?< zyG!XZ+M5-jY)eIgsaw9@3%URe#!F1_U|e{IVE}!^xR_U&Vzo+?X0-^V>e)j~$mn=| zZS--rk`XGw+o#Aak%@v%%@n_1f6hJ1<#*y#ULUQ)`WXT6)7R|&niljOtmEpH#*>s@ z@R>OAd{uMGyU;cFO;2+DG|u%NCju}hhyn){kr8KA1q(KP@(M}i_y_T`+wK9F3>S8k zfm3{x^wXS?*x1M0t(&wkOfNtLuYTtejd};j2quY;s?dMr)Q<(=opSe{9d~a z6rDunO1cBYsNQ=9%oe9evUi~9uma>>0(GKvr4&$3ZB8F0rv^tdyq()iAMEM3t&}C@ zB6C$hje%{%i{}Tig;1^~lS`3Z_<1Ic{FRl3a3CA#I!Y9M8{5T%I!`p4j#Q*jKjolS zbAwucy=eE4`g4w0{8_$ULB9)S6pgLVs2YFtD$NZxXqVqKWJ^ zN|5S4byd8J@&j^1^3RN&Q~N~fR7+#j+n^I(>gV^Z_HFka&>}4@w;JFtJh@NtwK%*a zO#8cH`L=Dt(WDUc-k_&>h|u*i8FV|H)ys!I8?X>5XN1>&k49D&fRUl)!NX%V~%&Bw44S|HJ_k^{P)3ME+-) z>)1g|JYnlX^L47ycR9E*%P}-5Vw2MbUvaN3CFg2F-dI?%Y0hE&w{H|62(^eUHIA_@ zrPEu_Bj3tQ6yS!=syN*=+(~Er9PpejGCElr9kOd9QlNqg57b$$ng=->JS-c_(%EJr z=k^^YzD+fqdzMqM{TW+FBE#fWkj$anm^wAthXteey(-*tw_d(7Sui?NyrLD2_JRU( zZuOJccS>7cbyUwFdf0b7xsrjOc4N1`YV~>F6+aGQeP{M@nF)p^E;0bhD*U0k@czAA z-om!C1#r8>D6@a5GaUtw>P+eU$XscUN{o;nloyDh23+mIrn5tOahmsLj)x>+;0a!8 z@w;sg)yr}tHPay`{d3XWO|C!>arGk;~s`G zs1xH>49;NQu^X>$c?!uVTue4w2Pfg%JQ#H924z?}1T!@C1S+{4uA_q71xufDH6 z298?xR1>G9NwdWeu>0J56;erOE#cT2_L*Co4F_|Wd5TRI7PGu~Qr)yBY4JD}dggXg z3X^=(;5z{uVZp`*Ib)KSG4_7pFIr}`&a*1MbYMD*bD(?;3f;>(g?@_u380)pj>cwU zfhE)&xiXSnT-dxmQz&_`4fE6qb{Y((fA~AXL^)tt1G1w^mbBwU_B%AaS&P&F7>KdL zZ^tHBmTF+G8_M}j*U#I(+?tahHuRB@Li~s@gmV%tJEaQ8b}KG#2^T~P)ye}LH}xVo zp`X*1qx4$MV~g-Zq_*~zJE4!izn+Czz^PE#1Tsy!=b(3I?s$}eKKuH>_ePqDV;W@P z*84Cr&8e)x!F<0C^fms9tLq~U7LkfH5JoHn=aSmXUQU5AQ-C5wouzolz$ zLTvH@W>fZ4W{?mIIRv*l$St^C2iu^v6wkki2$mvOF5^lhzX~DOI_2T=LUfQ27v76sMYk2Wx-4mAXZio>cjYD z^32BA?JMhVOq8e%$nth%H@o*l46&73Sn^N)mD`r>d!xSA7J zfxY-^59x1ub))xZ$)O_n=LU2lD>FqeRWjgUn6ER9qo(cRqr_OEclqmoxczs>w|S~?_X)xGK)k+ z+^d%oC6uXW|KtAyA95Q2+&`*#0nQs6OZ8SAfQ5V3+BblLcVl#1`^XK;Fxal&a~i8; z@h9>INc`$@t3JcyKQXb^8P3$CcJO|!lU~gS_%Y9>#Lct68Xbh(UNMO78>S&XaJ~^|Wruc9GpAWUnt2!UEX2OG$AiF`WilzN>#y1lD@Dy0o>3$|5@-!jRnDdzkg}Fg7 z4cQ9%ZP)3u!fg$oC2{iZ8_&J5RYhC8-!cyxGQZW1oskb$(B!1Z9Z&IEmzZEf9|Wys zlvIh($D)#akkf`E-QpC}>+Q1Mv6>11xVVmFn!h^EjKfe2Xfw=-(7z97tc<_{Vl=$X(>2S=(8D73AWJy+AZ+QQ$t?|`WzEi1~f^X z9xq6)L*S#Spzmr6GL*l~wyGxPFY*KGKiT(cE^AO?rNxT1H^tgpdj_df$?NaC)SJJx zvpAuyZpLsZuq+v4u2A)$thoUfj3GKbUv)h6A5fG%rJbZyE)e~26k-wNoCXp@G4hws zOHbAxSoqgoPWmBx z?;V}It8>UHz`5E*%vh%Y6&t(vmT+NP>D7b~2e-<{ob}q6^YtMPUrdx7I5~VCCz{NZ z$SNM~S49H5)8LGC*DTP$Q73+!P$Nj;$`#q>p$PWmn|INC0fX(j4BhIaqddrQ9B}F39-Cw<)#w4{CZKoXKleu z#^>_Vo1_yB9myQiR}@}6*}O+7NG68Xrd(SZr>mZ~qcWX|5l6j#mT}$oT#1Q#RUCrJ znbWVo%81GXB@Z_Ap|s#8vq+XzAiuj!$Unu9H-H=Q`IgLy|M?*7K8n#!%uG&OL{G3^ z23XIPA&mPfU>>=plD`_HjyrkQJ0BCIj!b^qsiw7WZX5}D$;y4|hG8E(cYZ7zPD`(* z8|^IYH0|d5SPLdqcmjUodXWu};pDz{l6*FUv$zEEj=64Rrsksa`pWk~_R|+8OcyOP z&KW^$gyDU8TDT%1Mi2s(Z8|UC#FD7sts2-HN}Sy+iB_s{xh{B47D1qt@ps=%k3vic z>Sv_r=5EC%*4?sg2ra)83qP`)M`I`UW8(o2YV2Qd4)CD}xOJE(U*z?8LPZHQ#PuNa5VJkny}Z*3?=lP69$8z-O@7?a z1AD_KBuvsq@HR^&L$uVh=krfRj(ILGmjE4>k9wl4jZ2%j`iHnbHQ}6ZN=A)N>2;7d zq%rkwuHYf%2zF$P#B~@TG)dNrd5aC{YUP9kO0&oN%67 zn^0cq^#_UV!^*Sf=da01p8fe_`4!Hm1D%g(XwSD<9lg)HH~;qSwel2F*xhwE^{Ban zMWm)YAL_*zw7O~W^D4n)Kqw_+Ykt?USrgb^aNonO<&|$IrQc5OrPiosAya#c!mEXUrRAW8Q+9Vt>*~<(zoOG97TCp{_hZ@WTZK_W|A?z^Xm6 zCwT;}{N)cZapMq^?^XU@4@t3{pXc|%5JBQ6A1^#AF^8?S@7pCIC$EiJ@o@jeseXEU zrbd(HCi8`|fyaajAU}w`5eBi~YSyYj@>U}CTq~m#7O%?gZAjGj zN--#~VSUYBd)IpuHAqGDJLq@Uwn-gjzW^;j)Z!pu9c*v~lkXN0OUJj_TGl1ST?rUX z(tnfAc9*=Z+ANzMpv!W09}a!y)+&<;fjZ?1i9bQ1x8l4Vx=YYC{{_P6i?o1ZUD`=Sdd^qo@`s_gLtZ6O+o&~Fr<13t7C{Tr20ai-h^uFZks{% z1)#Rm_FX6f4$YN)TJ6eIS4SirHGhs_*xK%;v@FSoYo?%wL?W)Qws_^h&mUeD>z@>z z+{XYW8t(E|Po>>puuB58V>-K^ZS&YblO#;-z56RZ-mJ(eJ;2jg7@Yz{?1;q$p*|_` zC-_;?#b_J{5MA5^u`eNj5$IY$X)GoI_28K45wy#;47dFa?dd>hK(f07z%Fbfdg(97 z0$|$|RQ&M~;e#ARlGMvt0!yqPc+18B^hzYM;r>#gJ{0%uX^=D=VmlJ`l-@}z;A*8X zUS9_Y@MXWDj|HPSwirZ2@)5XCy{}ajbd&z78e;FgA`^ToWSHtEU`xDRb^Nk7ttvb+ z__9glmnc%odslMTrp&*1Wl2wGCs>WCP_YqKZyLodz8ianM|caM%h4l^Fn}Th+Rg0j z>zJm$E!GgmMZjV`-bLt>SHTG&y(i?oo2Ac6k15w3)QW;pXS2 zOWu|r{VRuBc8yAxC?5=OJ5`<)rvo}gKjYtg2BF&it$zp)?BCbQpT;!VviI-MEG1qE z7sF}Ts2cai1&Jd`Fx_RM2zc6*6(%l}d1M|Nm!_UO>ODUCnt!tJ(NqEwF3`i`=cWMI z8u$MwgZX_@Gj*v5ST)fL3fs{5V>>efs@9S+9Q;#nRXH2MNdxgv_H23tgk1mrW32X+a!b?iVVB$(7$5t4bj!t1 nhzk84nH~cFpDti}>G>fOI5ky3hoV7)3>bISv{iF&Sv>s@zD>^y literal 0 HcmV?d00001 diff --git a/do_chi_thanh/OpenHAB/openHAB_system.jpg b/do_chi_thanh/OpenHAB/openHAB_system.jpg new file mode 100644 index 0000000000000000000000000000000000000000..34b27fec291db28c171c678d38e8886060449f12 GIT binary patch literal 61823 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 rkSsgG(y&Kr`gz|~jy Date: Sun, 11 Feb 2018 01:44:20 +0700 Subject: [PATCH 4/5] OpenHAB API --- do_chi_thanh/OpenHAB/OpenHAB API.xlsx | Bin 0 -> 20776 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 do_chi_thanh/OpenHAB/OpenHAB API.xlsx diff --git a/do_chi_thanh/OpenHAB/OpenHAB API.xlsx b/do_chi_thanh/OpenHAB/OpenHAB API.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..feca965c5909fd04d831cbf76f77430e1cabbd0c GIT binary patch literal 20776 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 literal 0 HcmV?d00001 From 3f2ab68e15a6a9083f9c81ecc99f6ea2b8861529 Mon Sep 17 00:00:00 2001 From: hamhochoi Date: Sun, 11 Feb 2018 01:53:17 +0700 Subject: [PATCH 5/5] data format --- do_chi_thanh/OpenHAB/HPCC_IOT.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/do_chi_thanh/OpenHAB/HPCC_IOT.md b/do_chi_thanh/OpenHAB/HPCC_IOT.md index 1af7ed1f..b929cce4 100644 --- a/do_chi_thanh/OpenHAB/HPCC_IOT.md +++ b/do_chi_thanh/OpenHAB/HPCC_IOT.md @@ -14,7 +14,7 @@ - Chương trình điều khiển thực hiện kịch bản bật tắt đèn khi có chuyển động đi qua.   - Kịch bản sử dụng - - Khi cảm biến chuyển động phát hiện có chuyển động, chương trình điều khiển sẽ thực hiện bật một trong 3 đèn: đèn xanh khi cường độ sáng lớn (tương ứng giá trị của cảm biến ánh sáng >= 600); đèn đỏ khi cường độ sáng trung bình (giá trị >=500, <600); đèn vàng khi cường độ sáng yếu (giá trị <500) + - Khi cảm biến chuyển động phát hiện có chuyển động, chương trình điều khiển sẽ thực hiện bật một trong 3 đèn: đèn xanh khi cường độ sáng lớn (tương ứng giá trị của cảm biến ánh sáng >= 900); đèn đỏ khi cường độ sáng trung bình (giá trị >=500, <900); đèn vàng khi cường độ sáng yếu (giá trị <500) ## Cài đặt hệ thống @@ -42,6 +42,12 @@ - Cảm biến chuyển động (topic subscribe: zone_3/box_1/motion/id_1). - Cảm biến ánh sáng (topic subscribe: zone_3/box_1/light/id_1 - Cảm biến nhiệt độ, độ ẩm (topic subscribe: zone_3/box_1/temp/id_1). + +    - Data format: + - Của OpenHAB gửi cho đèn: {"name": "Tên đèn", "value": "giá trị"} +    - Của esp 8266 gắn với arduino cảm biến chuyển động gửi cho broker: {"motion": "giá trị"} +  - Của esp 8266 gắn với arduino cảm biến nhiệt độ, độ ẩm gửi cho broker: {"humidity":"độ ẩm", "temperature":"nhiệt độ"} +        - Của esp 8266 gắn với arduino cảm biến ánh sáng gửi cho broker: {"light": "giá trị"} (giá trị thuộc tập: {0, 1, 2} với 0 ứng với giá trị analog <500; 1 ứng với gíá trị analog >=500 và <900; 2 ứng với giá trị analog >=900) ``` Switch Switch1 {mqtt=">[mybroker:zone_3/box_1/led:command:ON:{\"vang\"\\:\"ON\"}],>[mybroker:zone_3/box_1                                                                                        /led:command:OFF:{\"vang\"\\:\"OFF\"}]"} @@ -107,14 +113,14 @@ def on_message(client, userdata, msg): time.sleep(0.5) item3.off() print ("Vang: ON, Do: OFF, Xanh: OFF") - elif (light_state == 1): # LDRReading >= 500 <600 + elif (light_state == 1): # LDRReading >= 500 và <900 item1.off() time.sleep(0.5) item2.on() # Bat den do time.sleep(0.5) item3.off() print ("Vang: OFF, Do: ON, Xanh: OFF") - elif (light_state == 2): # LDRReading >= 600 + elif (light_state == 2): # LDRReading >= 900 item1.off() time.sleep(0.5) item2.off()